哈夫曼樹與哈夫曼編碼

2021-08-27 04:01:07 字數 2249 閱讀 4050

一、最優樹的定義:設有

n 個葉子結點,且每個葉子結點有乙個權值,則包含這

n個葉子結點的所有

m 叉樹中,必存在一棵其

帶權路徑長度取最小值的樹,稱為

最優樹

最優樹可能不止乙個!

路徑

從樹中乙個結點到另乙個結點之間的分支所構成的通路 。

路徑長度

路徑上分支的數目。

結點的帶權路徑長度:從樹根到該結點之間的長度

l與結點權值

w的乘積

( l * w

)。的帶權路徑長度:樹中所有葉子

結點的帶權路徑長度之和:wpl(t) = s w

k lk  

二、如何構造最優樹(哈夫曼演算法)

問題:已知n個權值,用n個權值作為葉子結點,構造一棵二叉樹,使該二叉樹的帶權路徑長度最短。

(1)根據給定的

n 個權值

,構造

n 棵二叉樹的集合: f=

, 其中每棵二叉樹中均只含乙個帶權值為 wi

的根結點

,其左、右子樹為空樹;

(2)

f 中選取其根結點的

權值為最小

的兩棵二叉樹

,分別作為左、右子樹構造一棵新的二叉樹,並置這棵新的二叉樹根結點的權值為其左、右子樹根結點的權值之和;

假設有n個葉子結點,要構造一棵m叉最優樹,

如果(n-1)mod(m-1)=0,則n個結點正好構成一棵m叉的正則樹。

否則,需要補充一些虛葉子結點,構成一棵m叉樹。補充的虛結點的個數為 (m-1)- (n-1)mod(m-1)。

三、字首編碼指的是,編碼字符集中

任何乙個字元的編碼都不是同一字符集中另乙個字元的編碼的字首

在編碼集合對應的二叉樹中,所有編碼都在葉子節點上。

利用哈夫曼樹可以構造一種不等長的二進位制編碼,並且構造所得的哈夫曼編碼是一種最優字首編碼,使所傳電文的總長度最短

舉例:已知某系統在通訊聯絡中只可能出現八種字元a,b,c,d,e,f,g,h,其概率分別為:0.05, 0.29, 0.07, 0.08, 0.14, 0.23,0.03,0.11試設計哈夫曼編碼.

設權w =

a  b   c  d   e    f   g  h

哈夫曼編碼:0110,

哈夫曼樹與哈夫曼編碼

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

哈夫曼樹與哈夫曼編碼

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

哈夫曼樹與哈夫曼編碼

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