赫夫曼编码是可变字长编码的一种。 Huffman 于 1952 年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字。

特性

赫夫曼编码是一种无前缀编码。解码时不会混淆。其主要应用在数据压缩,加密解密等场合。

构建

假如现在有 A , B , C , D , E 这五个字符,它们分别出现的频率(即权值)为 5, 4, 3, 2, 1。通过构建赫夫曼树可以对这五个字符进行编码了。首先将这个五个字符把树中的权值替换掉,其次给树的左分支标记位 0,右分支标记为 1,然后从根结点一直到到该字符所在结点所走过的分支(标记的数)连接在一起所得的值就是该字符的赫夫曼编码:

如图,所得编码结果为:

字符编码
A11
B10
C00
D011
E010

笔记来源