第一次作业
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("\t\t");
}
return 0;
}