我一直在疯狂地寻找一个有效的差异算法的解释。
我得到的最接近的是 这个链接到 RFC 3284(来自几篇 Eric Sink 博客文章) ,它用完全可以理解的术语描述了存储差异结果的 数据格式。然而,它没有提到任何关于一个程序如何在执行 diff 时达到这些结果的内容。
出于个人好奇,我试图研究这个问题,因为我确信在实现一个 diff 算法时一定会有一些权衡,当你看到一些差异并想知道“为什么 diff 程序选择这个作为改变而不是那个?”...
在哪里可以找到最终输出 VCDIFF 的高效算法的描述?
顺便说一句,如果你碰巧找到了 SourceGear 的“区分合并”所使用的实际算法的描述,那就更好了。
注意: 最长公共子序列似乎不是 VCDIFF 所使用的算法,考虑到它们使用的数据格式,看起来它们正在做一些更聪明的事情。