哈夫曼樹與哈夫曼編碼

2021-10-05 12:09:36 字數 1365 閱讀 4185

在實際生活中,要將學生成績劃分為5個等級。而每個分數段的學生佔比不同。

分數0~59

60-69

70~79

80~89

90~100

等級不及格

及格中等

良好優秀代號e

dcba

佔比5%

15%40%

30%10%

如果按照一般的判斷方法如下**,每次都從60開始比較,而大於70分的成績佔比80%,顯然不合理。

def

scale

(score)

:if score <60:

result =

"e"# 不及格

elif score <70:

result =

"d"# 及格

elif score <80:

result =

"c"# 中等

elif score <90:

result =

"b"# 良好

else

: result =

"a"# 優秀

哈夫曼:「從樹中乙個節點到另外乙個節點之間的分支構成兩個節點之間的路徑,路徑上的分支數目稱作路徑長度。」上圖中根節點到b的路徑長度為4.此二叉樹路徑的長度就為:1+1+2+2+3+3+4+4 = 20.wpl = 5x1+15x2+40x3+30x4+10x4=315

帶權路徑長度wpl最小的二叉樹叫哈夫曼樹。

生成哈夫曼樹步驟:1)想把葉子節點按照從小到大的順序排列成乙個有序序列,e5%,a10%,d15%,b30%,c40%;

2)取前頭權值最小的兩個作為節點n1的葉子,小的作為左孩子,相對大的為右孩子。

3)再將n15%與剩下的節點排序,重複第二步。構成哈夫曼樹。

此時,wpl=40x1+30x2+15x3+10x4+5x4=205

設定編碼集合為

由哈夫曼樹構成哈夫曼編碼如下:

每個子樹的左分支設為0,右分支設為1.

有編碼集

以上為簡單的哈夫曼編碼示例。

哈夫曼樹與哈夫曼編碼

在一般的資料結構的書中,樹的那章後面,著者一般都會介紹一下哈夫曼 huffman 樹和哈夫曼編碼。哈夫曼編碼是哈夫曼樹的乙個應用。哈夫曼編碼應用廣泛,如 jpeg中就應用了哈夫曼編碼。首先介紹什麼是哈夫曼樹。哈夫曼樹又稱最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的...

哈夫曼樹與哈夫曼編碼

1.哈夫曼 huffman 編碼是哈夫曼樹的乙個應用。2.哈夫曼樹又稱為最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的葉結點的相對值乘上其到根結點的路徑和權值。3.影象jpg就是利用了哈夫曼編碼。4.哈夫曼樹是最優二叉樹,子樹有左右次序之分。5.哈夫曼樹的形態不是唯...

哈夫曼樹與哈夫曼編碼

哈夫曼樹是一種簡單的樹結構,建樹過程如下 給出一組資料,不斷選擇最小的兩個數,並用兩個數的和作為它們的parent節點,再從資料中刪除這兩個數,將兩個數的和加入資料中,直到所有的資料都被加入樹結構,形成一顆樹。這顆樹的所有非葉子節點都有兩個child,兩個child的值的和則是這個節點的值,根節點是...