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

    1.1我们要压缩什么?

    答:要压缩的内容是占内存比较大的,容量比较大的,不利于传送和管理的文件。在不影响文件完整性的情况下进行压缩和打包文件。

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

    答:信息时代的信息数据量过大,所用的储存空间也大,数据压缩的作用尤为重要,如果不进行数据压缩,会导致数据无法传输以及储存,大大降低了数据的利用率。

    1.6数据压缩技术是如何分类的?

    答:分为有损压缩和无损压缩。

    无损压缩:

                    无损压缩格式,是利用数据的统计冗余进行压缩,可完全恢复原始数据而不引起任何失真。

    有损压缩:           

                 有损压缩是利用了人类对图像或声波中的某些频率成分不敏感的特性,允许压缩过程中损失一定的信息;虽然不能完全恢复原始数据,但是所损失的部分对理解原始图像的影响缩小,却换来了大得多的压缩比。

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

    答:不同文件压缩后与原文件的比例不同,有的文件压缩后比原文件小很多,而有的文件压缩后比原文件大很多,文件类型不同,压缩的比例不同,有的压缩的时候部分受损可能导致压缩出来的文件较小,反之较大。

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

    答:理论上是不能的,因为每篇文章的文字重复度不同,从而导致冗余度不同。

    第二次作业

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

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

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

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

    答:(a)(-log2(1/4))*(1/4)*4=2;  

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

           (c)-0.505*㏒2 0.505-1/4*㏒2 (1/4)-1/8*㏒2 (1/8)-0.12*㏒2 0.12=1.375

    5.考虑以下序列:

              ATGCTTACGTGCTTAACCTGAAGCTTCCGCTGAAGAACCTG

              CTGAACCCGCTTAAGCTGAACCTTCTGAAGCTTAACCTGCTT

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

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

     答:  p(A)=21/84=0.25  P(T)=22/84=0.27  P(G)=16/84=0.19  P(C)=24/84=0.28;

    所以一阶熵为:(-log2(0.25))*(0.25)+(-log2(0.27))*(0.27)+(-log2(0.19))*(0.19)+(-log2(0.28))*(0.28)= 0.5 + 0.51+  0.46+  0.51=1.983

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

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

    #include<stdio.h>
    #include <stdlib.h> 
    #include<time.h>
    int main()
    {
    char a[100][100];
    int R;
    srand((int)time(NULL));
    for(int i=1;i<=100;i++)
    {
    for(int j=1;j<=5;j++)
    {

    R=rand()%26;
    a[i][j]=R+'b';
    }
    }

    for( i=1;i<=100;i++)
    {
    for(int j=1;j<=4;j++)
    {
    printf("%c",a[i][j]);
    }
    printf(" ");


    return 0;
    }

  • 相关阅读:
    程序调试的利器GDB
    Building a Android Development Environment
    手机的串号IMEI/ESN标示位置图解摩托罗拉官方教程
    Linux调试信息输出串口设备号的设置
    git忽略文件提交
    Spring @Transactional事务传播范围以及隔离级别
    自定义springbootstarter
    maven 命令将jar包安装到本地仓库
    oracle 常用命令
    Oracle 用户(user)和模式(schema)的区别
  • 原文地址:https://www.cnblogs.com/sunhonghong/p/4765836.html
Copyright © 2011-2022 走看看