【编辑距离】编辑距离算法

编辑距离算法

算法定义
编辑距离指的是在两个单词之间,由其中一个单词转换为另一个单词所需要的最少单字符编辑操作次数。
在这里定义的单字符编辑操作有且仅有三种:
·插入(Insertion)
·删除(Deletion)
·替换(Substitution)
举例: “retten”和“setting”
1.‘r’替换为‘s’ retten->setten
2.‘e’替换为‘i’ setten->settin
3. 插入‘g’ settin->setting
" retten " 和 “setting” 这两个单词之间的编辑距离为 3 。
算法思想
使用动态规划的思想,建立矩阵,根据如下规则填表。
定义字符串a,b的编辑距离为leva, b( | a |, | b | ),其中| a |和| b |分别对应a, b的长度。数学语言描述如下,其中leva, b( | i |, | j | )为字符串a前i个字符和字符串b的前j个字符距离。
在这里插入图片描述分两种情况:
(1) min( i, j ) = 0
即i和j中存在一个为0,也就是a和b中存在一个空串,此时对其中一个串进行添加或删除即可,取i,j的最大值,也即max( i, j )。
(2) min( i, j ) ≠ 0
即a和b都不为空串,取以下三式结果的最小值:
leva, b( i - 1, j ) + 1 表示删除ai
leva, b( i , j - 1 ) + 1 表示字符串a中插入bj
leva, b( i - 1 , j - 1 ) + 1(ai≠bj)/ leva, b( i - 1 , j - 1 ) (ai = bj)
表示替换bj 或两字符相等不需修改

以字符串a和b为x,y轴建立矩阵,填表即可。
在这里插入图片描述
右下角的数即为两字符串的编辑距离3。

编辑距离算法与基因测序

将字符串a和b替换为R链和Q链,填表时的三种情况分别则为Q链gap、R链gap、R和Q链match和mismatch。感觉与SmithWaterman算法几乎一样,只是在罚分方面不太相同,另外没有回溯过程。在基因测序时可将三种情况的“+ 1”改为相应的罚分。也就是说两个算法只是在算法思想上有些区别,但是算法实现上几乎一模一样。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值