编辑距离

来源:互联网 发布:《大数据时代》电子书 编辑:程序博客网 时间:2024/06/08 13:47

编辑距离

应用场景
计算2个字符的转换的最少操作次数。

删除,添加,替换分别为一次操作数。

将2个字符串建立2维的字符矩阵。
首先定义这样一个函数——edit(i, j),它表示第一个字符串的长度为i的子串到第二个字符串的长度为j的子串的编辑距离。

显然可以有如下动态规划公式:

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
if i ≥ 1 且 j ≥ 1 ,edit(i, j) == min{ edit(i-1, j) + 1, edit(i, j-1) + 1, edit(i-1, j-1) + f(i, j) },当第一个字符串的第i个字符不等于第二个字符串的第j个字符时,f(i, j) = 1;否则,f(i, j) = 0。

- a v d f e c f g s

我们的计算规则就是:
d[i,j]=min(d[i-1,j]+1 、d[i,j-1]+1、d[i-1,j-1]+temp) 这三个当中的最小值。
其中:str1[i] == str2[j],用temp记录它,为0。否则temp记为1

我们用d[i-1,j]+1表示增加操作
d[i,j-1]+1 表示我们的删除操作
d[i-1,j-1]+temp表示我们的替换操作

本来想找到将2个字符串的不同部分截取出来,搜索到此算法,考虑了一下,感觉这个只是计算替换的最少步骤

原创粉丝点击