编辑距离(LD)计算两个字符串相似度
来源:互联网 发布:软件汇报ppt 编辑:程序博客网 时间:2024/04/29 09:53
【定义】设A和B是两个字符串。将字符串A转换为字符串B所用的最少字符操作数称为字符串A到字符串B的编辑距离。( 这里所说的字符操作包括:删除一个字符,插入一个字符,修改一个字符)
求编辑距离和两个字符串相似度
算法的原理就不做赘述了,记录一下从拿到两个字符串到计算出两个字符串相似度的计算过程。
首先,会有两个字符串这里举例
A串为:GAATTCAGTTA
B串为:GGATCGA
LD具有下列性质:
LD(A,A)=0
LD(A,"")=Len(A)
LD(A,B)=LD(B,A)
0≤LD(A,B)≤Max(Len(A),Len(B))
LD(A,B)=LD(Rev(A),Rev(B))
LD(A+C,B+C)=LD(A,B)
LD(A+B,A+C)=LD(B,C)
LD(A,B)≤LD(A,C)+LD(B,C)
LD(A+C,B)≤LD(A,B)+LD(B,C)
有了这些,然后我们来说一些定义:
A=a1a2……aN,表示A是由a1a2……aN这N个字符组成,Len(A)=N
B=b1b2……bM,表示B是由b1b2……bM这M个字符组成,Len(B)=M
LD(i,j)=LD(a1a2……ai,b1b2……bj),其中0≤i≤N,0≤j≤M
有了这些,不难得到,LD(N,M)=LD(A,B),,,LD(0,0)=0,,,LD(0,j)=j,,,LD(i,0)=i
对于1≤j≤M,1≤i≤N,有如下公式
若ai=bj,则LD(i,j)=LD(i-1,j-1) 取矩阵对角的值
若ai≠bj,则LD(i,j)=Min(LD(i-1,j-1),LD(i-1,j),LD(i,j-1))+1 在对角,左边,上边,取最小值+1
然后构建一个矩阵,短字符串在矩阵的左侧,长字符串在矩阵的上方。
第一步:
矩阵初始化完成时这样。
第二步:
按照上述公式填满表格
回溯
若回溯到左上角单元格,将ai添加到匹配字串A,将bj添加到匹配字串B
若回溯到上边单元格,将ai添加到匹配字串A,将_添加到匹配字串B
若回溯到左边单元格,将_添加到匹配字串A,将bj添加到匹配字串B
搜索晚整个匹配路径,匹配字串也就完成了
B=GGA-TC-G--AA=GAATTCAGTTA
- 编辑距离(LD)计算两个字符串相似度
- 计算字符串的相似度---编辑距离
- 计算两个字符串的距离(相似度)
- 计算两个中文字符串相似度——编辑距离算法
- 计算两个中文字符串相似度——编辑距离算法
- 计算两个字符串相似度的LD算法
- java实现编辑距离算法,计算字符串相似度
- 计算字符串的相似度(编辑距离)
- 计算字符串的相似度(编辑距离)
- 计算字符串的相似度(编辑距离)
- LeetCode之计算字符串相似度或编辑距离EditDistance
- 华为OJ 计算字符串相似度或者编辑距离 JAVA
- Edit Distance(编辑距离)算法。计算两个字符串的相似程度。
- Edit Distance(编辑距离)算法。计算两个字符串的相似程度。
- Edit Distance(编辑距离)算法。计算两个字符串的相似程度。
- 最小编辑代价&&华为OJ 编辑距离&&计算字符串的相似度
- 编辑距离 字符串相似度问题
- 字符串编辑距离相似度-动态规划
- 防止js全局变量污染方法总结-待续
- 修改了etc下面sudoers权限造成SUDO命令不能用解决方法
- mysql5.7以上安装第一次登录问题
- 面试--单例模式(三)
- Ubuntu 系统局域网内文件传输
- 编辑距离(LD)计算两个字符串相似度
- 插入排序
- 教育小孩用一个白脸一个红脸不合适
- R语言在线地图神器:Leaflet for R包(一)
- 数组-选择排序
- calloc()函数实例
- 工程启动后的默认页面
- 第一篇测试
- 文章标题