首页 > 代码库 > 第三次作业

第三次作业

2.利用程序huff_enchuff_dec进行以下操作(在每种情下,利用由被压缩生成的码本)。

(a)SenaSensinOmaha图像进行编码。

解:用表格的形式给出对应文件压缩前后的大小为(单位用字节表示)

图像名称

压缩前

压缩后

压缩率

Sena

64kb

56.1kb

0.88

Sensin

64kb

60.2kb

0.94

Omaha

64kb

57.0kb

0.89

 

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*log2* P(a1- P(a2*log2* P(a2-P(a3*log2* P(a3-P(a4*log2* P(a4-P(a5*log2* P(a5

=-0.15* log2*0.15-0.04* log2*0.04-0.26* log2*0.26-0.05* log2*0.05-0.50* log2*0.50

=0.55 bits

b)求这个信源的霍夫曼码。

解:A={a1, a2, a3, a4, a5}

={110,1111,10,1110,0}

c)求(b)中代码的平均长度及其冗余度。

解:

平均码长:L=0.15*3+0.04*4+0.26*2+0.05*4+0.50*1

=1.83 bits/symbol

冗余度: L-H=1.282bits/symbol

 

2、 思考:为什么压缩领域中的编码方法总和二叉树联系在一起呢?

答:为了使用不固定的码长表示单个字符,编码必须符合―前缀编码‖的要求,即较短的编码决不能是较长编码的前缀。要构造符合这一要求的二进制编码体系,二叉树是最理想的选择。

 

举例如下:

要编码的字符总是出现在树叶上,假定从根向树叶行走的过程中,左转为0,右转为

1,则一个字符的编码就是从根走到该字符所在树叶的路径。正因为字符只能出现在

树叶上,任何一个字符的路径都不会是另一字符路径的前缀路径,符合要求的前缀

编码也就构造成功了:

根(root)

0    │     1

┌──┴───┐

0    │   1     0  │  1

┌──┴──┐  ┌─┴──┐

│          │  │        │

a           │  d          e

0    │   1

┌──┴──┐

│          │

b           c

a :00 

b : 010 

c :011 

d :10 

e :11

 

第三次作业