01 霍夫曼編碼 —— 無損壓縮


1.1 什么是霍夫曼編碼

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

1.2 編碼步驟

  1. 初始化,將符號概率按大到小進行排序;
  2. 將最小的兩個符號組成一個新的符號,新符號的概率即為兩者之和;
  3. 重復2,直到形成一個符號,其概率為1。
  4. 編碼:從根開始向下,左分支0;右分支1。(或左分支1;右分支0)

1.3 舉例

霍夫曼編碼

最后形成的編碼:

符號 a1 a2 a3 a4 a5 a6 a7 a8
碼字 00 01 100 101 110 1110 11110 11111
碼長 2 2 3 3 3 4 5 5

平均碼長:$$L=\sum_{i=1}^{8}P(a_i)*l_i=2.73\ bit$$

信息熵:$$H(A)=-\sum_{i=1}^{8}P(a_i)*log_2P(a_i)=2.618\ bit$$

可以看出挺接近信息熵的了。

1.4 霍夫曼編碼的特點

  1. 形成的編碼可能不是唯一的,左0右1還是左1右0隨便。

  2. 對於信源概率相差大時,效率較高,當信源概率為 \(2^{-1},2^{-2}\dots\) 時,效率最高。

  3. 對於信源概率相等時,效率最低。

    霍夫曼編碼1

  4. 編碼后,形成霍夫曼編碼表,解碼時需參照此表,此表在存儲和傳輸時都會占用一定的信道。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM