• 第一次作业


    1-1数据压缩的一个基本问题是“我们要压缩什么”,对此你是怎样理解的?

    答:我们要压缩的压缩对象为信号空间,指:物理空间,时间区间,电磁频段,也就是某信号集合所占的空域,时域和频域空间。

    1-2数据压缩的另一个基本问题是“为什么进行压缩”,对此你又是怎样理解的?

    答:在信息爆炸的时代,数据量特别大。数据压缩尤为重要。数据压缩的好处:较快的传输各种信源,在现有通信干线上开通更多的并行业务,降低发射功率,紧缩数据存储容量。

    1-6数据压缩是如何分类的?

    答:数据压缩分为可逆压缩(冗余度压缩、熵编码)和不可逆压缩(熵压缩)。而可逆压缩包括统计编码和其他编码。不可逆压缩又包括特征抽取和量化两大类。

    1.4 项目与习题

     1.  用你的计算机上的压缩工具来压缩不同文件。研究原文件的大小和类型对于压缩文件与原文件大小之比的影响。

    答:从多次压缩文件的经验来看,得出:压缩文件比原文件要小,但原文件越大,压缩后的文件也大,除了文件本身大小,文件类型对压缩后的文件大小影响更大,对于不同类型的文件,压缩时涉及到有损压缩和无损压缩,有损压缩后的文件明显变小,与原文件的大小比更大,同理,无损压缩就小。

    2. 从一本通俗杂志中摘录几段文字,并删除所有不会影响理解的文字,实现压缩。例如,在"this is the dog that belong to my friend”  中,删除 is 、the、that和to之后,仍然能传递相同的意思。用被删除的单词数与原文本的总单词数之比来衡量文本中的冗余度。用一本技术期刊中的文字来重复这一实验。对于摘自不同来源的文字,我们能否就其冗余度做出定量论述?

    答: 冗余度它表征信源信息率的多余程度,是描述信源客观统计特性的一个物理量。也就是说删除多余的一个量,它不会影响整个数据的完整性。 正由于信源(数据)存在着冗余度,既存在着不必要传送的信息,因此信源也就存在进一步压缩信息率的可能性。冗余度越大,压缩潜力也就越大。就仙侬信息论来说数据=信息+冗余度。对于摘自不同来源的文字,根据冗余度的不同,就能做出定量分析。

    三、参考书《数据压缩导论(第4版)》Page 30

    3、给定符号集A={a1,a2,a3,a4},求一下条件下的一阶熵:

    aP(a1)=P(a2)=P(a3)=P(a4)=1/4

    bP(a1)=1/2 , P(a2)=1/4 , P(a3)=P(a4)=1/8 

    cP(a1)=0.505 ,  P(a2)=1/4 , P(a3)=1/4 , P(a4)=0.12 

    解:(a)(-1/4)*4*log2(1/4)=2bit

    (b)(-1/2)*log2(1/2)+(-1/4)log2(1/4)+(-1/8)*2*log2(1/8)=1.75bit

    (c)(-0.505)*log2(0.505)+(-1/4)*log2(1/4)+(-1/4)*log2(1/4)+(-0.12)*log2(0.12)=1.2967-0.12*log20.12  bit

     

     5、考虑以下序列:

     

                    ATGCTTAACGTGCTTAACCTGAAGCTTCCGCTGAAGAACCTG

     

                    CTGAACCCGCTTAAGCTTAAGCTGAACCTTCTGAACCTGCTT

     

    (a)根据此序列估计各概率值,并计算这一序列的一阶、二阶、三阶和四阶熵。

     

    b)根据这些熵,能否推断此序列具有什么样的结构?

     

    答(a):A的频数是:21 T的频数是:23 G的频数是:16 C的频数是:24

     

    他们对应的概率分别为: P(A)=1/4 P(T)=23/84 P(G)=4/21 P(C)=2/7.

     

    一阶熵为:

     

    -1/4*log2(1/4)-23/84*log2(23/84)-4/21*log2(4/21)-2/7*log2(2/7)

     

    =0.5+0.512+0.457+0.514

     

    =1.983(bit)

     

     

    二阶熵为:

     

    AT,GC,TT,AA,CG,TG,CT,TA,AC,CT,GA,AG,CT,TC,CG,CT,GA,AG,AA,CC,TG

     

    CT,GA,AC,CC,GC,TT,AA,GC,TT,AA,GC,TG,AA,CC,TT,CT,GA,AC,CT,GC,TT

     

    AT的频数是:1 GC的频数是:5 TT的频数是:5 AA的频数是:5 CG的频数是:2 TG的频数是:3

     

    TA的频数是:1 AC的频数是:4 AG的频数是:2 TC的频数是:1 CC的频数是:3 CT的频数是:7

     

    P(AT)=1/42,P(GC)=5/42,P(TT)=5/42,P(AA)=5/42,P(CG)=1/21,P(TG)=1/14,P(CT)=7/42,P(TA)=1/42,
    P(AC)=1/14,P(GA)=2/21,P(AG)=1/21,P(TC)=1/42,P(CC)=1/14

     

     

    -1/42*log2(1/42)*4-5/42*log2(5/42)*3-1/21*log2(1/21)*2-1/14*log2(1/14)*3-2/21*log2(2/21)-7/42*log2(7/42)

     

    =0.51+1.096+0.627+0.544+0.323+0.43

     

    =3.530(bit)

     

    三阶熵为:

     

    ATG,CTT,AAC,GTG,CTT,AAC,CTG,AAG,CTT,CCG,CTG,AAG,AAC,CTG

     

    CTG,AAC,CCG,CTT,AAG,CTT,AAG,CTG,AAC,CTT,CTG,AAC,CTG,CTT

     

     

    ATG的频数是:1 CTT的频数是:7 AAC的频数是:6 GTG的频数是:1 CTG的频数是:7 AAG的频数是:4 AAG的频数是:2

     

    P(ATG)=1/28,P(CTT)=7/28,P(AAC)=3/14,P(GTG)=1/28,P(CTG)=1/4,P(AAG)=1/7,P(CCG)=1/14

     

     

    -1/28*log2(1/28)*2-1/4*log2(1/4)*2-3/14*log2(3/14) -1/7*log2(1/7) -1/14*log2(1/14)

     

    =0.343+1+0.476+0.401+0.271

     

    =2.491(bit)

     

    四阶熵为:

     

    ATGC,TTAA,CGTG,CTTA,ACCT,GAAG,CTTC,CGCT,GAAG,AACC,TGCT

     

    GAAC,CCGC,TTAA,GCTT,AAGC,TGAA,CCTT,CTGA,ACCT,GCTT

     

     

    ATGC的频数是:1 TTAA的频数是:2 CGTG的频数是:1 CTTA的频数是:1 ACCT的频数是:2 GAAG的频数是:2 CTTC的频数是:1 CGCT的频数是:1 AACC的频数是:1 TGCT的频数是:1

     

    GAAC的频数是:1 GCTT的频数是:2 AAGC的频数是:1 TGAA的频数是:1 CCTT的频数是:1 CTGA的频数是:1 
    P(ATGC)=1/21,P(TTAA)=2/21,P(CGTG)=1/21,P(CTTA)=1/21,P(ACCT)=2/21,P(GAAG)=2/21,P(CTTC)=1/21,P(CGCT)=1/21,P(AACC)=1/21,P(TGCT)=1/21,P(GAAC)=1/21,P(CCGC)=1/21,P(GCTT)=2/21,P(AAGC)=1/21,P(TGAA)=1/21,P(CCTT)=1/21,P(CTGA)=1/21.

     

     

    -1/21*log2(1/21)*13-2/21*log2(2/21)*4

     

    =2.718+1.292

     

    =4.01(bit)

     

    答(b):序列的结构:根据熵的比较,我们可以看出,随着熵的阶数不断增加,熵也不断增大,相应阶数字母组合出现的概率就越低。根据上的含义,其包含的信息量就越少。相反,随着熵的阶数的减小,熵也不断的减小,相应阶数字母组合出现的概率就越高,其包含的信息量就越多。

     

     

     

    7、做一个实验,看看一个模型能够多么准确地描述一个信源。

     

     (a)编写一段程序,从包括26个字母的符号集{a,b,...,z}中随机选择字母,组成100个四字母单词,这些单词中有多少是有意义的?

     

    #include<stdio.h>
    #include <stdlib.h> 
    #include<time.h>
    int main()
    {
      char a[200][200];
      int m;
      srand((int)time(NULL));
      for(int i=1;i<=100;i++)
      {
        for(int j=1;j<=4;j++)
          {
            m=rand()%26;
            a[i][j]=m+'a';
          }
      }
      
        for( i=1;i<=100;i++)
        {
          for(int j=1;j<=4;j++)
          {
            printf("%c",a[i][j]);
           }
         printf("	");
        }  
    return 0;
    }


     

     

  • 相关阅读:
    动态规划(DP计数):HDU 5117 Fluorescent
    动态规划(DP计数):HDU 5116 Everlasting L
    动态规划(区间DP):HDU 5115 Dire Wolf
    数学(扩展欧几里得算法):HDU 5114 Collision
    二叉树面试题
    linux eval命令
    关于Shell中命令替换$(...)与后置引用`...`的不同
    linux set,env和export
    linux crontab 命令
    排序
  • 原文地址:https://www.cnblogs.com/wangyuntao/p/4765877.html
Copyright © 2020-2023  润新知