目錄
問題
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。如此做,直至集合中只剩餘一個節點(根節點)爲止,此時僅有的這棵樹便是哈夫曼樹。