我正在研究区分较大的二进制文件。我已经实现了着名的Myers Diff算法,它产生了一个最小差异。然而,它是O(ND),所以要区分两个非常不同的1 MB文件,我预计需要100万平方= 1万亿的时间。这不好!更快加速
我想要的是一种算法,可以产生一个潜在的非最小差异,但速度更快。我知道一个人必须存在,因为Beyond Compare会这样做。但我不知道如何!
可以肯定的是:有些工具如xdelta或bdiff,但是这些工具会生成一个用于计算机消耗的补丁,这与人类可消耗的diff不同。补丁涉及将一个文件转换为另一个文件,因此它可以执行诸如从文件的以前部分进行复制的操作。一个人类可消费的差异是在视觉上显示差异,并且只能插入和删除。例如,该变换:
“puddi” - > “puddipuddipuddi”
将产生一小片 “拷贝[0,4]到[5,9]和[10,14]”,但更大的差异“追加'puddipuddi'”。我对产生更大差异的算法感兴趣。
谢谢!
这是非常有用的信息! DNA测序看起来好像会与这个问题搏斗,所以我会从中调查技术。谢谢! – fish 2011-01-06 08:22:47
@fish:不客气:) – 2011-01-06 12:08:42