我正在研究區分較大的二進制文件。我已經實現了着名的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