使用不同的词典编辑距离

时间:2012-04-23 01:14:48

标签: string levenshtein-distance edit-distance

我的问题类似于Algorithm to transform one word to another through valid words

但是,这是一个主要的区别。我有一个固定的单词说“JAMES”和不同的词典作为i / p。当然,我现在无法预处理字典。

所以我必须找到将“JAMES”处理为“JOHNY”的最低成本,并将不同的词典作为输入。

无论如何我可以预处理单词“JAMES”,这样我需要在运行时执行最少数量的编辑距离计算吗?你们有什么建议?

2 个答案:

答案 0 :(得分:1)

我假设规则类似于您引用的问题,即一次只允许单个编辑,并且每个中间词应该出现在给定的字典中。

  1. 创建源字符串到目标字符串的单个编辑版本。例如: JOMES JAHES JAMNS 詹姆
  2. 递归每个单词并继续为每个唯一单词创建节点。如果已经创建了节点,只需创建边。这样就完成了预处理。

    现在给出一本字典,找到字典中的所有第一级单词。对于所有比赛,进一步查找所有二级单词,依此类推,直至到达目的地词。

答案 1 :(得分:0)

首先,您需要正确定义规则 - 是否允许添加或删除多个字符的“编辑”,替换一个字符等?

无论如何 - 我只是从显而易见的开始 - 创建一个图表,其中每个单词链接到可以直接编辑的所有单词。然后,使用具有深度限制的递归,将访问的元素标记为“脏”以避免循环,然后查看是否存在单编辑解决方案,双编辑解决方案等,直到找到解决方案或所有路径在该深度处都是脏的。 (如果您在“脏”成员中记录正在尝试的深度,则每次增加深度限制时都不必担心清除它们。您还可以标记所有脏的子树以避免再次递归它们。)

相关问题