Huffman编码字典构造
2017-08-03 19:06
330 查看
Huffman编码字典构造
Huffman编码的构造
对符号集的元素进行排序,使fX(α0)≤fX(α1)≤⋯≤fX(αK−1)
If K=2
赋值cα0="0"和cα1="1"
else
创建一个新的符号集AX′={α′1,α2,⋯,αK−1},分配满足
fX′={fX(α0)+fX(α1),x=α′fX(x),其他
的概率fX′。递归调用编码构造算法,找到对应AX′和fX′的优化编码cα′1,cα2,⋯,cαK−1。通过在cα′1后增加“0”和“1”扩展编码,分别得到cα0和cα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字典。
相关文章推荐
- POJ 2503 构造字典 翻译单词 使用字典树
- python构造字典的dict()函数理解
- Python-递推构造列表和字典
- 基于表的数据字典构造MySQL建表语句
- 给定一个字符串s和一个单词dict的字典,在s中添加空格来构造一个句子,其中每个单词都是有效的字典单词。
- java huffman树的构造和huffman编码
- Python构造自定义方法来美化字典结构输出的示例
- Web.py Cookbook 简体中文版 - 使用字典动态构造where子句
- 试用zip构造字典
- [Effective JavaScript 笔记]第43条:使用Object的直接实例构造轻量级的字典
- 版本3.0构造两个字典并解决查询字典条目时只能查本页的问题
- python 怎样构造字典格式的数据
- 使用两个for循环的时候,会非常慢,效率不高,使用构造字典,效率快了不少一点点!
- 构造字典(dict)
- 邮件透明过滤-构造哈希字典
- python zip函数同时遍历两个数组和构造字典
- 基于表的数据字典构造MySQL建表语句
- 构造Huffman树以及对Huffman编码
- Python构造自定义方法来美化字典结构输出的示例
- bzoj 3168: [Heoi2013]钙铁锌硒维生素 矩阵求逆+构造最小字典序完备匹配