一、教材习题 Page 7
1-1数据压缩的一个基本问题是“我们要压缩什么”,对此你是怎样理解的?
答:我的理解是首先很明显数据压缩就是对数据的压缩,其次数据压缩的定义是以最少的数码表示信源所发的信号来减少容纳给定消息集合或数据采样集合的信息空间。这里所谓的信号空间就是被压缩对象,最以对于这个问题就可以知道答案了。
(1) 我们要压缩的是物理空间,如存储器、磁盘等数据存储介质;
(2) 我们要压缩的是时间区间,如传输给定消息集合所需要的时间;
(3) 我们要压缩的是电磁频段,如为传输给定消息集合所要求的频谱、带宽等。
总的来说也就是指某信号集合所占的空域、时域和频域空间。
1-2 数据压缩的另一个基本问题是“为什么要进行压缩”,对此你又是怎样理解的?
答:我的理解是之所以需要进行数据压缩是因为人们以数字形式生成和利用的信息越来越多,对于物理世界来说没有足够的空间,当今已是一个大数据的时代,如果我们不进行数据压缩,无论传输或存储都很难实用化;如果我们不对这些庞大的数据采取一定有效的方法进行压缩,那么对于我们已有的一些资源就会造成浪费,对数据进行压缩有空间域的压缩、时间域的压缩、频率域的压缩、能量域的压缩等方面的好处。我们为什么不去充分的利用这些好处做一些更加有利的事呢?而且在表示多媒体数据所需要的字节数可能非常庞大,使用数据压缩不仅可以减少存储空间还可以减少数据的冗余,所以可见数据压缩是很有必要的。
1-6 数据压缩技术是如何分类的?
答:根据重构需求,可以将数据压缩方法分为两大类:第一类是无损压缩,在无损压缩技术中不存在信息损失,数据经过无损压缩后可以从压缩数据中准确地恢复出原数据,所以又叫做可逆压缩;第二类是有损压缩,在有损压缩技术中会造成一些信息损失,采用有损技术压缩后的数据不能再准确还原或重构,所以又叫做不可逆压缩。
二、参考书《数据压缩导论(第四版)》Page 8
1.4 项目与习题
1、 用你的计算机上的压缩工具来压缩不同文件。研究原文件的大小和类型对于压缩文件与原文件大小之比的影响。
答:在我用自己的计算机上的压缩工具来压缩不同文件时,我发现对于不同类型的文件压缩是不一样的。对于音频文件和视频文件来说,压缩比是比较小的;对于混杂类文件来说,压缩比比较大;虽然有的文件压缩后占用的空间大小不会变化太多,但是总的来说大多数文件在压缩后占用的空间要比原文件小很多,因此在进行文件传输时节约了很多时间,同时方便了传输,而且在进行压缩后还可以无损还原。
2、从一本通俗杂志中摘录几段文字,并删除所有不会影响理解的文字,实现压缩。例如,在"This is the dog that belongs to my friend” 中,删除 is 、the、that和to之后,仍然能传递相同的意思。用被删除的单词数与原文本的总单词数之比来衡量文本中的冗余度。用一本技术期刊中的文字来重复这一实验。对于摘自不同来源的文字,我们能否就其冗余度做出定量论述?
答:首先我们要明白冗余度是定义是什么,对于摘自不同来源的文字,它的重复度是不一样的,有一些单词甚至是重复出现多次。冗余度它表征信源信息率的多余程度,是描述信源客观统计特性的一个物理量。也就是说删除多余的一个量,它不会影响整个数据的完整性。 正由于信源(数据)存在着冗余度,既存在着不必要传送的信息,因此信源也就存在进一步压缩信息率的可能性。冗余度越大,压缩潜力也就越大,压缩后不会影响信息的传递。就仙侬信息论来说数据=信息+冗余度。
三、参考书《数据压缩导论(第4版)》Page 30
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/4 , P(a4)=0.12
答:(a)一阶熵为:
-1/4*4*log21/4
=-log22-2
=2(bit)
(b)一阶熵为:
-1/2log21/2-1/4*log21/4-2*1/8*log21/8
=1/2+1/2+3/4
=7/4
=1.75(bit)
(c)一阶熵为:
-0.505*log20.505-1/4*log21/4-1/4*log21/4-0.12*log20.12
=-0.505*log20.505+1/2+1/2-0.12*log20.12
= 0.5+1-0.12*log20.12
= 1.5+0.3672
=1.8672(bit)
5、考虑以下序列:
ATGCTTAACGTGCTTAACCTGAAGCTTCCGCTGAAGAACCTG
CTGAACCCGCTTAAGCTTAAGCTGAACCTTCTGAACCTGCTT
(a)根据此序列估计各概率值,并计算这一序列的一阶、二阶、三阶和四阶熵。
(b)根据这些熵,能否推断此序列具有什么样的结构?
答:首先总的字母有84个,其中字母A出现21次,字母T出现23次,字母G出现16次,字母C出现24次。
则P(A)=21/84=1/4;P(T)=23/84;P(G)=16/84=4/21;P(C)=24/84=2/7.
(a)各字母的概率值如下:
P(A)=21/84=1/4;P(T)=23/84;P(G)=16/84=4/21;P(C)=24/84=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)
由于P(AT)=1/42,P(GC)=5/42,P(TT)=5/42,P(AA)=5/42,P(CG)=2/42=1/21,P(TG)=2/42=1/21,P(CT)=7/42,P(TA)=1/42,P(AC)=3/42=1/14,P(GA)=4/42=2/21,P(AG)=2/42=1/21,P(TC)=1/42,P(CC)=3/42=1/14,P(TG)=1/42;
则这一序列的二阶熵为:
-1/42*log2(1/42)*4-5/42*log2(5/42)*3-1/21*log2(1/21)*3-1/14*log2(1/14)*2-2/21*log2(2/21)-7/42*log2(7/42)
=-1/42*(-5.39)*4-5/42*(-3.07)*3-1/21*(-4.39)*3-1/14*(-3.81)*2-2/21*(-3.39)-7/42*(-2.58)
=0.51+1.096+0.627+0.544+0.323+0.43
=3.53(bit)
由于P(ATG)=1/28,P(CTT)=7/28,P(AAC)=6/28,P(GTG)=1/28,P(CTG)=7/28,P(AAG)=4/28,P(CCG)=2/28
则这一序列的三阶熵为:
-1/28*log2(1/28)*2-7/28*log2(7/28)*2-6/28*log2(6/28) -4/28*log2(4/28) -2/28*log2(2/28)
=-1/28*(-4.807)*2-7/28*(-2)*2-6/28*(-2.222)-4/28*(-2.807) -2/28*(-3.807)
=0.343+1+0.476+0.401+0.271
=2.491(bit)
由于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
=-1/21*(-4.392)*13-2/21*(-3.392)*4
=2.718+1.292
=4.01(bit)
(b)由(a)的结果可以推断此序列具有的结构是:由越多字母组成的序列它的熵值会比较大,相应的它的信息量就低;反之由越少字母组成的序列它的熵值会比较小,相应的它的信息量也高。可见熵的估计取决于信源序列结构的假设。字母C后面出现T的可能性比较大,出现其他字母的可能性较小,所以字母之间是具有强烈的相关性。
7、做一个实验,看看一个模型能够多么准确地描述一个信源。
(a)编写一段程序,从包括26个字母的符号集{a,b,...,z}中随机选择字母,组成100个四字母单词,这些单词中有多少是有意义的?
答:
#include<stdio.h> #include <stdlib.h> #include<time.h> int main() { char a[200][200]; system("color 3E"); 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; }
这些单词中三个单词有意义:eagb提取物; crnd国债削减委员会; bnub联布办事处。
从今天起,做个幸福的人。