我有2个文件,其中包含多行。我想找到编辑距离;即,假设仅插入和删除是可能的。
需要进行多少个更改。> 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
可以准确说+
和-
的总数给我编辑距离吗?
按照您对编辑距离的定义(与"最长的常见子序列问题"相似),您首先需要定义一个更改。
- 一个字符?
- 一行?
- 文件?
最长的常见子序列问题是经典的计算机科学 问题,数据比较程序(例如
diff
)的基础 实用程序,并在生物信息学中有应用。它也广泛 修订控制系统(例如git)用于核对多个 对文件控制的文件集合进行的更改。
假设您想要 line 来定义更改(基于您的示例),则是,使用diff
命令的+
和-
的总数就足够了。这是因为更新/替换将显示为删除(-
)和插入(+
)。
另请参见http://en.wikipedia.org/wiki/diff_utility#unified_format