zoukankan      html  css  js  c++  java
  • 第三次作业

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

     答:我们根据映射一一关系:ai=i 得到序列a1a1a3a2a3a1 的实值标签就是求序列113231的实值标签。

     设上界 u(0) =1,  下界 l(0)=0,符号集A={a1,a2,a3},且P(a1)=0.2,P(a2)=0.3,P(a3)=0.5

    由于P(x=i)=P(ai),所以P(x=1)=P(a1)=0.2,   P(x=2)= P(a2)=0.3,  P(x=3)=P(a3)=0.5.

     Fx(0)=0, 

     Fx(1)=P(a0)+ P(a1)=0.2,

     Fx(2)=P(a1)+ P(a2)=0.5,

     Fx(3)=P(a1)+ P(a2)+P(a3)=1

    又由于u(k)=l(k-1)+(u(k-1)-l(k-1))*Fx(xk)

           l(k)=l(k-1)+(u(k-1)-l(k-1))*Fx(xk-1)

    根据上面的递推公式得到的结果如下:

    该序列的第一个元素为1

           u(1)=l(0)+(u(0)-l(0))*Fx(1)=0+(1-0)*0.2=0.2

           l(1)=l(0)+(u(0)-l(0))*Fx(0)=0+(1-0)*0=0

    所以该标签的区间[0,0.2)

    该序列的第二个元素为1

          u(2)=l(1)+(u(1)-l(1))*Fx(1)=0+(0.2-0)*0.2=0.04

           l(2)=l(1)+(u(1)-l(1))*Fx(0)=0+(0.2-0)*0=0

    所以序列1 1标签的区间[0,0.04)

    该序列的第三个元素为3

          u(3)=l(2)+(u(2)-l(2))*Fx(3)=0+(0.04-0)*1 =0.04

           l(3)=l(2)+(u(2)-l(2))*Fx(2)=0+(0.04-0)*0.5=0.02

    所以该序列标签的区间[0.02,0.04)

    该序列的第四个元素为2

          u(4)=l(3)+(u(3)-l(3))*Fx(2)=0.02+(0.04-0.02)*0.5 =0.03

           l(4)=l(3)+(u(3)-l(3))*Fx(1)=0.02+(0.04-0.02)*0.2=0.024

    所以序列2 3标签的区间[0.024,0.03)

    该序列的第五个元素为3

          u(5)=l(4)+(u(4)-l(4))*Fx(3)=0.024+(0.03-0.024)*1=0.03

           l(5)=l(4)+(u(4)-l(4))*Fx(2)=0.024+(0.03-0.024)*0.5=0.027

    所以该序列标签的区间[0.027,0.03)

    该序列的第六个元素为1

          u(6)=l(5)+(u(5)-l(5))*Fx(1)=0.027+(0.03-0.027)*0.2=0.0276

           l(6)=l(5)+(u(5)-l(5))*Fx(0)=0.027+(0.03-0.027)*0=0.027

    所以该序列标签的区间[0.027,0.0276)

    综上可得序列a1a1a3a2a3a1 的实值标签为:

                                                           Tx(113231)= ( u(6) + l(6)   )/2

                                                                           =(0.0276+0.027)/2

                                                                           =0.0273

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

    #include<stdio.h>
    int main()
    {
     double tag=0.63215699;
     double l[100],u[100],F[100];
     double t;
     l[0]=0;
     u[0]=1;
        F[0]=0;
     F[1]=0.2;
     F[2]=0.5;
     F[3]=1;
     int M[100];
     int j;
     for(int k=1;k<=10;k++)
     {
        t=(double)(tag-l[k-1])/(u[k-1]-l[k-1]);
     if(t>=F[0]&&t<=F[1])
     {
      M[k]=1;
      j=1;
     }
        else if(t>F[1]&&t<=F[2])
     {
      M[k]=2;
      j=2;
     }
        else if(t>F[2]&&t<=F[3])
     {
       M[k]=3;
       j=3;
     }
      u[k]=l[k-1]+(u[k-1]-l[k-1])*F[j];
      l[k]=l[k-1]+(u[k-1]-l[k-1])*F[j-1];
     }
      for(int i=1;i<=10;i++)
      {
       printf("%d",M[i]);
      }
     return 0;
    }

     

    进行编码的结果为:3221213223

  • 相关阅读:
    spark 读取mongodb失败,报executor time out 和GC overhead limit exceeded 异常
    在zepplin 使用spark sql 查询mongodb的数据
    Unable to query from Mongodb from Zeppelin using spark
    spark 与zepplin 版本兼容
    kafka 新旧消费者的区别
    kafka 新生产者发送消息流程
    spark ui acl 不生效的问题分析
    python中if __name__ == '__main__': 的解析
    深入C++的new
    NSSplitView
  • 原文地址:https://www.cnblogs.com/zhangchuan24/p/4818746.html
Copyright © 2011-2022 走看看