Levenshtein距离

Levenshtein距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。

求解Levenshtein距离可以依靠动态规划。例如将源字符串'yabd'转换成目标字符串'abc',该问题的求解步骤可以用如下表格表述,例如其中(0)号格代表将'yab'与'ab'之间的距离,(0)号格可以通过(1)(2)(3)号格进行求解,思路如下。

'' a b c
''
y
a (3) (2)
b (1) (0)
d

通过(1)求解:(0) 代表 'yab'->'ab',(1) 代表 'yab'->'a',因此 (0) 比 (1) 多1步 ('a'->'ab')
通过(2)求解:(0) 代表 'yab'->'ab',(2) 代表 'ya'->'ab',因此 (0) 比 (2) 多1步 ('yab'->'ya')
通过(3)求解:(0) 代表 'yab'->'ab',(3) 代表 'ya'->'a',因此 (0) 比 (3) 多2步 ('yab'->'ya','a'->'ab'),但如果源字符串与目标字符串的最后一个字符相同(正如此例中的情况),则多出的2步是不需要的,此时 (0) 与 (3) 的步数相等

posted @ 2021-01-21 16:34  Bill_H  阅读(173)  评论(0编辑  收藏  举报