平成28年度 春期 午前 問4
基礎理論
符号化に関する問題
a,b,c,d の 4 文字から成るメッセージを符号化してビット列にする方法として表のア〜エの 4 通りを考えた。この表は a,b,c,d の各 1 文字を符号化するときのビット列を表している。メッセージ中での a,b,c,d の出現頻度は,それぞれ 50%,30%,10%,10%であることが分かっている。符号化されたビット列から元のメッセージが一意に復号可能であって,ビット列の長さが最も短くなるものはどれか。
| a | b | c | d | |
|---|---|---|---|---|
| ア | 0 | 1 | 00 | 11 |
| イ | 0 | 01 | 10 | 11 |
| ウ | 0 | 10 | 110 | 111 |
| エ | 00 | 01 | 10 | 11 |
- ア0 1 00 11
- イ0 01 10 11
- ウ0 10 110 111
- エ00 01 10 11
答えと解説を見る
✓ これが正解ウ0 10 110 111
解説
読み方が一通りに決まる中で、平均が最短の割当てを選びます。
関門は二つあります。順番を間違えると必ずつまずくので、先に一つ目から片づけます。一つ目は、続けて並べたビット列を元のメッセージに戻せるかどうかです。見分け方は簡単で、どの符号も、ほかの符号の先頭になっていないことを確かめます。この条件を満たしていれば、先頭から読み進めるだけで区切りが決まります。二つ目は、符号化した後の長さです。一文字あたりの平均は、符号の長さに出現頻度を掛けて足し合わせれば出ます。この二つを満たすのが、a に 0、b に 10、c に 110、d に 111 を割り当てた案です。どの符号もほかの先頭にはなっていないので復号できますし、平均は 0.5 × 1 + 0.3 × 2 + 0.1 × 3 + 0.1 × 3 = 1.7 ビットになります。すべてを 2 ビットにそろえた案は復号できますが平均は 2.0 ビットなので、こちらのほうが短く済みます。この割当ては、出現頻度の小さいものから束ねていくハフマン符号の作り方と同じ形になっており、束ねた深さがそのまま符号の長さになっています。
ほかの選択肢はなぜ違うのか
- ア0 1 00 11:a に 0、c に 00 を与えた案です。0 が 00 の先頭になっているので、00 という並びが a の二つ続きとも c 一文字とも取れてしまい、元に戻すときに読み方が決まりません。
- イ0 01 10 11:a の 0 が b の 01 の先頭になっています。0110 という並びは、b と c の二文字とも読めますし、a と d と a の三文字とも読めるので、二通りに分かれてしまいます。
- エ00 01 10 11:四文字すべてを 2 ビットにそろえた案です。区切りは一通りに決まりますが、100 文字あたり 200 ビット必要で、出現の偏りを長さに生かせていません。
この問題の用語
- 復号暗号にした文を、もとの読める形に戻すことをいいます。相手の公開鍵で暗号化した文は、相手の秘密鍵だけで戻せます。
出典:平成28年度 春期 応用情報技術者試験 午前 問4
同じ用語が出る問題
- 令和7年度 春期 午前 問37:サイドチャネル攻撃に該当するもの(復号)
- 令和6年度 秋期 午前 問39:ディープフェイクに関する問題(復号)
- 令和5年度 秋期 午前 問37:楕円曲線暗号の特徴(復号)
- 令和2年度 10月 午前 問42(復号)
- 令和2年度 10月 午前 問4:符号化に関する問題(復号)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)