困惑霍夫曼树的应用

时间:2015-01-09 14:18:48

标签: algorithm

霍夫曼树算法的现实应用是什么?它是如何贪婪的方法?  我需要在计算机科学问题解决中使用霍夫曼树的简要解释,我想知道在我的日常编程中我可以在哪里使用这个算法。

1 个答案:

答案 0 :(得分:1)

霍夫曼树基于它们的分布为一组令牌中的每一个分配具有前缀属性的可变长度位模式,以便产生非常紧凑的输出编码。净效果:令牌流的字节版本具有高熵。这意味着它的编码非常有效。

想象一下,你有一千个可能出现在流中的令牌。但其中一个在40%的时间内发生,其余的大致均匀分布。使用霍夫曼树,您最终会将其存储在比其他位数更少的位中。就好像你发明了一个速记,除了树在整个概率范围内做到了。令牌越有可能,位越少。

因此它经常用于压缩。像GZip这样的东西尝试用较少数量的标记来描述原始数据,然后使用Huffman尝试使它生成的标记流尽可能小。

这很贪婪,因为树是通过重复从输入集中选择最可能的剩余令牌来构建的。