1. 程式人生 > >赫夫曼樹的定義與原理

赫夫曼樹的定義與原理

赫夫曼:從樹中一個結點到另一個結點之間的分支構成兩個檢點之間的路徑,路徑上的分支數目稱做路徑長度。樹的路徑長度就是從樹根到每一結點的路徑長度之和。

如果考慮到帶權的結點,結點的帶權的路徑長度為從該結點到樹根之間的路徑長度與結點上權的乘積。假設有n個權值,構造一棵有n個葉子結點的二叉樹,每個葉子結點帶權Wk,每個葉子的路徑長度為lk,其中帶權路徑長度WPL最小的二叉樹稱作赫夫曼樹。也稱“最優二叉樹”。

赫夫曼演算法的描述
1. 根據給定的n個權值{w1,w2,…,wn}構成n棵二叉樹的集合F{T1,T2,…,Tn},其中每棵二叉樹Ti中只有一個帶權為wi根結點,其左右子樹均為空。
2. 在F中選中選取兩棵根結點的權值最小的樹作為左右子樹構造一棵新的二叉樹,且置新的二叉樹的根結點的權值為其左右子樹上根結點的權值之和。
3. 在F中刪除這兩棵樹,同時將新得到的二叉樹加入F中。
4. 重複2和3步驟,直到F只含一棵樹為止。這棵樹便是赫夫曼樹。

當然赫夫曼研究這個的目的主要是為了解決當年遠距離通訊的資料傳輸的最優化問題。