情報理論

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 pi1
2
 li1

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