Algorithm 编辑距离算法的变体,仅跟踪替换和插入

Algorithm 编辑距离算法的变体,仅跟踪替换和插入,algorithm,levenshtein-distance,edit-distance,Algorithm,Levenshtein Distance,Edit Distance,有人知道编辑距离算法只计算替换和插入吗。因此,基本上,它将是不删除的Levenshtein距离算法 您可以使用与计算正常Levenshtein距离几乎相同的动态规划解决方案,但没有对应于删除的转换。假设您的Levenshtein距离算法如下所示: For each i= 1...M For each j = 1...N //min(deletion, insertion, match/substitution) D(i,j) = min(D(i-1,j)

有人知道编辑距离算法只计算替换和插入吗。因此,基本上,它将是不删除的Levenshtein距离算法

您可以使用与计算正常Levenshtein距离几乎相同的动态规划解决方案,但没有对应于删除的转换。

假设您的Levenshtein距离算法如下所示:

For each i= 1...M
    For each j = 1...N
        //min(deletion, insertion, match/substitution)
        D(i,j) = min(D(i-1,j) + 1, D(i,j-1) + 1, D(i-1,j-1) + (X(i)=Y(j) : 0 ? 2))
应对删除进行计数的部分进行删除。留给你的是:

For each i= 1...M
    For each j = 1...N
        //min(insertion, match/substitution)
        D(i,j) = min(D(i,j-1) + 1, D(i-1,j-1) + (X(i)=Y(j) : 0 ? 2))
注:此特定算法得分替换为2分,其他两个操作为删除,插入为1分。有许多不同的变化,得分不同


你的问题到底是什么?我想我在想,是否有我从未听说过的算法能像我上面解释的那样。或者,如果您知道一种方法,可以在Levenshtein距离中分别计算编辑中涉及的删除,这也会很有帮助。因此,Levenshtein距离是由minLev[i-1][j]、Lev[i][j-1]、Lev[i-1][j-1]+1计算的,当您说跳过删除对应的转换时,您是说remove Lev[i-1][j]在与删除相对应的重复关系中,这取决于是可以对两个字符串执行操作,还是只能对第一个字符串执行操作。在前一种情况下,是的。在后一种情况下,不应进行任何更改,因为从一个字符串中删除等同于插入到另一个字符串中。