數據結構與算法-赫夫曼樹(赫夫曼樹 赫夫曼編碼)

我們的樹好久沒更新啦,小孱弱弱一隻忙着算法,沒關係,今天繼續,我們介紹赫夫曼樹的應用。你們用沒用過壓縮包,本地來挺大的一個文件,壓縮一下,大小減少的不是一點點,想知道其中的原理嗎?我們今天說的赫夫曼樹是最早的壓縮技術,當然我們現在的壓縮技術非常發達了,我們只做瞭解最基本的就歐克。
先說赫夫曼樹,自然是一棵樹啦,只不過我們只用葉子結點存儲數據,並且分析出每個數據出現的頻率,我們將葉子結點帶上權值,權值就是它的出現頻率,從根節點到達每一個葉子的路徑長度代表它的訪問,怎麼做能讓葉子結點的訪問更加有效率呢,所有葉子結點的路徑長度的和就是赫夫曼樹的路徑長度,爲了是效率最高,我們必須保證樹的路徑長度最小,帶權路徑WPL最小的樹,我們稱之爲赫夫曼樹,既然知道了赫夫曼樹的性質,就說說怎樣構造赫夫曼樹吧:
1.先將帶有權值的結點按從小到達的順序排列。
2.取頭上最小的兩個結點組成一個新的結點(較小的是左孩子),重新排列整個結點集合。
3.重複步驟2,直到所有結點都用完。
簡單吧,可是赫夫曼大叔發明這個可不容易呢!
說完了赫夫曼樹,再說一說赫夫曼編碼,在以前用電報的時候,滴答滴答的聲音在電視劇中聽到過吧,由於電報都是通過二進制的1和0作爲數據傳遞的,內容量巨大,而赫夫曼編碼就很好的改善了這個問題,首先把所有字母拿出來,對應好每個字母出現的頻率,構造一棵赫夫曼樹,然後左孩子的連線表示0,右孩子的連線表示1,每一個字母的二進制編碼就是每一個字母的路徑。完美謝幕。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章