大脑是终极的压缩和通信系统。
----《INFORMATION THEROY,INFERENCE,AND LEARNING ALGORITHMS》
随机变量信息量的度量方法
X是一个随机变量的值,它在可能值集合中取值,且
香农信息量
是x=ai所含信息量的一种度量方式,可以看出来Pi的概率越小,其香农信息量越大,这在常理上也很容易解释,本身概率越小的事件却发生,说明一些原先不确定的条件都已经确定,也就是已知的越多。
总体的熵
是总体平均信息量的一种合适度量。
有损形式压缩
已知一些符号使用概率较低,这时一种简单的压缩方法就是,使用一个较小的字母表来对文件重新编码。
最小-充分子集
的最小子集,将集合中的元素按照概率递减顺序排列,从概率最大的元素开始连续地加入元素,直到总概率≥(1-δ)。
X的基本比特内容
Example
设
。
这个总体的原始比特内容是3比特,对应8个二进制码字。但是注意到P(x∈{a,b,c,d})=15/16,因此只要冒没有码字的风险的大小为δ=1/16,就可以只用4个二进制码字就可以表示全部,这时只需要2个比特就够了。
香农信源编码定理
当时,熵为H(X)的N个独立同分布随机变量,可被压缩为多于NH(X)个比特,使得信息的丢失忽略不计,若少于NH(X)个比特,则肯定会丢失信息。
无损压缩
其主要思想是利用边长的符号码对其进行压缩,这样既能压缩一定比率,而且也能无差错地还原,对于无损压缩方法,从模型上分为基于统计的压缩算法和基于字典的压缩算法。
霍夫曼编码
霍夫曼树
根据每一个源字符出现的估算概率而建立起来的,出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,同时任何一个字符的编码都不是另一个字符的编码的前缀。具体可由霍夫曼树构建,其构建方式如下:
1.根据给定的n个权值为{p1,p2,...,pn}构成n棵二叉树的集合F={T1,T2,...,Tn},其中每棵二叉树Ti中只有一个带有权值为pi的根节点,其左右子树均空。
2.在F中选取两棵根节点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根节点的权值为其左右子树上根节点的权值之和。
3.在F中删除这两棵树,同时将新得到的二叉树加入F中。
4.重复2和3,直到F只含一棵树为止,这棵树便是霍夫曼树。
霍夫曼编码的缺点
变化的总体:若相关总体是在变化的,则每次变化符号的概率都会发生变化,就不得不重新计算霍夫曼编码。
额外比特:同理想平均长度H(X)相比,霍夫曼编码所达到的长度为H(X)≤L(C,X)≤H(X)+1。因此霍夫曼编码会导致每个符号有0~1比特的开销。若H(X)很大,多的这份并不算大头。但是很多情况下,H(X)只是1个符号1个比特,这个时候使用霍夫曼码多出来的开销就很重要了。
动态霍夫曼编码
此算法取消了统计过程。一边压缩一边动态调整哈夫曼树,提高了速度.动态Huffman的运行时间与输入串长度成线性比,而存储空间的需求鼍不依赖输入串长度,是一个常数。
LZW算法
它的基本原理足以较长的字符串或经常出现的字母组合构成字典中的各个词条,并用相对较短的数字或符号来表示的方法。压缩效果的好坏和藿复数据的出现、字典的大小有关。该算法的压缩效果好、速度快且算法描述易于接受,是目前最常用和最有效的无损压缩算法。不足之处是:在压缩过程中给不同的代码字分配固定长度的整数,并且不考虑信息源的概率分布。所需存储空间与输入串长度成正比,并未真正做到最佳地为串表选掸串式、最佳地分析输入数据,从而削弱了它的压缩性能。既不适合小文件的压缩也不适合太大文件的压缩,而且Lzw码仅仅适合内容具有明显单词结构的文件.如txt文本文件和C语言源程序文件。
参考文献
几种常用无损数据压缩算法研究,郑翠芳,计算机技术与发展,2011年9月第21卷第9期