哈夫曼树
哈夫曼(Huffman)树,又称为 最优树 ,是一类带权路径长度最短的树,有着广泛的应用,常用的JPEG图片格式就是采用哈夫曼树进行编码压缩的。在这里我们将要讨论哈夫曼二叉树(最优二叉树)的概念及其算法。
1.问题的引入
将树结构用于实际,常常要考虑一个问题,即如何设计一棵二叉树,使得执行路径最短,即算法的效率最高。
例如:现有一批球磨机上的铁球,需要将它分成四类:直径不大于20的属于第一类;直径大于20而不大于50的属于第二类;直径大于50而不大于100的属于第三类;其余的属于第四类;假定这批球中属于第一、二、三、四类铁球的个数之比例是1:2:3:4。
我们可以把这个判断过程表示为下图中的两种方法:
那么究竟将这个判断过程表示成哪一个判断框,才能使其执行时间最短呢?让我们对上述判断框做一具体的分析。
假设有1000个铁球,各类铁球的个数分别为:100、200、300、400;
对于图(a)和 图(b)比较的次数分别如下表所示:
图(a) |
|
图(b) |
||||
序号 |
比较式 |
比较次数 |
序号 |
比较式 |
比较次数 |
|
1 |
a<=20 |
1000 |
1 |
a>100 |
1000 |
|
2 |
a<=50 |
900 |
2 |
a>50 |
600 |
|
3 |
a< |