我一直在瘋狂地解釋有效且高效的diff算法。我得到的最接近的是指向RFC 3284的鏈接(來自Eric Sink的幾篇博客文章),該鏈接以完全可以理解的方式描述了差異結果存儲的數據格式。但是,它沒有提及程序在進行比較時如何達到這些結果。我試圖出于個人好奇心進行研究,因為我敢肯定在實施diff算法時必須權衡取舍,當您查看diff并想知道“為什么diff程序為什么選擇此作為更改時,這很清楚而不是那個?” ...在哪里可以找到最終輸出VCDIFF的有效算法的描述?順便說一句,如果您碰巧找到SourceGear的DiffMerge使用的實際算法的描述,那就更好了。注意:最長的公共子序列似乎不是VCDIFF使用的算法,在給定使用的數據格式的情況下,它們看起來似乎在做些更聰明的事情。
3 回答

DIEA
TA貢獻1820條經驗 獲得超3個贊
O(ND)差異算法及其變體是一篇很棒的論文,您可能要從那里開始。它包括偽代碼和進行比較時圖形遍歷的漂亮可視化。
本文的第4節介紹了對該算法的一些改進,使其非常有效。
成功實現這一點將為您提供一個非常有用的工具,并且可能會提供一些出色的經驗。
生成所需的輸出格式有時可能很棘手,但是如果您了解算法的內部原理,那么您應該可以輸出所需的任何內容。您還可以引入試探法來影響輸出并進行某些折衷。
這是一個頁面,其中包含一些文檔,完整的源代碼以及使用上述算法中的技術的diff算法示例。
該源代碼似乎緊跟基本算法和易于閱讀。
還有一些準備輸入的內容,您可能會發現這很有用。當您按字符或標記(單詞)進行區分時,輸出會有巨大差異。
祝好運!
添加回答
舉報
0/150
提交
取消