140705010032 张少威 第4次作业
5、给定如表4-9所示的概率模型,求出序列a1a1a3a2a3a1 的实值标签。

从概率模型可知:Fx(k)=0, k≤0, Fx(1)=0.2, Fx(2)=0.5, Fx(3)=1, k>3 。
可以利用公式确定标签所在的上下限。将u(0)初始化为1,将l(0)初始化为0。
该序列的第1个元素为a1,利用更新公式,可得:
l(1) =0+(1-0)Fx(0)=0
u(1) =0+(1-0)Fx(1)=0.2
因此,序列a1a1的标签所在的区间为[0,0.2),该序列的第2个元素为a1,利用更新公式,可得:
l(2) =0+(0.2-0)Fx(0)=0
u(2) =0+(0.2-0)Fx(1)=0.04
因此,序列a1a1的标签所在的区间为[0,0.04)。该序列的第3个元素为a3,利用更新公式,可得:
l(3) =0+(0.04-0)Fx(2)=0.02
u(3) =0+(0.04-0)Fx(3)=0.04
因此,序列a1a1a3的标签所在的区间为[0.02,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
因此,序列a1a1a3a2的标签所在的区间为[0.024,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
因此,序列a1a1a3a2a3的标签所在的区间为[0.027,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的标签为:Tx(a1a1a3a2a3a1)=(0.027+0.0276)/2=0.0273
6、对于表4-9所示的概率模型,对于一个标签为0.63215699的长度为10的序列进行解码。
#include<iostream>
using namespace std;
int main()
{
double u[11],l[11],F[4];;
u[0]=1;l[0]=0;
F[0]=0;F[1]=0.2;F[2]=0.5;F[3]=1;
double x=0.63215699;
for(int i=1;i<11;i++)
{
for(int j=1;j<4;j++)
{
l[i]=l[i-1]+(u[i-1]-l[i-1])*F[j-1];
u[i]=l[i-1]+(u[i-1]-l[i-1])*F[j];
if(x>=l[i]&&x<u[i])
{
cout<<j;
break;
}
}
}
return 0;
}
运行结果如下图所示:

综上所述:该序列为a3a2a2a1a2a1a3a2a2a3.
浙公网安备 33010602011771号