赫夫曼编码是可变字长编码的一种。 Huffman 于 1952 年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字。
特性
赫夫曼编码是一种无前缀编码。解码时不会混淆。其主要应用在数据压缩,加密解密等场合。
构建
假如现在有 A , B , C , D , E 这五个字符,它们分别出现的频率(即权值)为 5, 4, 3, 2, 1。通过构建赫夫曼树可以对这五个字符进行编码了。首先将这个五个字符把树中的权值替换掉,其次给树的左分支标记位 0,右分支标记为 1,然后从根结点一直到到该字符所在结点所走过的分支(标记的数)连接在一起所得的值就是该字符的赫夫曼编码:
如图,所得编码结果为:
字符 | 编码 |
---|---|
A | 11 |
B | 10 |
C | 00 |
D | 011 |
E | 010 |
笔记来源