一般用語
上級

Huffman 符号化 (1952)(ハフマンフゴウカ)

David A. Huffman が MIT 在学中の 1952 年に発明した可変長符号化アルゴリズム。出現頻度の高い文字に短い符号を、低い文字に長い符号を割り当てる「最適接頭符号」を生成し、ZIP・PNG・JPEG・MP3 など現代主要フォーマットの基礎技術となった。

0 回閲覧
0 いいね
2026/5/11 更新
関連タグ
Huffman 符号化
可変長符号
David Huffman
MIT
ZIP
Deflate

概要

Huffman 符号化は、David A. Huffman が MIT 在学中の 1952 年に発明した可変長符号化アルゴリズムで、出現頻度の高い文字に短い符号を、低い文字に長い符号を割り当てる「最適接頭符号 (Optimal Prefix Code)」を生成する画期的な技術です。当時 MIT の Robert Fano 教授が出題した「最適な可変長符号」問題に対する Huffman の解答として誕生し、それまでの Shannon-Fano 符号化を改良してエントロピー限界に漸近する最適性が情報理論的に証明されています。ZIP・PNG・JPEG・MP3・gzip・bzip2 など現代主要フォーマットの基礎技術として、データ圧縮分野で最も影響力のあるアルゴリズムの一つとして 70 年以上活躍し続けています。

主な特徴・仕組み

  • 発明: 1952 年 David A. Huffman (MIT 大学院生)
  • 論文: "A Method for the Construction of Minimum-Redundancy Codes" (1952)
  • 入力: 文字の出現頻度 (確率分布)
  • 構築方法: 最小頻度 2 文字をマージして親ノード生成、繰り返し
  • 符号生成: Huffman 木の根から葉までのパス、左 0・右 1 で符号
  • 最適性: 接頭符号として平均符号長最小、エントロピー限界に漸近
  • 可変長: 高頻度文字 1-3bit、低頻度文字 10+bit
  • 接頭符号: どの符号も他符号の接頭辞でない、復号一意
  • 適用: 静的 Huffman (固定確率) と動的 Huffman (適応的) あり
  • 限界: 整数 bit のみ、Arithmetic Coding は分数 bit でさらに高圧縮

スペック比較表

符号化方式年平均符号長用途
固定長 (8bit)-8bitASCII 標準
Shannon-Fano1948やや劣るHuffman 前身
Huffman1952エントロピーに近いZIP/PNG/JPEG/MP3
Arithmetic1976エントロピー限界JPEG2000/H.265
ANS (Asymmetric Numeral Systems)2009限界に近いZstd/lz4

具体例・対応技術

  • ZIP/Deflate (1989): LZ77 + Huffman 符号化、現代標準圧縮
  • PNG image (1996): Deflate ベース、画像圧縮
  • JPEG (1992): DCT + Huffman、写真圧縮の世界標準
  • MP3 (1993): Huffman 符号化を最終段で利用、音声圧縮
  • gzip (1992): Deflate ベース、UNIX 系標準圧縮

自作PCでの選び方・注意点

Huffman 符号化は現代のあらゆるファイル圧縮・画像圧縮・音声圧縮で内部的に動作しており、エンドユーザーが直接意識する場面は少ないですが、性能チューニングの場面で意識すべき技術です。ZIP/gzip/PNG ファイルを開く際の CPU 負荷の大部分が Huffman 復号、CPU クロック数・キャッシュサイズに影響を受けます。Intel/AMD 最新 CPU には Huffman 復号支援命令 (BMI2 の PDEP/PEXT 命令等) が組み込まれ、第 12 世代 Intel Core (Alder Lake) 以降・Ryzen 7000 シリーズで顕著な高速化が見られます。Web 開発で Gzip 圧縮の応答速度を最適化したい場合、サーバ CPU の Huffman 復号性能・帯域とのバランス検討が重要。

関連用語との違い

  • LZ77/LZ78: 辞書ベース、Huffman とは別系統、両者組合せ (Deflate) が最強
  • Arithmetic Coding: 算術符号化、分数 bit で Huffman より高圧縮率
  • ANS (Zstd の基盤): 2009 年新世代、Huffman の現代後継

よくある質問(FAQ)

Q1: Huffman と Shannon-Fano の違いは? A: 両方とも可変長符号だが、Huffman は最適性が証明済み、Shannon-Fano は近似的。Huffman の方が圧縮率が高い、現代主流。

Q2: Huffman 符号化だけでファイル圧縮できる? A: 可能だが圧縮率は LZ77 (辞書ベース) との組合せに大きく劣る。実用的な圧縮ツールは両者を組み合わせる (Deflate = LZ77 + Huffman)。

Q3: なぜ 70 年も使われ続けてる? A: シンプルさ・最適性証明・実装容易性のバランスが優れている。Arithmetic Coding はわずかに高圧縮だが特許問題と実装複雑性で Huffman が依然主流。

まとめ

  • Huffman 符号化 = 1952 年 David Huffman 発明、最適接頭符号
  • 出現頻度で符号長を可変、エントロピー限界に漸近
  • ZIP/PNG/JPEG/MP3/gzip など現代主要フォーマットの基礎
  • 70 年以上現役、CPU 命令 (BMI2) でハードウェア支援も進む
この記事について
カテゴリー一般用語
難易度上級
作成日2026/5/11