ハフマン符号 | 情報処理安全確保支援士試験
ハフマン符号とは
ハフマン符号(はふまんふごう)とは、データを効率よく圧縮するために開発された符号化の手法です。データの中で「よく使われる(出現頻度が高い)文字」には短いビット(短い0と1の組み合わせ)を割り当て、逆に「めったに使われない文字」には長いビットを割り当てることで、データ全体の合計サイズを最も小さく抑えることができます。この方法を使うと、文字ごとの長さを一律にするよりも大幅にデータサイズを減らすことができるため、ファイルの圧縮形式(ZIPやGZIP)や、画像の保存形式(JPEG)など、さまざまな場所でデータの通信量や保存容量を節約するために活躍しています。
具体例
「ABACABA」という、Aが多く含まれるテキストを圧縮する例を考えます。
【通常の符号化(一律2ビットずつ割り当て)】
A=00, B=01, C=10 とすると、全体で 2ビット × 7文字 = 14ビット必要。
【ハフマン符号(頻度に応じて長さを変える)】
一番多い A = 0 (1ビット)
次に多い B = 10 (2ビット)
滅多に出ない C = 110 (3ビット)
と割り当てると、「ABACABA」は「01001100100」となり、合計11ビットに圧縮されます。
もう少し詳しく