web-dev-qa-db-ja.com

テキストのみの圧縮アルゴリズムの現在の状態は何ですか?

Hutter Prize に敬意を表して、テキスト圧縮の上位のアルゴリズム(およびそれぞれの簡単な説明)は何ですか?

注:この質問の目的は、圧縮プログラムではなく、圧縮アルゴリズムの説明を取得することです。

29
Brian R. Bondy

境界を押すコンプレッサーは、非常識な結果を得るためにアルゴリズムを組み合わせています。一般的なアルゴリズムは次のとおりです。

  • Burrows-Wheeler Transform および here -予測可能なアルゴリズムを使用して文字(または他のビットブロック)をシャッフルし、繰り返されるブロックを増やして、ソースの圧縮を容易にします。解凍は通常どおりに行われ、結果は逆変換でシャッフルされません。注:BWTだけでは、実際には何も圧縮されません。ソースを圧縮しやすくするだけです。
  • パーシャルマッチング(PPM)による予測算術コーディング の進化ここで、予測モデル(コンテキスト)は、静的確率を使用するのではなく、ソースに関する統計を処理することによって作成されます。そのルーツは算術符号化にありますが、結果は、算術符号化だけでなく、ハフマン符号化または辞書で表すことができます。
  • コンテキストミキシング-算術コーディングは予測に静的コンテキストを使用し、PPMは単一のコンテキストを動的に選択し、コンテキストミキシングは多くのコンテキストを使用してその結果を評価します。PAQはコンテキストミキシングを使用します。 ここに =概要。
  • 動的マルコフ圧縮 -PPMに関連しますが、バイト以上ではなくビットレベルのコンテキストを使用します。
  • さらに、ハッター賞の出場者は、一般的なテキストを外部辞書からの小さなバイトのエントリに置き換え、大文字と小文字のテキストを2つの異なるエントリを使用するのではなく特別な記号で区別することができます。そのため、テキスト(特にASCII text)の圧縮には非常に優れており、一般的な圧縮にはそれほど価値がありません。

最大圧縮 はかなりクールなテキストと一般的な圧縮ベンチマークサイトです。 Matt Mahoneyが別の ベンチマーク を公開しています。 Mahoneyは、エントリごとに使用される主要なアルゴリズムをリストしているため、特に興味深い場合があります。

26
Corbin March

常に lzip があります。

冗談はさておき:

  • 互換性が懸念される場合でも、PKZIP(DEFLATEアルゴリズム)が優先されます。
  • bzip2は、比較的広いインストールベースとかなり優れた圧縮率を享受することの間の最良の妥協点ですが、別個のアーカイバが必要です。
  • 7-ZipLZMAアルゴリズム)は非常によく圧縮され、LGPLの下で利用できます。ただし、サポートが組み込まれたオペレーティングシステムはほとんどありません。
  • rzip はbzip2のバリアントであり、私の意見ではもっと注目に値します。長期間のアーカイブが必要な巨大なログファイルの場合は特に興味深いかもしれません。また、別のアーカイバが必要です。
5
Sören Kuklau

PAQをプログラムとして使用したい場合は、zpaqパッケージをDebianベースのシステムにインストールできます。使用法は(man zpaqも参照)

zpaq c archivename.zpaq file1 file2 file3

圧縮は約Zipファイルのサイズの1/1でした。 (1.9M対15M)

1
serv-inc