【问题标题】:Edit distance with varying dictionaries使用不同的字典编辑距离
【发布时间】:2012-05-03 15:49:36
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: string levenshtein-distance edit-distance


    【解决方案1】:

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

    1. 创建源字符串到目标字符串的单一编辑版本。例如: 乔姆斯 杰斯 果酱 杰米

    对这些单词中的每一个进行递归,并为每个唯一单词继续创建节点。如果节点已经创建,只需创建边。这样就完成了预处理。

    现在给定一个字典,找出字典中所有的第一级单词。对于所有匹配项,进一步查找所有二级词,依此类推,直到找到目标词。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-01
        • 1970-01-01
        相关资源
        最近更新 更多