AAAABBCDDDDCCCBBの文字列を圧縮する場合
全体的にはA、B,C,Dの各文字が4回ずつ出現するため
各文字の出現確立は1/4であり
平均情報量Hは
H = 4×(-(1/4)log(1/4)) = 2 [ shannon / symbol ]
である(対数の底は2)
よって各文字2bitの符号長で最適に表現できる
しかし・・・
最初8文字を見るならば
各文字の出現確立は1/2,1/4,1/8,1/8であり
平均情報量Hは
H = (-(1/2)log(1/2))+(-(1/4)log(1/4))+2×(-(1/8)log(1/8))
= 1.75 [ shannon / symbol ]
である(対数の底は2)
ということは・・・
1.75(shannon/symbol)の情報量に対して
2(bit/symbol)の符号長を与えると無駄が生じる
この時各文字の符号を0,10,110,111とすると
各文字の符号長は1,2,3,3bitであるから平均符号長は
1/2×1bit + 1/4×2bit + 1/8×3bit + 1/8×3bit
= 1.75 [ bit / symbol ]
であり最適な符号長となる
つまり最適な頻度表に切り替えながら圧縮することにより
高圧縮率にすることが可能である
でも現実は・・・
ほど甘くないです・・・^^;
PR