使用 Levenshtein 计算编辑距离
Calculate Editing Distance with Levenshtein
问题:
我已经编写了一个 Levenshtein 字符串编辑程序,它对我来说似乎工作正常,但显然会产生错误的答案。我想我误解了编辑距离的计算方式。
比较
对于字符串 superca 和 antigravitational,这是最后两行的比较
我的:
a n t i g r a v i t a t i o n a l
c 6 6 6 6 6 6 6 6 7 8 9 10 11 12 13 14 15 16
a 7 6 7 7 7 7 7 6 7 8 9 9 10 11 12 13 13 14
其他:
a n t i g r a v i t a t i o n a l
c 6 6 6 6 6 6 6 6 7 8 9 10 11 12 13 14 15 16
a 7 6 7 7 7 7 7 6 7 8 9 9 10 11 12 13 14 15
在我的计算中,你可以看到因为antigravitational中的最后一个"a"与superca[=42中的"a"匹配=] 所以我给它的值是 13,因为直接左边的数字是 13。因此,成本是 0。
在其他计算中,人们似乎仍在这些情况下增加成本。正如您在另一个示例中看到的那样,他们在我放置 13 的位置放置了 14,导致最终编辑距离为 15(与我的 14 相反)。
我是对的而其他人都错了(不太可能),还是我错过了一步?
我在几个 YouTube 视频后找到了自己的答案。
我的错误
我的说明指出“如果您要比较的字母匹配,则将成本设置为 0 并复制最小值(左、对角线、上方)。如果它们不匹配,则加 1。
更正
所以说明有点不准确。在字母匹配的情况下,无论左边的值和上面的值是多少,您都应该始终免费复制对角线。
问题:
我已经编写了一个 Levenshtein 字符串编辑程序,它对我来说似乎工作正常,但显然会产生错误的答案。我想我误解了编辑距离的计算方式。
比较
对于字符串 superca 和 antigravitational,这是最后两行的比较
我的:
a n t i g r a v i t a t i o n a l
c 6 6 6 6 6 6 6 6 7 8 9 10 11 12 13 14 15 16
a 7 6 7 7 7 7 7 6 7 8 9 9 10 11 12 13 13 14
其他:
a n t i g r a v i t a t i o n a l
c 6 6 6 6 6 6 6 6 7 8 9 10 11 12 13 14 15 16
a 7 6 7 7 7 7 7 6 7 8 9 9 10 11 12 13 14 15
在我的计算中,你可以看到因为antigravitational中的最后一个"a"与superca[=42中的"a"匹配=] 所以我给它的值是 13,因为直接左边的数字是 13。因此,成本是 0。
在其他计算中,人们似乎仍在这些情况下增加成本。正如您在另一个示例中看到的那样,他们在我放置 13 的位置放置了 14,导致最终编辑距离为 15(与我的 14 相反)。
我是对的而其他人都错了(不太可能),还是我错过了一步?
我在几个 YouTube 视频后找到了自己的答案。
我的错误
我的说明指出“如果您要比较的字母匹配,则将成本设置为 0 并复制最小值(左、对角线、上方)。如果它们不匹配,则加 1。
更正
所以说明有点不准确。在字母匹配的情况下,无论左边的值和上面的值是多少,您都应该始终免费复制对角线。