⒈哈夫曼演算法:
huffman
演算法是一種基於統計的壓縮方法。它的本質就是對文字檔案中的字元進行重新編碼,對於使用頻率越高的字元,其編碼也越短。但是任何2
個字元的編碼,是不能出現向前包含的。也就是說字元a(
假設為00)
的編碼的前段,不可能為字元b
(則b的編碼不可能為001
,因為這裡b
的編碼中包含了a
的前段00
,這會給解碼難帶來不必要的困難,所以這是不允許的)的編碼。經過編碼後的文字檔案,主要包含2
個部分:huffman
碼表部分和壓縮內容部分。解壓縮的時候,先把huffman
碼表取出來,然後對壓縮內容部分各個字元進行逐一解碼,
形成原始檔。
哈夫曼編碼生成步驟:
①掃瞄要壓縮的檔案,對字元出現的頻率進行計算。
②把字元按出現的頻率進行排序,組成乙個佇列。
③把出現頻率最低(權值)的兩個字元作為葉子節點,它們的權值之和為根節點組成一棵樹。
④把上面葉子節點的兩個字元從佇列中移除,並把它們組成的根節點加入到佇列。
⑤把佇列重新進行排序。重複步驟③④⑤直到佇列中只有乙個節點為止。
⑥把這棵樹上的根節點定義為0(可自行定義0或1)左邊為0,右邊為1。這樣就可以得到每個葉子節點的哈夫曼編碼了。
哈夫曼解碼:
①先得到一串哈夫曼編碼(比如為0001101011111),從第乙個位開始讀,若讀到的子字串與上面的某個葉子節點的的編碼相同。
②解壓出相應的字元,把該字元儲存起來。並把上面的子字串從編碼中刪除,重複上一步驟,直到該項編碼解析完成。
哈夫曼演算法的應用:哈夫曼演算法主要用於壓縮檔案,它是一種無失真壓縮。廣泛的應用
於壓縮和搜尋軟體中。
哈夫曼壓縮
哈夫曼壓縮 哈夫曼壓縮是無失真壓縮的一種,一般用來壓縮文字和程式檔案。壓縮步驟 將要壓縮的檔案乙個乙個位元組地讀出來,統計每個位元組出現的次數 作為該葉子節點的權值 構建哈夫曼樹,採用優先佇列。遍歷哈夫曼樹,得到每乙個葉子節點的哈夫曼編碼。左0右1,得到的是01字串 將不足八位的01字串補0使其達到...
哈夫曼壓縮
size large 此文主要分析的是哈夫曼壓縮的重點包括統計字元頻率,建哈夫曼樹,生成碼表。哈夫曼壓縮是最常用的一種靜態無痕壓縮。以前也學習過哈夫曼的演算法結構,但是沒有自己去寫 實現,這次再學習了一遍,更加深刻理解哈夫曼壓縮的原理,如何真正實現檔案的壓縮節省記憶體資源。下面梳理下我的 和分析邏輯...
哈夫曼壓縮
將形成的二叉樹的左節點標0,右節點標1。把從最上面的根節點到最下面的葉子節點路徑中遇到的0,1序列串起來,得到各個符號的編碼。可以看到,符號只能出現在樹葉上,任何乙個字元的路徑都不會是另一字元路徑的字首路徑,這樣,字首編碼也就構造成功了。這樣一棵二叉樹在資料結構課程中稱之為huffman樹,常用於最...