クラブ室の片隅で圧縮の話を

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

  • #lossless compression
  • #lossy compression
  • #huffman coding
  • #redundancy removal

「このファイル、重すぎませんか?」

由紀はラップトップの画面を見ていた。

「圧縮すればいい」陸が軽く言う。

「圧縮?どうやって?」

葵が近づいた。「データ圧縮の話をしよう。情報理論の実用的な応用だ」

「圧縮って、データを小さくすることですよね」

「そう。でも、情報は失わない。これが可逆圧縮だ」

陸が疑問を持った。「情報を失わずに小さくできるの?」

「できる。冗長性を取り除くんだ」葵がホワイトボードに書いた。

「例えば、『AAABBBCCC』という文字列。これを『3A3B3C』と書けば、短くなる」

「ランレングス符号化だ」

由紀が理解した。「繰り返しを数字で表す!」

「正解。これが圧縮の基本原理。パターンを見つけて、効率的に表現する」

葵は別の例を出した。

「『AAAA』と『ABCD』。どちらが圧縮しやすい?」

「『AAAA』です」由紀が即答する。

「なぜ?」

「パターンがある。『ABCD』はランダムで、パターンがない」

「正確。エントロピーが低いデータは圧縮しやすい。エントロピーが高いデータは圧縮しにくい」

陸が考えた。「じゃあ、既に圧縮されたデータは?」

「これ以上圧縮できない。エントロピーの限界に達している」

葵はノートに図を描いた。

「ハフマン符号化。頻出する文字に短いコードを、稀な文字に長いコードを割り当てる」

「例えば、英語の文章。『e』は頻繁に現れるから、短いコードを使う」

由紀が興奮した。「これが最適なんですか?」

「ほぼ最適。エントロピーに近い平均符号長を達成できる」

陸が別の質問をした。「写真とか音楽はどう圧縮するの?」

「それは非可逆圧縮だ」葵が説明する。「人間が気づかない情報を捨てる」

「捨てる?」

「例えば、JPEGは高周波成分を削る。人間の目は気づきにくい」

「MP3は、聞こえにくい音を削る」

由紀が心配そうに聞く。「元に戻せないんですか?」

「戻せない。だから非可逆。でも、圧縮率は高い」

葵は比較を示した。

「可逆圧縮:データ完全保存、圧縮率低い 非可逆圧縮:データ一部損失、圧縮率高い」

陸が納得した。「だから写真をJPEGで何度も保存すると劣化するんだ」

「正解。情報が徐々に失われる」

由紀がノートに書く。「圧縮は情報理論の実践なんですね」

「まさに。シャノンのエントロピーが、圧縮の限界を教えてくれる」

葵は式を書いた。

「H(X) ≤ 平均符号長 < H(X) + 1」

「エントロピー以下には圧縮できない。これがシャノンの源符号化定理だ」

陸が感心した。「理論が実際の技術を支えてるんだ」

「そう。ZIPファイル、PNG画像、動画ストリーミング。全てが情報理論に基づいている」

由紀がふと思いついた。「会話も圧縮できますか?」

葵が微笑んだ。「できる。要約がそれだ。重要な情報だけを残す」

「でも、ニュアンスが失われる」陸が指摘した。

「そう。非可逆圧縮だ。トレードオフは常にある」

由紀がラップトップを見た。「じゃあ、このファイルを圧縮してみます」

数秒後、ファイルサイズが半分になった。

「すごい!」

「冗長性があったんだ」葵が説明する。「データの中に隠れていたパターンを、圧縮アルゴリズムが見つけた」

陸がノートに書いた。「圧縮は、無駄を見つける技術」

「良い要約だ」葵が認めた。

三人は笑った。クラブ室の片隅で、また一つ学んだ。