我要執行word文件不同,它需要執行什麼算法?文檔差異算法如何工作?
回答
LCS最優化的解決方案是O(ND) Myer 's algorithm,這裏是一個算法的做法,我曾經實施過不同的Office 2007文檔。 Link to algorithm paper
紙鏈接不起作用。 – 2013-08-05 03:53:44
This正在爲我工作:http://www.xmailserver.org/diff2.pdf – Zamicol 2017-02-21 18:01:54
差異基本上只是a solution到longest common sub-sequence problem。
最佳解決方案需要知識dynamic programming,所以這是一個相當複雜的問題來解決。
但是,它也可以通過構建後綴樹來完成。這兩種算法都被概述爲here。
通常當你假設你的文檔是字符或字節流時。這裏的問題是關於單詞文件。在實現這樣一個算法之前,你需要問自己一個問題是藍色8pt Verdana中的「Hello World」,與紅色10pt Arial等中的「Hello World」相同。 – quosoo 2009-10-02 15:28:36
是的,很顯然,基本算法需要額外的邏輯來解析差異,但算法的核心仍然是相同的。 – 2009-10-02 15:30:33
正如Ben S指出的那樣,差分問題一般可以通過求解最長的公共子序列問題來解決。更具體地說,Hunt-McIlroy algorithm是應用於該問題的經典算法之一(例如,在Unix'diff實用程序的實現中)。
那麼,一般來說,diff
'ing通常是由Longest common subsequence problem解決。還看到Diff維基百科文章的「Algorithm"部分:
差異的操作是基於 解決最長公共子 問題
在這個問題上,你有一個項目兩個 序列:
a b c d f g h j q z a b c d e f g i j k r x y z
,你要查找的最長 序列物品存在於 機器人h原始序列以相同的 的順序排列。也就是說,你想要找到一個新的 序列,它可以從 的第一個序列中刪除一些 項目,並從第二個序列中刪除其他項目的 。你也想 這個序列只要 是可能的。在這種情況下,它是
a b c d f g j z
從最長公共子 這只是一小步,得到 DIFF樣輸出:
e h i q k r x y + - + - + + + +
那說,這一切都正常工作與基於文本的文檔。由於Word文檔實際上是一種二進制格式,並且包含大量格式化信息和數據,因此這將變得更爲複雜。理想情況下,你可以看看自動運行Word本身,因爲它有能力的文檔之間「差異」,詳見這裏:
Microsoft Word Tip: How to compare two documents for differences
實現差異算法有兩個目的:只存儲版本之間的差異,或顯示版本之間的差異。這些是非常不同的(沒有雙關語意圖)。 LCS通常僅用於顯示差異,但爲了實現最佳存儲,需要更高級的算法。例如,如果您從文檔的一個部分剪下大部分,並將其粘貼到另一部分中,則優秀的存儲算法會檢測到該部分,而不會將其存儲爲「嘿,這裏出現了大量新數據」。 – 2009-10-02 15:32:52
@Lasse - 同意。由於最初的提問者在談論Word文檔,因此我認爲他們會更偏好差異化的「視覺」方面,而不是存儲方面。然而,對於存儲方面你是正確的,你會看到Delta Encoding/Compression(http://en.wikipedia.org/wiki/Delta_encoding)等。 – CraigTP 2009-10-02 16:37:41
- 1. 文本差異算法
- 2. 如何計算文件內容差異?
- 3. 如何計算xy差異?
- 4. 如何計算差異
- 5. 文本比較/差異算法
- 6. nodejs是否有一個工作差異庫或算法?
- 7. '最佳'差異算法
- 8. 算法需要兩次計算差異
- 9. 平方和差分算法是如何工作的?
- 10. Karmarkar-karp差分算法是如何工作的?
- 11. Trivago算法,如何工作?
- 12. MD5Sum算法如何工作?
- 13. CIMedianFilter如何工作? (算法)
- 14. 計算差異
- 15. 計算差異
- 16. 計算差異
- 17. 計算差異
- 18. 計算差異
- 19. 計算差異
- 20. 計算同一文檔上的兩個值之間的差異
- 21. DateTime ::差異年不工作
- 22. 尋找差異不工作
- 23. 比較工作表差異
- 24. PHP工作分鐘差異
- 25. 文本差異應用程序如何工作?
- 26. Django自定義後端文檔差異
- 27. 差異對谷歌的文檔搜索
- 28. 如何計算兩次差異?
- 29. 如何計算Perl中的DateTime差異?
- 30. Java如何計算時間差異
你會用它來*顯示差異,或者*以最佳方式存儲差異? – 2009-10-02 15:29:25