壓縮文件爲何不能一層層壓縮自身

假設壓縮比是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
相關文章
相關標籤/搜索