1构建哈夫曼树。(利用队列的数据结构,不断获取最小的两个,退出队列并使之成为新节点的左右子树。然后将新节点插入队列。如此循环……)根据用户输入的字符串,统计每个字符出现次数。设置权重。建立队列。队列中的节点是二叉树的节点(有左指针,和右指针)。建新的结点,左右指针指向队列的最后两个(那两个退出队列)...
分类:
编程语言 时间:
2015-07-12 23:07:38
阅读次数:
335
赫夫曼树的应用
1、哈夫曼编码
在数据通信中,需要将传送的文字转换成二进制的字符串,用0,1码的不同排列来表示字符。例如,需传送的报文为“AFTER DATA EAR ARE ART AREA”,这里用到的字符集为“A,E,R,T,F,D”,各字母出现的次数为{8,4,5,3,1,1}。现要求为这些字母设计编码。要区别6个字母,最简单的二进制编码方式是等长编码,固定采用3位二进制,可分别用0...
分类:
其他好文 时间:
2015-07-09 19:56:25
阅读次数:
312
信源编码算法
费诺编码 Fano coding
哈夫曼编码 Huffman coding
费诺编码编码步骤
将信源符号按照其概率大小,从大到小排列;
将这一组信源符号分成概率之和尽可能接近或者相等的一组(即两组分别的概率和之间的差尽可能小!);
将上面一组符号编码成0,下面一组编码成1,反之亦可;
将已经分好的组重复步骤2,3,直到不能再进行分组为止;
从左到右一次写出码字。
费诺编码演示已知:...
分类:
编程语言 时间:
2015-06-20 15:43:47
阅读次数:
409
常见数据压缩算法压缩文件压缩主要有两个好处,一是减少了存储文件所占空间,另一个就是为数据传输提速。在hadoop大数据的背景下,这两点尤为重要,那么我现在就先来了解下hadoop中的文件压缩。hadoop里支持很多种压缩格式,我们看一个表格:
LZO和LZ4算法已经不在Hadoop1.x中使用了。1、DEFLATE是同时使用了LZ77与哈夫曼编码的一个无损数据压缩算法,
源代码可以在zlib...
分类:
编程语言 时间:
2015-06-05 21:17:42
阅读次数:
354
1 /******************************************************** 2 ** 功能:求哈夫曼编码 ** 3 ** 时间:2015年5月10号 ...
分类:
其他好文 时间:
2015-05-13 16:06:25
阅读次数:
97
最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会。
希望这些能提供给初学者一些参考。
在VC++6.0下可运行,当初还写了不少注释。
【问题描述】
根据给定字符的使用频率,为其设计哈夫曼编码
【基本要求】
·功能:求出n个字符的哈夫曼编码
·输入:输入n个字符和字符在电文中的使...
分类:
其他好文 时间:
2015-05-13 10:43:54
阅读次数:
116
1 /* 2 哈夫曼编码C语言实现 3 */ 4 // n个数字,对应n个权值 5 // n作为主输入参数,确定需要编码的数量 6 // 输入n个权值,进行加权求解 7 // 求解最小生成树 8 // 9 // 涉及数据成员: 10 // ...
分类:
其他好文 时间:
2015-05-10 17:01:37
阅读次数:
113
题目链接:
Huffman codes
题意:
先给出N个节点的出现次数
再给出M种编码方式
判断每种编码方式是否能构成哈夫曼树
题解:
判断哈夫曼编码的条件有两个:
1 哈夫曼编码不唯一,但它的WPL(带权路径长度)一定唯一
2 短码不能是长码的前缀
首先可以使用STL优先队列 根据 WPL=所有非叶节点的权值之和 求出...
分类:
其他好文 时间:
2015-05-08 22:14:30
阅读次数:
172
在前年暑假的时候,用C实现了哈夫曼编译码的功能,见文章《哈夫曼树及编译码》。不过在通信仿真中,经常要使用到Matlab编程,所以为了方便起见,这里用Matlab实现的哈夫曼编码的功能。至于哈夫曼编译码的基本原理,我们可以参考之前的文章《哈夫曼树及编译码》,里面有详细的说明及图解过程。下面直接给出具体的Matlab实现的哈夫曼编码函数,由于程序中注释还算比较详细,在此就不予与说明:
functio...
分类:
其他好文 时间:
2015-05-04 11:54:40
阅读次数:
350