天天看點

哈夫曼樹的構造

Huffman樹是一種特殊結構的二叉樹,由Huffman樹設計的二進制字首編碼,也稱為Huffman編碼在通信領域有着廣泛的應用。在word2vec模型中,在建構層次Softmax的過程中,也使用到了Huffman樹的知識。

哈夫曼樹并不唯一,但帶權路徑長度一定是相同的。

下面是建構哈夫曼樹的過程:

比如:8個結點的權值大小如下:

哈夫曼樹的構造

1、 從19,21,2,3,6,7,10,32中選擇兩個權小結點。選中2,3。同時算出這兩個結點的和5。

哈夫曼樹的構造

2、 從19,21,6,7,10,32,5中選出兩個權小結點。選中5,6。同時計算出它們的和11。

哈夫曼樹的構造

3、 從19,21,7,10,32,11中選出兩個權小結點。選中7,10。同時計算出它們的和17

(BTW:這時選出的兩個數字都不是已經構造好的二叉樹裡面的結點,是以要另外開一棵二叉樹;或者說,如果兩個數的和正好是下一步的兩個最小數的其中的一個,那麼這個樹直接往上生長就可以了,如果這兩個數的和比較大,不是下一步的兩個最小數的其中一個,那麼就并列生長。)
哈夫曼樹的構造

4、 從19,21,32,11,17中選出兩個權小結點。選中11,17。同時計算出它們的和28。

哈夫曼樹的構造

5、 從19,21,32,28中選出兩個權小結點。選中19,21。同時計算出它們的和40。另起一顆二叉樹

哈夫曼樹的構造

6、 從32,28, 40中選出兩個權小結點。選中28,32。同時計算出它們的和60

哈夫曼樹的構造

繼續閱讀