设一信源有8个符号 a1a2 a3 a4a5a6a7a8其概率分布分别为Pa1=035Pa2=015pa3 = 015pa4= 013pa5=012pa6=006pa7 = 003 pa8=001。 现对信源符号进行Huffman编码并计算平均码长信源的熵以及压缩比。假设每一步编码时概率大的消息赋予码元0概率小的消息赋予码元1。
根据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/hqO3 著作权归作者所有。请勿转载和采集!