如何在计算levenshtein距离时找到2个弦的公共部分

时间:2010-12-04 20:29:34

标签: algorithm levenshtein-distance

我必须在源字符串和一组模式字符串之间执行模糊匹配。这种匹配由公式给出 1 - D(I,P)/ max(长度(I),长度(P))

  • 我是输入字符串
  • P是模式字符串
  • D(I,P)是I和P之间的levenshtein距离。

一旦我找到最大化此分数的P,我想在I和P的公共部分之间进行映射

例如:如果我=“星期日”而P =“星期六”,则映射将类似于以下对的列表:
{{0,0},{1,3},{3,5},{4,6},{5,7}}
因为常见字符是's','u','d','a'和'y'

this wikipedia article中,人们可以很容易地找到计算levenshtein距离的实现,但我不清楚如何从它描述的过程中构建的矩阵中获得映射。任何人都可以开导我吗?

感谢

2 个答案:

答案 0 :(得分:2)

您提供的映射作为示例并不包含我可以看到的编辑距离,因为它只是寻找常见字符。也许我误解了你,但你不需要编辑距离矩阵来映射普通字符;您在D(I,P)计算期间唯一一次查看编辑距离,以确定最高得分模式字符串。要生成您给出的映射作为示例,迭代两个字符串以确定用于标识对的字符索引将是一件简单的事情。

答案 1 :(得分:0)

从同一个数组的两个副本开始,称为“source”和“destination”,它们是枚举的源字符串中的位置。删除从两个数组中删除相应的元素,并减少目标数组中的值。插入在目标数组中增加以下值。然后只需压缩两个数组并生成地图。