美文网首页
编辑距离

编辑距离

作者: cceb9d5a8577 | 来源:发表于2017-12-03 17:08 被阅读5次

算法基本步骤:

(1)构造 行数为m+1 列数为 n+1 的矩阵 , 用来保存完成某个转换需要执行的操作的次数,将串s[1..n] 转换到 串t[1…m] 所需要执行的操作次数为matrix[n][m]的值;

(2)初始化matrix第一行为0到n,第一列为0到m。

Matrix[0][j]表示第1行第j-1列的值,这个值表示将串s[1…0]转换为t[1..j]所需要执行的操作的次数,很显然将一个空串转换为一个长度为j的串,只需要j次的add操作,所以matrix[0][j]的值应该是j,其他值以此类推。

(3)检查每个从1到n的s[i]字符;

(4)检查每个从1到m的s[i]字符;

(5)将串s和串t的每一个字符进行两两比较,如果相等,则让cost为0,如果不等,则让cost为1(这个cost后面会用到);

(6)

a、如果我们可以在k个操作里面将s[1..i-1]转换为t[1..j],那么我们就可以将s[i]移除,然后再做这k个操作,所以总共需要k+1个操作。

b、如果我们可以在k个操作内将 s[1…i] 转换为 t[1…j-1] ,也就是说d[i,j-1]=k,那么我们就可以将 t[j] 加上s[1..i],这样总共就需要k+1个操作。

c、如果我们可以在k个步骤里面将 s[1…i-1] 转换为 t [1…j-1],那么我们就可以将s[i]转换为 t[j],使得满足s[1..i] == t[1..j],这样总共也需要k+1个操作。(这里加上cost,是因为如果s[i]刚好等于t[j],那么就不需要再做替换操作,即可满足,如果不等,则需要再做一次替换操作,那么就需要k+1次操作)

因为我们要取得最小操作的个数,所以我们最后还需要将这三种情况的操作个数进行比较,取最小值作为d[i,j]的值;

d、然后重复执行3,4,5,6,最后的结果就在d[n,m]中;

转自:https://www.cnblogs.com/sumuncle/p/5632032.html

相关文章

  • 编辑距离及编辑距离算法

    无意间看到了有人问编辑距离算法,当时对这个概念很陌生,也就去学习了下,做下总结,记录下,好记性不如烂笔头。 编辑距...

  • 编辑距离

    https://leetcode-cn.com/problems/edit-distance/descriptio...

  • 编辑距离

    编辑距离

  • 编辑距离

    Levenshteinhttp://www.coli.uni-saarland.de/courses/LT1/20...

  • 编辑距离

    算法基本步骤: (1)构造 行数为m+1 列数为 n+1 的矩阵 , 用来保存完成某个转换需要执行的操作的次数,将...

  • 编辑距离

    题目: 给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。你总共三种操作方法...

  • 编辑距离

    为什么不同操作就是对应与d的左移上移或左上移?这个问题递归角度较易理解。DP角度,d记录的是目前最小编辑距离。左、...

  • 编辑距离

    讲解得不错

  • 编辑距离

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/edit...

  • 编辑距离

    参考文章 https://www.jianshu.com/p/8e0204dbb765 编辑距离是针对两个字符串的...

网友评论

      本文标题:编辑距离

      本文链接:https://www.haomeiwen.com/subject/djxzbxtx.html