我正在寻找一种计算Levenshtein编辑距离的算法,该算法还支持在C#中实现两个相邻字母被换位的情况。

例如单词“动物”和“动物”:
在字母“ n”和“ i”之间切换
不会被替换为两次替换-距离会很大-
但取而代之的是两个字母的转置-距离要少得多-

我到目前为止在搜索中达到的目标


computing Lichtenstein distance,但不包含替换项
this question

最佳答案

您需要添加其他条件,使其成为“ Damerau–Levenshtein距离”算法。因此,使用此处的示例:http://www.dotnetperls.com/levenshtein,您只需在步骤6之后添加以下条件:

 //** Step 7 to make it Damerau–Levenshtein distance
      if (i > 1 && j > 1 && (s[i - 1] == t[j - 2]) && (s[i - 2] == t[j - 1]))
      {
             d[i, j] = Math.Min(
                            d[i, j],
                            d[i - 2, j - 2] + cost   // transposition
                         );
      }

关于c# - Levenshtein编辑距离算法,支持C#中两个相邻字母的换位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10178043/

10-11 21:17