有一个“完美的”diff算法吗?

时间:2012-03-18 19:49:27

标签: diff

是否存在不会出错的diff算法?一个人确切地知道删除了哪些字母以及在所有场合插入了哪些字母?

如果不存在,是不可能还是太难?

3 个答案:

答案 0 :(得分:1)

这是不可能的,因为一般来说,有多个编辑序列可能会让你从原作到最终。

答案 1 :(得分:0)

diff算法,查看原始文本和新文本,无法分辨编辑的真实顺序。因此,它无法知道您是否将ABC从一个地方移动到另一个地方,或者将其删除一个并插入另一个地方。在这种情况下,传统的差异只是告诉你在某个地方删除了某些内容,而在其他地方插入了其他东西(它甚至不知道它是相同的)。

人们可以构建一个工具,对一组合理的编辑做出有根据的猜测。我们Smart Differencer利用代码结构和代码片段的相似性来猜测代码块是否被移动而不是插入/删除,即使面对变化的名称也是如此。

答案 2 :(得分:0)

这是一个定义问题。

是的:总是可以找到两个文件之间的完美差异:两者之间有什么不同。

否:你可能想知道你移除的{的WHICH,这可能太复杂了,因为之后发生的事情没有回忆。