压缩文件为什么不能一层层压缩自身

假设压缩比是50%,例如:把abc.rmvb(1G)压缩成1.rar(512M)。然后再把1.rar压缩成2.rar(256MB),如此类推。
 
首先科普一下压缩分为两种:无损压缩和有损压缩。
无损压缩的一个类比是侯宝林的相声:
“这是谁啊?”“是我您哪。”“你干吗去?”“我撒泡尿。” -(压缩)->“谁?”“我!”“抓?”“尿!”
把复杂的话用简单的话说出来,但保持原有的意思,这就是无损压缩的基本原理。
关于什么是“保持原有的意思”,对此在信息论叫做“信息量保持不变”,严格的定义在此就不展开讨论了,大概类比一下就是“能够毫无困难地恢复成原有信息”,再举个例子
“我家的门是红色的”->“我家门红色”,你只看后一句就知道前一句所要说的全部内容,这个就是毫无困难地、唯一地恢复成原有信息,但是
“我家的门是红色的”->“我家门色”,这时候你只看到后一句就永远没有办法知道门到底是什么颜色的,这个就不属于“保持原有意思”。
那么“保持原有意思”的压缩能不能无限压缩呢?显然不能,比如上面的例子,你还有更简单的办法说出“谁?”“我。”“抓?”“尿!”么?汉字的范畴估计是没有了,在计算机中你可以用更高效的编码(比如霍夫曼编码)的办法来压缩到更少的字节,但是,这个也是有极限的,就好像汉字里的“谁?”“我。”“抓?”“尿!”一样。为什么呢?我们来用反证法证明之:假定压缩不存在极限,任意大小的文件都可以压缩到n个比特,那么我们知道,n个比特的二进制数最多表示2^n个不同的数字,而“任意大小的文件”有多少种选择呢?显然是无穷种。将无穷种的“任意大小的文件”,压缩为2^n个不同的数字,那么必然存在多个文件被压缩成一个数字的情况。也就是说,对于压缩后的一个数字,可以恢复成的原有信息是很多个的,而这和“毫无困难地、唯一地恢复成原有信息”是矛盾的。所以假设是错误的,无损压缩必然是存在一个极限的,而不能无限缩小下去。
 
那么压缩是不是一定要保持原有的意思呢?显然不是,再举个例子,我们知道名著有“缩写本”,一部百万字的名著可以缩写成几十万字,但是能让你看了之后仍知道大概的故事更改,这就是有损压缩。其原理和上面的“重写”不同,是“删去”,比如一首歌曲,录制的时候除了有伴奏和演唱的声音之外,还有演员的呼吸声、录音设备的摩擦声、空气流动的声音等等,有损压缩的原理就是在录音之中把这些“无关紧要”的信息去掉。目前常用的音频、图像和视频编码方法绝大部分有损压缩的。显然,这个压缩的程度取决于你怎样定义“无关紧要的信息”:如果你在看一场电影的时候,觉得整个电影都极度无聊,只有某一个三秒钟的场景中闪过的一个美女是你觉得值得看的,那么整个电影基本上就都是“无关紧要的信息了”,用这个标准,一场电影可以被压缩为几百K(那个美女的图片的大小)。但是这在大多数人看来,已经不是原来意义上的电影了。
 
所以,从理论上说的确可以一次又一次,越压缩越小的可能,但是只有一种情况,就是不断地提高压缩是的损失率,最终,当你舍弃所有的信息的时候,你可以把文件压缩到0字节。但是这种“为了压缩而压缩”的做法,是没有任何实际意义的。
 
 
因为从理论上来讲,所有的信息如果想要表达一个特定地,不会有歧义的含义,在数学上都会有一个最小的「信息熵」(信息量)才可以。
 
如果仅仅就理论来举个简单的例子的话,经典的连续数学理论会认为,如果用135胶卷相机拍出来的胶卷能冲洗出一张5寸的照片,而里面的所有细节都可以得到保留,那么我们在太空上对着地球用相机拍下一张胶片,然后想办法尽量将这张胶片放大,就可以看到天安门广场上的行人。
 
你会认为这是玩笑是吗?事实上,用谷歌地球上的数据库,不就拼成了一张这样的照片么?但是其代价,绝不是一张胶片能包含的信息量,而是上百个TB的数据。
 
这意味着什么?意味着信息的本质是离散而不是连续的,如果要想看出「地球是个圆的」,也许巴掌大的照片就够了,但是想要看到地球上更清晰的细节,则没有捷径可走,只有增加照片的信息量——换言之,信息量和能量一样,是守恒的。
 
那么压缩文件的原理是什么?
 
就是利用「一个文件的容量与它的信息量并不相等,而且它的容量肯定要大于它的信息量」的特点,使用算法「将一个文件所包含的同样的信息量用更少的容量来描述」。
 
举个简单的例子,一张大小为 3x3 的图片是纯黑色的,那么我们用两种方法来描述这张图片:
这张图片是3x3的,且他们的颜色分布为:{纯黑色,纯黑色,纯黑色, 纯黑色,  纯黑色,  纯黑色,  纯黑色,  纯黑色,  纯黑色}
这张照片是3x3的,且它们的颜色全部是{纯黑色}
可以明显看出,第二种描述的方法比第一种描述的方法占用的空间(容量)要小得多。无损图像压缩算法中的「行程算法」就部分借鉴了这样的思想。
 
再举一个例子,让我们来看看,在英语中为何会出现一种这样情况——使用频率越高的单词,其包含的字母越少,而使用频率越低的单词,其包含字母越多?
 
比如说在猫王的一首歌《she》中,我们把英语中的「她(she)」统一换成一个长一些的单词,比如说「轻浮的女人(flibbertigibbet,仅仅是随意找一个比较长的单词,并非故意「政治不正确」XD)」那么起后果就是这样的:
修改前:
she may be the face I can't forget , a trace of pleasure I regret, may be my treasure or the price I have to pay she may be the song that Summer sings, may be the chill that autumn brings, may be a hundred different things, within the measure of the day. she may be the beauty or the beast, may be the famine or the feast, may turn each day into heaven or a hell, she may be the mirror of my dream  a smile reflected in a stream, she may not be what she may seem, inside her shell, she who always seems so happy'n proud, who's eyes can be so private and so proud, no one's allowed to see them when they cry, she may be the love that can and hope to last, may come to me from shadows of the past, that I remember till the day I die, she may be the reason I survive, the why and wherefor I'm alive the one I'll care for through the rough and rainy years, me I'll take her laughter and her tears, and make them all my souvenirs, for where she goes I got to be the meaning of my life is she she she
修改后:
flibbertigibbet may be the face I can't forget , a trace of pleasure I regret, may be my treasure or the price I have to pay flibbertigibbet may be the song that Summer sings, may be the chill that autumn brings, may be a hundred different things, within the measure of the day. flibbertigibbet may be the beauty or the beast, may be the famine or the feast, may turn each day into heaven or a hell, flibbertigibbet may be the mirror of my dream  a smile reflected in a stream, flibbertigibbet may not be what flibbertigibbet may seem, inside her flibbertigibbetll, flibbertigibbet who always seems so happy'n proud, who's eyes can be so private and so proud, no one's allowed to see them when they cry, flibbertigibbet may be the love that can and hope to last, may come to me from shadows of the past, that I remember till the day I die, flibbertigibbet may be the reason I survive, the why and wherefor I'm alive the one I'll care for through the rough and rainy years, me I'll take her laughter and her tears, and make them all my souvenirs, for where flibbertigibbet goes I got to be the meaning of my life is flibbertigibbet flibbertigibbet flibbertigibbet
 
修改后与修改前的歌词相比,整整长了一行半。可是这两首歌词要表达的意思是一模一样的啊!那么用更短的字母来描述使用更频繁的含义是不是就意味着,这本书的厚度可以减少?你猜对了,这就是著名的无损压缩算法「霍夫曼编码」的基本原理。
 
说了这么多,就是想解释一下,压缩算法只不过是想将「文件容量大于其所含信息量的那一部分」当成海绵中的水挤出来。但是总不能挤到连海绵都被挤消失的地步。你要问怎样判断一个文件的信息量有多少?一个粗略的解释就是,将所有计算机上的文件都看作是数学上0和1的排序的话,通过数学方法就可以计算出这个数列的有序度。这个有序度就是指不管采用什么办法,能够翻译出这组序列最少最少,需要一个多长的序列,才有实力做到这一点。具体如何计算嘛...略微复杂,有兴趣的同学还是去看看相关的资料叭  XD
 
 

你可能感兴趣的:(压缩)