第三次作业

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

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

字母 概率
a1 0.2
a2 0.3
a3 0.5

 

 

 

 

 

 

:由概率模型可知: Fx(1)=0.2 ,  Fx(2)= 0.5 , Fx(3)=1

则X(ai)=i,       X(a1)=1,X(a2)=2,X(a3)=3

FX(0)=0,FX(1)=0.2 ,FX(2)=0.5  ,FX(3)=1.0, U(0)=1 ,L(0)=0

由公式得, L(n)=L(n-1)+(U(n-1)-L(n-1))Fx(xn-1)

               U(n)=L(n-1)+(U(n-1)-L(n-1))Fx(xn)

第一次出现a1时:

        L(1)=L(0)+(U(0)-L(0))Fx(0)=0

       U(1)=L(0)+(U(0)-L(0))Fx(1)=0.2

第二次出现a1时:         

      L(2)=L(1)+(U(1)-L(1))Fx(0)=0

         U(2)=L(1)+(U(1)-L(1))Fx(1)=0.04

第三次出现a3时:

      L(3)=L(2)+(U(2)-L(2))Fx(2)=0.02

     U(3)=L(2)+(U(2)-L(2))Fx(3)=0.04

第四次出现a2时:

  L(4)=L(3)+(U(3)-L(3))Fx(1)=0.024

 U(4)=L(3)+(U(3)-L(3))Fx(2)=0.03

第五次出现a3时:

 L(5)=L(4)+(U(4)-L(4))Fx(2)=0.027

  U(5)=L(4)+(U(4)-L(4))Fx(3)=0.03

最后一次出现a1时:

   L(6)=L(5)+(U(5)-L(5))Fx(0)=0.027

    U(6)=L(5)+(U(5)-L(5))Fx(1)=0.0276

所以,序列a1a1a3a2a3a1的实值标签为:T(113231)=(L(6)+ U(6))/2=0.0273

 

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

 表4-9

字母 概率
a1 0.2
a2 0.3
a3 0.5

 

 

 

 

 

 

源程序如下:

 

 1 #include<stdio.h>
 2  #include<iostream>
 3 using namespace std;
 4  
 5 int main()
 6 {
 7      double u[11],l[11],F[4];;
 8     u[0]=1;l[0]=0;
 9     F[0]=0;F[1]=0.2;F[2]=0.5;F[3]=1;
10     double x=0.63215699;
11     for(int i=1;i<11;i++)
12     {
13         for(int j=1;j<4;j++)
14         {
15             l[i]=l[i-1]+(u[i-1]-l[i-1])*F[j-1];
16             u[i]=l[i-1]+(u[i-1]-l[i-1])*F[j];
17             if(x>=l[i]&&x<u[i])
18             {
19                 printf("%d\t",j);
20                 break;
21             }
22                 
23         }        
24     }
25  
26         return 0;       
27 }

 

程序运行结果如下:

 

所以得该序列为a3a2a2a1a2a1a3a2a2a3。

 

posted @ 2015-09-16 10:42  茕白兔  阅读(136)  评论(0编辑  收藏  举报