gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分;deflate是一种压缩算法,是huffman编码的一种加强。deflate与gzip解压的代码几乎相同,可以合成一块代码。区别仅有:deflate使用inflateInit(),而gzip使用inflateInit2()进...
分类:
其他好文 时间:
2015-02-03 18:55:44
阅读次数:
164
GZip和deflate:gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分;deflate是一种压缩算法,是huffman编码的一种加强。deflate与gzip解压的代码几乎相同,可以合成一块代码。区别仅有:deflate使用inflateInit(),而gzip使用in...
分类:
其他好文 时间:
2015-01-23 18:14:10
阅读次数:
207
题意:
输出字符串的长度*8、huffman编码长度、两者比值。
题解:
huffman编码:
我们发现对于一个字符串,如果我们把它变成01串,比如ABCDE
那么我们需要
A : 000
B : 001
C : 010
D : 100
E : 101
来表示每一个字符,然后识别的时候就是每三个一识别。
这种编码叫定长编码。
显然对于一个串,它的定长编码长...
分类:
其他好文 时间:
2015-01-22 18:16:34
阅读次数:
175
学习Huffman编码最大的收获是学会了STL中优先队列的使用以及在使用的时候要注意的问题:在使用自定义数据类型的时候,优先队列要重载自己的比较操作符。
关于Huffman树怎么讲解请看算法导论讲解,原理真的很简单,不过要写出完整的代码难点就在于优先队列的使用。不废话了啊,再次强调,想把原理弄清楚,请看算法导论,树上的讲解比网上什么垃圾讲解不知道清晰多少,一看就懂。-----------...
分类:
编程语言 时间:
2014-12-22 09:30:56
阅读次数:
209
今天的课程设计终于查完了,做了将近一周的Huffman也暂时告一段落了。其间用到了压缩,又开拓了眼界,又认识了一个头文件,那我们接下来就小结一下用到的压缩方法。
压缩:
while(str.size() >= 8){
string str2(str, 0, 8); //从str中读取前8位
bitset foo(str2);...
分类:
编程语言 时间:
2014-12-19 19:08:39
阅读次数:
309
哈夫曼编码是利?用贪?心算法进?行?文本压缩的算法,其算法思想是?首先统计?文件中各字符出现的次数, 保存到数组中,然后将各字符按照次数升序排序,挑选次数最?小的两个元素进?行连结形成?子树,?子 树的次数等于两节点的次数之和,接着把两个元素从数组删除,将?子树放?入数组,重新排序,重复 以上步骤。为了解压,在压缩时?首先往?文件中填?入huffman编码的映射表的?长度,该表的序列化字符串,编码...
分类:
编程语言 时间:
2014-11-21 23:21:08
阅读次数:
444
Huffman编码是之前一道算法作业题,最近又要复习考试了,先把这个的代码再看一下吧。算法原理很简单,使用优先队列将两个节点弹出,然后合并节点之后再入队列如此循环做下去即可。主要问题在于树的修改问题,出队的树进行修改,然后将其合并成为一个新的树,在弹出的时候,树的两个节点地址已定,但是由于循环这两个...
分类:
其他好文 时间:
2014-11-14 22:43:14
阅读次数:
272
哈夫曼算法原理Wikipedia上面说的非常清楚了,这里我就不再赘述,直接贴过来了。1952年, David A. Huffman提出了一个不同的算法,这个算法能够为不论什么的可能性提供出一个理想的树。香农-范诺编码(Shanno-Fano)是从树的根节点到叶子节点所进行的的编码,哈夫曼编码算法却是...
分类:
其他好文 时间:
2014-11-09 12:31:44
阅读次数:
274
构造huffman编码,果断对字符进行状态压缩。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 #define MAXN 255 8 char s[MAXN]; 9 int cnt[27], l...
分类:
其他好文 时间:
2014-11-06 23:20:10
阅读次数:
326