目录
- 哈夫曼编码(Huffman Coding)
- 哈夫曼树
- 构建哈夫曼树
- 构建哈夫曼编码
一 哈夫曼编码(Huffman Coding)
哈夫曼编码,又称为霍夫曼编码,它是现代压缩算法的基础
假设要把字符串【ABBBCCCCCCCCDDDDDDEE】转成二进制编码进行传输
-
可以转成ASCII编码(6569,10000011000101),但是有点冗长,如果希望编码更短呢?
-
可以先约定5个字母对应的二进制
A | B | C | D | E |
---|---|---|---|---|
000 | 001 | 010 | 011 | 100 |
对应的二进制编码:
000001001001010010010010010010010010011011011011011011100100
一共20个字母,转成了60个二进制位
如果使用哈夫曼编码,可以压缩至41个二进制位,约为原来长度的68.3%
二 哈夫曼树
先计算出每个字母的出现频率(权值,这里直接用出现次数),【ABBBCCCCCCCCDDDDDDEE】
A | B | C | D | E |
---|