色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 赫夫曼編譯碼系統(tǒng)的設(shè)計與實現(xiàn)

          赫夫曼編譯碼系統(tǒng)的設(shè)計與實現(xiàn)

          作者: 時間:2011-03-22 來源:網(wǎng)絡(luò) 收藏

          摘要:在信息快速傳輸和存儲過程中,數(shù)據(jù)壓縮有著重要的作用。從赫夫曼樹定義及算法出發(fā),介紹了一個的設(shè)計與實現(xiàn)過程。這對于深入理解數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計有益。
          關(guān)鍵詞:赫夫曼樹;赫夫曼編碼;赫夫曼譯碼

          在數(shù)據(jù)結(jié)構(gòu)課程的實踐環(huán)節(jié)中,通常會讓學(xué)生利用赫夫曼編碼進行文本壓縮與解壓縮。由于教材上只是給出了赫夫曼樹的定義及算法,學(xué)生會感到無從下手。本文將從赫夫曼樹定義及算法出發(fā),通過實例介紹的具體設(shè)計與實現(xiàn)過程。

          1 設(shè)計內(nèi)容
          1.1 功能模塊
          (1)赫夫曼建樹模塊:根據(jù)輸入的字符和頻率,完成赫夫曼樹的構(gòu)造,并根據(jù)赫夫曼樹求赫夫曼編碼。
          (2)編碼模塊:讀取文本文件進行編碼,編碼結(jié)果存入到新文件。
          (3)譯碼模塊:讀取編碼文件并解碼,打開存儲編碼的文件,根據(jù)所讀取的編碼文件中的每個字符,利用赫夫曼樹進行解碼。
          (4)輸出模塊:將解碼后的每個字母寫入到一個新的文件中。
          1.2 測試數(shù)據(jù)
          用表1給出的字符集和頻度的實際統(tǒng)計數(shù)據(jù)建立赫夫曼樹,并實現(xiàn)以下報文的編碼和譯碼:“THISPROGRAM IS MY FAVORITE”。

          本文引用地址:http://cafeforensic.com/article/195043.htm

          a.jpg


          設(shè)計調(diào)試環(huán)境為Microsoft Visual C++6.0系統(tǒng)。

          2 設(shè)計原理及算法分析
          本次要做的赫夫曼編譯碼系統(tǒng)的主要功能是:運用二叉樹來設(shè)計二進制的前綴編碼。給一個文件,先統(tǒng)計文件中每個字符出現(xiàn)的頻數(shù),即作為此字符的權(quán)值,然后將里面的字符編碼成相應(yīng)的赫夫曼編碼。最后,根據(jù)赫夫曼譯碼原理把所給二進制數(shù)編譯成對應(yīng)的字符串。
          2.1 構(gòu)建赫夫曼樹
          一般而言,給定n個實數(shù)w1,w2,…,w3其中,n≥2,求一個具有n個結(jié)點的二叉數(shù),使其帶權(quán)路徑長度最小。可以證明赫夫曼樹的帶權(quán)路徑長度是最小的。
          (1)根據(jù)與n個權(quán)值|w1,w2,…,w3|對應(yīng)的n個結(jié)點構(gòu)成具有n棵二叉樹的森林F={HT1,HT2,…,HTn},其中第i棵二叉樹HTi(1≤i≤n)都只有一個權(quán)值為wi的根結(jié)點,其左、右子樹均為空。
          (2)在森林F中選出兩棵根結(jié)點權(quán)值最小的樹作為一棵新樹的左、右子樹,且置新樹的根結(jié)點的權(quán)值為其左、右子樹上根結(jié)點權(quán)值之和。
          (3)從F中刪除構(gòu)成新樹的那兩棵,同時把新樹加入F中。
          (4)重復(fù)第1和第3步,直到F中只含有一棵為止,此樹便為赫夫曼樹。
          2.2 赫夫曼編碼
          赫夫曼編碼是根據(jù)可變長最佳編碼定理,應(yīng)用赫夫曼算法而產(chǎn)生的一種編碼,是消除編碼冗余度最常用的方法。它的平均碼字長度在具有相同輸入概率集合的前提下,比其它任何一種可譯碼都小,因此,也常被稱為緊湊碼。
          (1)給定字符集的赫夫曼樹生成后,求赫夫曼編碼的具體實現(xiàn)過程是:依次以葉子HT[i](0≤i≤n-1)為出發(fā)點,向上回溯至根為止。上溯時走左孩子則生成代碼0,走右孩子則生成代碼1。
          (2)統(tǒng)計從根到葉子的路徑上的標號依次相連,便為該葉子所對應(yīng)字符的編碼。
          (3)用生成的各個字符的編碼替代原文件中的相應(yīng)的字符,生成decode.txt文件。


          上一頁 1 2 下一頁

          關(guān)鍵詞: 赫夫曼編譯碼 系統(tǒng)

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉