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