算術符号化(編集中)

今回は算術符号化についてC言語を使用して、理解を深めましょう。

算術符号化法

・記憶のない情報源と各記号の出現確率を定めます。
A=50% B=30% C=20%とする。
A=0.5 B=0.3 C=0.2とする。
・連続したそれらの文字列は以下のような原理で数値で表せる。

・算術符号化法の具体例
BCABのような出現を符号化すると、初めはAなので、50%以下だと言うことが分かりますね。

位置
A=0 B=0.5 C=0.8
長さ
A=0.5 B=0.3 C=0.2

0.5+0.3*0.8+0.3*0.2*0.0+0.3*0.2*0.5*0.8=0.764
Bの初期位置+Bの長さ*Cの位置+BCの長さ*Aの位置+BCAの長さ*Bの位置

これがBCABの状態ですね。
前回はこのBCABの状態しかしませんでしたね。
今回は理解を深めるために全通りやってみましょう。

はい!!!

自分で作成した2進数表示のプログラムや、ファイルから読み込むプログラム等を組み合わせて、記憶のない情報源の各記号の出現確率A=50% B=30% C=20%の3文字からなる4文字でできる文字列の確率を10進数表示と2進数表示するプログラムを作成しました。それの実行結果です。
ここまでくるとちょっと気持ちがいいですね。(プログラムは雑ですけど

使用したプログラム

以下に使用したプログラムと確率表を載せておきます。

ーー確率表作成プログラムーー

ーー確率表ーー(関連したプログラムを動かす場合はこのファイル名はprobability.txtでないと動かないと思います。)

ーー2進数表示プログラムーー

明日もバイトなので少し雑ですが終わります!
プログラムが見にく過ぎるのはあとで何とかします(笑