• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      信息技術(shù)課堂實例:用字典法壓縮信息

      2016-05-14 16:51方瑋聰
      中國信息技術(shù)教育 2016年8期
      關(guān)鍵詞:記事本字符字典

      方瑋聰

      所謂壓縮,本質(zhì)上講就是借助特定的編碼,對文件數(shù)據(jù)進(jìn)行重新組織,去除信息中的冗余,以實現(xiàn)文件“瘦身”的效果。在教學(xué)過程中,學(xué)生會對無損壓縮的原理產(chǎn)生困惑,歸結(jié)起來主要有兩個方面:①字符信息在無損壓縮的過程中究竟是如何處理的呢?②壓縮既然是編碼方式的調(diào)整,那何以說這種調(diào)整能夠?qū)崿F(xiàn)去除冗余信息的目的呢?

      課堂實驗的引入

      為了幫助學(xué)生進(jìn)行理解,筆者借鑒了陳凱老師在《中國信息技術(shù)教育》雜志上開設(shè)的欄目“信息技術(shù)課程內(nèi)容設(shè)計集錦”系列文章中《更多信息,更少容量》一文的內(nèi)容,在課堂上引入了這個實驗:先打開附件中的記事本,利用鍵盤輸入并保存一個含有全部不重復(fù)英文大小寫字母的文本文件,其大小為26個字節(jié)(每個字母占一個字節(jié)),使用計算機(jī)中安裝的WinRAR壓縮軟件對其進(jìn)行無損壓縮,再觀察其壓縮后文件的大小。學(xué)生就會發(fā)現(xiàn),壓縮完之后文件所占空間不僅沒有縮小,反而增大了許多。其原因?qū)W生很容易理解,壓縮一個文件不僅是轉(zhuǎn)換一種編碼方式,同時文件還被做了一個“加殼”操作,新格式的文件中含有描述自身特性和編碼方式的相關(guān)內(nèi)容,而這些必要的信息描述本身則會占去相對較多的文件容量。

      接下來讓學(xué)生嘗試進(jìn)行若干實驗,從觀察中發(fā)現(xiàn)問題,從而引出他們對壓縮編碼的一些思考。

      按照操作要求,在原始文件內(nèi)增加字符信息,然后觀察文件壓縮前與文件壓縮后容量的變化情況。嘗試的操作有:將某個字母重復(fù)多次;添加重復(fù)的單詞;將整個字母表復(fù)制、粘貼多次等。使用WinRAR軟件進(jìn)行壓縮,壓縮前后文件大小的對比如表1所示(內(nèi)容僅作參考)。

      對比觀察后,學(xué)生可以得出如下結(jié)論:①在一定次數(shù)的整體復(fù)制后,壓縮軟件會將重復(fù)的字母過濾掉,無論多少次操作,壓縮文件的大小基本不變;②若在字母表中添加不重復(fù)字符,則壓縮軟件在壓縮時就顯得力不從心了。

      實驗以及現(xiàn)象的解釋

      為了更深入地了解字符壓縮的方法,筆者又讓學(xué)生繼續(xù)嘗試新的實驗。

      首先,還是使用記事本文件新建兩個純字符的文本文檔,使用鍵盤在第一個文檔中輸入一整句英語繞口令“canyoucanacanasacannercancanacan”(你能夠像罐頭工人一樣裝罐頭嗎?),并去掉其中的大小寫、空格和標(biāo)點符號,完成后保存。在第二個文檔中輸入26個英文小寫字母外加“123456”,完成后保存(字符數(shù)和第一個文檔完全相同)。然后,分別對這兩個文件使用WinRAR進(jìn)行壓縮,結(jié)果如上頁表2所示。

      實驗結(jié)果和學(xué)生想象的有很大出入,大家都以為第一個記事本文件壓縮后會更小,因為其中存在很多反復(fù)出現(xiàn)的單詞(即所謂的冗余信息),而第二個記事本文件中未出現(xiàn)一個重復(fù)字符,可最終壓縮后的文件大小竟然是一樣的。若要解釋這個問題,就必須對壓縮機(jī)制作更深入的分析。

      其實,壓縮軟件在對文件進(jìn)行壓縮前,首先會對將要被壓縮的文件進(jìn)行檢索。檢索過程中壓縮軟件會將一部分字符挑選出來,放到一個指定的位置,稱之為“搜索緩沖區(qū)”或者“字典庫”。之后在進(jìn)行字符壓縮時,若檢索到出現(xiàn)的字符在字典庫中已經(jīng)存在,就用對應(yīng)關(guān)系來替換字符本身,以達(dá)到縮小空間的目的。

      上述實驗中之所以兩個文件在壓縮后大小都一樣,主要是因為兩個文件中的內(nèi)容都被整體當(dāng)作字典放入了字典庫中,也就是說只有當(dāng)字典庫中放入了一定規(guī)模的字符信息后,壓縮軟件才真正開始表現(xiàn)出壓縮功能。

      字典法壓縮實踐

      初步介紹了壓縮軟件的工作機(jī)制之后,筆者又嘗試讓學(xué)生進(jìn)行如下小實驗:用人腦,而不是用計算機(jī)來對文本進(jìn)行壓縮。希望學(xué)生能在這個過程中,體會字典法壓縮的原理。

      先打開記事本文件,輸入一段英語繞口令(A writer writes:Dont write write as rite.),保存并查看文件大?。?2個字節(jié),其中包含空格和標(biāo)點符號)。然后取其中若干個字符作為字典,以字典法來進(jìn)行信息的壓縮,將壓縮后的信息內(nèi)容保存到另外一個記事本文件中,并觀察對比文件大小的變化。壓縮時,以前面的幾個字符作為字典,具體字典信息如表3所示。

      若在壓縮時,繞口令中有連續(xù)兩個字符與字典庫中所存在的字符相符,那就用兩位數(shù)字表示從第幾個字符開始取幾個字符,如35表示write。如果字符并沒有在字典中出現(xiàn)過,則要標(biāo)注上0,如0s就表示s這個字符不在字典中,以免解壓縮時產(chǎn)生混淆。另外,有些字符雖然出現(xiàn)在字典中,但只有一個字符與字典相符,這樣也就未必需要使用到字典。

      根據(jù)規(guī)則,壓縮后的信息如表4所示。

      通過對比,發(fā)現(xiàn)壓縮前后文件縮小了1個字節(jié),字典法在壓縮過程中起了一定的作用。

      以此作為基礎(chǔ),筆者又讓學(xué)生嘗試對之前使用過的英語繞口令(加入空格字符)使用字典法進(jìn)行壓縮(如表5),讓學(xué)生先討論并尋找適合的字典放入字典庫中,然后根據(jù)自己所選擇的字典進(jìn)行相應(yīng)的壓縮。

      如表6、下頁表7所示,是學(xué)生討論探究后嘗試使用的部分字典以及使用該字典進(jìn)行壓縮后的信息及信息大小,針對不同的字典筆者發(fā)現(xiàn)有很多值得和學(xué)生探究的地方。

      使用這個字典后,學(xué)生發(fā)現(xiàn)壓縮率的高低與字典有很密切的關(guān)系,如果使用了不合理的字典,字符在壓縮后,空間不僅不會縮小,反而會變大。

      使用這個字典后,學(xué)生會發(fā)現(xiàn)壓縮后文件的大小明顯減小了。因此,筆者又提出問題:壓縮后信息中的“126”代表什么意思?還原時是否會出現(xiàn)問題?學(xué)生會發(fā)現(xiàn)其中有歧義:是從12位置取6個字符,還是從1位置取26個字符。所以如果使用字典內(nèi)容過多需要用兩位來標(biāo)識的話,那么壓縮時所有涉及的內(nèi)容都應(yīng)用兩位來標(biāo)識。于是,為了能夠壓縮信息,字典選取和編碼方式都要有所調(diào)整,這一次,不僅擴(kuò)大了字典,而且規(guī)定用2個字符來索引字典的位置,用2個字符來存放字符的長度(如表8)。

      學(xué)生嘗試以后發(fā)現(xiàn),如果文件中數(shù)據(jù)本來就不多,想要對它進(jìn)行壓縮,是相當(dāng)困難的事情。

      在探索的過程中,有部分學(xué)生嘗試使用“can a”或“can a can”作為字典進(jìn)行壓縮,所得文本大小相較原文本也有所減小。然而,對這種方法筆者又提出了質(zhì)疑:在編碼過程中是否遺漏了什么因素?學(xué)生思考后提出了問題:這兩個字典本身并不處在壓縮語句的首部,而是從中間開始節(jié)選的,除非在編碼過程中另外補充信息說明,否則不能簡單拿來使用,如果要使用文件中間的內(nèi)容來作為字典,則在壓縮時還需要考慮字典本身的偏移量,這樣一來,又需要額外增加壓縮后文件的大小。討論到這里,筆者引出當(dāng)前很流行的LZ壓縮編碼,建議有興趣的學(xué)生可以研究一下:編碼的設(shè)計者是如何將字典本身所占容量盡可能減少的?這又是一個值得自主學(xué)習(xí)探索的好課題。

      帶領(lǐng)學(xué)生研究字典法壓縮的過程,實際上是一個不斷完善細(xì)節(jié)的過程,只有親自實驗,學(xué)生才能體會到將一個看上去簡單的理論落實為可應(yīng)用的實際方案,過程中需要克服很多困難!

      猜你喜歡
      記事本字符字典
      Python實現(xiàn)圖片轉(zhuǎn)字符畫
      正則表達(dá)式快速入門
      圖片輕松變身ASCⅡ藝術(shù)畫
      字典的由來
      大頭熊的字典
      小小記事本
      土撥鼠的記事本
      記事本里的信息技術(shù)課
      正版字典
      視頻監(jiān)視系統(tǒng)中字符疊加技術(shù)的應(yīng)用
      盐亭县| 丹巴县| 荥阳市| 蕉岭县| 炎陵县| 定陶县| 武平县| 福州市| 巴马| 乌兰浩特市| 宜川县| 云霄县| 怀宁县| 吉首市| 甘南县| 临西县| 府谷县| 原平市| 衢州市| 曲周县| 孝昌县| 永春县| 武冈市| 龙井市| 淮南市| 巍山| 三河市| 文山县| 沁阳市| 同江市| 左权县| 华安县| 镇康县| 淳化县| 泰宁县| 枝江市| 胶州市| 平昌县| 山阳县| 拉萨市| 来宾市|