4.6 Huffman 符号の最適性

4.5 節までで問題は次の形に整理された.Kraft の不等式を満たし,かつすべてのである長さの組のうち,を最小にするものを求めよ.定理 4.3.2 はこの最小値が以上であることを,定理 4.4.4未満であることを教えたが,最小値そのものはまだ分かっていない.例 4.4.5 で見たとおり,Shannon 符号はその最小を与えるとは限らない.本節は最小を与える長さの組を,確率を見比べるだけの手続きで作る.

本節ではに固定する.一般のにも同じ考えで拡張できるが,一度に併合する個数の調整が要るので,本書は二元の場合だけを扱う.

手続き

定義 4.6.1(Huffman 符号語長). 個以上の文字からなる有限アルファベット,上の分布ですべてのを満たすものとする.長さの組を,アルファベットの大きさについての再帰で次のように定める.

のときは,二つの文字のどちらにも値を与える.

のときは,がすべてので成り立つ文字と,以外のすべてので成り立つ文字をとる.を新しい文字に置き換えたアルファベットを,その上の分布𝑝(𝑧) :=𝑝(𝑧)𝑧 𝑤)で定める.に対して定まる長さの組をとして

H(𝑢):=(𝑤)+1,H(𝑣):=(𝑤)+1,H(𝑧):=(𝑧)(𝑧𝑢,𝑣)

と定める.こうして得られるHuffman 符号語長 と呼ぶ.確率が等しい文字があっての選び方に任意性があるときは,そのいずれから得られる組も Huffman 符号語長と呼ぶ.

手続きの読み方は素直で,確率のいちばん小さい二つの文字を一つにまとめる操作を,文字が二つになるまで繰り返している.まとめられるたびに,そのまとまりに入っている文字の符号語が一つずつ伸びる.最後に残った二つに長さを与える操作も,二つを一つにまとめる操作を一度行ったと数えれば,符号語長の勘定は一つの規則にまとまる.すなわち各文字の符号語長は,その文字を含むまとまりが併合に加わった回数に等しい.確率の小さい文字ほど早い段階でまとめられる.4.2 節の言葉でいえば,これは短い符号語から場所を詰めていくのとは逆向きで,いちばん狭い幅を確率の小さい二つに先に与え,その二つが占める場所をまとめて一つの幅として扱い直していく作り方である.

形式化: huffmanLength (ソース)

形式化上の注記. 形式化はこの手続きを,文字の集まりと重みの組を並べた多重集合の上の再帰として書いている.確率が等しいときの選び方を一つに決めるため,アルファベットに全順序を入れて優先順位を添えてあり,形式化が与える長さの組は,本文が許す組の一つにあたる.本節の形式化ポインタはどれもその一つについての主張で,選び方すべてを覆ってはいない.

例 4.6.2(五つの記号). 𝐷 =2とし,𝑝(1) =𝑝(2) =0.25𝑝(3) =0.2とする.どの Huffman 符号語長もであり,平均符号長はである.同じ分布に対する Shannon 符号語長はで,平均符号長はである.またである.

証明. 手続きを実行する.最初の併合では,最小の確率がでそれをもつのはの二つだけだから,はこの二つに決まる.まとめてできた文字の重みはで,残りは0.25である.二度目の併合では最小が,次がで,をもつ文字が二つあるためどちらを選んでもよいが,を入れ替えるだけなので得られる長さの組は変わらない.をまとめたとすると重みはで,残りは(文字)との組)である.三度目の併合ではこの二つがまとめられて重みになり,このとき残る文字はのまとまりとのまとまりの二つである.ここから定義 4.6.1 の再帰を巻き戻す.文字が二つになった段では,どちらのまとまりにも値が与えられる.一つ手前の段に戻ると,を分けた文字のまとまりの値がになり,の値はのままである.さらに一つ戻ると,を分けた文字と文字の値がになる.最初の段まで戻ると,を分けた文字と文字の値がになる.

値を計算する.平均符号長は

2×(0.25+0.25+0.2)+3×(0.15+0.15)=1.4+0.9=2.3

である.Shannon 符号語長は定義 4.4.1 よりlog25 =3log2(1/0.15) =3log25 =2.3219log2(1/0.15) =2.7369)で,その平均符号長はである.エントロピーは定義 4.3.1 より

𝐻2(𝑋)=2×0.25log24+0.2log25+2×0.15log210.15=2.2854

である.

例 4.6.3(確率がの冪であるとき). 𝐷 =2とし,𝑝(1) =1/2𝑝(2) =1/4とする.どの Huffman 符号語長もH(2) =2であり,平均符号長はである.

証明. 最小の確率はで,それをもつのはの二つだけだから,最初の併合はこの二つに決まる.できたまとまりの重みはで,残りは(文字)である.二度目の併合では重みの二つがまとめられ,どちらをにとっても同じ組がまとまるので,重みのまとまりと文字が残る.再帰を巻き戻すと,文字が二つになった段でこの二つに値が与えられ,一つ手前に戻ると文字のまとまりの値がになり,最初の段まで戻ると文字と文字の値がになる.文字の値はのままである.平均符号長はである.

例 4.6.3 の長さの組は例 4.1.4 の符号の符号語長そのもので,例 4.2.3定理 4.2.2 の構成でたどりついた組でもある.確率がちょうどの冪の逆数に並んでいるので定理 4.3.2 の等号が成り立ち,平均符号長に等しい.手続きがそのものに届いたということである.

命題 4.6.4. 個以上の文字からなる有限アルファベット,上の分布ですべてのを満たすものとする.定義 4.6.1 のどの Huffman 符号語長についても,すべてのであり,

𝑥X2H(𝑥)=1

が成り立つ.したがって上の二元語頭符号で,各の符号語長がに等しいものが存在する.

証明(アルファベットの大きさについての帰納法). のときは両方の値がで,和はである.

とし,定義 4.6.1𝑣𝑤X𝑝をとる.はすべての点で正でありだから,に帰納法の仮定が使える.についてはであり,である.和は

𝑥X2H(𝑥)=𝑧𝑢,𝑣2(𝑧)+22((𝑤)+1)=𝑦X2(𝑦)=1

となる(個ぶんのにまとまる).

最後の主張は,得られた定理 4.2.2 を当てれば従う.

形式化: にあたる huffmanLength_pos (ソース),にあたる huffmanLength_kraft_eq_one,語頭符号の存在 exists_huffman_prefix_code (ソース)

定義 4.6.5(Huffman 符号). 個以上の文字からなる有限アルファベット,上の分布ですべてのを満たすものとする.Huffman 符号語長(定義 4.6.1)を符号語長にもつ二元語頭符号を Huffman 符号 と呼ぶ.命題 4.6.4 より,そのような符号は存在する.

Huffman 符号は一つに定まらない.符号語の中身は定理 4.2.2 の構成の取り方に依り,長さの組のほうも定義 4.6.1の選び方に依る.文字の確率が0.20.2のときがそうで,長さの組はにもにもなる.どちらでも平均符号長はである.選び方に依らずこの値が定まることは,定理 4.6.9 から従う.

和がちょうどになることには意味がある.4.2 節の木の言葉でいえば,場所を一つも余らせずに使いきったということである.場所が余っていればどれかの符号語を文字縮められるので,余らせる符号は最良ではありえない.この観察を最良の長さの組がもつ性質として書き下すために,比べる相手に名前を付けておく.

定義 4.6.6(候補). を有限アルファベットとする.上の長さの組定義 4.2.4)が,すべてのを満たし,かつ

𝑥X2(𝑥)1

を満たすとき,上の 候補 と呼ぶ.

定義 4.2.4 の長さの組は以上の整数値をとる関数だから,候補は以上の整数値をとる.系 4.2.5に当てると,候補とはちょうど二元語頭符号の符号語長の組のことである.補題 4.6.7 は,場所を余らせる長さの組が最良ではないことを,候補の言葉で書き下したものである.

最良の長さの組がもつ性質

補題 4.6.7. 個以上の文字からなる有限アルファベット,上の分布ですべてのを満たすものとする.がすべてので成り立つ文字,以外のすべてので成り立つ文字とする.上の候補(定義 4.6.6すべてにわたるの最小値は存在し,しかもそれを達成する候補のうちには

(𝑢)=(𝑣)=max𝑧X(𝑧)

を満たすものがある.

証明. 最小値が存在することを示す.系 4.4.3 より Shannon 符号語長はすべての以上であり,命題 4.4.2 よりその Kraft 和は以下だから,は候補である.とおくと,最小を探すのはを満たす候補の中だけでよい.この条件のもとでは各項が非負なのでであり,だからとなる.候補の値は以上の整数だから,のとりうる値は文字ごとに有限個で,そのような候補は有限個しかない.空でない有限集合の上の最小値だから,最小値が存在する.

値の入れ替えが何をするかを見る.を候補,とし,での値とでの値を入れ替えたものをと書く.値の多重集合は変わらないので,も候補である.平均符号長の差は

𝑥𝑝(𝑥)˜(𝑥)𝑥𝑝(𝑥)(𝑥)=(𝑝(𝑧)𝑝(𝑧))((𝑧)(𝑧))

となる.したがってかつならば差は以下であり,が最小を達成していればも達成する.

最大値を二つ以上の文字が達成することを示す.を最小を達成する候補とし,を達成する文字がただ一つ,それをとする.だから他の文字があり,その値は以上未満なのでである.ここで

2𝑚𝑧2(𝑧)=𝑧2𝑚(𝑧)

を見ると,の項はで,他の項はより偶数だから,右辺は奇数である.Kraft の不等式より右辺は以下で,よりは偶数だから,右辺は以下である.すなわちである.そこででの値だけをに取り替えた長さの組を考えると,その値は以上で,Kraft の和はとなるから候補であり,平均符号長はだけ小さい.これはの最小性に反する.よって最大値を達成する文字は二つ以上ある.

あとは最長の位置へを順に運ぶだけである.入れ替えても平均符号長は増えないのだから,最長の値をもつ文字と入れ替えていけばよい.以下はその確認である.

まずを移す.を最小を達成する候補とし,とおく.前段よりを達成する文字は二つ以上あるので,そのうち相異なる二つをとする.のときは,かつだから,の値を入れ替えても最小性は保たれる.入れ替えたあとであり,ともとも異なるのでのままである.のときは名前を付け替えてとしてよく,はじめからかつである.どちらの場合も,であり,と異なる文字を満たす.

次にを扱う.ならすでにである.のときは,よりであり,だから,の値を入れ替えても最小性は保たれる.入れ替えたあとであり,ともとも異なるのでのままである.値の多重集合は入れ替えで変わらないから最大値ものままで,を満たす候補が最小を達成している.

奇偶を見た段は,最長の符号語の隣が空いていることを見つけている.最長の値をもつ文字がただ一つだとすると,他の符号語はどれも深さより浅いので,それが深さで塞ぐ場所は偶数個ずつまとまっており,の場所と対になる隣の場所を塞ぐならの場所も一緒に塞ぐことになる.の場所はが使っているのだから,隣は空いている.空いているならの符号語を文字縮めて,対になる二つの場所をまとめて使える.縮めれば平均符号長はだけ小さくなるから,最長を一つの文字しか達成しない長さの組は最小を達成していない.

形式化上の注記. 補題 4.6.7 に対応する単独の宣言はない.形式化にも値の入れ替えによる正規化の段があり,swap_normalization_strong (InformationTheory/Shannon/Huffman/StrongForm.lean) がそれである.そこで扱うのは「確率が最小の二文字の長さを等しくそろえる」という部分だけで,本文の補題とは切り取り方が違う.

併合が最小値を引き継ぐ

補題 4.6.8. 個以上の文字からなる有限アルファベット,上の分布ですべてのを満たすものとする.補題 4.6.7 と同じ条件でとり,を新しい文字に置き換えたアルファベットを,その上の分布を𝑝(𝑧) :=𝑝(𝑧)𝑧 𝑤)とする.上の候補(定義 4.6.6すべてにわたるの最小値をについて同じように定めた最小値をと書くと

𝐿=𝐿+𝑝(𝑢)+𝑝(𝑣)

が成り立つ.

証明. どちらの最小値も,補題 4.6.7 より存在する(であり,もすべての点で正である).

を示す.上で最小を達成する長さの組をとり,上の長さの組(𝑣) :=(𝑤) +1(𝑧) :=(𝑧)𝑧 𝑢,𝑣)で定める.値はすべて以上で,

𝑥2(𝑥)=𝑧𝑢,𝑣2(𝑧)+22((𝑤)+1)=𝑦X2(𝑦)1

だから Kraft の不等式も満たす.平均符号長は

𝑥𝑝(𝑥)(𝑥)=𝑧𝑢,𝑣𝑝(𝑧)(𝑧)+(𝑝(𝑢)+𝑝(𝑣))((𝑤)+1)=𝐿+𝑝(𝑢)+𝑝(𝑣)

である.最小値はこれ以下だから,主張の不等式を得る.

を示す.補題 4.6.7 より,上で最小を達成しを満たす長さの組がとれる.である.というのもならすべての値がになり,Kraft の和がとなってを強いるが,これは仮定に反するからである.そこで上の長さの組(𝑧) :=(𝑧)𝑧 𝑤)で定めると,値はすべて以上で

𝑦X2(𝑦)=𝑧𝑢,𝑣2(𝑧)+22𝑚=𝑥X2(𝑥)1

だから Kraft の不等式を満たす.平均符号長は

𝑦𝑝(𝑦)(𝑦)=𝑧𝑢,𝑣𝑝(𝑧)(𝑧)+(𝑝(𝑢)+𝑝(𝑣))(𝑚1)=𝐿𝑝(𝑢)𝑝(𝑣)

である.最小値はこれ以下だから,主張の不等式を得る.

二つを合わせて等号が従う.

形式化上の注記. 補題 4.6.8 に対応する単独の宣言はない.形式化は最小値そのものを扱わず,任意の候補と Huffman 符号語長を直接比べる形で最適性へ進む.

補題 4.6.8 は,最小化の問題が一段小さい同じ問題に化けることを言っている.確率が最小の二文字については,その二つが同じ長さの最長の符号語をもつような最良の符号を必ずとれる(補題 4.6.7).ならばその二文字は一つにまとめてしまってよく,まとめたぶんだけ符号語が文字伸びる代償としてを払う.この代償は長さの組の選び方に依らない定数なので,最小化には関わらない.手続きが確率の小さい二つをまとめていくのは,この読み替えを繰り返しているということである.

最適性

定理 4.6.9(Huffman 符号の最適性). 個以上の文字からなる有限アルファベット,上の分布ですべてのを満たすものとする.定義 4.6.1 のどの Huffman 符号語長についても,上のどの候補(定義 4.6.6に対しても

𝑥X𝑝(𝑥)H(𝑥)𝑥X𝑝(𝑥)(𝑥)

である.

証明(アルファベットの大きさについての帰納法). のとき,は両方の文字でだから左辺はである.右辺はより以上である.

とし,定義 4.6.1𝑣𝑤X𝑝をとる.の Huffman 符号語長であり,はすべての点で正だから,帰納法の仮定より上のどの候補にも負けない.命題 4.6.4 より自身も候補だから,補題 4.6.8に等しい.定義 4.6.1 の作り方から

𝑥𝑝(𝑥)H(𝑥)=𝑧𝑢,𝑣𝑝(𝑧)(𝑧)+(𝑝(𝑢)+𝑝(𝑣))((𝑤)+1)=𝐿+𝑝(𝑢)+𝑝(𝑣)

であり,補題 4.6.8 よりこれはに等しい.は候補にわたる最小値だから,どの候補に対してもである.

形式化: huffmanLength_optimal (ソース)

系 4.6.10. 個以上の文字からなる有限アルファベット,上に分布をもつ確率変数で,すべてのを満たすものとする.このとき定義 4.6.1 のどの Huffman 符号語長についても

𝐻2(𝑋)𝑥X𝑝(𝑥)H(𝑥)<𝐻2(𝑋)+1

である.

証明. 左側は,命題 4.6.4 よりが Kraft の不等式を満たすので,定理 4.3.2 から従う.

右側を見る.系 4.4.3 より Shannon 符号語長はすべての以上であり,命題 4.4.2 より Kraft の不等式を満たすから,定理 4.6.9に当ててを得る.定理 4.4.4 より右辺は未満である.

形式化上の注記. 系 4.6.10 に対応する単独の宣言はない.左側は,命題 4.6.4 の形式化のうち huffmanLength_kraft_le_one (InformationTheory/Shannon/Huffman/KraftSum.lean) を,定理 4.3.2 の形式化 entropyD_le_expectedLength_of_kraft (InformationTheory/Shannon/ShannonCode/Basic.lean) と合わせた形になる.右側は定理 4.6.9 の形式化と定理 4.4.4 の形式化を合わせた形だが,前者が Shannon 符号語長を比べる相手として受け取るには,それが以上であることが要り,それを与える宣言はない.

本章の問いはこれで閉じた.一意復号可能などんな符号でも平均符号長はを下回れず(定理 4.3.2系 4.5.2),アルファベットが文字以上ですべての記号の確率が正なら未満で済ませる符号があり(系 4.4.3定理 4.4.4),のときは同じ仮定のもとで,最良の符号を手続きで作れる(命題 4.6.4 が符号を与え,定理 4.6.9 がその最良性を保証する).例 4.4.5 で Shannon 符号が最良でない場合を見たが,その「最良」がどこにあるかは,確率を小さいものから二つずつまとめていくだけで決まる.エントロピーが答えるのは幅までで,その幅の中で最良の平均符号長がどこに落ちるかは定義 4.6.1 の手続きが答える,というのが本章の結論である.

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