哈夫曼编码
1、哈夫曼编码简介
哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码。
哈夫曼编码,主要目的是根据使用频率来最大化节省字符(编码)的存储空间。
2、哈夫曼编码的具体步骤
- 将字符的顺序按字符出现的概率降序排列。
- 把两个最小的概率相加,并继续这一步骤,始终将较高的概率分支放在右边,直到最后变成概率1。
- 画出由概率1处到每个信源符号的路径,顺序记下沿路径的0和1,所得就是该符号的霍夫曼码字。
- 将每对组合的左边一个指定为0,右边一个指定为1(或相反)。
3、哈夫曼编码的局限性
利用哈夫曼编码,每个符号的编码长度只能为整数,所以如果字符集的概率分布不是 2-n 的形式,则无法达到熵极限。
- 译码复杂。
- 没有错误保护功能。
- 需要实现知道输入字符集的概率分布。
- 输入字符数受限于可实现的码表尺寸。