Levenshtein距离和Wagner-Fischer算法之间有什么区别

时间:2016-03-10 05:18:52

标签: algorithm dynamic-programming levenshtein-distance edit-distance

Levenshtein距离是用于测量两个序列之间差异的字符串度量。 Wagner-Fischer算法是一种动态编程算法,用于计算两个字符串之间的编辑距离。

两者都使用矩阵,我没有看到差异? 这种差异是回溯还是由于一个是“文学”而另一个是编程这一事实没有进一步的区别?

另外,我只是写一篇论文,我不知道如何划分它 - 我是否应该首先解释Levenshtein距离,然后再解释Wagner-Fisher算法或两者兼而有之?我在这里有点困惑。

2 个答案:

答案 0 :(得分:7)

您实际上是在第一段自己回答了这个问题。 在第二段中,你将它们混合了一下。

Levenshtein距离是以Vladimir Levenshtein命名的编辑距离度量,它在1965年考虑了这个距离,与动态编程“矩阵”无关。而Wagner–Fischer algorithm是一种动态编程算法,用于计算两个字符串之间的编辑距离。

然而,如果您需要的是通用计算,即计算两个随机输入字符串之间的编辑距离,则通常使用动态编程计算Levenshtein距离。但是,当您将一个字符串与字典进行比较时,Levenshtein距离也可用于拼写检查器。在这种情况下,使用通用计算通常会很慢,而像Levenshtein Automaton之类的东西可以提供线性时间来获得所有拼写建议。顺便说一句,这也用于Lucene since version 4中的模糊搜索。

关于你的论文,我认为这取决于你。如果它是关于实际的Levenshtein度量标准,那么我认为你应该从哪里开始,如果它是关于动态编程的,你应该从Wagner-Fischer开始。无论如何,这就是我的两分钱。祝你好运。

答案 1 :(得分:4)

确实,它们密切相关,但它们不是一回事。 Levenshtein距离是由数学公式定义的概念。然而,试图通过直接实现递归公式来计算Levenshtein距离将是非常缓慢的。 Wagner-Fischer是一种动态编程算法,可以有效地计算它。