编辑距离用来衡量两个串的相似度
编辑距离就是用最少的编辑操作将一个词变为另一个词,操作有三种
插入
删除
替换
如何计算最短编辑距离? 采用动态规划
字符串X长度为n
字符串Y长度为m
定义D(i,j)表示X[1,i]和Y[1,j]的最短编辑距离,则D(n,m)表示X和Y的最短编辑距离,注意这里的字符串 下标是从1开始的,而数组D的下标是从0开始的
比如 D(0,1)表示X不取,Y取第一个字符 这两个字串的聚类,显然是1,即删除Y的第一个字符即可
初始化
D(i,0)=i
D(j,0)=j
先计算i,j较小的情况下的D(i,j),然后再 利用已经计算出来的结果来计算i,j较大的情况下的D(i,j)
X(1...i)和Y(1...j)的编辑距离,要么是 已知X(1....i-1)和Y(1,j)的编辑距离的基础上,在X(1....i-1)的末尾进行增加操作
或者 在已知X(1....i)和Y(1....j-1)的编辑距离的基础上,在Y(1....j-1)的末尾进行增加操作
或者 在已知X(1....i-1)和Y(1,j-1)的编辑距离的基础上,将X的第i个字符和Y的第j个字符进行替换操作,当然,如果相同的话就不需要替换了
用公式表达出来就是