美文网首页
编辑距离矩阵

编辑距离矩阵

作者: 孙庚辛 | 来源:发表于2023-10-03 20:38 被阅读0次

编辑距离矩阵是一种用于计算两个字符串之间的编辑距离的方法,它可以反映两个字符串的相似度或者差异度。编辑距离是指将一个字符串变成另一个字符串所需要的最少的单字符编辑操作(插入,删除或替换)的次数。例如,将“kitten”变成“sitting”需要三次操作,分别是将“k”替换为“s”,将“e”替换为“i”和在末尾插入“g”。

编辑距离矩阵是一个二维的表格,其中每个单元格表示两个字符串的某一部分的编辑距离。例如,矩阵[i,j]表示第一个字符串的前i个字符和第二个字符串的前j个字符的编辑距离。矩阵的大小为(m+1)×(n+1),其中m和n分别是两个字符串的长度。矩阵的左上角为[0,0],表示两个空字符串的编辑距离为0;矩阵的右下角为[m,n],表示两个完整字符串的编辑距离,也就是我们要求解的结果。

编辑距离矩阵的计算方法是基于动态规划的思想,即通过自底向上地填充矩阵中的每个单元格,利用已知的子问题的解来求解更大的问题。具体来说,我们可以按照以下步骤来计算编辑距离矩阵:

• 初始化:将矩阵的第一行和第一列填充为对应的索引值,即[0,0]为0,[0,j]为j,[i,0]为i。这表示将一个空字符串变成另一个字符串或者反过来所需要的操作次数。

• 递推:对于矩阵中除了第一行和第一列之外的每个单元格[i,j],我们可以根据以下公式来计算它的值:

\text{matrix}[i,j]=\min \begin{cases} \text{matrix}[i-1,j]+1 \ \text{matrix}[i,j-1]+1 \ \text{matrix}[i-1,j-1]+ \text{if } s_1[i]=s_2[j] \text{ then } 0 \text{ else } 1 \text{ end if} \end{cases}

其中,s1和s2分别表示第一个和第二个字符串,s1[i]和s2[j]分别表示它们的第i个和第j个字符。这个公式的含义是,我们可以从三种可能的操作中选择最小代价的一种来得到当前单元格的值:

• 在s1[i]后面插入一个字符s2[j],这样就相当于将s1[1..i]变成了s2[1..j-1],所以代价等于matrix[i,j-1]+1。

• 删除s1[i]这个字符,这样就相当于将s1[1..i-1]变成了s2[1..j],所以代价等于matrix[i-1,j]+1。

• 如果s1[i]和s2[j]相同,则不需要任何操作,这样就相当于将s1[1..i-1]变成了s2[1..j-1],所以代价等于matrix[i-1,j-1]+0;如果不同,则需要将s1[i]替换为s2[j],这样也相当于将s1[1..i-1]变成了s2[1..j-1],所以代价等于matrix[i-1,j-1]+1。

• 终止:当我们填充完整个矩阵后,我们就可以得到最终的编辑距离,即matrix[m,n]。

例如,如果我们要计算“hor”和“ros”的编辑距离,我们可以构建如下的矩阵:

r o s
0 1 2 3
h 1 1 2 3
o 2 2 1 2
r 3 2 2 2

我们可以看到,最终的编辑距离为2,这表示我们需要两次操作来将“hor”变成“ros”,例如将“h”替换为“r”和在末尾插入“s”。

相关文章

  • Python小白 Leetcode刷题历程 No.71-N

    Python小白 Leetcode刷题历程 No.71-No.75 简化路径、编辑距离、矩阵置零、搜索...

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

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

  • 编辑距离

    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.haomeiwen.com/subject/vrmhbdtx.html