编辑距离(Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。允许对字符串中的字符进行的的操作只有替换、插入、删除三种操作。 编辑距离的计算方法和原理网上都有很多介绍,不再赘述。
假设计算
str1=bcdabcdef
str2=abcdefbcd
的编辑距离,先要构建如下图的矩阵
把str2变为str1,将str2写在横行,str1写在竖列
之后每个元素的值按照下式计算
<span style="font-size:18px;"> //计算替换操作的代价,如果两个字符相同,则替换操作代价为0,否则为1
if str1[i]== str2[j] then cost := 0
else cost := 1
//d[i,j]的Levenshtein距离,可以有
d[i, j] := minimum(
d[i-1, j] + 1, //在str2上j位置删除字符(或者在str1上i-1位置插入字符)
d[i, j-1] + 1, //在str2