4.1 符号と一意復号可能性

第2章文字のブロックをひとまとめにして番号を振る符号を考え,1 文字あたりの費用がエントロピーまで下がることを示した(定理 2.3.6).ただしその符号には二つの癖がある.を大きくとらないと働かないことと,復号に失敗する確率が残ること(で 0 に向かうだけである)である.本章では別の作り方を扱う.1 文字ごとに符号語を割り当て,符号語の長さのほうを文字によって変える.復号はつねに成功し,代わりに問うのは平均の符号語長である.

第1章 1.1 節で,確率の記号におよそ文字ぶんの符号語を割り当てるのが最適で,そのとき平均符号長がちょうどになると予告した.本章はその予告を定理にする.下から抑えるのが 4.3 節,上から抑えるのが 4.4 節である.

記号の約束をしておく.本章ではの底をに固定する.符号に使える文字の個数をと書き,底をにとった対数が要る箇所ではと明示する.裸のはつねにこの個数を指し,第1章の相対エントロピーとは別物である.というのも後者はつねに二つの分布を引数にとるからである.主役はで例もすべてその場合をとるが,4.6 節を除いて議論は文字の個数がであることを使わないので,一般ののまま述べる.平均符号長はのようにつねに符号を引数にとって書き,第2章 2.4 節が裸ので表した定数とは別物である.

符号と平均符号長

定義 4.1.1(元情報源符号と平均符号長). を有限アルファベット,を整数とする.上の元情報源符号 とは,各に対しての文字を並べた空でない有限列を定める写像である.符号語,その長さをと書く.上に分布が与えられているとき,平均符号長

𝐿(𝑐):=𝑥X𝑝(𝑥)(𝑥)

で定める.

読み方は素直で,は「1 文字を送るのに平均して何文字払うか」である.符号語の長さを文字ごとに変えてよいところが第2章との違いで,確率の高い記号に短い符号語を割り当てれば平均は下がる.どこまで下げられるかが本章の問いである.なお符号語を空列にすることは許さない.長さの符号語を認めると,それを何個つないでも列が変わらず,送った文字数が受け取る側に伝わらなくなる.

形式化: 平均符号長 expectedLength (ソース)

形式化上の注記. 形式化の expectedLength は,符号ではなく符号語長の組を引数にとる.平均符号長に効くのは符号語の中身ではなく長さの組だけで,4.2 節ではその見方が主役になる.

定義 4.1.2(拡張と一意復号可能性と語頭符号). を有限アルファベット,を整数とし,上の元情報源符号とする.の文字を並べた空でない有限列全体の上の写像を,長さの列に対して符号語を順につないだ列

𝑐(𝑥1,,𝑥𝑛):=𝑐(𝑥1)𝑐(𝑥2)𝑐(𝑥𝑛)

を与えるものとして定め,拡張 と呼ぶ.定義域は長さの異なる列をすべて含む.一意復号可能 であるとは,が単射なことをいう.また,列が列語頭 であるとは,の先頭の,の長さぶんの文字がに一致することをいう(の場合も含める).語頭符号 であるとは,相異なるについての語頭にならないことをいう.

一意復号可能性は,受け取る側の立場から見た条件である.送られてくるのは符号語をつないだ 1 本の列だけで,どこが区切りかは書かれていない.それでも元の文字の列が一つに定まる,というのがの単射性である.語頭符号はそれより強く,読みながらその場で区切れることを要求する.先頭から 1 文字ずつ読んでいって,読んだところまでがある符号語に一致したら,そこが区切りだと決めてよい.というのもその符号語は他のどの符号語の語頭でもないので,あとから読み直しを迫られることがないからである.

形式化: 語頭符号 IsPrefixFree (ソース)

語頭符号は実際に使われている.文字を計算機の中で表す UTF-8 は,文字を個から個のバイトの列に写す符号である.符号語の長さは先頭のバイトの上位のビットだけで決まるので,短い符号語が長い符号語の先頭に現れることはない.すなわち UTF-8 は語頭符号であり,先頭から読んでいけばその場で文字の切れ目が決まる.

命題 4.1.3. を有限アルファベット,を整数とする.上の元語頭符号は一意復号可能である.また,一意復号可能な元情報源符号の符号語は,相異なる文字に対して相異なる.

証明(列の長さについての帰納法). を語頭符号とし,とする.についての帰納法でを示す.

先頭の文字が一致することを見る.両辺は同じ列であり,はその先頭文字,はその先頭文字である.したがって長さの短いほうは長いほうの語頭になっている(長さが等しいときは両者が一致し,定義 4.1.2 はこれも語頭の場合に含めてある).とすると,これはが語頭符号であることに反する.よってである.

残りに帰納法の仮定を当てる.両辺の先頭から共通のを取り去ると,残った二つの列が等しい.ならば左に残るのは空列であり,とすると右に残る列は空でない符号語を先頭に含むから,両者は等しくなりえない.よってで,このとき主張はそのものである.のときは同じ理由でであり,に帰納法の仮定を当ててを得る.

後半を示す.文字だけの列に対してはだから,が単射ならも単射である.

形式化上の注記. 命題 4.1.3 に対応する,一般のについての宣言はない.二元の場合について,符号語の集合がどの二つの元のあいだにも語頭の関係をもたず空列を含まなければ一意復号可能である,という形で PrefixFree.uniquelyDecodable (InformationTheory/Shannon/Kolmogorov/PrefixMachine.lean) が形式化されている.一意復号可能性そのものは,符号語の集合に対する述語 UniquelyDecodable として Mathlib にあるものをそのまま使う.この宣言が述べているのは符号語の集合についてのことで,命題 4.1.3 の前半に当たる.後半,すなわち符号語が文字ごとに相異なるという主張に対応する宣言はなく,形式化では写像の単射性は結論ではなく仮定の側に置かれている.

三つの例

例 4.1.4(二元語頭符号). X ={1,2,3,4}とし

𝑐(1)=0,𝑐(2)=10,𝑐(3)=110,𝑐(4)=111

と定める.は語頭符号である.上に分布𝑝(2) =1/4をもつ確率変数とすると,であり,これはに等しい.

証明. 語頭符号であることを確かめる.で始まり他の三つはで始まるから,はどれの語頭でもなく,どれもの語頭でない.に対しで始まるので,やはり互いに語頭の関係がない.は長さが同じで相異なるから,一方が他方の語頭になることはない.

値を計算する.平均符号長は定義 4.1.1 より

𝐿(𝑐)=121+142+183+183=74

である.エントロピーは定義 1.1.1 より

𝐻(𝑋)=12log2+14log4+18log8+18log8=12+12+38+38=74

である.

この符号では,各記号の符号語長がちょうどになっている(に対して確率が).第1章 1.1 節の予告どおりの割り当てが,この分布ではぴったり整数で実現できたということである.二つの値が一致したのは偶然ではなく,4.3 節でこれが等号成立の条件そのものだと分かる.

次の例では列を逆順に並べる操作を使う.列を逆順に並べたものをと書き,連結の反転が反転どうしを逆順に連結したものに等しいこと,すなわち二つの列についてが成り立つことを既知とする.

例 4.1.5(一意復号可能だが語頭符号でない). X ={1,2,3}とし,𝑐(1) =0𝑐(2) =01と定める.は語頭符号ではないが一意復号可能である.

証明. の語頭だから,は語頭符号ではない.

一意復号可能性を示す.符号で定めると˜𝑐(2) =10であり,これは例 4.1.4 の符号の一部だから語頭符号で,命題 4.1.3 より一意復号可能である.いまとすると,連結の反転が反転どうしを逆順に連結したものに等しいことを繰り返し使って両辺を逆順にすれば

˜𝑐(𝑥𝑛,,𝑥1)=˜𝑐(𝑦𝑛,,𝑦1)

を得る.の一意復号可能性よりであり,もう一度逆順にすればである.

この符号では,を受け取った時点で文字が終わったとは決められない.次がならそのの先頭だったことになるので,判断は先を読むまで保留になる.区切りが一意に決まることと,読みながらその場で決められることは別である.

例 4.1.6(符号語がすべて相異なっても一意復号可能とは限らない). X ={1,2,3}とし,𝑐(1) =0𝑐(2) =01と定める.三つの符号語は相異なるが,は一意復号可能でない.

証明. であり,である.列は相異なるのに同じ列に写るから,は単射でない.

三つの例が三つの階層を示している.命題 4.1.3 によれば,語頭符号は一意復号可能であり,一意復号可能なら符号語は相異なる.逆はどちらも成り立たず,例 4.1.5例 4.1.6 がそれぞれの反例である.語頭符号はこの中でいちばん狭いクラスだが,読みながら区切れるという実用上の利点をもつ.そこで自然に浮かぶのは,その狭さの代償として平均符号長で損をしていないか,という問いである.4.5 節で,一意復号可能な符号まで許しても平均符号長の下界は変わらないことを見る.

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