是否可以使用统一差异来推断编辑距离?

时间:2015-05-12 14:13:04

标签: algorithm bash shell

我有两个内容跨越多行的文件。我想找到编辑距离;即,假设只有插入和删除是可能的,将A转换为B需要多少次更改。

> cat > A                                 
A
B
C
D
E
> cat > B                                 
A
B
D
D
F
E
> diff -u A B                             
--- A   2015-05-12 16:09:31.000000000 +0200
+++ B   2015-05-12 16:09:42.000000000 +0200
@@ -1,5 +1,6 @@
 A
 B
-C
 D
+D
+F
 E

+-的总数给我编辑距离是否准确?

1 个答案:

答案 0 :(得分:2)

根据您对编辑距离的定义(类似于"Longest common subsequence problem"),您首先需要定义单个更改的内容。

  • 一个角色?
  • 一条线?
  • 一个档案?
  

最常见的子序列问题是经典的计算机科学   问题,数据比较程序的基础,如diff   实用,并在生物信息学中有应用。它也很广泛   由诸如Git的修订控制系统用于协调多个   对修订控制的文件集合所做的更改。

假设您希望定义更改(基于您的示例),那么是,使用+的{​​{1}}和-的总数命令就足够了。这是因为更新/替换将同时显示为删除(diff)和插入(-)。

另见http://en.wikipedia.org/wiki/Diff_utility#Unified_format