第三次作业

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

  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的序列进行解码。

#include<stdio.h>

int main()
{
int m[100];
double F0=0,F1=0.2,F2=0.5,F3=1.0;
double tag=0.63215699,t1;
double l[100],u[100];
l[0]=0;
u[0]=1.0;
for(int j=1;j<=10;j++)
{
t1=(tag-l[j-1])/(u[j-1]-l[j-1]);
if(t1>F0&&t1<F1)
{
l[j]=l[j-1]+(u[j-1]-l[j-1])*F0;
u[j]=l[j-1]+(u[j-1]-l[j-1])*F1;
m[j]=1;
}
else if(t1>F1&&t1<F2)
{
l[j]=l[j-1]+(u[j-1]-l[j-1])*F1;
u[j]=l[j-1]+(u[j-1]-l[j-1])*F2;
m[j]=2;
}
else
{
l[j]=l[j-1]+(u[j-1]-l[j-1])*F2;
u[j]=l[j-1]+(u[j-1]-l[j-1])*F3;
m[j]=3;
}
printf("%d",m[j]);
}

return 0;

}

原文地址:https://www.cnblogs.com/QTJZR/p/4848561.html