演示网址:http://huffman.sinaapp.com/ 源文件下载地址:http://xiaocao.u.qiniudn.com/work/huffman-2013-12-19.zip 概述下: ????哈夫曼树─即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。...
分类:
Web程序 时间:
2014-11-29 13:22:40
阅读次数:
409
前言 哈夫曼编码(Huffman coding)是一种可变长的前缀码。哈夫曼编码使用的算法是David A. Huffman还是在MIT的学生时提出的,并且在1952年发表了名为《A Method for the Construction of Minimum-Redundancy Codes》的....
分类:
其他好文 时间:
2014-11-27 23:24:27
阅读次数:
448
哈夫曼编码
哈夫曼编码虽然简单,但是是一个非常重要的编码方式,它解决了数据存储的一个非常重要的问题:压缩!它的编码方式是最优的,无损的,尤其在图像中使用的非常多。下面讲下它的原理。
编码方式
哈夫曼编码的构造是依据权值的大小来实现的。首先根据权值构造哈夫曼树,然后对哈夫曼树进行逆向遍历,从而找到每个节点的编码方式。
例如:
abbcccdddde这个是一个字符串,一共有5...
分类:
编程语言 时间:
2014-11-27 06:48:42
阅读次数:
536
哈夫曼编码是利?用贪?心算法进?行?文本压缩的算法,其算法思想是?首先统计?文件中各字符出现的次数, 保存到数组中,然后将各字符按照次数升序排序,挑选次数最?小的两个元素进?行连结形成?子树,?子 树的次数等于两节点的次数之和,接着把两个元素从数组删除,将?子树放?入数组,重新排序,重复 以上步骤。为了解压,在压缩时?首先往?文件中填?入huffman编码的映射表的?长度,该表的序列化字符串,编码...
分类:
编程语言 时间:
2014-11-21 23:21:08
阅读次数:
444
/*博客地址black4yl.blog.51cto.com*/
#include"stdio.h"
#include"malloc.h"
#include"string.h"
typedefchar*HuffmanCode;/*动态分配数组,存储哈夫曼编码*/
typedefstruct
{
charname;/*存放名称*/
unsignedintweight;/*用来存放各个结点的权值*/
unsignedintparent,LChild..
分类:
其他好文 时间:
2014-11-20 23:57:38
阅读次数:
312
作者:jostree转载请注明出处http://www.cnblogs.com/jostree/p/4096079.html使用优先队列实现,需要注意以下几点:1.在使用priority_queue时,内部需要存储哈夫曼树节点的指针,而不能是节点。因为构建哈夫曼树时,需要把其左右指针指向孩子,而如果...
分类:
其他好文 时间:
2014-11-20 23:26:21
阅读次数:
297
在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN)树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的...
分类:
其他好文 时间:
2014-11-19 21:47:35
阅读次数:
219
??
改编自下面是证明链接(英文)
http://algoviz.org/OpenDSA/Books/OpenDSA/html/HuffProof.html
====================
设buildHuff是创建哈夫曼树的函数。
引理1:给定W = {w1, w2, w3...,
wn} (n >= 2), 以此集合构建相应的哈夫曼树。令wi, wj 是W中权重最...
分类:
其他好文 时间:
2014-11-18 13:35:03
阅读次数:
350
一、哈夫曼树的概念和定义
什么是哈夫曼树?
让我们先举一个例子。
判定树:
在很多问题的处理过程中,需要进行大量的条件判断,这些判断结构的设计直接影响着程序的执行效率。例如,编制一个程序,将百分制转换成五个等级输出。大家可能认为这个程序很简单,并且很快就可以用下列形式编写出来:
[cpp] view
plaincopy...
分类:
其他好文 时间:
2014-11-13 18:56:34
阅读次数:
371
介绍哈夫曼编码之前先介绍一下哈弗曼树:哈夫曼树:哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的带权路径长度记为WPL=(W1*L1+W2*L2+W3*L3...
分类:
其他好文 时间:
2014-11-11 07:00:57
阅读次数:
260