问题:我知道琐碎的编辑距离DP公式和O(mn)中的2个大小为n和m的字符串的计算。但我最近才知道,如果我们只需要计算编辑距离f的最小值并且它是有界的| f |< = s,那么我们可以用O(min(m,n)+ s ^ 2计算它) )或O(s * min(m,n))[维基百科]时间。
如果这是基于DP或解释算法,请解释它背后的dp配方。
查看improved algorithm
部分
link: http://en.wikipedia.org/wiki/Edit_distance。
关于改进的UKKONEN'S算法http://www.berghel.net/publications/asm/asm.php
的另一个链接提前致谢。
答案 0 :(得分:12)
你可以用O(min(n,m)* s)时间计算编辑距离使用下一个简单的想法:
考虑DP表中的第i个字符串。
所以,如果我们知道那个答案< = s,那么我们就会在坐标为(i,i - s),(i,i - s + 1),...,(i,i + s)。因为在其他细胞中答案严格大于s。
例如,假设我们知道," abacaba"之间的编辑距离和" baadba"不到3个。
因此,我们可以跳过红细胞,因为它们的价值超过了s。
算法O(min(n,m)* s)的渐近因为我们计算了主对角线左右两侧的s单元格。