您现在的位置:首页 --> 查看专题: HUFFMAN
前两天发布那个rsync算法后,想看看数据压缩的算法,知道一个经典的压缩算法Huffman算法。你应该听说过 David Huffman 和他的经典的压缩算法—— Huffman Code,这是一种通过字符出现频率,Priority Queue,和二叉树来进行的一种压缩算法,这种二叉树又叫Huffman二叉树 —— 一种带权重的树。但是网上查了一下,中文社区内好像没有把这个算法说得很清楚的文章,尤其是树的构造,而正好看到一篇国外的文章《A Simple Example of Huffman Code on a String》,其中的例子浅显易懂,相当不错,我就转了过来。注意,我没有对此文完全翻译。
HUFFMAN主要有两个问题,一是需要扫描两遍输入数据,二是树状结构编解码慢。对于第一个问题,基于统计信息的熵编码都很难解决这个问题,可以设计成自适应的,根据统计数据不停地改变调整码树,这会比较麻烦。对于第二个问题,这跟硬件有关系,二叉树的编码、解码都是O(1)的,复杂度上不能更优了,但是计算机硬件的特性,会使得树状结构遍历过程中CACHE MISS比较严重,如果码树比较小的话,可以都放在一级CACHE,性能会好很多,...
[ 共2篇文章 ][ 第1页/共1页 ][ 1 ]
近3天十大热文
- [16] Go Reflect 性能
- [14] iOS可视化编程 Tips 之“无需代码设置
- [13] 浅谈Web安全验证码
- [13] iTerm2 (Mac Terminal)
- [13] 浏览器的工作原理:新式网络浏览器幕后揭秘
- [12] 界面设计速成
- [12] 手把手教你CSRF防护
- [12] 基于HTTP缓存轻松实现客户端应用的离线支持
- [11] iOS下自己动手造无限循环图片轮播
- [11] 最萌域名.cat背后的故事:加泰与西班牙政府
赞助商广告