参考书《数据压缩导论(第4版)》 Page 100
5、给定如表4-9所示的概率模型,求出序列a1a1a3a2a3a1 的实值标签。
解:由题意知 P(a1)=0.2 P(a2)=0.3 P(a3)=0.5;
据X(ai)=i,所以X(a1)=1,X(a2)=2,X(a3)=3,即序列a1a1a3a2a3a1为113231;
又据概率密度可知累积密度,即Fx(0)=0, Fx(1)=P(a0)+ P(a1)=0.2,
Fx(2)=P(a1)+ P(a2)=0.5, Fx(3)=P(a1)+ P(a2)+P(a3)=1;
因为u(n)=l(n-1)+(u(n-1)-l(n-1))*Fx(xn)
l(n)=l(n-1)+(u(n-1)-l(n-1))*Fx(xn-1)
所以
(1)当出现该序列第一个元素a1时:
u1=l0+(u0-l0)*Fx(1)=0.2;
l1=l0+(u0-l0)*Fx(0)=0;
(2)出现该序列第二个元素a1时 :
u2=l1+(u1-l1)*Fx(1)=0.04;
l2=l1+(u1-l1)*Fx(0)=0;
(3)出现该序列第三个元素a3时 :
u3=l2+(u2-l2)*Fx(3)=0.04;
l3=l2+(u2-l2)*Fx(2)=0.02;
(4) 出现该序列第四个元素a2时 :
u4=l3+(u3-l3)*Fx(2)=0.03;
l4=l3+(u3-l3)*Fx(1)=0.024;
(5)出现该序列第五个元素a3时 :
u5=l4+(u4-l4)*Fx(3)=0.03;
l5=l4+(u4-l4)*Fx(2)=0.027;
(6) 出现该序列第六个元素a1时 :
u6=l5+(u5-l5)*Fx(1)=0.0276;
l6=l5+(u5-l5)*Fx(0)=0.027;
所以该序列a1a1a3a2a3a1的实值标签T(a1a1a3a2a3a1)=u6+l6/2=0.0273
6、对于表4-9所示的概率模型,对于一个标签为0.63215699的长度为10的序列进行解码。
解:依题意得:
Fx(0)=0,
Fx(1)=P(a0)+ P(a1)=0.2,
Fx(2)=P(a1)+ P(a2)=0.5,
Fx(3)=P(a1)+ P(a2)+P(a3)=1;
所以据已知条件,可以编写如下程序:
程序输出结果为:
所以编程实现得标签为0.63215699的长度为10的序列,解码为3221213223.