2008-10-25 108 views
24

爲了紀念Hutter Prize, 什麼是文本壓縮的頂級算法(以及每個算法的快速描述)?什麼是純文本壓縮算法的當前狀態?

注意:這個問題的目的是獲得壓縮算法的描述,而不是壓縮程序的描述。

+2

我看到一旦一個(模擬)的文章提出文本的有損壓縮,具有優良的性能(大小!)......很有趣。 – PhiLho 2008-10-25 14:18:15

+0

@PhiLho嘿,這基本上就是Summly做:) http://www.theregister.co.uk/2013/03/25/yahoo_buys_summly/ – 2013-05-04 21:38:21

回答

22

邊界推動壓縮機結合瘋狂的結果算法。常見的算法包括:

  • 的​​和here - 洗牌字符(或其他比特塊)與可預測的算法,以增加重複塊這使得源更容易壓縮。正常情況下會發生解壓縮,並且反向轉換會導致結果不重排。注意:單獨使用BWT實際上並不壓縮任何內容。它只是使源更容易壓縮。
  • Prediction by Partial Matching (PPM) - arithmetic coding的演變,其中預測模型(上下文)是通過處理有關源與使用靜態概率的統計信息來創建的。儘管它的根源在於算術編碼,但結果可以用霍夫曼編碼或字典以及算術編碼來表示。
  • 上下文混合 - 算術編碼使用靜態上下文進行預測,PPM動態選擇單個上下文,上下文混合使用許多上下文並權衡其結果。 PAQ使用上下文混合。 Here's高級概述。
  • Dynamic Markov Compression - 與PPM相關,但使用比特級上下文與字節或更長。
  • 此外,Hutter獎參賽者可以用外部字典中的小字節條目替換常見文本,並使用特殊符號區分大小寫文本,而不是使用兩個不同的條目。這就是爲什麼他們擅長壓縮文本(特別是ASCII文本),而不是像常規壓縮那樣有價值。

Maximum Compression是一個非常酷的文本和一般壓縮基準站點。 Matt Mahoney發佈另一個benchmark。 Mahoney可能特別感興趣,因爲它列出了每個條目使用的主要算法。

3

總是有lzip

所有開玩笑一邊:

  • 凡兼容性是一個問題,PKZIP(DEFLATE算法)仍然獲勝。
  • bzip2是享受相對廣泛的安裝基礎和相當好的壓縮比之間的最佳折衷方案,但需要單獨的存檔器。
  • 7-ZipLZMA算法)壓縮得很好,可用於LGPL。但是,很少有操作系統帶有內置支持。
  • rzip是bzip2的變種,在我看來值得更多的關注。對於需要長期存檔的大型日誌文件,這可能特別有趣。它還需要一個單獨的存檔器。
+4

這些都沒有在附近PAQ等幾個純文本壓縮算法(HTTP: //en.wikipedia.org/wiki/PAQ) – 2008-10-25 14:47:11

0

如果您想將PAQ作爲程序使用,您可以在基於debian的系統上安裝zpaq軟件包。用法是(也man zpaq見)

zpaq c archivename.zpaq file1 file2 file3 

壓縮爲約1/10日一個zip文件的大小的。 (1.9M VS 15M)