2012-04-23 81 views
1

我的问题与Algorithm to transform one word to another through valid words相似用不同的字典编辑距离

但是与主要区别在于,我有一个固定的词说“詹姆斯”和不同的词典作为我/ P。当然,我现在不能预处理字典。

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

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

回答

0

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

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

1

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

  1. 将源字符串的单个编辑版本创建为目标字符串。对于如: JOMES JAHES JAMNS 詹姆

递归每个这话保持创建的每个唯一字节点。如果节点已经创建,只需创建边。这完成了预处理。

现在给出一个字典,找到字典中的所有第一级字。对于所有的比赛,进一步找到所有的二级单词等,直到你到达目的地单词。