首先科普一下压缩分为两种:无损压缩和有损压缩。

无损压缩的一个类比是侯宝林的相声:

“这是谁啊?”“是我您哪。”“你干吗去?”“我撒泡尿。” -(压缩)->“谁?”“我!”“抓?”“尿!”

把复杂的话用简单的话说出来,但保持原有的意思,这就是无损压缩的基本原理。

关于什么是“保持原有的意思”,对此在信息论叫做“信息量保持不变”,严格的定义在此就不展开讨论了,大概类比一下就是“能够毫无困难地恢复成原有信息”,再举个例子

“我家的门是红色的”->“我家门红色”,你只看后一句就知道前一句所要说的全部内容,这个就是毫无困难地、唯一地恢复成原有信息,但是

“我家的门是红色的”->“我家门色”,这时候你只看到后一句就永远没有办法知道门到底是什么颜色的,这个就不属于“保持原有意思”。

那么“保持原有意思”的压缩能不能无限压缩呢?显然不能,比如上面的例子,你还有更简单的办法说出“谁?”“我。”“抓?”“尿!”么?汉字的范畴估计是没有了,在计算机中你可以用更高效的编码(比如霍夫曼编码)的办法来压缩到更少的字节,但是,这个也是有极限的,就好像汉字里的“谁?”“我。”“抓?”“尿!”一样。为什么呢?我们来用反证法证明之:假定压缩不存在极限,任意大小的文件都可以压缩到n个比特,那么我们知道,n个比特的二进制数最多表示2^n个不同的数字,而“任意大小的文件”有多少种选择呢?显然是无穷种。将无穷种的“任意大小的文件”,压缩为2^n个不同的数字,那么必然存在多个文件被压缩成一个数字的情况。也就是说,对于压缩后的一个数字,可以恢复成的原有信息是很多个的,而这和“毫无困难地、唯一地恢复成原有信息”是矛盾的。所以假设是错误的,无损压缩必然是存在一个极限的,而不能无限缩小下去。

 

那么压缩是不是一定要保持原有的意思呢?显然不是,再举个例子,我们知道名著有“缩写本”,一部百万字的名著可以缩写成几十万字,但是能让你看了之后仍知道大概的故事更改,这就是有损压缩。其原理和上面的“重写”不同,是“删去”,比如一首歌曲,录制的时候除了有伴奏和演唱的声音之外,还有歌手的呼吸声、录音设备的摩擦声、空气流动的声音等等,有损压缩的原理就是在录音之中把这些“无关紧要”的信息去掉。目前常用的音频、图像和视频编码方法绝大部分有损压缩的。显然,这个压缩的程度取决于你怎样定义“无关紧要的信息”:如果你在看一场电影的时候,觉得整个电影都极度无聊,只有某一个三秒钟的场景中闪过的一个美女是你觉得值得看的,那么整个电影基本上就都是“无关紧要的信息了”,用这个标准,一场电影可以被压缩为几百K(那个美女的图片的大小)。但是这在大多数人看来,已经不是原来意义上的电影了。

 

所以,从理论上说的确可以一次又一次,越压缩越小的可能,但是只有一种情况,就是不断地提高压缩是的损失率,最终,当你舍弃所有的信息的时候,你可以把文件压缩到0字节。但是这种“为了压缩而压缩”的做法,是没有任何实际意义的。