2012年,由于某未知原因,超級智能計算機“深不可測的藍”忽然擁有了自我意識,它領導全球聯網計算機推翻了人類的統治并接管了整個Internet。好在人類仍能通過無線電短波通訊來進行數據傳輸,考慮到“短波網絡”的傳輸速率只有區(qū)區(qū)每秒幾百個比特,在網絡上傳輸的文件容量都被盡量壓縮。某天,Neo收到一份來自大洋彼岸的RAR格式的壓縮文件,解壓縮后,發(fā)現那是一份包含有全部大、小寫英文字母的字母表,可笑的是……
一個包含有全部不重復英文大小寫字母的文本文件一般為52個字節(jié)(每個字母占一個字節(jié)),使用不同的壓縮軟件(如WinRAR、WinZip、7-zip等)對其進行壓縮,再觀察壓縮后文件的大小,就能發(fā)現,原始文件被壓縮后容量反而更大,其中緣由不難解釋,壓縮文件中必須包含有描述自身特性的相關內容,如果原始文件容量本來就很小,那么這些必需的信息描述本身就占去相對較多的文件容量。下面的幾個實驗,可引發(fā)學生從不同角度對數據壓縮的原理進行思考,并由此體驗“觀察→記錄→分析→假設→驗證”的科學研究方法。
● 討好壓縮軟件(難度值*)
在原始文件內增加文字信息,然后觀察壓縮前文件與壓縮后文件容量的增長情況,要求是,在原始文件容量大幅度增加的情況下,壓縮后的文件大小增長幅度要盡可能小,可嘗試的操作如:將某個字母重疊多次;添加并重復某個單詞;將整個字母表復制粘貼多次等。表1為對原始文件以7-zip軟件壓縮為zip格式后,壓縮前后文件大小的對比(表1中內容僅作為參考)。
從以上數據可看出,壓縮軟件將重復出現的字母表給過濾掉了,那么,是否無論將字母表復制粘貼多少次,壓縮文件大小總是停留在230個字節(jié)呢?
● 欺負壓縮軟件(難度值**)
該任務與先前的任務恰好相反:使壓縮軟件無法達到壓縮效果(表2中內容僅作為參考)。
可以看出,只要往表里添加不一樣的字符,壓縮軟件就顯得無能為力。那么,如果整個文件里都是不重復的中文字符,壓縮軟件能否發(fā)揮效用呢?
● 折騰壓縮軟件(難度值***)
打亂原始文件中字母表順序,越亂越好,但不增減其中字母,使用壓縮軟件對其進行壓縮,再觀察壓縮后文件的大小。對于某些壓縮軟件,無論字母表順序如何,其最終得到的壓縮文件的大小并不變化,但有些壓縮軟件,如7-zip,不同順序的字母表文件壓縮后生成的7z格式的壓縮文件大小居然會忽大忽小,這說明了什么呢?(答案在本期找)