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

第三次作业

1、 参考书《数据压缩导论(第4版)》 Page 66 页2(a),4。

  2. 利用程序huff_enc和huff­_dec进行以下操作(在每种情况下,利用由被压缩图像生成的码本)。

     (a)       对Sena、Sensin和Omaha图像时行编码

 给出以上每一次实验得出的文件大小,并解释其差别。

解:由题意知求出实验压缩前后的文件大小:

文件名压缩前压缩后
sena64kb56kb
sensin64kb59kb
omaha64kb57kb

 经过实验过后,我们明白了压缩后文件变小了。压缩是节约了我们的空间。


  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”编程实现。

        不会做!

第三次作业