戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2016年 春期 午前204


問題文

a, b, c, dの4文字から成るメッセージを符号化してビット列にする方法として表のア〜エの4通りを考えた。この表は a, b, c, dの各1文字を符号化するときのビット列を表している。メッセージ中での a, b, c, dの出現頻度は、それぞれ50%、30%、10%、10%であることが分かっている。符号化されたビット列から元のメッセージが一意に復号可能であって、ビット列の長さが最も短くなるものはどれか。
応用情報技術者 2016年 春期 午前2 問04の選択肢の画像

選択肢

(正解)

🔒 解説は解答すると表示されます

平均符号長と一意復号【午前2解説】

正解の理由

符号が「符号列から元の文字列に一意に戻せる(=一意復号可能)」であることと、与えられた出現確率に基づく「平均符号長が最小」であることを同時に満たす必要があります。選択肢の中で、これらを満たし平均符号長が最も短くなるのは (a=0, b=10, c=110, d=111)です。
理由は次のとおりです。は各符号語が互いに接頭(prefix)になっておらず(接頭辞符号)、したがって一意復号可能です。また、与えられた確率(a:0.5, b:0.3, c:0.1, d:0.1)に対して平均符号長が 0.5×1 + 0.3×2 + 0.1×3 + 0.1×3 = 1.7 ビット となり、他の一意復号可能な選択肢より短くなります。さらに、この符号配列はハフマン符号の構成と一致し、与えられた確率に対して最適(平均符号長最小)となることが確認できます。

解法ステップ

  1. 各選択肢について「一意復号可能か」を判定する。簡易判定として「接頭辞符号(prefix code)か」をまず確認する。接頭辞符号なら必ず一意復号可能。
  2. 一意復号可能と判定できた選択肢だけを残す。
  3. 残った選択肢について平均符号長 を計算し、最小のものを選ぶ。
  4. 必要ならハフマン符号との一致やエントロピーとの比較で妥当性を確認する。
具体的な計算(平均長):
  • ア: 長さ = [1,1,2,2] → (ただし一意復号不可)
  • イ: 長さ = [1,2,2,2] → (一意復号不可)
  • ウ: 長さ = [1,2,3,3] → (一意復号可能)
  • エ: 長さ = [2,2,2,2] → (一意復号可能)
上記より、一意復号可能な選択肢は と エであり、その中で平均長が小さいのは です。

選択肢別の誤答解説

  • ア(a=0, b=1, c=00, d=11)
    0(a)が 00(c)の接頭になっているため接頭辞符号ではなく、一意復号可能とは限りません。具体例:a+c = 0 + 00 = 000、c+a = 00 + 0 = 000 で同じビット列になり得ます(ac と ca が同じ符号列)。したがって不適。
  • イ(a=0, b=01, c=10, d=11)
    表面上短い符号語があるため平均長が小さく見えますが、これも接頭辞条件を満たしていません。具体的な曖昧性の例を示します:a+c = 0 + 10 = 010、一方 b+a = 01 + 0 = 010。よって "010" が ac と ba のどちらとしても解釈でき、これは一意復号不可能です。したがって不適。
  • ウ(a=0, b=10, c=110, d=111)
    各符号語は互いに接頭でない(0, 10, 110, 111)ため接頭辞符号であり一意復号可能。与えられた確率に対する平均符号長は 1.7 ビットで、同じ条件下で最小です。ハフマン符号の構築でもこの配列になるため最適性が裏付けられます。
  • エ(a=00, b=01, c=10, d=11)
    固定長2ビットで一意復号可能だが平均長は 2.0 ビットと (1.7ビット)より大きいため不適。

よくある誤解

  • 「符号語が短いほど良い」は誤り:短い符号語があっても、接頭関係により復号が曖昧になれば使えません。平均長だけでなく一意復号可能性が必要です。
  • 「一意復号可能=接頭辞符号」は不正確:接頭辞符号であれば必ず一意復号可能ですが、逆は必ずしも真ではありません(接頭辞でないが一意復号可能な例も存在します)。ただし実用上は接頭辞符号を用いることが多く判定も簡単です。
  • 「短い平均長を示す選択肢は常に正解」は誤り:平均長が小さくても一意復号できなければ無効です(例:アは平均長1.2だが復号不能)。

補足コラム

  • ハフマン符号の構築(簡単な流れ)
    1. 出現確率が最も小さい2つ(ここでは c,d の各0.1)を結合して確率0.2の仮想ノードを作る。
    2. 次に確率0.2(c,dの結合)と確率0.3(b)を結合して確率0.5のノードにする。
    3. 最後に残る0.5(a)と0.5(前段の結合)を結合して木を完成。
      これにより各文字の深さ(符号長)が a:1, b:2, c:3, d:3 となり、選択肢は に一致します。
  • 情報理論的下限としてのエントロピー
    ビット。最適な(可接頭の場合の)平均符号長はエントロピー以上であり、ハフマン符号の平均長 1.7 はこの下限に非常に近い値です。
  • 一意復号可能性の厳密判定には Sardinas–Patterson アルゴリズムが使えますが、試験では接頭辞判定と簡単な反例提示で十分です。

FAQ

Q1: 接頭辞符号でないコードは必ず一意復号不可ですか?
A1: いいえ。接頭辞符号であることは一意復号可能の十分条件ですが、必須条件ではありません。ただし接頭辞でないコードは容易にあいまいさを生みやすく、試験問題では接頭辞でない場合に反例を示して排除するのが一般的です。
Q2: 反例の作り方は?
A2: 接頭関係を確認し、ある符号語 x が別の符号語 y の先頭部分になっている場合、x と y の組合せで順序を入れ替えたときに同じビット列になる例(例えば a+c と c+a)を作るとよいです。イの場合は a+c = 0+10 = 010 と b+a = 01+0 = 010 が同じで反例成立です。
Q3: 試験で速く判定するコツは?
A3: まず各行について「短い符号語が他の符号語の先頭になっていないか」をチェックする(接頭辞判定)。接頭辞なら即座に一意復号可能として平均長計算に進む。接頭辞でなければ具体的な反例(短い文字列の組合せで同じビット列になる)を1つ示せば除外できます。

関連キーワード: プレフィックス符号、一意復号、平均符号長、ハフマン符号、クラフトの不等式、エントロピー、Sardinas–Patterson、符号化
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について