Levenstein距离,多条路径

时间:2018-05-30 09:30:07

标签: c++ levenshtein-distance damerau-levenshtein

编辑: TL; DR版:如何获得两个单词之间Damerau-Levenshtein距离的所有可能回溯?我正在使用https://en.wikipedia.org/wiki/Wagner%E2%80%93Fischer_algorithm来计算距离,并使用简单的回溯算法(如下所示)来重建校正列表。

以下详细信息:

在尝试获得一组完整的可能对齐时,卡住了最佳的弦线对齐(Damerau-Levenshtein距离)。

目标是在自动建议算法中对齐2个字符串以进一步比较。特别是,我想忽略第一个单词结尾处的插入。

在某些情况下可能存在多个“最佳”比对的问题,例如,

align("goto", "go to home")

1) go to
   go to home

2) go t   o
   go to home

不幸的是,我的实现仅找到第二个变体,而我需要两者或第一个。

我试图执行某种A *或BFS路径查找,但看起来成本计算矩阵仅针对(2)变量进行“调整”。下面有截图我可以找到红色路径,但看起来没有绿色路径: screenshot

然而,有人制作了一个网络演示,它完全符合我的要求: web demo

我在这里缺少什么?

也许我的实现太长了,无法在此处发布,因此有一个指向github的链接:https://github.com/victor-istomin/incrementalSpellCheck/blob/f_improvement/spellCheck.hpp

距离实现位于optimalStringAlignementDistance()和optimalStringAlignmentBacktrace()方法中。

0 个答案:

没有答案