赫夫曼樹

從樹中一個結點到另一個結點之間的分支構成兩個結點之間的路徑,路徑上的分支數目稱做路徑長度

樹的路徑長度就是從樹根到每一個結點的路徑長度之和。

結點的帶權路徑長度爲從該結點到樹根之間的路徑長度與結點上權的乘積。

樹的帶權路徑長度爲樹中所以葉子結點的帶權路徑長度之和。

帶權路徑長度WPL最小的二叉樹稱做赫夫曼樹,也稱最優二叉樹


構造赫夫曼樹:

(1)根據給定的n個權值{w1, w2, ......, wn}構成n棵二叉樹的集合F={T1, T2, ......,Tn},其中每棵二叉樹T1中只有一個帶權爲w1根結點,其左右子樹爲空。

(2)在F中選取兩棵根結點的權值最小的樹作爲左右子樹構造一棵新的二叉樹,而且置新的二叉樹的根結點的權值爲左右子樹上根結點的權值之和。

(3)在F中刪除這兩棵樹,同時將新得到的二叉樹加入到F中。

(4)重複2和3步驟,直到F只含一棵樹爲止。這棵樹便是赫夫曼樹。


若要設計長短不等的編碼,則必須是任一字符的編碼都不是另一個字符的編碼的前綴,這種編碼稱做前綴編碼。

赫夫曼編碼:

一般的,設需要編碼的字符集爲{d1, d2, ......,dn},各個字符在電文中出現的次數或者頻率集合爲{w1, w2, ...., wn},以d1, d2, ......,dn作爲葉子結點,以w1, w2, ...., wn作爲相應葉子結點的權值來構造一棵赫夫曼樹。規定赫夫曼樹的左分支代表0,右分支代表1,則從根結點到葉子結點所經過的路徑分支組成的0和1的序列便成爲該結點對於字符的編碼,這就是赫夫曼編碼。


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