6.符号化法(6章) 1 情報源符号化定理と符号化法 情報源符号化定理(シャノンの第1定理)は、符号化の理論 的限界を与えているだけであり、具体的な符号化の手法を 与えてはいない。すなわち、ある情報源に対して、エントロ ピーは平均符号長の“目標”にすぎない。 ここでは、具体的な符号化法を与える。 2 代表的(情報源)符号化法 • シャノン・ファノ符号化(算術符号化) 確率を2進数化して符号化する。 • ハフマン符号化(コンパクト符号化) 最小の平均符号長を持つ符号 (コンパクト符号)を実現する符号。 符号の木の葉から符号を割り当てていく。 3 P進数と基数変換 (シャノン・ファノ符号化法の準備1) 4 p進数 p 種類の記号 {0,1, L , p - 1} を基に、 数を表現することができる。小数点以上n桁、小数点以下m 桁の p 進数 基数を明示 する表記 n- 1 n- 2 0 - 1 - 2 - m p (q q L q .q q L q ) は以下の値を持つ。ただし、 qi Î {0,1, L , p - 1} n å qi ´ p 整数部 (小数点の左の 数、1以上) i i= - m = qn - 1p n- 1 + q- 1p + qn - 2 p - 1 n- 2 + q- 2 p - 2 + L + q0 p 0 + L + q- m p - m 小数部 (小数点の右の 数、1未満) 5 10進数と2進数 0 10 10n - 1 10 = 1 10- 1 = 1 10 10- m = 1 10m D = (dn - 1dn - 2 L d1d 0 .d- 1d- 2 L d- m )10 di Î {0,1, 2, 3, 4, 5, 6, 7, 8, 9} 小数点の位 置が重要 各桁の数字は、その位 の値が何個あるのかを 1 10- m = m 示している。 10 基数を明示する 表記(通常は10 の省略) bi Î {0,1} B = (bs - 1bs - 2 L b1b0 .b- 1b- 2 L b- t )2 s- 1 2 2 0 2 = 1 2- 1 1 = 2 2- t = 1 2t 6 (19)10 = 1 ´ 10 + 9 ´ 10 1 0 = 10 + 9 16 + 2 + 1 = 1´ 2 + 0 ´ 2 + 0 ´ 2 + 1´ 2 + 1´ 2 4 3 2 1 = (10011)2 7 0 練習 次の値を求めよ。 (3) (1) (43.21)5 (11011.01)2 (2) (4) (2102.2)3 (72.3) 8 8 10進数から2進数への変換1 出力 入力 + B = (bs- 1bs - 1 L bb 1 0 )2 + D = (dn - 1dn - 2 L d1d0 )10 2進数変換アルゴリズム(整数部分) + + := D , i = 0とする。 + Di ¹ 0 の間以下を繰り返す; [step1]: D0 [step2]: (2-1) b := D + mod 2 i i (2-2) + i+ 1 D (2-3) [step3]:B := ê ëD i := i + 1 + + i i / 2ú û 初期設定 2で割った余り 2で割った商 (切り捨て) を1増加させる。 を出力して終了する。 = (bs- 1 L bb ) 1 0 2 9 開始 D 0+ = D + = (dn - 1 L d1d 0 .)10 , i= 0 偽 Di+ ¹ 0 真 bi = Di+ (mod 2) Di++ 1 = êëDi+ / 2ú û i= i+1 + B = (bs - 1 L bb 1 0 )2 として出力。 終了 10 例 (54)10 2)54 2)27 2)13 2) 6 2) 3 2) 1 0 を2進数に変換せよ。 ・・・0 ・・・1 ・・・1 ・・・0 ・・・1 ・・・1 + D 2) 0 + 2) D1 2) D2+ ・・・ b0 ・・・ b1 + D 2) s - 1 ・・・ bs - 2 0 ・・・ bs - 1 よって、 (54)10 = (110110)2 11 練習 次の10進数を2進数に変換せよ。 (1) (2) (35)10 (3) (48)10 (63)10 (4) (41)10 12 アルゴリズムの正当性 D + = D 0+ = bs - 1 ´ 2s - 1 + L + b1 ´ 21 + b0 ´ 20 ææ ö ö ÷ çççç ÷ ÷ ÷ ö÷ ÷ ÷ ççççæ ÷ ÷ ç ÷ ÷ ÷ ÷ ÷ = çççççç(bs - 1 )´ 2 + bs - 2 ÷ ´ 2 + L ´ 2 + b 1 ÷´ 2 + b0 ÷ ÷ çççççç{ ÷ ÷ ÷ ÷ ÷ ÷ è ø D s- 1 ÷ ÷ çççç1444444 4 2 444444 4 3 ÷ ÷ ÷ çèè ø÷ Ds - 2 144444444444444442 44444444444444443ø D1 14444444444444444444 42 444444444444444444443 D0 = D1 ´ 2 + b0 除算における商 と余りの関係式 13 (19)10 = (9)10 ´ 2 + 1 奇数なので1余る = ((4)10 ´ 2 + 1)´ 2 + 1 = = (((2)10 ´ 2 + 0) + 1)´ 2 + 1 ((((1)10 ´ 2 + 0)´ 2 + 0)´ 2 + 1)´ = ((((1) 2 2+ 1 ´ 2 + 0)´ 2 + 0)´ 2 + 1)´ 2 + 1 = (((10)2 ´ 2 + 0)´ 2 + 1)´ 2 + 1 = ((100)2 ´ 2 + 1)´ 2 + 1 = (1001)2 ´ 2 + 1 = (10011)2 14 性質:整数部分基数変換アルゴリズムのループ不変条件 Bi+ º (bs - 1bs - 2 L bi )2 ループの i とおく。 回の繰り返しにおいて次式が成り立つ。 このような式を ループ不変条件という。 アルゴリズム の途中で現れ る10進数 + i D = B + i 先頭のs - i 桁を 抜き出した2進数。 (途中では、求 まっていないこと に注意する。) 15 証明 繰り返し回数 (i i に関する帰納法で証明する。 = 0 のとき。) + + (dn - 1 L d0 ) = D = B = (bs - 1 L b0 ) であるので成り立つ。 アルゴリズムの初期化により 正しい。 16 (i > 0 のとき。) + + のとき D = B i= k k k = (bs - 1 L bk )2 であると仮定する。 帰納法の仮定 i= k+1 のとき アルゴリズムの各繰り返しにより、 D 以下のように計算できる。 D + k+1 êDk + = ê ê ë 2 êB k + = ê ê ë 2 ú ú ú û ú ú ú û ê(bs - 1 L bk )ú ú = ê ê ú 2 ë û = (bs - 1 L bk + 1 )2 = B k++ 1 + k+1 êDk + = ê êë 2 ú ú であるので、 ú û アルゴリズムの動作 帰納法の仮定 定義 QED 17 性質:整数部分基数変換アルゴリズムの出力の正当性 + + D = B = (bs - 1 L bb 1 0 )2 のとき 各 i, 0 £ i£ s- 1 + i bi = D に対して、 mod 2 証明 一般に、 Y を X で割った商がQ で余りが R であるとき、 以下の式が成り立つ。 Y = QX + R ,0 £ R < X Û R = Y (mod X ) 18 この関係より、各 i, 0 次ように計算できる。 + i D = B £ i£ s- 1 に対して ループ不変条件 + i = (bs - 1 L bi )2 = bs - 1 ´ 2s - i - 1 + L + bi + 1 ´ 21 + bi ´ 20 = (bs - 1 ´ 2s - i - 2 + L + bi + 1 ´ 20 )´ 2 + bi = B + i+ 1 ´ 2 + bi Û bi = D (mod 2) + i アルゴリズムの動作 QED 19 10進数から2進数への変換2 入力 - D = (0.d- 1d- 2 L d- m )10 出力 B - = (0.b- 1b- 2 L b- t )2 2進数変換アルゴリズム(小数部分) - 1 i - 初期設定 := D , i = - 1 とする。 [step2]: D ¹ 0 の間以下を繰り返す; (2-1) bi := (Di- ´ 2の整数部分) [step1]:D (2-2) Di-- 1 := D ( i ´ 2の少数部分) (2-3) i := i - 1 [step3]: B - = (0.b- 1b- 2 L b- t )2 を出力して終了する。 20 開始 D-- 1 = D - = (0.d- 1d- 2 L d- m ), i= - 1 D ¹ 0 i 偽 真 bi := Di-- 1 (D ´ := (Dii 2の整数部分) ´ 2の少数部分) B - = (0.b- 1b- 2 L b- t )2 として出力。 i := i - 1 終了 21 例 (0.5625)10 を2進数に変換せよ。 2 ´ 0.5625 = 1.125 L 1 + 0.125 2 ´ D- 1 = b- 1 + D- 2 2 ´ 0.125 = 0.25 L 0 + 0.25 2 ´ D- 2 = b- 2 + D- 3 2 ´ 0.25 = 0.5 L 0 + 0.5 2´ 1 = 1.0 L 1 + 0.0 M 2 ´ D- t = b- t + 0.0 よって、 (0.5625)10 = (0.1001)2 小数点に近い方から 順に求まる。 22 練習 次の10進数を2進数に変換せよ。 (1) (2) (0.625)10 (3) (0.3)10 (0.53125)10 (4) (0.59375)10 23 練習 小数部分の基数変換アルゴリズムにおけるループ不変 条件を示し、正当性を証明せよ。 24 累積確率 (シャノン・ファノ符号化法の準備2) 25 累積確率 累積確率 確率 1 1 p3+ p1 p2+ p2 p2 p1+ s1 s2 面積が1 確率変数 p1 p1 s1 s2 確率変数 高さが1に漸近 する。(一種の 積分に対応。) 26 シャノン・ファノ符号化法 27 シャノン・ファノ符号化 入力:情報源(情報源記号の集合とその発生確率) ïìï s1 , L S = íp , L ïîï 1 , sn ü ïï , pn ý ïþ ï 出力:符号(情報源記号に対応する符号語の集合) f = {s1 a c 1, s 2 a c 2 , L , sn a c n } ステップ1:発生確率の大きい順に並べる。 (ここでは、添え字でこの順序が見たされるとする。) ステップ2:各符号語長を次式で求める。 li = éê- log pi ù ú + ステップ3:次のような累積確率 pi を求める。 切り上げ i- 1 + 1 p = 0(i = 1), pi = + å pi (i ³ 2) j=1 ステップ4:累積確率 pi + を2進数 (pi + )2 に変換する。 + ステップ5:2進数(pi )2 の上位 li 桁を符号語 c i とする。 28 例 次の無記憶情報源 S に対して、シャノンファノ符号を構成する。 ìï a , b , c , d ü ïï ï S = í ý ïï 0.2 , 0.3 , 0.1 , 0.4ïï î þ ステップ1(降順に並び替え) ìï d , b , a , c ü ïï ï S = í ý ïï 0.4 , 0.3 , 0.2 , 0.1ïï î þ \ s1 = d , s 2 = b, s 3 = a, s 4 = c 29 ステップ2(符号語長の決定) d : - log 0.4 ; 1.322 したがって、 \ l1 = ld = éê- log 0.4ù ú= 2 L = {l1, l2, l3, l4 } b : - log 0.3 ; 1.737 = {2, 2, 3, 4} \ l2 = lb = éê- log 0.3ù ú= 2 a : - log 0.2 ; 2.322 の符号語長を持つ符号 を構成する。 \ l3 = la = éê- log 0.2ù ú= 3 c : - log 0.1 ; 3.322 \ l4 = lc = éê- log 0.1ù ú= 4 30 ステップ3(累積確率の計算) 情報源 符号語長 記号 d 確率 累積確率 b p1 = P (d ) = 0.4 p1+ = 0.0 l2 = 2 p2 = P (b) = 0.3 p + = 0.4 2 a l3 = 3 p3 = P (a ) = 0.2 p3+ = 0.7 c p4 = P (c ) = 0.1 p4+ = 0.9 l1 = 2 l4 = 4 31 累積確率 確率 P (c )+ 1 1 P (a )+ 0.9 0.7 P (d ) P (b) 0.4 P (a ) 0.3 P (c ) 0.2 0.1 P (b)+ 0.4 P (d )+ 0 d b a c 確率の降順 面積が1 情報源 記号 d b a c 高さが1に漸近 する。(一種の 積分に対応。) 情報源 記号 32 ステップ4(累積確率の2進数化) + 1 10 (p ) = (0.0)10 ; (0.00000)2 + (p2 )10 = (0.4)10 ; (0.01100)2 + (p3 )10 = (0.7)10 ; (0.10110)2 + (p4 )10 = (0.9)10 ; (0.11100)2 33 ステップ5(符号の割り当て) d a 00 b a 01 a a 101 c a 1110 \ f = {d a 00, b a 01, a a 101, c a 1110} 34 符号の木 d 0 0 b 1 1 0 1 a 1 0 1 c 平均符号長 L = 2 ´ 0.4 + 2 ´ 0.3 + 3 ´ 0.2 + 4 ´ 0.1 = 2.4 35 練習 次の情報源ジャンをシャノンファノの符号化法に従って 符号化せよ。 ìï グー , チョ キ , パーü ïï ï ジャ ン = í ý ïï 0.35 , 0.25 , 0.4 ïï ïþ îï また、得られた符号に対する符号の木を示し、平均符 号長、効率を求めよ。 36 シャノン・ファノ符号化法の性質 37 シャノンファノ符号化法の平均符号長 - 1 £ i £ n に対して、 li = éê- log pi ù ú どこか で見た 式 であるが、これは次式を満たす。 - log pi £ li < - log pi + 1 したがって、平均符号長は次式で求められる。 n å i= 1 n pi log pi £ å i= 1 n pili < - å n pi log pi + i= 1 å pi i= 1 \ H (S ) £ L < H (S ) + 1 38 シャノンファノ符号の非特異性 性質 シャノンファノ符号化法で構成された符号 は非特異符号である。 証明 符号語長の選び方より、次式が成り立つ。 log pi li log pi 1 2 li pi 2 li 1 39 一方、 i i 1 p p 累積確率の i 記号 si 1 の生成確率 pi 1 に注意する。 番目 累積確率の i 1 番目 よって、2進数表現して、次式が成り立つ。 p p p i 2 2 log pi 1 2 li 1 i 1 2 i 1 2 第 li 1 桁で必ず異なることを 意味する。 Q.E.D 40 縮退情報源 (ハフマン符号化法の準備) 41 縮退情報源 情報源 S 対して、 S の2つ以上の情報源記号 si , s j S を一つにまとめた 情報源を元の情報源の縮退情報源という。すなわち、 s1 , S p2 , , , si , pi , , , s1 , S p2 , , sk* , , , * k , , ここで、 * p sj, pj , sk {si , s j } * pk pi p j S S 1 元の情報源の記号よ り一つ少なくなる。 , , sn pn sn pn 2つの(情報源)記号を 一つにまとめる。 42 例 次の情報源の縮退情報源をいくつか示せ。 ìï a , b , c , d ü ïï ï S = í ý ïï 0.2 , 0.3 , 0.1 , 0.4ïï î þ 解) ìï A S 1- = ïí ïï 0.5 î ìï a S 2 = ïí ïï 0.2 î d ü ïï ý, A = {a, b} , 0.1 , 0.4ïï þ , B , d ü ïï ý, B = {b, c} , 0.4 , 0.4ïï þ , c , ìï C , b , d ü ïï ï S = í ý,C = {a, c} ïï 0.3 , 0.3 , 0.4ïï î þ 3 43 練習 次の情報源に対して、2記号を1記号に縮退して得られる情報源 をすべて示せ。 ìï a , b , c , d ü ïï ï S = í ý ïï 0.15 , 0.25 , 0.05 , 0.55ïï î þ 44 ハフマン符号化法 45 ハフマン符号化 入力:情報源(情報源記号の集合とその発生確率) ìï s , s , L 2 S = ïí 1 ïï p1 , p2 , L î ïï , sn ü ý , pn ïï þ 出力:符号(情報源記号と符号語の対応の集合) f = {s1 a c 1, s 2 a c 2 , L , sn a c n } ìï s 0 , L ステップ1: k = 0 とし、S = S = ïí 1 0 ïï p10 , L îï ここで、 si0 = si , pi0 = pi , ïï , sn0 ü とする。 ý , pn0 ïï ï þ (1 £ i £ n ) ステップ2: 発生確率の大きい順に並べる。 (添え字の順序をこの順序とする。) 46 n - k 記号の ステップ3:縮退情報源 情報源に縮退され k ìï s k , L , s k ü ï , s n- k- 1 n- k ï ている。 S k = ïí 1k ý k k ïï p1 , L , pn - k - 1 , pn - k ïï ïk îï þ k s , s に対して、確率の小さい2つの情報源記号 n - k - 1 n - k に対して、 snk - k - 1, snk - k を 対応する符号の末尾に0と1を割り当てる。さらに、 縮退して、新たな縮退情報源 Sk+1 ìï s k + 1 = ïí 1k + 1 ïï p1 îï , L , , L , ïï pnk -+ (1k + 1) ü ý * k+1 pn - ( k + 1) ïï ï þ * を作成する。 ここで、 sik + 1 = sik , pik + 1 = pik , { } (1 £ i £ n - k - 2) snk -+ (1k + 1) = snk - k - 1, snk - k , pnk -+ (1k + 1) = pnk - k - 1 + pnk - k , i= n- k- 1 47 ステップ4: k < n ステップ2に戻る。 - 1 である限り、 k = k + 1 として 48 ハフマン符号化例 次の符号のハフマン符号を与える。 ìï a , b , c , d ü ïï ï S = í ý ïï 0.2 , 0.3 , 0.1 , 0.4ïï î þ 全ての点線で、縮退 情報源の確率が降 順になっていること。 符号の木を葉から構成していくと分かりやすい。 B = {b, A }(0.6)1 d (0.4) 1 b(0.3) a (0.2) c(0.1) S 0 = {d, b, a, c} 0 1 A = {a, c}(0.3) 0 0 S 1 = {d , b, A } 49 S 2 = {B , d } 前のスライドの符号の木より、 da 0 b a 11 a a 101 c a 100 平均符号長 L は、次のように計算される。 L = 0.4 ´ 1 + 0.3 ´ 2 + 0.2 ´ 3 + 0.1 ´ 3 = 1.9 50 練習 次の符号をハフマン符号化し、 符号の木、平均符号長、効率を求めよ。 ìï a , b , c , d ü ïï ï S = í ý ïï 0.15 , 0.25 , 0.05 , 0.55ïï î þ 51 ハフマン符号化法の性質 52 コンパクト符号 (定義)コンパクト符号 情報源に対して、符号語長が最短となる(瞬時)符号を コンパクト符号という。 コンパクト符号であっても、効率が1 になるとは限らない。効率が1なら明 らかにコンパクト符号である。 53 ハフマン符号のコンパクト性 性質 ハフマン符号は、コンパクト符号である。 ハフマン符号化で得られる符号は、1通りとは 限らない。しかし、どのようなハフマン符号もコ ンパクトとなる。 この証明のために、次の補題を示す。 54 補題 情報源 Si の最小の生成確率を持つ2記 号を縮退して得られる情報源を Si 1 とする。 情報源 Si のハフマン符号をf i とし、情 報源 Si 1 のハフマン符号を f i + 1 とする。こ のとき、 f i + 1 がコンパクト符号ならば、 f i もコンパクト符号である。 証明 fi f i+ 1 の平均符号長を Li の平均符号長を L とし、 とする。 i+ 1 55 まず、符号の木の経路長が最長の葉は2つある。 (もし、経路長が最長の葉が1つだけなら、さらに短くできる。) f i+ 1 f i+ 1 この2つの葉に発生確率最小の2記号 si , s j Si を割り当 てる。(もし、発生確率が最小以外の記号を割り当てるとより短い 平均符号長が得られる。) si sj f i+ 1 Li = å pk lk sk Î Si £ å sk Î Si pk lk - pi li - p j l j + p'i li + p' j l j 56 si * sj f i+ 1 si {si , s j } fi Li+ 1 = Li - pi li - p j li + ( pi + p j )( li - 1 ) = Li - pi - p j 今、 Si 1 に対する任意の符号の平均符号長を L'i+ 1 と表す。 このとき、 Li+ 1 のコンパクト性より、以下が成り立つ。 Li+ 1 £ L'i+ 1 57 同じ値を両辺から引いているだけ。 \ Li+ 1 - pi - p j £ L'i + 1 - pi - p j \ Li £ L'i 情報源 したがって、 Si 1 fi の平均符号長と等しい。 もコンパクト符号になる。 Q.E.D 58 ハフマン符号のコンパクト性の証明 基礎 i = n- 2 のとき。 このとき、縮退情報源の記号の数は、 Si = Sn- 2 = 2 であり、ハフマン符号は明らかにコンパクト符号である。 帰納 n - 2 ³ i > 0 のすべての i に対して、ハフマン符号f i が情報源 Si のコンパクト符号だと仮定する。(帰納法の 仮定) 先の補題より、 f i がコンパクト符号ならば、 f i - 1 もコンパクト符号である。 したがって、 S 0 をハフマン符号化した f 0 もコンパクト符 号である。 Q.E.D 59
© Copyright 2024 ExpyDoc