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

设一信源有8个符号 a1a2 a3 a4a5a6a7a8其概率分布分别为Pa1=035Pa2=015pa3 = 015pa4= 013pa5=012pa6=006pa7 = 003 pa8=001。 现对信源符号进行Huffman编码并计算平均码长信源的熵以及压缩比。假设每一步编码时概率大的消息赋予码元0概率小的消息赋予码元1。

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

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