ハフマン符号(Huffman Coding)は、出現頻度の高い文字には短い符号を、低い文字には長い符号を割り当てる可逆圧縮アルゴリズムです。
| 文字 | 出現頻度 | 割り当てる符号 |
|---|---|---|
| よく出る文字 | 高い | 短い(ビット数小) |
| たまに出る文字 | 低い | 長い(ビット数大) |
全部を同じ長さで表すより、よく使う文字を短くすることで全体のデータ量を減らせます。ZIP・JPEG・MP3 などの圧縮形式の内部で使われ、平均符号長を最小化できる エントロピー符号化の代表手法です。可逆(元に完全に戻せる)なのが特徴です。
たとえば文章中で「あ」が非常に多く「ぬ」がまれなら、「あ」に短いビット列、「ぬ」に長いビット列を割り当てます。よく出る文字ほど短くするので、全体のビット数が減ります。
試験では 「頻度が高い文字ほど短い符号」という考え方と、可逆圧縮である点が問われます。