6.符号化法(6章) 1 (情報源の)符号化定理と符号化法 情報源符号化定理(シャノンの第1定理)は、符号化の理論 的限界を与えているだけであり、具体的な符号化の手法を 与えてはいない。すなわち、ある情報源に対して、エントロ ピーは平均符号長の目標にすぎない。 ここでは、具体的な符号化法を与える。 2 代表的(情報源)符号化法 • シャノン・ファノ符号化(算術符号化) 確率を2進数化して符号化する。 • ハフマン符号化(コンパクト符号化) 最小の平均符号長を持つ符号 (コンパクト符号)を実現する符号。 符号の木の葉から符号を割り当てていく。 3 P進数と基数変換 (シャノン・ファノ符号化法の準備) 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 d1d0 .d- 1d- 2 L d- m )10 di Î {0,1, 2, 3, 4, 5, 6, 7, 8, 9} 小数点の位 置が重要 各桁の数字は、その位 の値が何個あるのかを 1 10- m = 示している。 10m 基数を明示する 表記(通常は10 の省略) bi Î {0,1} B = (bs - 1bs - 2 L bb 1 0 .b- 1b- 2 L b- t )2 2 s- 1 2 0 2 = 1 - 1 2 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 の間以下を繰り返す; 2で割った余り + bi := Di mod 2 2で割った商 + + ú Di + 1 := ê D / 2 i ë û (切り捨て) [step1]: D0 [step2]: (2-1) (2-2) (2-3) [step3]:B i := i + 1 + i を1増加させる。 を出力して終了する。 = (bs- 1 L bb ) 1 0 2 9 開始 D0+ = D + = (dn - 1 L d1d0 .)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 + D 2) 1 + D 2) 2 ・・・ 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 性質:整数部分基数変換アルゴリズムのループ不変条件 B i+ º (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 のとき。) + + のとき Dk = Bk = (bs- 1 L bk )2 であると仮定する。 i= k 帰納法の仮定 i= k+1 のとき + 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 ê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 ´ 2 s- i- 2 = B + i+ 1 + L + bi + 1 ´ 2 )´ 2 + bi 0 ´ 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 ´ 2の少数部分) i (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 累積確率 累積確率 確率 1 1 p3+ p1 p2+ p2 p2 p1+ s1 s 2 面積が1 情報源 記号 p1 p1 s1 s 2 高さが1に漸近 する。(一種の 積分に対応。) 情報源 記号 25 シャノン・ファノ符号化法 26 シャノン・ファノ符号化 入力:情報源(情報源記号の集合とその発生確率) ìïï 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 とする。 27 例 次の無記憶情報源 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 28 ステップ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 29 ステップ3(累積確率の計算) 情報源 符号語長 記号 d b 確率 累積確率 p1 = P (d ) = 0.4 p1+ = 0.0 l2 = 2 p2 = P (b) = 0.3 p + = 0.4 2 l1 = 2 + a l3 = 3 p3 = P (a ) = 0.2 p3 = 0.7 c p4 = P (c) = 0.1 p4+ = 0.9 l4 = 4 30 累積確率 確率 P (c)+ 1 1 P (a )+ 0.9 0.7 P (d ) P (b) 0.4 P (a ) P (c ) 0.3 0.2 0.1 P (b)+ 0.4 P (d )+ 0 d b a c 確率の降順 面積が1 情報源 記号 d b a c 高さが1に漸近 する。(一種の 積分に対応。) 情報源 記号 31 ステップ4(累積確率の2進数化) + 1 10 (p ) = (0.0)10 ; (0.00000)2 + 2 10 (p ) = (0.4)10 ; (0.01100)2 + 3 10 (p ) = (0.7)10 ; (0.10110)2 + (p4 )10 = (0.9)10 ; (0.11100)2 32 ステップ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} 33 符号の木 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 34 練習 次の情報源ジャンをシャノンファノの符号化法に従って 符号化せよ。 ìï グー , チョ キ , パーü ïï ï ジャ ン = í ý ïï 0.35 , 0.25 , 0.4 ïï ïþ îï また、得られた符号に対する符号の木を示し、平均符 号長、効率を求めよ。 35 シャノンファノ符号化法の平均符号長 - 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 36 シャノンファノ符号の非特異性 シャノンファノ符号化法で構成された符号 は非特異符号である。 証明 符号語長の選び方より、次式が成り立つ。 log pi li log pi 1 li li 1 2 pi 2 37 一方、 i 記号 si 1 の生成確率 i 1 p p pi 1 に注意する。 累積確率の i 番目 累積確率の i 1 番目 よって、2進数表現して、次式が成り立つ。 p p p i 2 2 log pi1 2 li1 i 1 2 i 1 2 第 li 1 桁で必ず異なることを 意味する。 Q.E.D 38 縮退情報源 (ハフマン符号化法の準備) 39 縮退情報源 情報源 S 対して、 S の2つ以上の情報源記号 si , s j S を一つにまとめた 情報源を元の情報源の縮退情報源という。すなわち、 s1 , S p2 , s1 , S p1 , ここで、 * s k , si , sj , , , pi , pj , , , * sk , , , * pk , , {si , s j } * sn pn sn pn pk pi p j S S 1 40 例 次の情報源の縮退情報源をいくつか示せ。 ìï 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 41 練習 次の情報源に対して、2記号を1記号に縮退して得られる情報源 をすべて示せ。 ìï a , b , c , d ü ïï ï S = í ý ïï 0.15 , 0.25 , 0.05 , 0.55ïï î þ 42 ハフマン符号化法 43 ハフマン符号化 入力:情報源(情報源記号の集合とその発生確率) ìï 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: 発生確率の大きい順に並べる。 (添え字の順序をこの順序とする。) 44 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 45 ステップ4: k < n - 1 である限り、 k = k + 1 ステップ2に戻る。 として 46 ハフマン符号化例 次の符号のハフマン符号を与える。 ìï 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 } 47 S 2 = {B , d } 前のスライドの符号の木より、 d a 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 48 練習 次の符号をハフマン符号化し、 符号の木、平均符号長、効率を求めよ。 ìï a , b , c , d ü ïï ï S = í ý ïï 0.15 , 0.25 , 0.05 , 0.55ïï î þ 49 コンパクト符号 (定義)コンパクト符号 情報源に対して、符号語長が最短となる符号を コンパクト符号という。 コンパクト符号であっても、効率が1 になるとは限らない。効率が1なら明 らかにコンパクト符号である。 50 ハフマン符号のコンパクト性 性質 ハフマン符号は、コンパクト符号である。 ハフマン符号化で得られる符号は、1通りとは 限らない。しかし、どのようなハフマン符号もコ ンパクトとなる。 この証明のために、次の補題を示す。 51 補題 情報源 S i の最小の生成確率を持つ2記 号を縮退して得られる情報源を Si 1 とする。 情報源 S i のハフマン符号をf i とし、情 報源 Si 1 のハフマン符号を f i + 1 とする。こ のとき、 f i + 1 がコンパクト符号ならば、 f i もコンパクト符号である。 証明 f i の平均符号長を Li とし、 f i + 1 の平均符号長を Li+ 1 とする。 52 まず、符号の木の経路長が最長の葉は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 - pili - p j l j + p'i li + p' j l j 53 si sj f i+ 1 * si {si , s j } fi Li+ 1 = Li - pili - p j li + ( pi + p j )( li - 1 ) = Li - pi - p j 今、 Si 1 に対する任意の符号の平均符号長を L'i+ 1 と表す。 このとき、 Li+ 1 のコンパクト性より、以下が成り立つ。 Li+ 1 £ L'i+ 1 54 同じ値を両辺から引いているだけ。 \ Li+ 1 - pi - p j £ L'i+ 1 - pi - p j \ Li £ L'i 情報源 したがって、 Si 1 fi の平均符号長と等しい。 もコンパクト符号になる。 Q.E.D 55 (ハフマン符号のコンパクト性の証明) 基礎 i = n- 2 のとき。 このとき、縮退情報源の記号の数は、 Si = Sn- 2 = 2 であり、ハフマン符号は明らかにコンパクト符号である。 帰納 n - 2 ³ i > 0 のすべての i に対して、ハフマン符号f i が情報源 S i のコンパクト符号だと仮定する。(帰納法の 仮定) 先の補題より、 f i がコンパクト符号ならば、 f i - 1 もコンパクト符号である。 したがって、 S0 をハフマン符号化した f もコンパクト符 0 号である。 Q.E.D 56
© Copyright 2024 ExpyDoc