一、1.1数据压缩的一个基本问题是“我们要压缩什么”,对此你是怎么理解的?
答:首先我们知道数据压缩的定义是:以最少的数码表示信源所发的信号,减少容纳给定的消息集合或数据采样集合的信号空间。所以根据定义可以看出数据压缩的对象是信号空间。信号空间包括三种形式:
1.物理空间(如存储器,磁盘,磁带,光盘,USB闪存盘(U盘)等数据存储介质);
2.时间区间(如传输给定消息集合所需要的时间);
3.电磁频段(如为传输给定消息集合所要求的频谱,带宽等);
综合上面的三种数据压缩压缩的是信号集合所占的空域,时域和频域空间。
1.2数据压缩的另一个基本问题是“为什么进行压缩”,对此你是怎么理解的?
答:压缩的理论基础是信息论。事实上,多媒体信息存在许多数据冗余,事实上,多媒体信息存在许多数据冗余。例如,一幅图像中的静止建筑背景、蓝天和绿地,其中许多像素是相同的如果逐点存储,就会
浪费许多空间,这称为空间冗余。又如,在电视和动画的相邻序列中,只有运动物体有少许变化,仅存储差异部分即可,这称为时间冗余。此外还有结构冗余、视觉冗余等,这就为数据压缩提供了条件。所以根据这些压缩的条件我们可以总结出以下四种好处:
1.较快地传输各种信源(降低信道占有费用)---时间域的压缩
2.在现有通信干线上开通更多的并行业务(如电视,传真,电话,可是图文等)--频率域的压缩;
3.降低发射功率(这对依靠电池供电的移动通信终端,如手机,个人数字数字助理(PDA),无线传感器网络(WSN)等由其重要)--能量域的压缩;
4.紧缩数据存数容量(降低存储费用)--时间域的压缩;
综上所述数据压缩是为了在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间。
1.6数据压缩如何分类?
(1)按照压缩方法分:1. 可逆压缩(无失真压缩) 2.不可逆压缩(有失真压缩)
(2)按编码算法原理分:1.预测编码 2.变化编码 3.量化与向量量化编码 4.信息熵编码 5.子带编码 6.结构编码 7.基于知识的编码
二、参考书《数据压缩导论(第4版)》Page 8 1.4
1.用你计算机上面的压缩工具来压缩不同的文件。研究原文件的大小和类型对压缩文件与源文件大小之比的影响。
答:首先我们知道压缩文件的原理:计算机处理信息是以二进制(0,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)一阶熵为:
-4*1/4*log21/4
=-log21/4
=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-2*1/4*log21/4-0.12*log20.12
=-0.505*log20.505+1-0.12*log20.12
= 0.5+1-0.12*log20.12
= 1.5+0.3672
=1.8672(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 R; srand((int)time(NULL)); for(int i=1;i<=100;i++) { for(int j=1;j<=4;j++) { R=rand()%26; a[i][j]=R+'a'; } } for( i=1;i<=100;i++) { for(int j=1;j<=4;j++) { printf("%c",a[i][j]); } printf(" "); } return 0; }
这些单词中只有3个有意义。