安徽大学本科毕业论文(设计、创作)题目:哈夫曼编码与算术编码压缩效率比较学生姓名:李伟学号:E20714134院(系):计算机科学与技术专业:软件工程入学时间:2007年9月导师姓名:韩莉职称/学位:讲师/硕士导师所在单位:安徽大学计算机科学与技术学院完成时间:2011年5月哈夫曼编码与算术编码压缩效率比较摘要算术编码和哈夫曼编码都利用信源符号的概率分布特性进行编码,使平均码长逼近信息熵是压缩编码算法的第一要求,算术编码比哈夫曼编码逼近信息熵的能力要强,但是编码效率和实现往往是一对矛盾,编码效率的提高,往往要在实现上付出代价,所以,选择压缩算要权衡这两点。
本论文开篇先引入了信息论的一些概念,因为编码理论发源于信息论,是各种编码算法的数学基础。
然后在第2章分析了算术编码原理,并从无限精度的算术编码原理过渡到在计算机上能够实现的二进制编码原理。
在第3章紧接着介绍了哈夫曼编码原理,并讨论了怎样把信源符号映射为对应的码字,过程中用到的哈夫曼编码表是编码与解码的关键。
在第4章对两者的编码效率作了比较,主要是结合信息论中的一些概念从微观上对两者逼近信息熵的能力作了比较,并在这章最后对两者在文本文件的压缩效果的表现上给出了一些实验结果。
最后,在5章,主要是对前面内容做了些补充和总结。
关键词:信息熵;算术编码;哈夫曼编码;编码效率The comparison of Huffman Coding and Arithmetic Coding in FileCompressionAbstractFull use of the probability distribution of source symbols is the feature of the arithmetic encoding and Huffman encoding. Approaching the average code length to the information entropy come first when designing a compression algorithm. To the capacity of closing to information entropy, arithmetic encoding is stronger than Huffman encoding. However, the coding efficiency and implementation is often a contradiction: to improve coding efficiency, which means the algorithm implementation process needs to pay a higher price. Therefore, you need to weigh both when choosing a compression algorithm. In the beginning of this thesis, it first introduced some of the concepts of information theory. Because encoding algorithms are derived from information theory and information theory is the mathematical foundation of various coding algorithms. Then in Chapter 2, it introduces the principle of arithmetic coding. For better to understand the binary arithmetic coding principle, it first introduces the unlimited precision arithmetic coding. In Chapter 3, it describes the Huffman coding theory, and discusses how to map source symbol to the corresponding code word, among which Huffman coding and decoding table is the key. In Chapter 4, the coding efficiency of the two algorithms is compared. Mainly compare the capacities to approximate information entropy with some of the concepts in information theory. And the final part in this chapter, some experimental results are given to show the compression effect to compress a text file. Finally, in Chapter 5, it gives some additions and summary.Keywords:Information Entropy; Arithmetic Coding; Huffman Coding;Coding Efficiency目录1 引言 (1)1.1 数据压缩概念及技术分类 (1)1.2 统计编码的数学准备 (2)1.3 统计编码简介 (5)2 算术编码 (5)2.1 算术编码简介 (5)2.2 无限精度的算术编码 (6)2.3 二进制编码 (9)2.4 二进制解码 (13)3 哈夫曼编码 (14)3.1 哈夫曼编码简介 (14)3.2 哈夫曼编码原理 (14)3.3 哈夫曼解码原理 (16)3.4 哈夫曼编码与解码系统模型 (16)3.5 哈夫曼编码形式不唯一 (17)4 算术编码与哈夫曼编码的比较 (17)4.1 两者编码效率的比较 (17)4.2 两者压缩率的比较 (19)5 总结 (20)主要参考文献 (22)致谢 (23)1引言1.1数据压缩概念及技术分类数据压缩,就是将信息的一种表示方式转换为另一种表示方式,信息的新的表示方式与原有表示方式相比较所含的信息量相同或是在可以承受的范围内有所损失,但是新的表示方式所用到的符号数量要比原有表示方式要尽可能的少。
数据压缩是必要的,不管是在生物系统中还是在人工系统中都存在数据压缩。
尤其是处在这个信息爆炸的时代,怎样更有效的存储信息和传递信息对于文明进步的作用都是显而易见的。
从不同视角看到的数据压缩的益处有:在通信信道上更快的传输信息,这就相应的减少了信道的占有时间,这可看作在时间上进行了压缩;在同一通信信道上并行的传输各种频率的互不干扰的信息,如xDSL 技术在普通电话线上实现把低端频谱留给传统电话使用,把高端频谱留给上网用户使用,这可看作在频率域上进行了压缩;传输信号当然需要能量消耗,因此对数据进行压缩也就间接地减少了能量消耗,这可看作是在能量上进行了压缩;各种存储系统的存储空间都不是无限的,对数据进行压缩后,就可以在同样的存储空间存储更多的数据,这可看作是空间上的压缩。
任何系统,尤其在活动时,都同时涉及到时间、空间和能量上的消耗,所以数据压缩就是从这三方面同时进行了压缩,这样就使得系统更加的有效的运行。
既然数据压缩是必要的,那么就要考虑从哪些方面来说数据可以被压缩,一般可从以下几方面考察:一是,数据中通常存在着多余成分,即允余度。
例如,存储在计算机上的一份文本文件,内容可假设是一部英文小说,可以想象,26个英文字母重复出现,各个字母出现的频率有大有小,而且不仅字母重复出现,字母组成的单词也重复出现,进一步,某些字母总是在某单词的一定位置上以高概率重复出现,某些单词也总是在一个特定句式的特定位置以高概率重复出现等等,计算机是以二进制形式存储文件的,那么用二进制符号怎样有效的表示这个由英文字符、各种标点符号和控制字符组成的文本文件就是怎样对数据进行压缩的问题,而压缩显然就要利用这些允余度的不同类型,例如,我们赋予高概率字符以相对少的二进制位数,赋予低概率字符以相对多的的二进制位数,那么这样表示后所得的总的二进制位数肯定比不考虑各个字符出现概率,而给不同字符按照ASCII码分配二进制位数所得的总的二进制位数要少很多。
二是,数据中的各个部分前后之间总是存在着相关性。
例如,电视上显示的动态画面,实际上是由离散的不同画面(帧)组成的,之所以看似是连续的只是因为帧的播放速度超过了人类的反应速度并且利用了人类的视觉暂留效应,但为使画面看似连续,不仅要利用人类本身的生物特性,还要保证帧之间的过渡是相对平滑的,也就是相邻两帧之间只有动态上的细微变化,而大部分画面在两帧之间是相同的,很显然,这种相关性是可以很好的加以利用的。
三是,对于人而言,我们的感受器只能接受外界中很小一部分的信息。
例如,人眼只能感受阳光中的可见光,而对紫外光不可见,但一些昆虫如蜜蜂却能感受紫外光,如果人为的屏蔽掉紫外光部分,对人眼而言,我们并不能对屏蔽前与屏蔽后的阳光加以区分,但蜜蜂就不同了,可能就因为无法感受紫外光,就找不到花蜜了,所以,对于人而言,并不是数据中所有的信息对我们都是必要的,不必要的部分就可以屏蔽掉。
数据压缩可分为无损压缩和有损压缩,下面分别简要的介绍可逆压缩和不可逆压缩:可逆压缩,是利用数据的统计特性,即数据的允余度进行压缩的一类方法,允余度的去除或是减少并不影响原始数据无失真的恢复,即是一个可逆的过程。
但从编码效率上来讲,可逆压缩受到待编码数据本身的信息熵的限制,无法达到更高的编码效率。
也就是由于这样的限制,仅使用可逆压缩方法是不可能解决多媒体的存储和传输的所有问题的,因此,这类方法一般适用于在压缩过程中不允许有丝毫损失的情况,如在计算机磁盘上存储文件,数据通信等领域。
常用的可逆压缩方法有:哈夫曼编码、算术编码、LZW 编码等。
不可逆压缩,是利用人类对图像或声波中的某些频率成分的不敏感特性,允许压缩过程中损失一定的信息,虽然不能完全恢复原始数据,但是所损失的部分对人类理解理解原始数据的影响可承受,好处就是与可逆压缩相比,能够获得更高的编码效率,因此,广泛适用与语音、图像和视频数据的压缩。
不可逆压缩的方法有很多,这里不列举。
1.2 统计编码的数学准备统计编码某种程度上与可逆压缩同义,因此可混用。