2.利用程序huff_enc和huff_dec进行以下操作.
(a)对Sena、Sensin和Omaha图像进行编码
| 文件名 | 压缩前大小 | 压缩后大小 | 压缩比 |
| Sena | 64kb | 57kb | 0.89 |
| Sensin | 64kb | 61kb | 0.95 |
| Omaha | 64kb | 58kb | 0.91 |
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(A) = -0.15*log20.15-0.04*log20.04-0.26*log20.26-0.05*log20.05-0.50*log20.50
=0.411+0.186+0.505+0.216+0.5
=1.818(bits/symbol)
(b)求这个信源的赫夫曼码.
解: a1:001
a2:0000
a3:01
a4:0001
a5:1
(c)求(b)中代码的平均长度及其冗余度.
解:平均长度:L=0.15*3+0.04*4+0.26*2+0.05*4+0.5*1
=0.45+0.16+0.52+0.2+0.5
=1.83(bits/symbol)
冗余度:L-H(A)=1.83-1.818=0.012(bits/symbol)
第2题:
思考:为什么压缩领域中的编码方法总和二叉树联系在一起呢?
答:为了使用不固定的码长表示单个字符,编码必须符合“前缀编码”的要求,即较短的编码决不能是较长编码的前缀,没有码字是其他码字的前缀。要构造符合这一要求的二进制编码体系,二叉树是最理想的选择,可将码字放在叶子节点上。
浙公网安备 33010602011771号