シャノンのアイデアを使用しているため、ハフマンコーディングは常に最適ですか?テキスト、画像、ビデオ、...圧縮はどうですか?
この主題はまだ現場で活発ですか?どの古典的または現代的な参考文献を読むべきですか?
シャノンのアイデアを使用しているため、ハフマンコーディングは常に最適ですか?テキスト、画像、ビデオ、...圧縮はどうですか?
この主題はまだ現場で活発ですか?どの古典的または現代的な参考文献を読むべきですか?
回答:
ハフマン符号化は、すべてのシンボルの確率が独立していて、事前にわかっているシンボルからシンボルへのコーディングに最適です。ただし、これらの条件が満たされない場合(画像、ビデオなど)、LZW、JPEGなどの他のコーディング手法が使用されます。詳細については、Khalid Sayood著の「Introduction to Data Compression」を参照してください。
通常、実際のファイルには適用されない特定の前提条件を備えたハフマン圧縮は、最適であることが証明できます。
いくつかの圧縮アルゴリズムは、ハフマンアルゴリズムよりも小さい種類のファイルを圧縮するため、ハフマンは最適ではありません。これらのアルゴリズムは、ハフマン最適性証明の警告のいずれかを利用します。
(a)各シンボルを整数のビット数で個別にコーディングし、(b)各シンボルが送信する他のシンボルと相互に関連がない(相互情報がない、統計的に独立しているなど)、および(c)受信者はすべての可能なシンボルの確率分布を知っているので、ハフマン圧縮が最適です(最小の圧縮ファイルを生成します)。
(a)シンボルごと:各入力シンボルを整数のビットとしてエンコードする必要があるというバイナリハフマン制限を緩和することにより、範囲コーディングなどのいくつかの圧縮アルゴリズムは、標準のハフマンよりも悪くなることはなく、通常はそれよりも優れています。
(b)無関係なシンボル:ほとんどの実際のデータファイルには、シンボル間の相互情報がいくつかあります。シンボルを「非相関化」し、これらの非相関シンボルにハフマンアルゴリズムを使用することにより、プレーンなハフマンよりも優れた結果を得ることができます。
(c)既知の確率分布:通常、受信者は正確な確率分布を知りません。したがって、典型的なハフマン圧縮アルゴリズムは、最初に頻度テーブルを送信し、次に圧縮データを送信します。ポーラーツリーコーディングなどのいくつかの「適応型」圧縮アルゴリズムは、頻度表を明示的に送信することなく、確率分布に収束するか、変化する確率分布に適応するため、ハフマンよりも優れた圧縮を得ることができます。
このようなハフマン圧縮よりも優れた圧縮について論じている本と論文:
最適な圧縮率は、データのエントロピーに関連しています。
ウィキペディアの記事http://en.wikipedia.org/wiki/Shannon%27s_source_coding_theoremから:
Nは無限大になりがちなので、それぞれがエントロピーH(X)のN iid確率変数をNH(X)ビット以上に圧縮して、情報損失のリスクを無視できます。しかし、逆に、それらがNH(X)ビット未満に圧縮されている場合、情報が失われることは事実上確実です。