【问题标题】:Faster edit distance algorithm [closed]更快的编辑距离算法[关闭]
【发布时间】:2014-11-29 04:19:04
【问题描述】:

问题:我知道分别对于大小为 n 和 m 的 2 个字符串在 O(mn) 中的微不足道的编辑距离 DP 公式和计算。但是我最近才知道,如果我们只需要计算编辑距离f的最小值并且它是有界的|f|

如果这是基于 DP 的,请解释其背后的 dp 公式或解释算法。

查看improved algorithm 部分 链接: http://en.wikipedia.org/wiki/Edit_distance .

关于改进 UKKONEN 算法的更多链接http://www.berghel.net/publications/asm/asm.php

提前致谢。

【问题讨论】:

    标签: c++ algorithm optimization dynamic-programming edit-distance


    【解决方案1】:

    您可以使用下一个简单的想法在 O(min(n, m) * s) 时间内计算编辑距离:

    考虑 DP-table 中的第 i 个字符串。

    所以,如果我们知道答案

    例如,假设我们知道,“abacaba”和“baadba”之间的编辑距离小于 3。

    所以,我们可以跳过红色单元格,因为它们的价值大于 s。

    算法的渐近性为 O(min(n, m) * s),因为我们计算了主对角线左右两侧的 s 个单元格。

    【讨论】:

    • 但是表的每个条目(i,j) 依赖于 (i-1,j-1), (i-1,j), (i,j-1) 条目。在 a[i]!=b[j] (0 indexed) 的一般情况下,您如何找到表的 (5,2),(4,1) 等条目?
    • 如果某个单元格依赖于红色单元格,我们可以假设该红色单元格的值为 s。当然,使用这种算法,我们不能正确计算所有值。重要的事实是该算法正确计算了值不超过 s 的所有单元格。因此,我们可以找到编辑距离(因为我们知道,它不超过 s)。
    • 你能为这个想法提供一些参考吗..
    • ntz-develop.blogspot.ru/2011/03/fuzzy-string-search.html 在此页面上,您可以了解字符串之间的距离。另外,关于上面的算法还有几句话。
    • 我们可以根据问题的具体情况来计算 S。可能是,我们会忽略编辑距离较大的字符串(我认为它在某些文本分析中可能有用)。但是我不知道可以计算S的快速算法。(我在网上找到了一些文章:mit.edu/~andoni/papers/compEdit.pdf可能会很有趣)
    猜你喜欢
    • 2010-11-07
    • 2015-12-09
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多