编辑距离及编辑距离算法

来源:互联网 发布:软件研发的特点 编辑:程序博客网 时间:2024/05/16 05:40

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

sitten (k→s)
sittin (e→i)
sitting (→g)
俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。
问题:找出字符串的编辑距离,即把一个字符串s1最少经过多少步操作变成编程字符串s2,操作有三种,添加一个字符,删除一个字符,修改一个字符

思路:动态规划

edit(i, j):它表示第一个字符串的长度为i的子串到第二
个字符串的长度为j的子串的编辑距离。

状态转移方程:
edit(i, j) == min{ edit(i-1, j) + 1, edit(i, j-1) + 1, edit(i-1, j-1) +(s[i]==s[j]?0:1) },i>0,j>0最后表示末尾字符是否相等
边界情况:
if i == 0 且 j == 0,edit(i, j) = 0
if i == 0 且 j > 0,edit(i, j) = j
if i > 0 且j == 0,edit(i, j) = i

0 0