为什么Levenshtein距离是在没有最后插入的情况下计算的

时间:2012-03-01 15:47:54

标签: algorithm levenshtein-distance

我今天一直在学习Levenshtein距离,并且已经在一个着名的Wagner-Fisher算法中发现了它似乎是一种奇怪的计算方式。请帮我找到错误的地方。

第一个字符串是Max

第二个是Annas

转换矩阵如下:

Levenshtein

算法报告Levenshtein从Max到Annas的距离为4。

所以这就是我理解它应该如何工作:(假设任何行动的成本是1)

M vs A - >将m替换为a(目前为止 1 操作)

A vs N - >将a替换为n(目前为止 2 操作)

X vs N - >将x替换为n(目前为止 3 操作)

在此之后,我们只需要添加留下a和s的字母,从我们这里采取 2 更多操作,导致 5 总计,而不是4

我看到它可能会沿着一条更简单的路径走,但它是什么?请解释一下它的算法运算逻辑。

感谢。

1 个答案:

答案 0 :(得分:5)

你重建了错误的道路。它实际上用'a'替换'm',插入'n',插入'n',匹配'a'和'a',插入''^ H ^ H ^ H ^ H 用's'替换'x'。费用4。

编辑:我太喜欢这样说了。有几个成本4路径,但它们都涉及从(“m”,“ann”)到(“ma”,“anna”)。

再次编辑:我认为关键的洞察力是所有行动的成本相同;比赛是免费的。这就是为什么成本网格看起来如此:(“ma”,“anna”)成本为3,因为你可以通过花费 0 。 (“最大”,“annas”)费用为4,因为你可以花费1来从(“ma”,“anna”)到达那里,费用为3。