Huffman编码案例:计算平均码长、信源熵和压缩比
根据Huffman编码的规则,先将符号按照概率从大到小排列,然后将概率最小的两个符号合并为一个新的符号,其概率为两个符号概率之和,直到所有符号合并为一个根节点。
合并过程如下:
a7, a8 -> b1 (概率为0.04)
a6, b1 -> b2 (概率为0.10)
a5, b2 -> b3 (概率为0.22)
a4, b3 -> b4 (概率为0.35)
a3, a2 -> b5 (概率为0.30)
a1, b5 -> b6 (概率为0.65)
最终得到的Huffman编码如下:
a1: 0
a2: 110
a3: 111
a4: 10
a5: 01
a6: 1101
a7: 11100
a8: 11101
平均码长 = 0.351 + 0.153 + 0.153 + 0.132 + 0.122 + 0.064 + 0.035 + 0.015 = 2.5
信源熵 = -0.35log2(0.35) - 0.15log2(0.15) - 0.15log2(0.15) - 0.13log2(0.13) - 0.12log2(0.12) - 0.06log2(0.06) - 0.03log2(0.03) - 0.01log2(0.01) ≈ 2.40
压缩比 = 8*2.40/2.5 ≈ 7.68
因此,使用Huffman编码压缩后的数据可以达到7.68倍的压缩比。
原文地址: https://www.cveoy.top/t/topic/oTFD 著作权归作者所有。请勿转载和采集!