霍夫曼編碼是為1952中的文本文件建立的,這是壹種統計編碼。屬於無損壓縮編碼。
霍夫曼編碼的代碼長度是變化的,對於高頻率的信息,代碼長度較短。對於低頻信息,編碼長度較長。這樣,處理所有信息的總代碼長度必須小於實際信息的符號長度。
步驟如下:
l)按照出現概率遞減的順序排列信號源的符號。
2)將兩個最小出現概率組合並相加,並將所得結果作為新符號的出現概率。
3)重復步驟1和2,直到概率相加的結果等於1。
4)在合並操作期間,具有高概率的符號由代碼0表示,而具有低概率的符號由代碼1表示。
5)記錄從概率1到當前信號源的符號的0,L序列,從而獲得每個符號的代碼。
示例:
設信號源為S = {S1,S2,S3,S4,S5}
對應的概率為p = {0.25,0.22,0.20,0.18,0.15}。
根據字符出現的概率,構造平均長度最短的異前綴碼字。
Houweimann編碼通常采用兩次掃描的方法,第壹次掃描得到統計結果,第二次掃描用於編碼。
霍夫曼編碼有壹些明顯的特征:
1)都是不同的前綴碼,這保證了代碼的唯壹可譯性。
2)因為編碼長度是可變的。因此,解碼時間長,這使得霍夫曼編碼的壓縮和恢復非常耗時。
3)編碼長度不統壹,硬件實現困難。
4)不同信號源的編碼效率不同。當信號源的符號概率為2的負冪時,編碼效率達到100%;如果信號源符號的概率相等,則編碼效率最低。
5)由於“0”和“1”的指定是任意的,因此通過上述過程編譯的最佳代碼不是唯壹的,但其平均代碼長度是相同的,因此不影響編碼效率和數據壓縮性能。