第三次作业

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

            

    解:对序列a1a1a3a2a3a1进行编码:

         从概率模型可知:

                                Fx (0)=0  , Fx (1)=0.2 ,  Fx (2)= 0.5 , Fx (3)=1

         对序列a1a1a3a2a3a1进行编码可以看做是对序列113231进行编码

         根据公式

                     

                     可以确定标签所在区间的上下限。

          ①将U(0) 初始化为1 ,L(0)初始化为0,该序列的第一个元素为1,得到以下更新:

                   U(1) =0+(1-0) ×0.2=0.2

                   L(1) =0+(1-0) ×0=0

                                               故该标签包含在区间[0,0.2)中。

          ②该序列的第二个元素为1,得到以下更新:

                   U(2) =0+(0.2-0)× Fx (1)=0.2×1=0.2

                   L(2) =0+(0.2-0)× Fx (0)=0.2 ×0=0

                                                故该标签包含在区间[0,0.2)中。

          ③该序列的第三个元素为3,得到以下更新:

                   U(3) =0+(0.2-0)× Fx (3)=0.2×1=0.2

                   L(3) =0+(0.2-0)× Fx (2)=0.2 ×0.5=0.1

                                                故该标签包含在区间[0.1,0.2)中。

           ④该序列的第四个元素为2,得到以下更新:

                   U(4) =0.1+(0.2-0.1)× Fx (2)= 0.1+0.1×0.5=0.15

                   L(4) =0.1+(0.2-0.1)× Fx (1)= 0.1+0.1×0.2=0.12

                                                故该标签包含在区间[0.12,0.15)中。

            ⑤该序列的第四个元素为3,得到以下更新:

                   U(5) =0.12+(0.15-0.12)× Fx (3)=0.12+0.03×1=0.15

                   L(5) =0.12+(0.15-0.12)× Fx (2)= 0.12+0.03 ×0.5=0.135

                                                 故该标签包含在区间[0.135,0.15)中。

            ⑥该序列的第五个元素为1,得到以下更新:

                   U(6) =0.135+(0.15-0.135)× Fx (1)=0.135+0.015×0.2=0.138

                   L(6) =0.135+(0.15-0.135)× Fx (0)= 0.135+0.015 ×0=0.135

                                                 故该标签包含在区间[0.135,0.138)中。

         如果以区间中点作为标签,则根据公式

                                                       

                                                        得

                                                    

         因此,序列a1a1a3a2a3a1的实值标签为0.1365。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 1.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
#include<iostream>
using namespace std;
#define length 11
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 tag=0.63215699;
   cout<<"标签为0.63215699的长度为10的序列的解码为:"<<' ';
    for(int x=1;x<length;x++)
    {
        for(int n=1;n<4;n++)
        {
            l[x]=l[x-1]+(u[x-1]-l[x-1])*F[n-1];
            u[x]=l[x-1]+(u[x-1]-l[x-1])*F[n];
            if(tag>=l[x]&&tag<u[x])
            {
                cout<<'a'<<'['<<n<<']';
                break;
            }
                 
        }       
    }
    cout<<' ';
    return 0;
}
原文地址:https://www.cnblogs.com/weixiaojia/p/4831515.html