情報源符号化定理①
手持ちの参考書にはハフマン符号のみがピックアップされていたのでシャノン符号についてメモ (何してるか知りたいだけなら一番下の要約見て下さい)
そもそも
符号のもつ望ましい性質には、(1)一意復号可能(2)瞬時復号可能(3)平均符号長の最小化 がある。
(3)を考える際に必要な処理が平均符号長Lを平均化して評価することである。
シャノン符号
生起確率の大きな記号には短い符号長の符号を、逆に生起確率の小さな記号には長い符号長の符号を割り当てる。
記号の生起確率をとすると、直接計算によりその符号語の符号長となるように符号化するのがシャノン符号である。
実行には以下のステップを踏む。
定常無記憶情報源Uを考える(数式をうまく出力させられなかったのでまた書いておきます)。
次に、を生起確率の大きい順に並べる。ここで、これらの生起確率は一般性を失うことなく
と仮定する。
次に、累積確率
を求め、これを2進数に展開。例えば
である。ただし、は10進数Aを2進数で表したときの値がBであることを表す。これを次式を満足する桁まで求める(0が続いたら桁目まで0を付ける)。
すなわち
である。明らかにが大きくなればは小さくなる。そして、記号に対する符号語は小数点以下の2進数で与える。
例えば、(*)(**)でならば、であるから(これが桁数)となりと符号化される(0.07の2進数変換の小数部先頭4桁に対応)。
また、得られた符号語が全て異なるという保証については以下のように考えることが出来る。
を2進数展開して求めた符号語はから求めた符号語と桁目において以上の差を生じている。
なぜかというと、であるから、はよりだけ大きく、これは(**)より以上大きいからである(符号化の際、最低でも1箇所が異なるアルファベットをとる)。
要約すると
①ある定常無記憶情報源をマトリクスにして、生起確率の大きい順に記号を並べる
②先頭(番目)から()番目までの確率を足し、それをとする
③j番目の記号の生起確率の対数をとり、桁数を計算、を2進数展開した際の小数部の先頭から桁分を符号とみなす
④①〜③を記号の数回分繰り返す
以上の操作がシャノン符号の作り方である。
ファノ符号についても調べたが、やってることはそんな変わらないので割愛カツ!
数式は以下のサイトを参考にしました。
開設
学生の間の勉強の備忘録やらなんやらを書き留めていく
人に見せるもんでもないので大したことは書かないですはい。