エンコード | デコード | 圧縮

> shannon | fano | entropy <

// Shannon-Fano – データ圧縮のためのトップダウン型エントロピー符号化

[ENTROPY]

エントロピーに基づく

情報理論に基づき、効率的な可変長符号を生成します。

[TOP-DOWN]

トップダウン方式

類似した確率をもつ記号のグループに再帰的に分割します。

[HISTORIC]

歴史的アルゴリズム

現代の多くの圧縮アルゴリズムに影響を与えた先駆的手法です。

>> 技術情報

Shannon-Fano の仕組み:

Shannon-Fano 符号化では、記号を出現頻度順に並べ、合計確率ができるだけ近くなるように2つのグループへ再帰的に分割します。各分割でコードに 1 ビットを追加します(左側に 0、右側に 1)。その結果、可変長のプレフィックス符号列が得られます。

符号化プロセス:

テキスト: "AAABBCD" 出現回数: A:3, B:2, C:1, D:1 分割: [A] | [B,C,D] コード: A: 0 B: 10 C: 110 D: 111 符号化結果: 0 0 0 10 10 110 111

Shannon-Fano を使う理由:

  • >実装が簡単
  • >良好な圧縮率
  • >歴史的に重要
  • >教育用途に最適
  • >プレフィックス符号を生成

>> よくある質問

Shannon-Fano 符号化とは?

Shannon-Fano 符号化は、1940年代に Claude Shannon と Robert Fano によって開発されたエントロピー符号化方式です。記号の出現確率に基づく可変長符号を用いた、最初期のアルゴリズムの一つです。

Shannon-Fano と Huffman の違いは?

どちらも可変長符号を生成しますが、Huffman 符号は最適であり、平均コード長を最小化します。Shannon-Fano はよりシンプルですが、やや長い符号になることがあります。Huffman はボトムアップで木を構築し、Shannon-Fano はトップダウンで構築します。

分割処理はどのように行われますか?

記号を頻度順に並べ、合計確率がほぼ等しくなるように2つのグループに分けます。この処理を各グループに対して再帰的に繰り返し、最終的に各グループに1つの記号だけが残るまで続けます。

現在でも Shannon-Fano は使われていますか?

Shannon-Fano は実用システムでは、最適性を保証する Huffman 符号化にほぼ置き換えられています。現在は主に歴史的・教育的な目的で利用されますが、圧縮アルゴリズムの基本概念を理解するうえで非常に有用です。

その他の言語