哈夫曼編碼思想,假設用於通信的電文由字符集{a,b,c,d,e,f,g}中的字母構成。它們在電文中出現的頻度分別爲{0.31,0.16,0.10,0.08,0.11,,0.20,0.04},

目錄

問題

哈夫曼思想(圖解):


問題

1)爲這7個字母設計哈夫曼編碼

a:11 b:101 c:010 d:1001 e:011 f:00 g:1000 

2)爲這7個字母設計等長編碼,至少需要幾位二進制數?

爲這7個字母設計等長編碼,至少需要3位二進制數

3)哈夫曼編碼比等長編碼使電文總長壓縮多少?

 等長編碼長度:(0.31+0.16+0.1+0.08+0.11+0.2+0.04)×3=1

哈夫曼編碼長度:0.31×2+0.16×3+0.1×3+0.08×4+0.11×3+0.2×2+0.04×4=2.61

哈夫曼編碼比等長編碼使電文總長壓縮:(3-2.61)÷3  = 13%

 

總感覺網上有的和這個一模一樣的題但是就是和我算的不一樣,感覺他們算錯啦(若我有錯歡迎指正)

哈夫曼思想(圖解):

網上比較好理解的圖與解釋

構建思想:所有的葉子節點構成了最初的森林(所有樹的集合),我們可以使用priority_queue對這些樹進行管理,使得集合中的數據始終保持着遞增的順序。然後,每次就讓前兩個元素出隊,再構造一個新的節點(樹),其權值爲出隊的兩個元素權值之和,左子樹爲前面第一個元素,右子樹爲前面第二個元素,這樣集合中元素的個數-1。如此做,直至集合中只剩餘一個節點(根節點)爲止,此時僅有的這棵樹便是哈夫曼樹。

 

 

 

 

 

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