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