引用
所谓的压缩就是在不损失信息量的前提下,用新的描述方式表示原有的数据,而这种方式占用的空间更少。
先来个小例子:有一段文字“我我我我我我有点喜欢喜欢喜欢喜欢lxlxlxlxlxlxlx”一共14个汉字加上14个字符,现在采用某种压缩算法,将其压缩为这样一种形式“6个我1个有点4个喜欢7个lx”一共9个汉字加上6个字符(包括数字跟字母),显然,总的空间变小了,这就是数据压缩。
在这里我们只讨论无损压缩,先简单介绍一些有关香农定理的东西,香农这哥们研究的东西的确很有意义,我只能说他太有才了,想想我们随便说的一句话“明天我要发财了”,我想知道这句话到底包含多少信息量呢,在他之前没人搞出来这东西,他那一天才公式一下子解决了这个问题,用数学方法量化了信息量,具体是什么公式就不粘贴了,我们只需要知道根据相关概率可以计算出这句话的信息量,他称之为信息熵。
下边来分析分析一个问题,有一段字符:aaabcdegxy,在理想情况下,每个字符都随机出现,那么单个字符的信息熵根据香农公式可以计算出来信息熵为4.7,这段10个字符总的信息量为47,但是,一般我们都知道,在人类的语言文字表达中,字符出现的概率并不是随机的,有的字符出现频率高,而有的低,下边的图有一些统计值,在这种情况下,每个字符的平均信息熵重新计算一下大约为2.6,远远小于完全随机的情况,这样10个字符总的信息量为26。
好了,有了上边的概念之后,假如我们想要用一段字符描述自己所要表达的信息,也就是说我们要保证总的信息量,定下这个总量,下一步,如果想要用最少的字符来完成任务,那么每个字符的平均信息熵就必须保证要取最大,但是根据上一段的事实,我们在平时的表达中每个字符的平均信息熵并未达到最理想的4.7,所以,要完成这个任务,我们需要用更多的字符来表示,即用增大字符数量来解决,导致了空间浪费,这就是数据冗余的源泉,有什么办法解决这个问题呢,数据压缩正式登场,数据压缩就是要用一种新的描述形式使得单个字符的平均信息熵更大,那么总的信息量不变的前提下,所需的字符总数就会变小,这样就压缩了空间。
下边再想一个问题,利用压缩软件我们可以大大减小文件大小,那能不能一直压缩下去,将压缩文件继续压缩,使它越来越小,要是能这样该多好。这个问题仔细想想就是一个我们初中都学过的能量守恒原理,我们说这个文件的信息总量是不变的,无论你怎么压缩,由于单个字符的信息熵有极限值,所以压缩文件也必然有个极限,不可能一直压缩下去。
最后介绍一个信息熵理论的应用,主要思想是香农公式:
某一次试验之前我们并不能确知试验的结果,那么这一试验可能获得的信息量的期望是香农公式(上边图,还是粘贴过来了)确定,由于这一公式的形式非常类似物理中“熵”的定义,香农把这一平均信息量称为“信息熵”。由函数的性质可知,当各种结果出现的概率均等时,此次试验能获得的信息量的期望最大。下边说说一个应用:有100 个外表相同的球,已知其中有一个与其他球的质量不同。现要求用没有砝码的天平在最少次数中找出这个球,问怎样的称法才是最佳的?我们把每次称量都视为一次试验,试验结果有三种:天平偏向左边、天平偏向右边重或者相等,那么为获得最大的信息量,我们应该使三种情况出现的概率相等,即把小球平均分成 3 份进行称量,也就是一般答案中给出的最佳称量方法。使用信息论还可以计算出最少所需要的称量次数,因为100个小球中知道某球是假球且偏重或者偏轻这一信息所包含的信息量是 log 2 200,每次测量所能获得的信息是 log 2 3,那么需要测量的最小次数就是 5 次。然而具体到每次测量,由于不能保证将球平均分为 3 份,并不一定能有 log 2 3 的信息熵,所以这个 5 次只是测量的下界,具体能否达到还要看实际的步骤。
香农三大定理
香农第一定理:可变长无失真信源编码定理。采用无失真最佳信源编码可使得用于每个信源符号的编码位数尽可能地小,但它的极限是原始信源的熵值。超过了这一极限就不可能实现无失真的译码。
香农第二定理:有噪信道编码定理。当信道的信息传输率不超过信道容量时,采用合适的信道编码方法可以实现任意高的传输可靠性,但若信息传输率超过了信道容量,就不可能实现可靠的传输。
香农第三定理:保真度准则下的信源编码定理,或称有损信源编码定理。只要码长足够长,总可以找到一种信源编码,使编码后的信息传输率略大于率失真函数,而码的平均失真度不大于给定的允许失真度,即D'<=D.
一:香农第一定理(可变长无失真信源编码定理)
设信源S的熵[shāng]H(S),无噪离散信道的信道容量为C,于是,信源的输出可以进行这样的编码,使得信道上传输的平均速率为每秒(C/H(S)-a)个信源符号.其中a可以是任意小的正数, 要使传输的平均速率大于(C/H(S))是不可能的。
二:香农第二定理(有噪信道编码定理)
设某信道有r个输入符号,s个输出符号,信道容量为C,当信道的信息传输率R
公式:C=B*log2(1+S/N) 注:B为信道带宽;S/N为信噪比,通常用分贝(dB)表示。
三:香农第三定理(保失真度准则下的有失真信源编码定理)
设R(D)为一离散无记忆信源的信息率失真函数,并且选定有限的失真函数,对于任意允许平均失真度D>=0,和任意小的a>0,以及任意足够长的码长N,则一定存在一种信源编码W,其码字个数为M<=EXP{N[R(D)+a]},而编码后码的平均失真度D'(W)<=D+a。