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号