メインコンテンツへ
基礎理論ハフマン符号

ハフマン符号の特徴として最も適切なものはどれか。

ア.出現頻度が高い文字に短いビット列、低い文字に長いビット列を割り当てることで圧縮効率を高める。正解
イ.すべての文字に同じ長さのビット列を割り当て、データの整合性を保証する。
ウ.誤り検出のために冗長ビットを追加する符号化方式である。
エ.文字の出現頻度に関係なく、文字コード順に符号を割り当てる方式である。

解説

ハフマン符号は「よく使う言葉は短縮して話す」方式。「ありがとう」→「あり」、「よろしくお願いします」→「よろ」みたいな感覚です。

なぜ ア が正解か

ハフマン符号はデータの出現頻度を使った可変長符号化です。出現頻度の高い文字(例:「e」「a」)には短いビット列(例:0, 10)を割り当て、出現頻度の低い文字には長いビット列を割り当てます。これにより全体の平均符号長が最小化され、ロスレス圧縮が実現できます。ハフマン木を構築して符号を生成するのが特徴です。

なぜ イ は間違いか

全文字に同じ長さのビット列を割り当てるのは「固定長符号」(例:ASCII=8ビット)です。ハフマン符号の「可変長」という核心を無視した説明です。

なぜ ウ は間違いか

誤り検出のために冗長ビットを追加するのはパリティビットやCRC(巡回冗長検査)の説明です。ハフマン符号は誤り検出ではなくデータ圧縮のための符号化です。

なぜ エ は間違いか

文字コード順(例:Unicode順)に符号を割り当てるのは単純な固定長マッピングです。ハフマン符号は出現頻度をもとにした二分木(ハフマン木)から符号を導出します。

出典: AI生成問題(学習用)