1、 参考书《数据压缩导论(第4版)》 Page 100
5、给定如表4-9所示的概率模型,求出序列a1a1a3a2a3a1 的实值标签。
答案:
由概率模型以及题意可知:FX(0)=0,FX(1)=0.2,FX(2)=0.3,FX(3)=0.5
题目要求我们求出序列a1a1a3a2a3a1的实值标签,我们可以将其解读为对符号序列113231进行编码。
(1)第一个符号为1,所以其所在的区间为[l(1),u(1)),其中u(1)和l(1)分别为第一个出现的字符的上下界,
这里的l(1)=FX(0)=0,u(1)=FX(1)=0.2,所以其标签值包含在[0,0.2)之间。
(2)第二个符号为1,其区间在[a0,a1),按比例重新划分a1
下线为0,上线为0.2,区间间隔为0.2
0.2*0.2=0.04 0+0.04=0.04
0.2*0.3=0.06 0.04+0.06=0.1
0.2*0.5=0.1 0.1+0.1=0.2
所以其标签包含在[0,0.04)之间。
(3)第三个符号是3,其区间在[a2,a3),按比例重新划分a1
下线为0,上线为0.04,区间间隔为0.04
0.04*0.2=0.008 0+0.008=0.008
0.04*0.3=0.012 0.008+0.012=0.02
0.04*0.5=0.02 0.02+0.02=0.04
所以其标签包含在[0.02,0.04)之间。
(4)第四个符号是2,其区间在[a1,a2),按比例重新划分a1
下线为0.02,上线为0.04,区间间隔为0.02
0.02*0.2=0.004 0.02+0.004=0.024
0.02*0.3=0.006 0.024+0.006=0.03
0.02*0.5=0.01 0.03+0.01=0.04
所以其标签包含在[0.024,0.03)之间。
(5)第五个符号是3,其区间在[a2,a3),按比例重新划分a1
下线为0.024,上线为0.03,区间间隔为0.006
0.006*0.2=0.0012 0.024+0.0012=0.0252
0.006*0.3=0.0018 0.0272+0.0048=0.027
0.006*0.5=0.003 0.027+0.003=0.03
所以其标签包含在[0.027,0.03)之间。
(6)第六个符号是1,其区间在[a0,a1),按比例重新划分a1
下线为0.027,上线为0.03,区间间隔为0.003
0.003*0.2=0.0006 0.027+0.0006=0.0276
0.003*0.3=0.0009 0.0276+0.0009=0.0285
0.003*0.5=0.015 0.0285+0.015=0.0435
所以其标签包含在[0.027,0.0276)之间。
所以序列a1a1a3a2a3a1的实值标签
T=(0.027+0.0276)/2=0.0273
6、对于表4-9给出的概率模型,对于一个标签为0.63215699的长度为10的序列进行解码。
解:由表4-9可以知道F(x1)=0.2,F(x2)=0.5,F(x3)=1.
先假设 l(0)=0,u(0)=1.
1. t*=(0.63215699-0)/(1-0)=0.63215699
Fx(2)=0.5<= t*<= Fx(3)=1
l(1)= l(0)+( u(0)- l(0)) Fx(2)=0.5
u(1)= l(0)+( u(0)- l(0)) Fx(3)=1
所以第一个字符为a3
2. t*=(0.63215699-0.5)/(1-0.5)=0.26431398
Fx(1)=0.2<= t*<= Fx(2)=0.5
l(2)= l(1)+( u(1)- l(1)) Fx(1)=0.6
u(2)= l(1)+( u(1)- l(1)) Fx(2)=0.75
所以第二个字符为a2
3. t*=(0.63215699-0.6)/(0.75-0.6)=0.21437993
Fx(1)=0.2<= t*<= Fx(2)=0.5
l(3)= l(2)+( u(2)- l(2) Fx(1)=0.63
u(3)= l(2)+( u(2)- l(2)) Fx(2)=0.635
所以第三个字符为a2
4. t*=(0.63215699-0.63)/(0.635-0.63)=0.431398
Fx(1)=0.2<= t*<= Fx(2)=0.5
l(4)= l(3)+( u(3)- l(3)) Fx(1)=0.631
u(4)= l(3)+( u(3)- l(3)) Fx2)=0.6325
所以第四个字符为a2
5. t*=(0.63215699-0.631)/(0.6325-0.631)=0.77132667
Fx(2)=0.5<= t*<= Fx(3)=1
l(5)= l(4)+( u(4)- l(4)) Fx(2)=0.63175
u(5)= l(4)+( u(4)- l(4)) Fx(3)=0.6325
所以第五个字符为a3
6. t*=(0.63215699-0.63175)/(0.6325-0.63175)=0.5426533
Fx(2)=0.5<= t*<= Fx(3)=1
l(6)= l(5)+( u(5)- l(5)) Fx(2)=0.632125
u(6)= l(5)+( u(5)- l(5)) Fx(3)=0.6325
所以第六个字符为a3
7. t*=(0.63215699-0.632125)/(0.6325-0.632125)=0.04265333
Fx(k)=0<= t*<= Fx(1)=0.2
l(7)= l(6)+( u(6)- l(6)) Fx(0)=0.632125
u(7)= l(6)+( u(6)- l(6)) Fx(1)=0.632275
所以第七个字符为a1
8. t*=(0.63215699-0. 632125)/(0. 632125-0. 632275)=0.21326667
Fx(1)=0.2<= t*<= Fx(2)=0.5
l(8)= l(7)+( u(7)- l(7)) Fx(1)=0.632155
u(8)= l(7)+( u(7)- l(7)) Fx(5)=0.6322
所以第八个字符为a2
9. t*=(0.63215699-0.632155)/(0.6322-0. 632155)=0.04422222
Fx(0)=0<= t*<= Fx(1)=0.2
l(9)= l(8)+( u(8)- l(8)) Fx(0)=0.632155
u(9)= l(8)+( u(8)- l(8)) Fx(1)=0.632164
所以第九个字符为a1
10. t*=(0.63215699-0.632155)/(0.632164-0.632155)=0.22111111
Fx(1)=0.2<= t*<= Fx(2)=0.5
l(10)= l(9)+( u(9)- l(9)) Fx(1)=0.6321568
u(10)= l(9)+( u(9)- l(9)) Fx(2)=0.6321595
所以第十个字符为a2
所以,标签值为0.63215699的长度为10的序列解码后的序列为a3a2a2a2a3a3a1a2a1a2