Huffman编码实现压缩解压缩】的更多相关文章

这是我们的课程中布置的作业.找一些资料将作业完毕,顺便将其写到博客,以后看起来也方便. 原理介绍 什么是Huffman压缩 Huffman( 哈夫曼 ) 算法在上世纪五十年代初提出来了,它是一种无损压缩方法,在压缩过程中不会丢失信息熵.并且能够证明 Huffman 算法在无损压缩算法中是最优的. Huffman 原理简单,实现起来也不困难,在如今的主流压缩软件得到了广泛的应用. 相应用程序.重要资料等绝对不同意信息丢失的压缩场合, Huffman 算法是非常好的选择. 怎么实现Huffman压缩…
一.Huffman树 定义: 给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径达到最小,这样的二叉树称为最优二叉树,也称为霍夫曼树(Huffman树). 特点:     Huffman树是带权路径长度最短的树,权值较大的节点离根节点较近 权值 = 当前节点的值 * 层数,wpl最小的值,就是Huffman树 创建步骤  举例  {13,7,8,3,29,6,1} 1.从小到大进行排序,将每一个数据视为一个节点,每一个节点都可视为一个二叉树 2.取出根节点权值两个最小的二叉树 3.组…
前言 最近基于huffman编码和最小堆排序算法实现了一个压缩.解压缩的小程序.其源代码已经上传到github上面: Jcompress下载地址 .在本人的github上面有一个叫Utility的repository,该分类下面有一个名为Jcompress的目录便是本文所述的压缩.解压缩小程序的源代码.后续会在Utility下面增加其他一些实用的小程序,比如基于socket的文件断点下载小程序等等.如果你读了此文觉得还不错,不防给笔者的github点个star, 哈哈.在正式介绍Jcompres…
以前没事的时候写的,c++写的,原理很简单,代码如下: #include <cstdio> #include <cstdlib> #include <iostream> #include <string> //#include <bitset> #include <fstream> #include <ctime> ; using namespace std; //哈夫曼树的树节点 struct HaffTreeNode{…
1.MD5加密 /// <summary> /// 使用MD5加密算法 /// </summary> /// <param name="md5MessageStr">需要加密的字符串</param> /// <returns>加密后返回字符串</returns> public static string GetMD5String(string md5MessageStr) { using (MD5 md5 = ne…
按:去年接手一个项目,涉及到一个一个叫做Mxpeg的非主流视频编码格式,编解码器是厂商以源代码形式提供的,但是可能代码写的不算健壮,以至于我们tcp直连设备很正常,但是经过一个UDP数据分发服务器之后,在偶尔有丢包的情况下解码器会偶发崩溃,翻了翻他们的代码觉得可能问题出在Huffman这一块.水平有限也没有看太懂他们的源码,而且我也不是科班出身当时对Huffman编码算法只是知道这么个名字,还好服务端软件那边做了修改,解决了丢包的问题.在回家过年的火车上想起这件事,阅读了一些关于Huffman编…
1. 压缩编码概述 数据压缩在日常生活极为常见,平常所用到jpg.mp3均采用数据压缩(采用Huffman编码)以减少占用空间.编码\(C\)是指从字符空间\(A\)到码字表\(X\)的映射.数据压缩编码指编码后信息的长度较于原始信息要短.本文试图探讨Huffman编码是如何保证唯一可译性.如何压缩.以及压缩效率如何? 前缀码 前缀码的任意一码字均不为其他码字的前缀,此保证了编码的唯一可译性.比如码字表{0, 01, 11, 1},0为01的前缀,1为11的前缀:当遇到字符文本011100,是应…
huffman压缩是一种压缩算法,其中经典的部分就是根据字符出现的频率建立huffman树,然后根据huffman树的构建结果标示每个字符.huffman编码也称为前缀编码,就是每个字符的表示形式不是另一个字符表示的前缀.如果学过c语言版本的数据结构的话,那么会知道其上面的算法的时间复杂度是O(N^2), 也算是比较复杂的,那么首先贴上这个版本算法的代码: #include<iostream> #include<string> using namespace std; typede…
前两天发布那个rsync算法后,想看看数据压缩的算法,知道一个经典的压缩算法Huffman算法.相信大家应该听说过 David Huffman 和他的压缩算法—— Huffman Code,一种通过字符出现频率,Priority Queue,和二叉树来进行的一种压缩算法,这种二叉树又叫Huffman二叉树 —— 一种带权重的树.从学校毕业很长时间的我忘了这个算法,但是网上查了一下,中文社区内好像没有把这个算法说得很清楚的文章,尤其是树的构造,而正好看到一篇国外的文章<A Simple Examp…
转自http://coolshell.cn/articles/7459.html 前两天发布那个rsync算法后,想看看数据压缩的算法,知道一个经典的压缩算法Huffman算法.相信大家应该听说过 David Huffman 和他的压缩算法—— Huffman Code,一种通过字符出现频率,Priority Queue,和二叉树来进行的一种压缩算法,这种二叉树又叫Huffman二叉树 —— 一种带权重的树.从学校毕业很长时间的我忘了这个算法,但是网上查了一下,中文社区内好像没有把这个算法说得很…