最短で伝わるメッセージを探して

葵が最適符号理論と人間のコミュニケーションの関係、効率と理解のバランスについて説明する。

  • #optimal codes
  • #prefix-free codes
  • #kraft inequality
  • #code efficiency

「最短のメッセージって、どうやって作るんですか?」

由紀の質問に、陸が答えた。「短くすればいいんじゃない?」

「でも、短すぎると曖昧になる」由紀が反論する。

葵が介入した。「それが最適符号化の問題だ。短く、かつ明瞭に」

「最適符号化?」

「情報を最小のビット数で表現する技術。でも、デコード可能でなければならない」

ミラが静かにノートを開き、図を描いた。

「A: 0 B: 10 C: 110 D: 111」

「これがプレフィックスフリー符号だ」葵が説明する。

「プレフィックスフリー?」由紀が首を傾げる。

「どのコードも、他のコードの接頭辞になっていない。だから一意にデコードできる」

陸が試した。「『0110111』を読むと…A、C、D?」

「正解。途中で止まらずに、一意に読める」

由紀が別の例を考えた。「もし『A: 0, B: 1, C: 01』だったら?」

「曖昧になる。『01』はAとBか、Cか分からない」

「だからプレフィックスフリーが必要なんだ」

葵はホワイトボードに式を書いた。

「クラフトの不等式:Σ 2^(-li) ≤ 1」

「liは各コードの長さ。この不等式を満たせば、プレフィックスフリー符号が存在する」

陸が計算した。「さっきの例だと、2^(-1) + 2^(-2) + 2^(-3) + 2^(-3) = 0.5 + 0.25 + 0.125 + 0.125 = 1」

「ぴったり1だ。これは最適に近い」

ミラが追加の図を描いた。頻度と符号長の関係。

「頻出するシンボルには短いコード、稀なシンボルには長いコードを割り当てる」葵が説明する。

由紀が理解した。「これがハフマン符号ですね」

「そう。ハフマン符号は、与えられた確率分布に対して最適なプレフィックスフリー符号を構築する」

「どうやって?」

葵は手順を説明した。

「1. 最も確率の低い二つのシンボルを結合 2. 新しいシンボルとして扱う 3. 全てが一つになるまで繰り返す 4. 木構造から符号を読み取る」

陸が感心した。「木から符号を作るんだ」

「二分木だ。左に行くと0、右に行くと1」

ミラがメモを見せた。「Average code length ≥ H(X)」

「平均符号長は、エントロピー以下にはならない」葵が補足する。「これがシャノンの限界だ」

由紀が質問した。「ハフマン符号は完璧なんですか?」

「ほぼ完璧。エントロピーと平均符号長の差は、1ビット未満だ」

「でも、もっと良い方法もある」葵が続ける。「算術符号化や、複数のシンボルをまとめて符号化する方法」

陸がノートに書いた。「最適とは、無駄がないこと」

「そうだ。でも、計算コストも考慮する必要がある。最適すぎる符号は、計算が重いかもしれない」

由紀が思い出した。「またトレードオフですね」

「常にトレードオフだ。理論と実践の間にも」

ミラが微笑んで、メッセージを書いた。

「Short message, clear meaning」

「短いメッセージ、明確な意味」葵が訳す。「それが最適符号の目標だ」

由紀が感心した。「ミラのメッセージ、いつも最適ですね」

「ミラは天然のハフマン符号化器だ」陸が笑った。

ミラが珍しく笑顔を見せた。

葵が総括する。「最適符号は、情報理論の芸術だ。科学と美学の融合だ」

「美学…」由紀が繰り返す。

「そう。無駄のない美しさ。それが最適符号の魅力だ」

四人は静かに頷いた。最短で伝わるメッセージ。それは彼らの目標でもある。