给定a和b以及b和c的成对编辑距离,我们可以找到a和c的成对编辑距离吗?

时间:2013-05-08 19:13:45

标签: string algorithm dynamic-programming edit-distance

如果我们有三个字符串a,b,c并且我们知道(或已经计算过)edit_distance(a,b)和edit_distance(b,c),我们是否可以有效地计算edit_distance(a,c)而无需实际比较a和角

* edit_distance(a,b)=将a转换为b所需的字符插入,删除和替换次数。*

1 个答案:

答案 0 :(得分:5)

一般来说,没有。例如,参加

  • a = CAP
  • b = CAT
  • c = CAR

此处,edit_distance(a,b)= 1且edit_distance(b,c)= 1.此外,edit_distance(a,c)= 1.

但是,我们也可以

  • a = CAP
  • b = CAT
  • c = RAT

这里,edit_distance(a,b)= 1,edit_distance(b,c)= 1,但是edit_distance(a,c)= 2.因此,没有办法纯粹使用a和b的编辑距离b和c来计算a和c的编辑距离。

然而,我们知道edit_distance(a,c)≤edit_distance(a,b)+ edit_distance(b,c),因为你总是可以按顺序应用转换来转换为C。更一般地说,编辑距离形成一个离散的distance metric,它构成了BK-tree data structure的基础。

希望这有帮助!