メッセージの詰まったノート

データ圧縮と、意味を失わずに効率的に情報を表現する方法を探る。

  • #source coding
  • #huffman coding
  • #variable length codes
  • #prefix-free codes

「このノート、もうページがない」

由紀は分厚いノートの最後のページを見つめた。

「新しいの買えば?」陸が言った。

「でも、まだ書くスペースがあるはず…」

葵が興味を持った。「圧縮を考えているのかい?」

「圧縮?」

「情報源符号化だ。データを効率的に表現する方法」

陸が覗き込んだ。「由紀のノート、『です』『ます』が多いね」

「丁寧語だから」

葵がノートをパラパラとめくった。「頻出単語を短く書けば、スペースを節約できる」

「でも、読めなくならない?」

「そこで符号設計が重要になる。例えば、ハフマン符号」

由紀が尋ねた。「ハフマン?」

葵はホワイトボードに図を描き始めた。

「文字の出現頻度を調べて、頻度が高い文字に短い符号、低い文字に長い符号を割り当てる」

「なるほど」

「重要なのは、prefix-free性だ。どの符号も他の符号の先頭部分にならない」

陸が混乱した顔をした。「どういうこと?」

「例えば、Aを『0』、Bを『01』と符号化すると、『01』がAの後に1が続くのか、Bなのか分からない」

「確かに」

「だから、『A=0, B=10, C=11』のように設計する。0を読んだら即座にAと確定できる」

由紀が計算を始めた。「私のノートで一番多い単語は『情報』だ。これを短く書けば…」

「良い考えだ。でも、解読用の辞書も必要になる」

陸がアイデアを出した。「じゃあ、ノートの最初のページに辞書を書けば?」

「そう。それがヘッダー情報だ。圧縮ファイルにも含まれている」

由紀は具体的に計算した。「『情報』は100回出現。5文字だから500文字分。これを『J』1文字にすれば、400文字節約」

「でも」葵が指摘した。「辞書に『J=情報』と書く必要がある。その分のコストも考慮すべきだ」

「トレードオフですね」

「そう。データ量が少ないと、圧縮のオーバーヘッドが相対的に大きくなる。これが圧縮の限界だ」

陸が別の提案をした。「略語じゃなくて、記号は?😊とか」

葵が面白そうに言った。「絵文字も一種の符号化だね。感情を短く表現している」

「でも」由紀が考えた。「絵文字は文脈依存ですよね。同じ😊でも、意味が変わる」

「鋭い。それが条件付きエントロピーの問題だ。前の文脈を知っていれば、必要な情報量は減る」

葵はノートに式を書いた。「H(X) ≥ L̄ ≥ H(X)。平均符号長L̄は、エントロピーH(X)より短くできない」

「それがシャノンの源符号化定理だ」

由紀が感動した。「じゃあ、エントロピーが圧縮の限界を決めるんですね」

「正確には、条件付きエントロピーだ。文脈があれば、さらに圧縮できる」

陸がノートを見た。「由紀の文章、パターンがあるから圧縮できそう」

「でも」由紀が言った。「大事なことは省略したくない。情報量を保ちたい」

葵が頷いた。「それが可逆圧縮だ。完全に元に戻せる。一方、画像や音声は非可逆圧縮を使う。多少の情報を捨てて、大きく圧縮する」

「捨てる情報を選ぶのも技術なんですね」

「そう。知覚的に重要な情報を保ち、不要な部分を削る」

由紀は新しいノートを開いた。「次のノートでは、頻出語を符号化してみます」

「面白い実験だ」葵が認めた。

陸が笑った。「でも、一年後に読み返して、意味が分からなくなったりして」

「それは復号鍵を失った状態だね」葵が言った。

「じゃあ、辞書は大切に保管します」由紀が微笑んだ。

三人は、メッセージの詰まったノートを眺めた。

情報理論は、限られたリソースで最大の情報を伝える技術だ。

それは、ノートのページにも、人生にも当てはまる。