web-dev-qa-db-ja.com

ハフマンコーディングの実際のアプリケーションは何ですか?

ハフマンコーディングが使用されていると言われますロスレスデータ圧縮アルゴリズムとしてですが、実際のデータ圧縮ソフトウェアはnotを使用しているとも言われています。十分に分散されて分散されているため、圧縮ファイルは元のファイルよりも大きくなる可能性があります。

これにより、ハフマンコーディングの実際のアプリケーションはあるのかと思います。

26
Jichao

Huffmanは、GZIP、PKZIP(winzipなど)、BZIP2からJPEGやPNGなどの画像形式に至るまで、遭遇する可能性のあるすべての主流の圧縮形式で広く使用されています。

すべての圧縮スキームには、意味のある圧縮ができない病理学的データセットがあります。上記のアーカイブ形式では、このようなファイルが見つかったときに、圧縮されずに単に「保存」されます。

新しい 算術および範囲コーディング スキームは 特許の問題 のためにしばしば回避されます。これは、ハフマンが圧縮業界の主力であることを意味します。

32
Will

この件については Wikipedia の記事を参照してください。

今日のハフマンコーディングは、他の圧縮方法の「バックエンド」としてよく使用されます。 DEFLATE(PKZIPのアルゴリズム)およびJPEGやMP3などのマルチメディアコーデックには、フロントエンドモデルと量子化の後にハフマンコーディングがあります。

5
Anton Gogolev

Huffman Encodingの実際のアプリケーションはかなりたくさんあります。 Zipは、おそらくハフマンエンコーディングをベースとして使用する最も広く使用されている圧縮ツールです。 Googleが先月リリースした最新の最も効率的な可逆圧縮アルゴリズムであるBrotli Compressionも、Huffman Codingを使用しています。それとは別に、BrotliはLZ77と他のいくつかの基本的なロスレス圧縮アルゴリズムも使用します。 Brotliを参照してください。

3
Farhan Haque

圧縮アルゴリズムを検討する場合、それぞれに利点と欠点があることがよくあります。一連の入力が与えられると、圧縮の性質上、そのデータにはより良いアルゴリズムとより悪い圧縮アルゴリズムが存在します。

ハフマンは本当に、本当にいくつかのことが得意です。最も顕著なのは、順序を何度も繰り返し、文字スペースのサブセットを含むデータです。たとえば、英語のテキストファイル。英語は同じ文字の後に同じ文字が続く傾向があります。

あなたの教授または本があなたにハフマンが使われていないという印象を与えたならば、それらは間違っています。たとえば、インターネットとのほとんどすべての通信は、ある時点でハフマン符号化されます。 (多くの通信プロトコルが使用しています。)ほとんどの画像ファイル(jpeg)はハフマンエンコードされています。ほとんどの音楽ファイル(mp3)はハフマンエンコードされています。他にも多くの例があります。

ハフマンが使用される理由の1つは、アダプティブハフマンと呼ばれるわずかに異なるアルゴリズムを介して「発見」できるためです。ファイルを読むと、ハフマンコードを学び、「移動しながら圧縮」します。これは簡略化された概要ですが、アイデアはわかります。

状況の問題に最適なアルゴリズムの使用を解決するために、Zipファイルでは、特定のファイルに最適なアルゴリズムに応じて、さまざまな圧縮を使用できます。

2
Hogan

ハフマンコードは、固定長コードを可変長コードに変換するために使用されます。これにより、可逆圧縮が行われます。可変長コードは、JPEGおよびMPEG技術を使用してさらに圧縮し、目的の圧縮率を得ることができます。

0
R. G. Gupta

非常に普及しているアプリケーションは、HPACKでの文字列のエンコード、つまりhttp/2ヘッダー圧縮 手法です。

RFCは、HTTPヘッダーの圧縮用に最適化された Huffman Code Table を直接提供します。

0
eckes