哈夫曼编码和带权路径计算
哈夫曼樹是一種帶權路徑長度最短的二叉樹,也稱為最優二叉樹。下面用一幅圖來說明。
它們的帶權路徑長度分別為:
圖a: WPL=5*2+7*2+2*2+13*2=54
圖b: WPL=5*3+2*3+7*2+13*1=48
可見,圖b的帶權路徑長度較小,我們可以證明圖b就是哈夫曼樹(也稱為最優二叉樹)。
哈夫曼樹構建教程
例:對于給定的一組權值w={1,4,9,16,25,36,49,64,81,100},構造具有最小帶權外部路徑長度的擴充二叉樹,并求出他的的帶權外部路徑長度。
解:1、首先我們對這一組數字進行排序。規則是從小到大排列(題目已排序好)。
????? 2、在這些數中 選擇兩個最小的數字(哈夫曼樹是從下往上排列的)寫在紙上。如下圖所示
? 3、用一個類似于樹杈的“樹枝”連接上兩個最小的數。在頂點處計算出這兩個數字的和 并寫在上面。然后再比較剩下的數字和這個和的大小,再取出兩個最小的數字進行排列
4、如上圖中30,25的和為55,已經大于36,49.所以這個時候開始有分支,用36,49再構造一個分支,如下圖。
5、最后將分支合并成一個二叉樹,如下圖
6、這樣,二叉樹結構就構建好了。
?
帶權外部路徑長度計算;
WPL=2*100 + 3*64 + 2*81 + 4*25 + 2*49 + 2*36 + 5*16 + 6*9 + 7*1 + 7*4 =993
(385的權重為0,216和166權重為1.....)
左0右1:哈夫曼編碼為:
總結
以上是生活随笔為你收集整理的哈夫曼编码和带权路径计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue 获取url地址的参数_Vue之v
- 下一篇: 水平方向的算子检测竖直边缘理解