【问题标题】:Edit Distance Algorithm (where changes can be made to entire substrings)编辑距离算法(可以对整个子字符串进行更改)
【发布时间】:2011-04-02 02:40:33
【问题描述】:

当存在对整个子字符串进行操作的额外原始操作(标准是插入、删除、转置和替换单个字符)时,是否有用于确定 2 个字符串之间的编辑距离的算法示例。可能的额外原始操作示例如下:

1) 复制函数 - 复制任何子字符串并将其插入到需要的地方

2) move 函数 - 将任何子字符串移动到新位置

使用这些,如果 d & D 是 Levenstein 距离,但 D 还包括 1) & 2),则 d("Sheep", "SheepBeep") = 4(因为必须插入 4 个),但 D("Sheep ", "SheepBeep") = 2(插入“B”然后复制“eep”)。同样,d("CarDog", "DogCar") = 6 但 D("CarDog", "DogCar") = 1 by 2)。

是否可以对Levenstein Distance 算法进行(简单)修改以实现此目的?

【问题讨论】:

    标签: algorithm diff


    【解决方案1】:

    只有插入、删除和移动会导致NP-hard problem。添加重复、转置和替换似乎不太可能再次使其变得更容易。因此,像 Levenshtein 动态规划这样的多项式时间方法不太可能奏效。

    在生物信息学中,“基因组重排”和“易位距离”等术语也考虑了类似的问题。

    【讨论】:

      猜你喜欢
      • 2016-11-21
      • 2015-03-01
      • 2021-07-15
      • 2018-08-23
      • 2021-08-01
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      • 2017-10-21
      相关资源
      最近更新 更多