红红173

导航

第三次作业

5.给定如表4-9所示的概率模型,求出序列a1a1a3a2a3a1的实值标签。

                    表4-9  习题5,习题6的概率模型


 

          字母                                              概率


 

           a1                                                 0.2

           a2                                                 0.3

           a3                                                  0.5


 

解:由题可知,映射a1<=>1,a2<=>2,a3<=>3

Fx(k)=0, k≤0, Fx(1)=0.2, Fx(2)=0.5, Fx(3)=1, k>3

下界:  l(0)=0,上界:u(0)=1

该序列的第1个元素为a1:

           l(1)= 0+(1- 0)Fx(0)=0

           u(1)=0+(1-0) Fx(1)=0.2

序列的第2个元素为a1

           l(2)= 0+(0.2- 0)Fx(0)=0

           u(2)=0+(0.2-0) Fx(1)=0.04

序列的第3个元素为a3

           l(3)= 0+(0.04- 0)Fx(2)=0.02

           u(3)=0+(0.04-0) Fx(3)=0.04

序列的第4个元素为a2  

         l(4)= 0.02+(0.04- 0.02)Fx(1)=0.024

           u(4)=0.02+(0.04-0.02) Fx(2)=0.03

序列的第5个元素为a3   

           l(5)= 0.024+(0.03- 0.024)Fx(2)=0.027

           u(5)=0.024+(0.03-0.024) Fx(3)=0.03

序列的第6个元素为a1   

           l(6)= 0.027+(0.03- 0.027)Fx(0)=0.027

           u(6)=0.027+(0.03-0.027) Fx(1)=0.0276

该序列a1a1a3a2a3a1的标签所在的区间为[0.027,0.0276)

可以生成序列a1a1a3a2a3a1的标签如下:

Tx(a1a1a3a2a3a1)= l(6)+u(6)/2

                       =(0.027+0.0276)/2

                       =0.0273

6、对于表4-9所示的概率模型,对于一个标签为0.63215699的长度为10的序列进行解码。

 

include

 

int main()
{
double tag=0.63215699;
double l[100],u[100];
double t;
l[0]=0;
u[0]=1;
double A0=0.0,A1=0.2,A2=0.5,A3=1.0;
int M[100];
for(int k=1;k<=10;k++)
{
t=(double)(tag-l[k-1])/(u[k-1]-l[k-1]);
if(t>=A0&&t<=A1)
{
u[k]=l[k-1]+(u[k-1]-l[k-1])A1;
l[k]=l[k-1]+(u[k-1]-l[k-1])A0;
M[k]=1;
}
else if(t>A1&&t<=A2)
{
u[k]=l[k-1]+(u[k-1]-l[k-1])A2;
l[k]=l[k-1]+(u[k-1]-l[k-1])A1;
M[k]=2;
}
else if(t>A2&&t<=A3)
{
u[k]=l[k-1]+(u[k-1]-l[k-1])A3;
l[k]=l[k-1]+(u[k-1]-l[k-1])A2;
M[k]=3;
}
printf("%d",M[k]);
}
return 0;
}

 

posted on 2015-09-30 15:16  孙红红  阅读(126)  评论(0编辑  收藏  举报