根据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倍的压缩比。

Huffman编码案例:计算平均码长、信源熵和压缩比

原文地址: https://www.cveoy.top/t/topic/oTFD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录