ノイズまみれのメッセージに隠された秘密

情報の基本単位を学び、すべてがビットで測定できることを理解する。

  • #error correction
  • #hamming distance
  • #redundancy
  • #parity bits

「これ、読めます?」

陸が古びた紙を差し出した。インクが滲み、いくつかの文字が判読不能だった。

「え■と、情■理■は…」由紀が読もうとする。

「『えっと、情報理論は』じゃない?」葵が補った。

「どうして分かるんですか?」

「文脈。周囲の情報から欠けた部分を推測する。これが冗長性の力だ」

その時、ミラが静かに近づき、ノートに書いた。「Error correction through redundancy」

葵が頷いた。「そう。通信では、ノイズで情報が壊れる。でも、冗長性を加えれば、元のメッセージを復元できる」

陸が不思議そうに聞く。「冗長性って、無駄ってこと?」

「普段はね。でも通信では、意図的な無駄が重要になる」

由紀がノートを開いた。「具体例はありますか?」

葵は簡単な図を描いた。

「3ビットのメッセージ『101』を送るとする。でも通信路にノイズがあって、1ビットが反転するかもしれない」

「じゃあ、『001』や『111』に変わっちゃう?」

「そう。受信側は、それが誤りかどうか分からない。でも、もし各ビットを3回繰り返して『111000111』と送ったら?」

陸が考えた。「1ビット壊れても、多数決で元のビットが分かる!」

「正解。これが最も単純な誤り訂正符号。反復符号と呼ばれる」

ミラが別の例を書いた。「Hamming code (7,4)」

「ハミング符号」葵が説明を続ける。「4ビットの情報に3ビットのパリティを加えて、7ビットにする。1ビットの誤りなら訂正できる」

由紀が興味津々だった。「パリティって何ですか?」

「検査用のビット。例えば、偶数パリティなら、1の個数が偶数になるようにビットを追加する」

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

「データ: 1011 パリティ: 1の個数は3(奇数) 偶数パリティビット: 1を追加して偶数にする 送信: 10111」

「もし受信したのが10110だったら、1の個数が偶数だから、誤りが検出できる」

陸が手を叩いた。「でも、どこが間違ってるかは分からないよね?」

「単純なパリティでは無理。でも、ハミング符号は複数のパリティを使って、誤りの位置を特定できる」

ミラが新しい図を描いた。複雑な行列とビット配置。

葵が補足する。「ハミング距離という概念がある。2つのビット列が、何ビット違うか。誤り訂正能力は、符号のハミング距離で決まる」

由紀が計算した。「101と110は、ハミング距離2?」

「正確。2ビット異なる。一般的に、距離dの符号は、(d-1)/2ビットまでの誤りを訂正できる」

陸が真剣な顔をした。「じゃあ、たくさん冗長性を加えれば、どんな誤りも直せる?」

「理論上はね。でも、送信効率が下がる。ここでもトレードオフだ」

ミラがメモを見せた。「Shannon limit: error-free communication near capacity」

「そう。シャノン限界まで行けば、ほぼ誤りなく、かつ高速に通信できる。でも、完璧な符号を見つけるのは難しい」

由紀がふと思いついた。「自然言語も、誤り訂正符号みたいなものですか?」

葵が感心した。「鋭い観察。文法、文脈、語彙の冗長性が、自然なエラー訂正を提供する」

「だから『え■と』を『えっと』と読めた」

「まさに。人間の脳は、強力な誤り訂正デコーダなんだ」

陸が最初の古い紙を見直した。「じゃあ、これも全部読めるかも」

四人で協力して、滲んだ文字を推測していく。文脈、文法、確率。情報理論の原理を自然に使って。

「完成!」由紀が叫んだ。

紙には、こう書かれていた。

「情報理論は、ノイズを超える技術だ。完璧な通信はないが、限界まで近づける」

ミラが微笑んだ。珍しいことだった。

「この紙自体が、誤り訂正の実演だったのかも」葵が言った。

「メタだな」陸が笑った。

由紀は紙を大切にしまった。ノイズの中にこそ、情報の価値がある。それを今日、身をもって学んだ。