v78*_*v78 4 c++ algorithm optimization edit-distance dynamic-programming
问题:我知道琐碎的编辑距离DP公式和O(mn)中的2个大小为n和m的字符串的计算.但我最近才知道,如果我们只需要计算编辑距离f的最小值并且它是有界| f | <= s,那么我们可以用O(min(m,n)+ s ^ 2)计算它或者O(s*min(m,n))[维基百科]时间.
如果这是基于DP或解释算法,请解释它背后的dp配方.
请查看链接improved algorithm部分
: http ://en.wikipedia.org/wiki/Edit_distance.
关于改进的UKKONEN'S算法的另一个链接http://www.berghel.net/publications/asm/asm.php
提前致谢.
Nik*_*hin 13
你可以用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单元格.
| 归档时间: |
|
| 查看次数: |
1987 次 |
| 最近记录: |