首页 > 代码库 > 第三次作业
第三次作业
1、 参考书《数据压缩导论(第4版)》 Page 66 页2(a),4。
2. 利用程序huff_enc和huff_dec进行以下操作(在每种情况下,利用由被压缩图像生成的码本)。
(a) 对Sena、Sensin和Omaha图像时行编码
给出以上每一次实验得出的文件大小,并解释其差别。
解:由题意知求出实验压缩前后的文件大小:
文件名 | 压缩前 | 压缩后 |
sena | 64kb | 56kb |
sensin | 64kb | 59kb |
omaha | 64kb | 57kb |
经过实验过后,我们明白了压缩后文件变小了。压缩是节约了我们的空间。
4.一个信源从符号集A{a1,a2,a3,a4,a5}中选择字母,概率为p(a1)=0.15,p(a2)=0.04,p(a3)=0.26,p(a4)=0.05,p(a5)=0.50。
(a)计算这个信源的熵。
解:H=-ξp(xi)log2 p(xi)(i=1,2,..n)
=-(0.15*log20.15+0.04*log20.04+0.26*log20.26+0.045*log20.05+0.50*log20.50)
=0.548
(b)求这个信源的霍夫曼码。
解:a1 0.15 0.04 a2
a2 0.04 排序 0.05 a4
a3 0.26 → 0.15 a1 经计算所以推出:a1(110) a2(1111)a3(10)a4(1110) a5(0)
a4 0.05 0.26 a3
a5 0.5 0.5 a5
(c)求(b)中代码的长度和冗余度。
解: l=0.15*3+0.04*4+0.26*2+0.05*4+0.50*1=1.83
2、 思考:为什么压缩领域中的编码方法总和二叉树联系在一起呢?
解:因为前缀编码,编码必须符合“前缀编码”的要求,即较短的编码决不能是较长编码的前缀,所以我们考虑了二叉树。
要编码的字符总是出现在树叶上,假定从根向树叶行走的过程中,左转为0,右转为1,则一个字符的编码就是从根走到该字符所在树叶的路径。
正因为字符只能出现在树叶上,任何一个字符的路径都不会是另一字符路径的前缀路径,符合要求的前缀编码也就构造成功了
3、 选做:试将“Shannon-Fano”编程实现。
不会做!
第三次作业