第三次作业
一、参考书《数据压缩导论(第4版)》 Page 66 第2(a),4 题
2.利用程序huff_enc和huff_dec进行一下操作(在每种情况下,利用由被压缩图像生产的码本)。
(a)对Sena、Sensin和Omaha图像进行编码
图像文件名 |
压缩前 |
压缩后 |
Sena |
64.0KB |
56.1KB |
Sinan |
64.0KB |
60.2KB |
Omaha |
64.0KB |
57.0KB |
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)计算这个信源的熵。
(b)求这个信源的霍夫曼码。
(c)求(b)中代码的平均长度及其冗余度。
解:
(a)
H=-( P(a1)log2P(a1)+P(a2)log2P(a2)+P(a3)log2P(a3)+P(a4)log2P(a4)+P(a5)log2P(a5) )
= -0.15log2 (0.15)-0.04log2 (0.04)-0.26log2 (0.26)-0.05log2 (0.05)-0.50log2 (0.50)
=0.41+0.19+0.51+0.22++0.50
=1.82(bits)
(b)
概率由大到小排列为 0.50,0.26,0.15,0.05,0.04, 即 a5,a3,a1,a4,a2
a1的编码:110
a2的编码:1111
a3的编码:10
a4的编码:1110
a5的编码:0
(c)
L=0.15*3+0.04*4+0.26*2+0.05*4+0.5*1=1.83
冗余度=L-H=1.83-1.82=0.01
二、 思考:为什么压缩领域中的编码方法总和二叉树联系在一起呢?
答:为了使用不固定的码长表示单个字符,编码必须符合“前缀编码”的要求,
即较短的编码决不能是较长编码的前缀。
要构造符合这一要求的二进制编码体系,二叉树是最理想的选择。
三、 选做:试将“Shannon-Fano”编程实现。