Q11.3.4 哈弗曼編碼

問題:

用二進制來編碼字符串“abcdabaa”,需要能夠根據編碼,解碼回原來的字符串,最少需要多長的二進制字符串?

分析:

哈弗曼編碼根據字符出現的概率來構造平均長度最短的碼字,是一種文本壓縮算法。

1,先統計各字符出現的頻率;

2,構造哈弗曼樹,左邊爲0,右邊爲1,每次選取最小權的兩棵樹組成新樹,直到最終形成一棵最優哈弗曼編碼樹。

此題,

4個a, 2個b,1個c,1個d


第一次,挑兩個最小的 c 和 d


第二次,再挑選兩個最小的


最後,組成一棵哈弗曼編碼樹。


所以,a 的編碼是 0,b的編碼是 10, c 的編碼是110, d的編碼是111.

最短是 1*4 + 2*2 + 3*1 + 3*1 = 14.

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