哈夫曼算法原理


1952年, David A. Huffman提出了一個不同的算法,這個算法可以為任何的可能性提供出一個理想的樹。香農-范諾編碼(Shanno-Fano)是從樹的根節點到葉子節點所進行的的編碼,哈夫曼編碼算法卻是從相反的方向,暨從葉子節點到根節點的方向編碼的。

為每個符號建立一個葉子節點,並加上其相應的發生頻率

當有一個以上的節點存在時,進行下列循環:

把這些節點作為帶權值的二叉樹的根節點,左右子樹為空

選擇兩棵根結點權值最小的樹作為左右子樹構造一棵新的二叉樹,且至新的二叉樹的根結點的權值為其左右子樹上根結點的權值之和。

把權值最小的兩個根節點移除

將新的二叉樹加入隊列中.

最后剩下的節點暨為根節點,此時二叉樹已經完成。

示例:

 
 

在這種情況下,D,E的最低頻率和分配分別為0和1,分組結合概率的0.28205128。現在最低的一雙是B和C,所以他們就分配0和1組合結合概率的0.33333333在一起。這使得BC和DE所以0和1的前面加上他們的代碼和它們結合的概率最低。然后離開只是一個和BCDE,其中有前綴分別為0和1,然后結合。這使我們與一個單一的節點,我們的算法是完整的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM