ハフマン符号とは?はふまんふごう
ハフマン符号とは、文字ごとの出現頻度をもとに、よく出る文字には短いビット列、めったに出ない文字には長いビット列を割り当てる可変長の符号。出現頻度の小さい2つを束ねて1つにする操作をくり返して木を作り、根から各文字までの左右の分かれ道を0と1で表して符号を決める。こうして作った符号はどの符号も他の符号の先頭部分にならない(語頭条件を満たす)ので、区切りの記号が無くても先頭から一意に読み戻せ、平均の符号の長さが最も短くなる。
最終更新:2026-10-10
この語が出る過去問を解く →背景
文字を固定長で表すと、4種類なら全部2ビットのように、よく出る文字にもまれな文字にも同じ長さを使うことになり、データ量に無駄が出る。出現の偏りを利用して全体を短くしたいが、長さがばらばらだと区切りが分からなくなる。その両方を解決する作り方として考えられた。
具体例
A・B・C・Dの出現確率がそれぞれ50%・25%・12.5%・12.5%なら、A=0、B=10、C=110、D=111とできる。1文字あたりの平均は0.5×1+0.25×2+0.125×3+0.125×3=1.75ビットで、固定長の2ビットより短い。ZIPファイルやPNG画像で使われる圧縮方式(Deflate)や、JPEG画像の圧縮の最後の段階でもハフマン符号が使われている。
試験での引っ掛け
「どの符号も他の符号の先頭部分にならない」条件を破った符号表(例:Aが0でBが01)は一意に読み戻せないので、符号表の穴埋め問題ではこの条件で選択肢を消す。また、同じ値の連続を「値と個数」に置き換えるランレングス符号化とは別の方式。誤りを見つけて直すハミング符号(通信路符号化)とも目的が違い、ハフマン符号はデータを短くするための情報源符号化にあたる。
関連用語
出た過去問
出典:平成30年度 秋期 基本情報技術者試験 午前 問4(IPA)
出現頻度の異なるA,B,C,D,Eの5文字で構成される通信データを,ハフマン符号化を使って圧縮するために,符号表を作成した。aに入る符号として,適切なものはどれ…
正解:110
要点:ハフマン符号は他の符号の接頭辞になってはならない
ハフマン符号は語頭条件を満たす必要があり、どの符号も他の符号の先頭部分になってはならない。既に00・01・10が使われているので2ビットは11しか残らず、Eが111を使うことからDは110となる。頻度がEより高いDに同じ3ビットを割り当てても矛盾はしない。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。