「最短のメッセージって、どうやって作るんですか?」
由紀の質問に、陸が答えた。「短くすればいいんじゃない?」
「でも、短すぎると曖昧になる」由紀が反論する。
葵が介入した。「それが最適符号化の問題だ。短く、かつ明瞭に」
「最適符号化?」
「情報を最小のビット数で表現する技術。でも、デコード可能でなければならない」
ミラが静かにノートを開き、図を描いた。
「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」
「短いメッセージ、明確な意味」葵が訳す。「それが最適符号の目標だ」
由紀が感心した。「ミラのメッセージ、いつも最適ですね」
「ミラは天然のハフマン符号化器だ」陸が笑った。
ミラが珍しく笑顔を見せた。
葵が総括する。「最適符号は、情報理論の芸術だ。科学と美学の融合だ」
「美学…」由紀が繰り返す。
「そう。無駄のない美しさ。それが最適符号の魅力だ」
四人は静かに頷いた。最短で伝わるメッセージ。それは彼らの目標でもある。