编辑: 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)变量进行“调整”。下面有截图我可以找到红色路径,但看起来没有绿色路径:
我在这里缺少什么?
也许我的实现太长了,无法在此处发布,因此有一个指向github的链接:https://github.com/victor-istomin/incrementalSpellCheck/blob/f_improvement/spellCheck.hpp
距离实现位于optimalStringAlignementDistance()和optimalStringAlignmentBacktrace()方法中。