4.6 Huffman 符号の最適性
4.5 節までで問題は次の形に整理された.Kraft の不等式を満たし,かつすべての𝑥でℓ(𝑥) ≥1である長さの組のうち,∑𝑥𝑝(𝑥)ℓ(𝑥)を最小にするものを求めよ.定理 4.3.2 はこの最小値が𝐻𝐷(𝑋)以上であることを,定理 4.4.4 は𝐻𝐷(𝑋) +1未満であることを教えたが,最小値そのものはまだ分かっていない.例 4.4.5 で見たとおり,Shannon 符号はその最小を与えるとは限らない.本節は最小を与える長さの組を,確率を見比べるだけの手続きで作る.
本節では𝐷 =2に固定する.一般の𝐷にも同じ考えで拡張できるが,一度に併合する個数の調整が要るので,本書は二元の場合だけを扱う.
手続き
定義 4.6.1(Huffman 符号語長). Xを2個以上の文字からなる有限アルファベット,𝑝をX上の分布ですべての𝑥 ∈Xで𝑝(𝑥) >0を満たすものとする.長さの組ℓHを,アルファベットの大きさについての再帰で次のように定める.
|X| =2のときは,二つの文字のどちらにも値1を与える.
|X| ≥3のときは,𝑝(𝑢) ≤𝑝(𝑧)がすべての𝑧 ∈Xで成り立つ文字𝑢と,𝑝(𝑣) ≤𝑝(𝑧)が𝑢以外のすべての𝑧で成り立つ文字𝑣 ≠𝑢をとる.𝑢と𝑣を新しい1文字𝑤に置き換えたアルファベットをX′,その上の分布𝑝′を𝑝′(𝑤) :=𝑝(𝑢) +𝑝(𝑣),𝑝′(𝑧) :=𝑝(𝑧)(𝑧 ≠𝑤)で定める.(X′,𝑝′)に対して定まる長さの組をℓ′として
ℓH(𝑢):=ℓ′(𝑤)+1,ℓH(𝑣):=ℓ′(𝑤)+1,ℓH(𝑧):=ℓ′(𝑧)(𝑧≠𝑢,𝑣)と定める.こうして得られるℓHを Huffman 符号語長 と呼ぶ.確率が等しい文字があって𝑢と𝑣の選び方に任意性があるときは,そのいずれから得られる組も Huffman 符号語長と呼ぶ.
手続きの読み方は素直で,確率のいちばん小さい二つの文字を一つにまとめる操作を,文字が二つになるまで繰り返している.まとめられるたびに,そのまとまりに入っている文字の符号語が一つずつ伸びる.最後に残った二つに長さ1を与える操作も,二つを一つにまとめる操作を一度行ったと数えれば,符号語長の勘定は一つの規則にまとまる.すなわち各文字の符号語長は,その文字を含むまとまりが併合に加わった回数に等しい.確率の小さい文字ほど早い段階でまとめられる.4.2 節の言葉でいえば,これは短い符号語から場所を詰めていくのとは逆向きで,いちばん狭い幅を確率の小さい二つに先に与え,その二つが占める場所をまとめて一つの幅として扱い直していく作り方である.
例 4.6.2(五つの記号). 𝐷 =2,X ={1,2,3,4,5}とし,𝑝(1) =𝑝(2) =0.25,𝑝(3) =0.2,𝑝(4) =𝑝(5) =0.15とする.どの Huffman 符号語長もℓH(1) =ℓH(2) =ℓH(3) =2,ℓH(4) =ℓH(5) =3であり,平均符号長は2.3である.同じ分布に対する Shannon 符号語長はℓS(1) =ℓS(2) =2,ℓS(3) =ℓS(4) =ℓS(5) =3で,平均符号長は2.5である.また𝐻2(𝑋) =2.2854…である.
証明. 手続きを実行する.最初の併合では,最小の確率が0.15でそれをもつのは4と5の二つだけだから,𝑢,𝑣はこの二つに決まる.まとめてできた文字の重みは0.3で,残りは0.25,0.25,0.2である.二度目の併合では最小が0.2,次が0.25で,0.25をもつ文字が二つあるためどちらを選んでもよいが,1と2を入れ替えるだけなので得られる長さの組は変わらない.3と1をまとめたとすると重みは0.45で,残りは0.25(文字2)と0.3(4と5の組)である.三度目の併合ではこの二つがまとめられて重み0.55になり,このとき残る文字は{3,1}のまとまりと{2,4,5}のまとまりの二つである.ここから定義 4.6.1 の再帰を巻き戻す.文字が二つになった段では,どちらのまとまりにも値1が与えられる.一つ手前の段に戻ると,{2,4,5}を分けた文字2と{4,5}のまとまりの値が1 +1 =2になり,{3,1}の値は1のままである.さらに一つ戻ると,{3,1}を分けた文字3と文字1の値が1 +1 =2になる.最初の段まで戻ると,{4,5}を分けた文字4と文字5の値が2 +1 =3になる.
値を計算する.平均符号長は
2×(0.25+0.25+0.2)+3×(0.15+0.15)=1.4+0.9=2.3である.Shannon 符号語長は定義 4.4.1 より⌈log24⌉ =2,⌈log25⌉ =3,⌈log2(1/0.15)⌉ =3(log25 =2.3219…,log2(1/0.15) =2.7369…)で,その平均符号長は2 ×0.5 +3 ×0.5 =2.5である.エントロピーは定義 4.3.1 より
𝐻2(𝑋)=2×0.25log24+0.2log25+2×0.15log210.15=2.2854…である.◼
例 4.6.3(確率が2の冪であるとき). 𝐷 =2,X ={1,2,3,4}とし,𝑝(1) =1/2,𝑝(2) =1/4,𝑝(3) =𝑝(4) =1/8とする.どの Huffman 符号語長もℓH(1) =1,ℓH(2) =2,ℓH(3) =ℓH(4) =3であり,平均符号長は7/4である.
証明. 最小の確率は1/8で,それをもつのは3と4の二つだけだから,最初の併合はこの二つに決まる.できたまとまりの重みは1/4で,残りは1/2と1/4(文字2)である.二度目の併合では重み1/4の二つがまとめられ,どちらを𝑢にとっても同じ組がまとまるので,重み1/2のまとまりと文字1が残る.再帰を巻き戻すと,文字が二つになった段でこの二つに値1が与えられ,一つ手前に戻ると文字2と{3,4}のまとまりの値が2になり,最初の段まで戻ると文字3と文字4の値が3になる.文字1の値は1のままである.平均符号長は12 ⋅1 +14 ⋅2 +18 ⋅3 +18 ⋅3 =74である.◼
例 4.6.3 の長さの組は例 4.1.4 の符号の符号語長そのもので,例 4.2.3 が定理 4.2.2 の構成でたどりついた組でもある.確率がちょうど2の冪の逆数に並んでいるので定理 4.3.2 の等号が成り立ち,平均符号長7/4は𝐻2(𝑋)に等しい.手続きが𝐻2(𝑋)そのものに届いたということである.
命題 4.6.4. Xを2個以上の文字からなる有限アルファベット,𝑝をX上の分布ですべての𝑥 ∈Xで𝑝(𝑥) >0を満たすものとする.定義 4.6.1 のどの Huffman 符号語長ℓHについても,すべての𝑥でℓH(𝑥) ≥1であり,
∑𝑥∈X2−ℓH(𝑥)=1が成り立つ.したがってX上の二元語頭符号で,各𝑥の符号語長がℓH(𝑥)に等しいものが存在する.
証明(アルファベットの大きさについての帰納法). |X| =2のときは両方の値が1で,和は2−1 +2−1 =1である.
|X| ≥3とし,定義 4.6.1 の𝑢,𝑣,𝑤,X′,𝑝′,ℓ′をとる.𝑝′はすべての点で正であり|X′| =|X| −1 ≥2だから,ℓ′に帰納法の仮定が使える.𝑧 ≠𝑢,𝑣についてはℓH(𝑧) =ℓ′(𝑧) ≥1であり,ℓH(𝑢) =ℓH(𝑣) =ℓ′(𝑤) +1 ≥2である.和は
∑𝑥∈X2−ℓH(𝑥)=∑𝑧≠𝑢,𝑣2−ℓ′(𝑧)+2⋅2−(ℓ′(𝑤)+1)=∑𝑦∈X′2−ℓ′(𝑦)=1となる(2個ぶんの2−(ℓ′(𝑤)+1)が2−ℓ′(𝑤)にまとまる).
最後の主張は,得られたℓHに定理 4.2.2 を当てれば従う.◼
定義 4.6.5(Huffman 符号). Xを2個以上の文字からなる有限アルファベット,𝑝をX上の分布ですべての𝑥 ∈Xで𝑝(𝑥) >0を満たすものとする.Huffman 符号語長(定義 4.6.1)を符号語長にもつ二元語頭符号を Huffman 符号 と呼ぶ.命題 4.6.4 より,そのような符号は存在する.
Huffman 符号は一つに定まらない.符号語の中身は定理 4.2.2 の構成の取り方に依り,長さの組ℓHのほうも定義 4.6.1 の𝑢と𝑣の選び方に依る.4文字の確率が0.4,0.2,0.2,0.2のときがそうで,長さの組は2,2,2,2にも1,3,3,2にもなる.どちらでも平均符号長は2である.選び方に依らずこの値が定まることは,定理 4.6.9 から従う.
和がちょうど1になることには意味がある.4.2 節の木の言葉でいえば,場所を一つも余らせずに使いきったということである.場所が余っていればどれかの符号語を1文字縮められるので,余らせる符号は最良ではありえない.この観察を最良の長さの組がもつ性質として書き下すために,比べる相手に名前を付けておく.
定義 4.6.6(候補). Xを有限アルファベットとする.X上の長さの組ℓ(定義 4.2.4)が,すべての𝑥 ∈Xでℓ(𝑥) ≥1を満たし,かつ
∑𝑥∈X2−ℓ(𝑥)≤1を満たすとき,ℓをX上の 候補 と呼ぶ.
定義 4.2.4 の長さの組は0以上の整数値をとる関数だから,候補は1以上の整数値をとる.系 4.2.5 を𝐷 =2に当てると,候補とはちょうど二元語頭符号の符号語長の組のことである.補題 4.6.7 は,場所を余らせる長さの組が最良ではないことを,候補の言葉で書き下したものである.
最良の長さの組がもつ性質
補題 4.6.7. Xを2個以上の文字からなる有限アルファベット,𝑝をX上の分布ですべての𝑥 ∈Xで𝑝(𝑥) >0を満たすものとする.𝑢 ∈Xを𝑝(𝑢) ≤𝑝(𝑧)がすべての𝑧 ∈Xで成り立つ文字,𝑣 ∈X ∖{𝑢}を𝑝(𝑣) ≤𝑝(𝑧)が𝑢以外のすべての𝑧で成り立つ文字とする.X上の候補(定義 4.6.6)ℓすべてにわたる∑𝑥𝑝(𝑥)ℓ(𝑥)の最小値は存在し,しかもそれを達成する候補のうちには
ℓ(𝑢)=ℓ(𝑣)=max𝑧∈Xℓ(𝑧)を満たすものがある.
証明. 最小値が存在することを示す.系 4.4.3 より Shannon 符号語長ℓSはすべての𝑥で1以上であり,命題 4.4.2 よりその Kraft 和は1以下だから,ℓSは候補である.𝐵 :=∑𝑥𝑝(𝑥)ℓS(𝑥)とおくと,最小を探すのは∑𝑥𝑝(𝑥)ℓ(𝑥) ≤𝐵を満たす候補の中だけでよい.この条件のもとでは各項が非負なので𝑝(𝑥)ℓ(𝑥) ≤𝐵であり,𝑝(𝑥) >0だからℓ(𝑥) ≤𝐵/𝑝(𝑥)となる.候補の値は1以上の整数だから,ℓ(𝑥)のとりうる値は文字ごとに有限個で,そのような候補は有限個しかない.空でない有限集合の上の最小値だから,最小値が存在する.
値の入れ替えが何をするかを見る.ℓを候補,𝑧,𝑧′ ∈Xとし,ℓの𝑧での値と𝑧′での値を入れ替えたものを˜ℓと書く.値の多重集合は変わらないので,˜ℓも候補である.平均符号長の差は
∑𝑥𝑝(𝑥)˜ℓ(𝑥)−∑𝑥𝑝(𝑥)ℓ(𝑥)=(𝑝(𝑧)−𝑝(𝑧′))(ℓ(𝑧′)−ℓ(𝑧))となる.したがって𝑝(𝑧) ≤𝑝(𝑧′)かつℓ(𝑧) ≤ℓ(𝑧′)ならば差は0以下であり,ℓが最小を達成していれば˜ℓも達成する.
最大値を二つ以上の文字が達成することを示す.ℓを最小を達成する候補とし,𝑚 :=max𝑧ℓ(𝑧)を達成する文字がただ一つ,それを𝑡とする.|X| ≥2だから他の文字があり,その値は1以上𝑚未満なので𝑚 ≥2である.ここで
2𝑚∑𝑧2−ℓ(𝑧)=∑𝑧2𝑚−ℓ(𝑧)を見ると,𝑧 =𝑡の項は1で,他の項は𝑚 −ℓ(𝑧) ≥1より偶数だから,右辺は奇数である.Kraft の不等式より右辺は2𝑚以下で,𝑚 ≥1より2𝑚は偶数だから,右辺は2𝑚 −1以下である.すなわち∑𝑧2−ℓ(𝑧) ≤1 −2−𝑚である.そこで𝑡での値だけを𝑚 −1に取り替えた長さの組を考えると,その値は1以上で,Kraft の和は∑𝑧2−ℓ(𝑧) +2−𝑚 ≤1となるから候補であり,平均符号長は𝑝(𝑡) >0だけ小さい.これはℓの最小性に反する.よって最大値を達成する文字は二つ以上ある.
あとは最長の位置へ𝑢と𝑣を順に運ぶだけである.入れ替えても平均符号長は増えないのだから,最長の値をもつ文字と入れ替えていけばよい.以下はその確認である.
まず𝑢を移す.ℓを最小を達成する候補とし,𝑚 :=max𝑧ℓ(𝑧)とおく.前段より𝑚を達成する文字は二つ以上あるので,そのうち相異なる二つを𝑎,𝑏とする.𝑢 ∉{𝑎,𝑏}のときは,𝑝(𝑢) ≤𝑝(𝑎)かつℓ(𝑢) ≤𝑚 =ℓ(𝑎)だから,𝑢と𝑎の値を入れ替えても最小性は保たれる.入れ替えたあとℓ(𝑢) =𝑚であり,𝑏は𝑢とも𝑎とも異なるのでℓ(𝑏) =𝑚のままである.𝑢 ∈{𝑎,𝑏}のときは名前を付け替えて𝑎 =𝑢としてよく,はじめからℓ(𝑢) =𝑚かつℓ(𝑏) =𝑚である.どちらの場合も,ℓ(𝑢) =𝑚であり,𝑢と異なる文字𝑏がℓ(𝑏) =𝑚を満たす.
次に𝑣を扱う.𝑣 =𝑏ならすでにℓ(𝑣) =𝑚である.𝑣 ≠𝑏のときは,𝑏 ≠𝑢より𝑝(𝑣) ≤𝑝(𝑏)であり,ℓ(𝑣) ≤𝑚 =ℓ(𝑏)だから,𝑣と𝑏の値を入れ替えても最小性は保たれる.入れ替えたあとℓ(𝑣) =𝑚であり,𝑢は𝑣とも𝑏とも異なるのでℓ(𝑢) =𝑚のままである.値の多重集合は入れ替えで変わらないから最大値も𝑚のままで,ℓ(𝑢) =ℓ(𝑣) =max𝑧ℓ(𝑧)を満たす候補が最小を達成している.◻
奇偶を見た段は,最長の符号語の隣が空いていることを見つけている.最長の値𝑚をもつ文字が𝑡ただ一つだとすると,他の符号語はどれも深さ𝑚より浅いので,それが深さ𝑚で塞ぐ場所は偶数個ずつまとまっており,𝑡の場所と対になる隣の場所を塞ぐなら𝑡の場所も一緒に塞ぐことになる.𝑡の場所は𝑡が使っているのだから,隣は空いている.空いているなら𝑡の符号語を1文字縮めて,対になる二つの場所をまとめて使える.縮めれば平均符号長は𝑝(𝑡)だけ小さくなるから,最長を一つの文字しか達成しない長さの組は最小を達成していない.
併合が最小値を引き継ぐ
補題 4.6.8. Xを3個以上の文字からなる有限アルファベット,𝑝をX上の分布ですべての𝑥 ∈Xで𝑝(𝑥) >0を満たすものとする.𝑢 ∈Xと𝑣 ∈X ∖{𝑢}を補題 4.6.7 と同じ条件でとり,𝑢と𝑣を新しい1文字𝑤に置き換えたアルファベットをX′,その上の分布を𝑝′(𝑤) :=𝑝(𝑢) +𝑝(𝑣),𝑝′(𝑧) :=𝑝(𝑧)(𝑧 ≠𝑤)とする.X上の候補(定義 4.6.6)ℓすべてにわたる∑𝑥𝑝(𝑥)ℓ(𝑥)の最小値を𝐿∗,X′と𝑝′について同じように定めた最小値を𝐿′∗と書くと
𝐿∗=𝐿′∗+𝑝(𝑢)+𝑝(𝑣)が成り立つ.
証明. どちらの最小値も,補題 4.6.7 より存在する(|X′| =|X| −1 ≥2であり,𝑝′もすべての点で正である).
𝐿∗ ≤𝐿′∗ +𝑝(𝑢) +𝑝(𝑣)を示す.X′上で最小を達成する長さの組ℓ′をとり,X上の長さの組ℓをℓ(𝑢) :=ℓ′(𝑤) +1,ℓ(𝑣) :=ℓ′(𝑤) +1,ℓ(𝑧) :=ℓ′(𝑧)(𝑧 ≠𝑢,𝑣)で定める.値はすべて1以上で,
∑𝑥2−ℓ(𝑥)=∑𝑧≠𝑢,𝑣2−ℓ′(𝑧)+2⋅2−(ℓ′(𝑤)+1)=∑𝑦∈X′2−ℓ′(𝑦)≤1だから Kraft の不等式も満たす.平均符号長は
∑𝑥𝑝(𝑥)ℓ(𝑥)=∑𝑧≠𝑢,𝑣𝑝′(𝑧)ℓ′(𝑧)+(𝑝(𝑢)+𝑝(𝑣))(ℓ′(𝑤)+1)=𝐿′∗+𝑝(𝑢)+𝑝(𝑣)である.最小値はこれ以下だから,主張の不等式を得る.
𝐿′∗ ≤𝐿∗ −𝑝(𝑢) −𝑝(𝑣)を示す.補題 4.6.7 より,X上で最小を達成しℓ(𝑢) =ℓ(𝑣) =𝑚 :=max𝑧ℓ(𝑧)を満たす長さの組ℓがとれる.𝑚 ≥2である.というのも𝑚 =1ならすべての値が1になり,Kraft の和が|X|/2となって|X| ≤2を強いるが,これは仮定に反するからである.そこでX′上の長さの組ℓ′をℓ′(𝑤) :=𝑚 −1,ℓ′(𝑧) :=ℓ(𝑧)(𝑧 ≠𝑤)で定めると,値はすべて1以上で
∑𝑦∈X′2−ℓ′(𝑦)=∑𝑧≠𝑢,𝑣2−ℓ(𝑧)+2⋅2−𝑚=∑𝑥∈X2−ℓ(𝑥)≤1だから Kraft の不等式を満たす.平均符号長は
∑𝑦𝑝′(𝑦)ℓ′(𝑦)=∑𝑧≠𝑢,𝑣𝑝(𝑧)ℓ(𝑧)+(𝑝(𝑢)+𝑝(𝑣))(𝑚−1)=𝐿∗−𝑝(𝑢)−𝑝(𝑣)である.最小値はこれ以下だから,主張の不等式を得る.
二つを合わせて等号が従う.◻
補題 4.6.8 は,最小化の問題が一段小さい同じ問題に化けることを言っている.確率が最小の二文字については,その二つが同じ長さの最長の符号語をもつような最良の符号を必ずとれる(補題 4.6.7).ならばその二文字は一つにまとめてしまってよく,まとめたぶんだけ符号語が1文字伸びる代償として𝑝(𝑢) +𝑝(𝑣)を払う.この代償は長さの組の選び方に依らない定数なので,最小化には関わらない.手続きが確率の小さい二つをまとめていくのは,この読み替えを繰り返しているということである.
最適性
定理 4.6.9(Huffman 符号の最適性). Xを2個以上の文字からなる有限アルファベット,𝑝をX上の分布ですべての𝑥 ∈Xで𝑝(𝑥) >0を満たすものとする.定義 4.6.1 のどの Huffman 符号語長ℓHについても,X上のどの候補(定義 4.6.6)ℓに対しても
∑𝑥∈X𝑝(𝑥)ℓH(𝑥)≤∑𝑥∈X𝑝(𝑥)ℓ(𝑥)である.
証明(アルファベットの大きさについての帰納法). |X| =2のとき,ℓHは両方の文字で1だから左辺は1である.右辺はℓ(𝑥) ≥1より1以上である.
|X| ≥3とし,定義 4.6.1 の𝑢,𝑣,𝑤,X′,𝑝′,ℓ′をとる.ℓ′は(X′,𝑝′)の Huffman 符号語長であり,|X′| =|X| −1 ≥2で𝑝′はすべての点で正だから,帰納法の仮定よりℓ′はX′上のどの候補にも負けない.命題 4.6.4 よりℓ′自身も候補だから,∑𝑦𝑝′(𝑦)ℓ′(𝑦)は補題 4.6.8 の𝐿′∗に等しい.定義 4.6.1 の作り方から
∑𝑥𝑝(𝑥)ℓH(𝑥)=∑𝑧≠𝑢,𝑣𝑝′(𝑧)ℓ′(𝑧)+(𝑝(𝑢)+𝑝(𝑣))(ℓ′(𝑤)+1)=𝐿′∗+𝑝(𝑢)+𝑝(𝑣)であり,補題 4.6.8 よりこれは𝐿∗に等しい.𝐿∗は候補にわたる最小値だから,どの候補ℓに対しても∑𝑥𝑝(𝑥)ℓH(𝑥) =𝐿∗ ≤∑𝑥𝑝(𝑥)ℓ(𝑥)である.◼
系 4.6.10. Xを2個以上の文字からなる有限アルファベット,𝑋をX上に分布𝑝をもつ確率変数で,すべての𝑥 ∈Xで𝑝(𝑥) >0を満たすものとする.このとき定義 4.6.1 のどの Huffman 符号語長ℓHについても
𝐻2(𝑋)≤∑𝑥∈X𝑝(𝑥)ℓH(𝑥)<𝐻2(𝑋)+1である.
本章の問いはこれで閉じた.一意復号可能などんな符号でも平均符号長は𝐻𝐷(𝑋)を下回れず(定理 4.3.2,系 4.5.2),アルファベットが2文字以上ですべての記号の確率が正なら𝐻𝐷(𝑋) +1未満で済ませる符号があり(系 4.4.3,定理 4.4.4),𝐷 =2のときは同じ仮定のもとで,最良の符号を手続きで作れる(命題 4.6.4 が符号を与え,定理 4.6.9 がその最良性を保証する).例 4.4.5 で Shannon 符号が最良でない場合を見たが,その「最良」がどこにあるかは,確率を小さいものから二つずつまとめていくだけで決まる.エントロピーが答えるのは幅1までで,その幅の中で最良の平均符号長がどこに落ちるかは定義 4.6.1 の手続きが答える,というのが本章の結論である.
InformationTheory — 形式化検証つき情報理論教科書(レビュー版).数式は MathJax + AMS Euler で事前レンダリング.