Huffman编码字典构造

来源:互联网 发布:贝多芬梅毒 知乎 编辑:程序博客网 时间:2024/05/22 16:59

Huffman编码字典构造

Huffman编码的构造

对符号集的元素进行排序,使

fX(α0)fX(α1)fX(αK1)

If K=2
赋值cα0="0"cα1="1"
else
创建一个新的符号集AX={α1,α2,,αK1},分配满足
fX={fX(α0)+fX(α1),x=αfX(x),

的概率fX。递归调用编码构造算法,找到对应AXfX的优化编码cα1,cα2,,cαK1。通过在cα1后增加“0”和“1”扩展编码,分别得到cα0cα1

end

上述算法就是Huffman编码的字典构造方法。

Huffman字典计算示例

假定AX={0,1,2,3},概率为

fX(0)=316,fX(1)=216,fX(2)=216,fX(3)=916

计算该符号集的Huffman编码字典。

下图是手算Huffman字典的方法:
这里写图片描述

在开发私有codec时,如果用到Huffman编码,则最好需要通过大规模的样本获得概率分布数据。只要获得概率数据,无需编程、无需手算就可以获得编码效率最高的Huffman字典。