01 霍夫曼编码 —— 无损压缩
作者:互联网
1.1 什么是霍夫曼编码
在计算机中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现几率的方法得到的,出现几率高的字母使用较短的编码,反之出现几率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。
1.2 编码步骤
- 初始化,将符号概率按大到小进行排序;
- 将最小的两个符号组成一个新的符号,新符号的概率即为两者之和;
- 重复2,直到形成一个符号,其概率为1。
- 编码:从根开始向下,左分支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 霍夫曼编码的特点
-
形成的编码可能不是唯一的,左0右1还是左1右0随便。
-
对于信源概率相差大时,效率较高,当信源概率为 \(2^{-1},2^{-2}\dots\) 时,效率最高。
-
对于信源概率相等时,效率最低。
-
编码后,形成霍夫曼编码表,解码时需参照此表,此表在存储和传输时都会占用一定的信道。
标签:编码,概率,符号,无损压缩,信源,01,霍夫曼,分支 来源: https://www.cnblogs.com/seigann/p/12549174.html