4.2 Kraft の不等式

符号語を短くする自由には限りがある.文字のとき,語頭符号では全部の符号語を長さにはできない.長さの列はの二つしかなく,同じ列を二つの文字に与えれば一方が他方の語頭になってしまうからである.長さの符号語,たとえばを一つ使えば,で始まる列はどれも他の符号語には使えなくなる.これはで始まる列の半分,全体の分のにあたる.符号語が長いほど,使えなくなる割合は小さい.この割合を全部の符号語について足し合わせて一つの不等式にしたのが本節の主題である.

語頭符号が満たす制約

定理 4.2.1(Kraft の不等式). を有限アルファベット,を整数とする.上の元語頭符号,をその符号語長とすると

𝑥X𝐷(𝑥)1

が成り立つ.

証明. が空なら左辺はで主張は成り立つから,空でないとしてよい.とおく.

長さの列を数える.の文字を個並べた列は全部で本ある.各について,を語頭にもつ長さの列の集合をと書く.の後ろに残りの文字を自由に並べればよいので

|𝑆(𝑥)|=𝐷max(𝑥)

である.

これらが互いに交わらないことを見る.に属する列があるとすると,はどちらもその列の語頭だから,長さの短いほうが長いほうの語頭になる.これはが語頭符号であることに反する.

交わらない集合の合併は全体に含まれるから

𝑥X𝐷max(𝑥)=𝑥X𝑆(𝑥)𝐷max

であり,両辺をで割れば主張を得る.

形式化上の注記. 定理 4.2.1 に対応する,一般のについての宣言はない.二元の場合について,空列を含まない語頭符号の符号語の集合の有限部分集合に対する同じ不等式が PrefixFree.kraft (InformationTheory/Shannon/Kolmogorov/PrefixMachine.lean) として形式化されている(符号語の集合そのものが無限であってよいので,本文より広い.集合全体にわたる和の形 PrefixFree.tsum_inv_two_pow_length_le_one も同じところにある).ただしその証明は,語頭性から直接数え上げる本文とは違って,語頭符号よりも広い一意復号可能な符号に対する不等式を経由している.一般のについてはその広いほうの形だけが形式化されており,4.5 節で扱う.

列の全体を,文字伸ばすごとに枝分かれする木と見ておく.符号語は節点にあたり,語頭の関係は先祖と子孫の関係にあたる.以下の「深さ」はこの木の言葉で,列の長さのことである.証明が数えているのは「深さでどれだけの場所が塞がるか」である.符号語を一つ決めると,それを語頭にもつ長さの列がまとめて使えなくなり,その本数は符号語が短いほど多い.語頭符号であるという条件は,塞がる範囲どうしが重ならないことを意味する.重ならないものの総量が全体を超えないというだけの勘定が,Kraft の不等式である.という項は,符号語が全体の何割を塞ぐかを表している.

逆向きの構成

定理 4.2.2. を有限アルファベット,を整数とし,

𝑥X𝐷(𝑥)1

を満たすとする.このとき上の元語頭符号で,すべてのについての長さがに等しいものが存在する.

証明. 以下は,符号語を長さの短い順に前から詰めていく手続きを,そのまま式で書き下したものである.が空なら空の符号が主張を満たすから,空でないとしてよい.とおく.長さの列を,先頭を最上位の桁とする進表示と読んで,以上未満の整数と同一視する.進表示については三つのことを既知とする.第一に,長さの列とこの範囲の整数との対応がであること.第二に,のとき,整数がの倍数であることと,対応する列の末尾文字がすべてであることが同値であること.第三に,長さの列を語頭にもつ長さの列に対応する整数が,個の連続した整数の並びになることである.

順序を一つ選ぶ.に,の値が小さい文字ほど先に来るような全順序を入れる(値が等しい文字どうしの順序はどう決めてもよい).各に対して

𝑠(𝑥):=𝑦𝑥𝐷max(𝑦)

とおく.仮定の不等式の両辺を倍するとである.の和の範囲に自身を足したものはに含まれるから,どのについても

𝑠(𝑥)+𝐷max(𝑥)𝐷max

が従う.とくにであり,進表示の第一の性質よりは長さの列に対応する.

符号語を定める.ならばなので,の各項の倍数である.したがってで割り切れ,進表示の第二の性質より,に対応する長さの列は末尾文字がすべてである.そこでを,その列の先頭文字と定める.長さはである.進表示の第三の性質より,を語頭にもつ長さの列に対応する整数はちょうど

𝑠(𝑥),𝑠(𝑥)+1,,𝑠(𝑥)+𝐷max(𝑥)1

の並びになる.

語頭符号であることを示す.の語頭だとする.このときであり,を語頭にもつ列はも語頭にもつ.すなわちを語頭にもつ長さの列の並びは,を語頭にもつ列の並びの中にすっぽり入る.二つの並びの左端と幅を比べるとが従う.一方,ならばの和の範囲はの和の範囲にを足したものを含むのでとなり,右側の不等号に反する.ならばの決め方からで,と合わせてであり,同じ理由でとなって,左側の不等号に反する.どちらの場合も矛盾するから,は語頭符号である.

形式化: exists_prefix_code_of_kraft (ソース)

証明は「深さ個の場所を,長さの短い順に前から詰めていく」という手続きそのものである.が詰め始めの位置で,が占める幅がである.短いものから詰めるので,占める幅は単調に狭くなり,境界がつねに幅の倍数のところに来る.そのおかげで区間が入れ子にならず,語頭の関係が生じない.Kraft の不等式は,最後まで詰めきっても場所が足りるという条件として使われている.

例 4.2.3(実現できる長さの組とできない長さの組). とし,文字からなるアルファベットを考える.四つの符号語長がである二元語頭符号は存在する.四つの符号語長がである二元語頭符号は存在しない.

証明. 前半はだから定理 4.2.2 で従う.その構成をたどると例 4.1.4 の符号がそのまま出てくる.で,長さの小さい順に並べた四つの文字の詰め始めの位置は231 =44 +232 =6である.これらを長さの二進表示100110と読み,先頭からそれぞれ文字を取れば10110となる.後半はだから,定理 4.2.1 の対偶による.

定義 4.2.4(Kraft の不等式を満たす長さの組). を有限アルファベット,を整数とする.上で定義され以上の整数値をとる関数を,上の 長さの組 と呼ぶ.長さの組

𝑥X𝐷(𝑥)1

を満たすとき,Kraft の不等式を満たす と言う.

形式化: にあたる kraftSum (ソース)

長さの組の値にを許してあるのは,確率の記号に切り上げが長さを与える場合(4.4 節)にも,次節の下界をそのまま当てるためである.符号から来る長さの組がこの値をとることはない.定義 4.1.1 より符号語は空でないからである.

系 4.2.5. を有限アルファベット,を整数とし,上の長さの組(定義 4.2.4)とする.がある元語頭符号の符号語長の組であることと,が Kraft の不等式を満たしかつすべてのであることは同値である.

証明. がある元語頭符号の符号語長の組ならば,定義 4.1.1 より符号語は空でないのでであり,定理 4.2.1 よりは Kraft の不等式を満たす.逆にが Kraft の不等式を満たしすべてのならば,定理 4.2.2 より各の符号語長がに等しい元語頭符号が存在する.

系 4.2.5 が言っているのは,符号語の中身は長さの組さえ許されていれば必ず作れる,ということである.だから符号を設計する問題は,長さの組を選ぶ問題に置き換えてよい.次節はこの形のすべてにわたって平均符号長を下から抑える.

InformationTheory — 形式化検証つき情報理論教科書(レビュー版).数式は MathJax + AMS Euler で事前レンダリング.