c++ - 莱文斯坦距离,多路径
问题描述
编辑: 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() 方法中。
解决方案
推荐阅读
- list - 如何在没有“并发修改”异常的情况下将所有列表项添加到另一个列表的每个项目
- tensorflow - 关于 Keras imagedatagenerator.flow(image, target) 中的目标会发生什么的问题
- php - 使用 readFile() 下载 zip 时总是出现“失败 - 网络错误”
- html - user-select:none 仍然是 Chrome 中复制的富文本的一部分
- macos - Docker 使用 25-35% CPU 而没有运行容器/应用程序 - 如何真正空闲?
- .net - 在账单中创建自动增量 ID
- android - HtmlUnit NoSuchFieldError:没有 Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier 类型的静态字段实例
- reactjs - 将函数应用于每个 React 组件
- css - 无限 SVG 动画在悬停时平滑地检索初始状态
- c# - 蛇控制台算法c#