霍夫曼编码在数据压缩中的应用(2)

2020-04-17 02:46

假设有一个包含100000个字符的数据文件要压缩存储。各字符在该文件中的出现频度见表1。仅有6种不同字符出现过,字符a出现了45000次。 字符 频度(千次) a b C D e f 5 45 13 12 16 9 可以用很多种方式来表示这样一个压缩文件。理所当然,我们第一个想到的编码方式是固定长度编码:共有6个字符,由于2的3次幂为8,则每个字符可以用3比特的二进制编码来表示: 字符 频度(千次) a b c 12 d 16 e 9 f 5 45 13 固定长度编码 000 001 010 011 100 101 这样的编码方式在解压缩的时候不会出现问题:由于每个字符都是用3比特的二进制编码表示,在解析压缩文件时,将每3比特当作一个字符来解析,那么不会发生串码的问题。

采用这种方式的压缩文件其大小是:(45+13+12+16+9+5)*3*1000 = 300000比特。这是最优的压缩方式吗?还有没有别的办法压缩得更小?我们换个思路,对频度高的字符赋予短编码,对频度低的字符赋予较长一些的编码,那么压缩出来的文件的大小有可能小于300000比特。这就是可变长度编码方式。可变长度编码方式既要满足压缩文件长度尽量小的条件,也要克服由“可变长度”所代码的困难:例如a用001表示,b用000表示,当a和b紧接在一起时的编码串为:001000,此时就要求其他字符不能用010,1000,100表示,否则将无法在这串编码中识别出正确的字符。

如果采用霍夫曼编码的话,上述的困难就迎刃而解: 字符 频度(千次) 霍夫曼编码 a b C 12 d 16 e 9 f 5 45 13 0 101 100 111 1101 1100 此时的压缩文件长度为:(45*1+13*3+12*3+16*3+9*4+5*4)*1000 = 224 000比特.

仔细观察上表中的霍夫曼编码,我们会发现:任意两个字符的编码连接在一起的二进制编码中不会出现其他字符的编码。这就解决了解压的问题。

第5页

六、学习心得

通过从网上查找有关资料以及查阅相关书籍,使我对对霍夫曼编码的原理有了一个全面而深刻的认识,虽然老师在上课的时候已经进行了全面的讲解,但是我对学习霍夫曼编码的意义并没有一个深刻的认识。上完课的时候,我只知道霍夫曼编码与香农编码、费诺编码相比,是编码效率最高的一种方式,但是,它编码效率高的优势在实际中有哪些作用及应用,我从来没有思考过。由此也可以看出,我们现在的学习都太死板,只是为了学知识而学知识。通过这次学习,使我深刻认识到,老师在给我们讲完知识之后,我们不仅仅要学会这种知识,更重要的是,我们要去思考,我们为什么要学,学到的知识对我们的生活有什么帮助,我们怎样在以后的工作中去更好的应用它。大学不仅仅只是学知识,更重要的是学会应用。

在看到老师给我们的课题时,我才意识到了这些问题。信源编码的应用,学习信源编码,不是为了纯粹地获取一种知识,而是它在实际中的应用,这才是我们要解决的重点问题。在查阅相关资料之前,霍夫曼编码在哪些方面有应用,我一无所知。通过查阅相关知识之后,我才慢慢的对霍夫曼编码的应用有所认识。从中我认识到,霍夫曼编码是构造最佳码的一种方法,最重要的是,霍夫曼编码的效率最高,这就是它之所以应用比较广泛最主要的原因。

霍夫曼编码效率最高,它选择用较短的码来编出现频率比较高的信源符号,用较长的码来编出现频率比较低的信源符号,这样一来,原有数据就得到了有效的压缩可以节省大量的存储空间。现在是信息社会,大量的信息让计算机应接不暇,能使大量信息得到有效的压缩,无形中为计算机处理速度减小了很大的压力。

因此,我重点学习了霍夫曼编码在数据压缩方面的应用。通过学习,不仅让我了解了霍夫曼编码的历史、原理和编码的步骤还有它在数据压缩中的应用,也使我对霍夫曼编码有了重新的认识。在没学习之前,听到数据压缩,我很茫然,但是在学习之后,我发现它其实并没有我想象中那么复杂,就是如何更好地编码,使的原本很复杂的信息可以得到有效的压缩。

霍夫曼编码虽然优点很突出,编码效率最高,但是它也有它的缺点。采用霍夫曼编码时有两个问题值得我们注意:

(1)、变长编码在理想条件下可以无失真地译码,但是当变长码通过信道传

第6页

送时,如果有某一个码元符号出现了传输错误,则因为一个码字中有某一个码元发生了变化,就可能误认为是另一个码字,结果会造成后面一系列码字也译码错误,这种现象称为差错的扩散。当然也可以采用一定的措施,是错了一段以后,能恢复正确的码字分割和译码。所以,一般要求在传输过程中差错很少,或者添加纠错用的监督码位,但是这样一来会降低编码效率。

(2)、霍夫曼码是可变长度码,因此很难随意查找或调用压缩文件中间的内容,然后再译码,这就需要在存储代码之前加以考虑。

但是,尽管霍夫曼编码存在这些问题,它还是得到了广泛应用。在一定程度上说明,它的优点远远战胜了它的缺点 。霍夫曼编码在数据压缩方面为我们还是做出了巨大的贡献。

通过这次的学习,我认识到了自己在学习方面还有很多不足,在学习的过程中,我们一定要勤于思考,善于钻研,多联系联系实际,使我们所学到的知识在实际生活中得到充分的利用,让知识的价值得以体现。应用对于我们即将步入社会的大学生来讲,是相当重要的。在接下来的学习中我会花更多时间,来认真加深知识理解与应用。

第7页


霍夫曼编码在数据压缩中的应用(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:汇编语言复习题与答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: