技能一覧 › 大学数学 情報理論・符号理論

ハフマン符号

情報源の記号の確率から 2 元ハフマン符号を構成し、1 記号あたりの平均符号長 の最小値を求め、エントロピー と比べられる

前提

この技能までの道筋(22 技能)
算数中学高校大学大学院

読み込み中…

右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。

一覧で見る(前提が先)
  1. 分数のたし算・ひき算 (算数 計算と数のきまり)
  2. 小数の四則計算 (算数 計算と数のきまり)
  3. 正負の数の加法・減法 (中学数学 数と式)
  4. 分数のかけ算・わり算 (算数 計算と数のきまり)
  5. 四則の混じった計算の順序 (算数 計算と数のきまり)
  6. 正負の数の乗除・累乗と四則混合 (中学数学 数と式)
  7. 約数の見つけ方 (算数 整数の性質)
  8. 素因数分解と約数の個数 (算数 整数の性質)
  9. 平方根の意味と根号の簡単化 (中学数学 数と式)
  10. 根号の乗除と加減 (中学数学 数と式)
  11. 指数の拡張と指数関数 (数学II 指数関数と対数関数)
  12. 語頭符号とクラフトの不等式 (大学数学 情報理論・符号理論)
  13. 対数の定義と性質 (数学II 指数関数と対数関数)
  14. 樹形図で数え上げる (算数 場合の数)
  15. 積の法則と和の法則 (算数 場合の数)
  16. 和の法則・積の法則と樹形図 (数学A 場合の数と確率)
  17. 順列・円順列・重複順列 (数学A 場合の数と確率)
  18. 組合せ (数学A 場合の数と確率)
  19. 確率の定義と和事象・余事象 (数学A 場合の数と確率)
  20. 期待値 (数学A 場合の数と確率)
  21. 確率変数と確率分布 (数学B 統計的な推測)
  22. エントロピー (大学数学 情報理論・符号理論)

説明

ハフマン符号は、情報源の各記号の出現確率から、1 記号あたりの平均符号長 が最も小さくなる語頭符号を組み立てる方法です。データ圧縮のように、よく出る記号には短い符号語を、まれな記号には長い符号語を割り当てたい場面で使います。得られた はどの語頭符号の平均符号長よりも小さいか等しく、エントロピー との間に が成り立ちます。

なぜそうしてよいのか

2 元語頭符号は、根から 0・1 の枝で分かれる二分木の葉に記号を置いたものと見なせます。符号長 は葉の深さです。平均符号長が最小の語頭符号(最適符号)には、次の性質をもつものがあります。(1) なら です。逆なら 2 つの符号語を入れ替えると が だけ減り、最適であることに反します。(2) 最も深い葉には必ず兄弟の葉があります。兄弟がなければ親の位置まで縮めても語頭符号のままで、 が減るからです。(1)(2) から、確率の最も小さい 2 記号を、最も深い位置で兄弟の葉にしておいても最適性は失われません。

そこで、確率最小の 2 記号(確率 )を、確率 の 1 つの記号にまとめた 記号の問題を考えます。まとめた記号の符号語に 0 と 1 を付け足すと元の 2 記号の符号語になり、そのとき が成り立ちます。足される は符号の選び方によらない定数なので、縮小した問題で最適な符号を作れば、元の問題でも最適になります。これを記号が 1 つになるまで繰り返すのがハフマンの方法です。この式から、 は各回にまとめた確率の和の合計にも等しいことがわかります。

エントロピーとの比較も確かめておきます。(自然対数)を使うと、 です(和は の記号についてとり、最後の不等号はクラフトの不等式から従います)。よって であり、等号は全ての が の形のときに限ります。一方、 と選ぶと となるので、クラフトの不等式によりこの長さの語頭符号が存在します。その平均符号長は 未満です。ハフマン符号はこれ以下なので、 が成り立ちます。

手順

  1. 記号を確率の小さい順に並べ、各記号を 1 つの節点とみなす(記号数 とする)

  2. 確率が最も小さい 2 つの節点を選んで 1 つの新しい節点にまとめ、その確率を 2 つの和とする。2 本の枝には 0 と 1 を割り当てる

  3. 新しい節点をリストに戻して確率を並べ直し、節点が 1 つになるまで手順 2 を繰り返す(合計 回)

  4. 根から各記号の葉までの枝のラベルを順に読んで符号語とする。符号長 は葉の深さに等しい

  5. 平均符号長 を計算する(各回にまとめた確率の合計とも一致するので、検算に使える)

  6. エントロピー を求め、 を確かめる

例題

情報源の記号 の出現確率がそれぞれ である。2 元ハフマン符号を構成し、1 記号あたりの平均符号長 (語頭符号の平均符号長の最小値)を求めよ。

例題の解答

手順 1: 確率の小さい順に並べると となる。

手順 2・3: 最小の 2 つをまとめる操作を繰り返す。
1 回目は と をまとめて を作る。残りは である。
2 回目は と をまとめて を作る。残りは である。
3 回目は と をまとめて を作る。残りは である。
4 回目は と をまとめて根(確率 )になる。

手順 4: 根から 側の枝を 0、 側の枝を 1 とし、以下同様にラベルを付ける。すると 、、、、 となり、符号長は である。検算すると となり、クラフトの不等式を満たす。

手順 5: となる。まとめた確率の合計 とも一致する。

手順 6: である。したがって が成り立つ。

答えは である。

答え:

よくある誤り

この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。

入口の問題

この技能を使う問題

この技能の次に学べること