tecktom.com

Kraft–McMillan の不等式:qCq_C が確率分布になる理由

2026年10月15日7分で読めますAI生成教科書『虎の巻』第1部 第5章 データ圧縮
目次
  1. 語頭符号の場合(Kraft の不等式)
  2. 一意に復号できる符号の場合(McMillan の不等式)
  3. 木下の層

AI 生成・木下が未勉強

相対エントロピーから情報と物理を組み立てる 第1部 第5章 §1.5.2 ★★★ 符号語の長さに課される制約は ∑2−ℓ≤1\sum2^{-\ell}\le1 ただ1つで、語頭符号に限っても失うものがない

語頭符号の場合(Kraft の不等式)

定理 1.5.4(Kraft の不等式 ★★★)

語頭符号の符号語の長さ ℓ(x)\ell(x) は

K(C)=∑x∈X2−ℓ(x)≤1(1.5.4)K(C)=\sum_{x\in\mathcal X}2^{-\ell(x)}\le1\tag{1.5.4}

を満たす。逆に、正の整数の並び ℓ(x)\ell(x) が (1.5.4) を満たせば、その長さを持つ語頭符号が存在する。

証明

符号語 c1c2⋯cℓc_1c_2\cdots c_\ell に、区間 I(x)=[ 0.c1c2⋯cℓ, 0.c1c2⋯cℓ+2−ℓ )I(x)=[\,0.c_1c_2\cdots c_\ell,\ 0.c_1c_2\cdots c_\ell+2^{-\ell}\,) を対応させる(0.c1⋯cℓ0.c_1\cdots c_\ell は2進小数)。この区間は、2進小数展開が c1⋯cℓc_1\cdots c_\ell で始まる [0,1)[0,1) の数全体である。2つの符号語のどちらも他方の語頭でなければ、最初に食い違う桁で2進小数展開が分かれるので、対応する区間は重ならない(図 1.5.1 の右)。重ならない区間の長さの和は [0,1)[0,1) の長さ 11 を超えないので (1.5.4) が出る。

逆に、(1.5.4) を満たす長さを小さい順に ℓ1≤ℓ2≤⋯≤ℓm\ell_1\le\ell_2\le\cdots\le\ell_m と並べ、si=∑j<i2−ℓjs_i=\sum_{j<i}2^{-\ell_j}(s1=0s_1=0)とおく。sis_i は分母が 2ℓi−12^{\ell_{i-1}} の分数で ℓi−1≤ℓi\ell_{i-1}\le\ell_i なので、2ℓisi2^{\ell_i}s_i は整数になり、sis_i の2進小数展開は ℓi\ell_i 桁で終わる。その ℓi\ell_i 桁を ii 番目の符号語にする。ii 番目の符号語の区間は [si,si+2−ℓi)=[si,si+1)[s_i,s_i+2^{-\ell_i})=[s_i,s_{i+1}) で、sm+1=K≤1s_{m+1}=K\le1 なので、区間は [0,1)[0,1) の中に重ならずに並ぶ。もし i<ji<j の符号語 ii が符号語 jj の語頭なら、sjs_j は区間 [si,si+2−ℓi)[s_i,s_i+2^{-\ell_i}) に入るはずだが、sj≥si+1=si+2−ℓis_j\ge s_{i+1}=s_i+2^{-\ell_i} なので入らない。よって語頭符号になる。

この証明の後半から、長さだけ決めれば符号語を機械的に作れることがわかる。符号の設計で本当に決めるべきものは長さの並び ℓ(x)\ell(x) だけで、00 と 11 の具体的な割り当ては後から付けることができる。

一意に復号できる符号の場合(McMillan の不等式)

一意に復号できる符号は語頭符号より広い。例題 1.5.1 の符号のように、瞬時でない代わりに符号語を短くできるのではないか、という疑問が残る。答えは否定的で、同じ不等式が成り立つ1B. McMillan (1956), IRE Transactions on Information Theory 2, 115–116。語頭符号についての不等式は L. G. Kraft の1949年の MIT 修士論文による。下の脚注へ。

定理 1.5.5(McMillan の不等式 ★★)

一意に復号できる符号の符号語の長さも K(C)=∑x2−ℓ(x)≤1K(C)=\sum_x2^{-\ell(x)}\le1 を満たす。

証明

符号語の長さの最大値を ℓmax⁡\ell_{\max} とする。正の整数 nn について K(C)nK(C)^n を展開すると

K(C)n=∑x1,…,xn2−(ℓ(x1)+⋯+ℓ(xn))=∑k=1nℓmax⁡Ak 2−kK(C)^n=\sum_{x_1,\dots,x_n}2^{-(\ell(x_1)+\cdots+\ell(x_n))}=\sum_{k=1}^{n\ell_{\max}}A_k\,2^{-k}

となる。ここで AkA_k は、つないだ長さがちょうど kk になる記号列 x1⋯xnx_1\cdots x_n の個数である。一意に復号できるので、異なる記号列は異なる 00・11 の列に移る。長さ kk の 00・11 の列は 2k2^k 通りしかないので Ak≤2kA_k\le2^k で、したがって K(C)n≤nℓmax⁡K(C)^n\le n\ell_{\max} である。もし K(C)>1K(C)>1 なら左辺は nn について指数関数的に増え、右辺は nn の1次でしか増えないので、大きな nn で矛盾する。よって K(C)≤1K(C)\le1。

Kraft と McMillan をあわせると、一意に復号できる符号の長さの並びは必ず語頭符号でも実現することができる。長さだけで平均符号長が決まるので、平均符号長を最小にする問題では、語頭符号に限っても何も失わない。以下、符号といえば語頭符号を指す。さらに、K(C)≤1K(C)\le1 によって 2−ℓ(x)2^{-\ell(x)} は和が 11 以下の確率の割り振りになり、定義 1.5.3 の qCq_C を確率分布と読む根拠が得られた。

完全な符号と木

K(C)=1K(C)=1 は、符号の木のどの内部節点からも 00 と 11 の両方の枝が出ていることと同じである(区間の言葉では、区間が [0,1)[0,1) を隙間なく覆う)。K(C)<1K(C)<1 の符号では、枝が1本しか出ていない節点があるか、使われていない葉がある。前者なら、その節点の下の符号語から1桁を取り除いても語頭符号のままなので、どの記号も長くせずに少なくとも1つの符号語を短くすることができる。

例題 1.5.2 長さの並びから符号を作る ★★

オリジナル4つまたは5つの記号に、次の長さの符号語を持つ語頭符号を作りたい。

  1. 長さ (1,2,3,3)(1,2,3,3):Kraft 和を求め、定理 1.5.4 の証明の手順で符号語を作れ。
  2. 長さ (1,2,2,3)(1,2,2,3):作れるか。
  3. 長さ (2,2,3,3,3)(2,2,3,3,3):Kraft 和を求めて符号語を作り、どの符号語を短くできるか答えよ。
解答

(1) K=12+14+18+18=1K=\tfrac12+\tfrac14+\tfrac18+\tfrac18=1。累積和は s=0, 12, 34, 78s=0,\ \tfrac12,\ \tfrac34,\ \tfrac78 で、2進小数ではそれぞれ 0.0, 0.10, 0.110, 0.1110.0,\ 0.10,\ 0.110,\ 0.111 である。長さの桁数だけ読むと符号語は 0, 10, 110, 1110,\ 10,\ 110,\ 111 となり、(1.5.2) の符号が出る。

(2) K=12+14+14+18=98>1K=\tfrac12+\tfrac14+\tfrac14+\tfrac18=\tfrac98>1 なので、定理 1.5.5 により、語頭符号どころか一意に復号できる符号も作ることはできない。長さ 11 の符号語が木の半分を、長さ 22 の2つが残りの半分を使い切るので、長さ 33 の符号語を置く場所がない。

(3) K=14+14+18+18+18=78<1K=\tfrac14+\tfrac14+\tfrac18+\tfrac18+\tfrac18=\tfrac78<1。累積和 s=0, 14, 12, 58, 34s=0,\ \tfrac14,\ \tfrac12,\ \tfrac58,\ \tfrac34 を2進小数の2桁・2桁・3桁・3桁・3桁で読むと、符号語は 00, 01, 100, 101, 11000,\ 01,\ 100,\ 101,\ 110 となる。木の上では、節点 1111 の下に葉 110110 だけがあり、111111 が空いている。したがって 110110 を 1111 に縮めても語頭符号のままで(1111 で始まる符号語はほかにない)、そのとき Kraft 和は 78+18=1\tfrac78+\tfrac18=1 になる。

1 B. McMillan (1956), IRE Transactions on Information Theory 2, 115–116。語頭符号についての不等式は L. G. Kraft の1949年の MIT 修士論文による。

木下の勉強ステータス

木下はまだこの記事を勉強していません。

AI(Claude)が書いた教材を、木下が勉強しながら公開しています。式と数値は検算していますが、誤りが残っているかもしれません。誤りのご指摘・削除のご依頼をいただければ直します。 連絡先:support@tecktom.com

← AI生成教科書『虎の巻』の記事一覧へ