1. 程式人生 > >霍夫曼編碼

霍夫曼編碼

符號 alt 組成 gpo AC width 樹的高度 ace 通信

霍夫曼編碼使用變長編碼表對源符號(如文件中的一個字母)進行編碼,其中變長編碼表是通過一種評估來源符號出現機率的方法得到的,出現機率高的字母使用較短的編碼,反之出現機率低的則使用較長的編碼,這便使編碼之後的字符串的平均長度、期望值降低,從而達到無損壓縮數據的目的。

霍夫曼編碼具體步驟:

1、將信源符號的概率按減小的順序排序
2、把兩個最小的概率相加,始終將比較大的概率的分支放在右邊,繼續這一步驟(選取根節點權重最小的兩棵樹合並)
3、畫出到每個信源符號的路徑,(左0右1)得到每個信源符號的霍夫曼碼

如:由6個不同字母組成的30個的字符串:CCABD EAFDD AACEE BBACA EFAAB CCCEA

1、計算每個字母的概率

A-----------------9
C-----------------7
E-----------------5
B-----------------4
D-----------------3
F-----------------2

2、將概率最小的相加並將較大概率分支放在右邊

3、按左0右1的原則畫出每個信源符號路徑,得下圖

技術分享圖片

獲得每個字符的編碼:

A-----------------9-----------------10
C-----------------7-----------------01
E-----------------5-----------------111
B-----------------4-----------------110
D-----------------3-----------------001
F-----------------2-----------------000

EG:

某通信碼中只會出現8中字符,其概率分別是0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,若對其進行霍夫曼編碼,其霍夫曼樹的高度是?

計算字符概率:

b-----------------29
f-----------------23
e-----------------14
h-----------------11
d-----------------8
c-----------------7
a-----------------5
g-----------------3

霍夫曼樹為:

技術分享圖片

所以高度是4

霍夫曼編碼