浅谈无损压缩算法.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈无损压缩算法   摘要:该文介绍了经典的Huffman编码和目前压缩比最高的PAQ系列压缩算法,包括Huffman编码的原型,改进后的自适应Huffman编码及他们各自的实现方法和优缺点,PAQ系列压缩算法是如何进行上下文建模,预测和编码的。   关键词:无损压缩;Huffman;PAQ   中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)22-5466-02   在信息高速发展的今天,人们进行交流沟通的数据量相当的庞大,如何更好,更快的传输和存储数据已成为一个重大的问题,单纯地提高存储容量,并不能从根本解决问题,而数据的压缩是解决这一问题的重要方法。从无损音乐格式ape到文档的存储,数据的无损压缩已广泛应用于各个领域。   1 无损压缩概述   数据压缩是按照特定的编码机制用比未经编码少的数据位(或者其它信息相关的单位)表示信息的过程。无损压缩是利用数据的统计冗余进行压缩,可完全回复原始数据而不引起任何失真,但压缩率是受到数据统计冗余度的理论限制,一般为20%到50%。这类方法广泛用于文本数据,程序和特殊应用场合的图像数据的压缩。   2 无损压缩算法Huffman和PAQ   2.1 基于Huffman编码的压缩   2.1.1 静态Huffman和动态Huffman编码   Huffman编码使用变长编码表对源符号进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现次数多的符号使用较短的编码,出现次数少的则使用较长的编码,这便使编码之后的符号串的平均长度降低,从而达到无损压缩数据的目的。Huffman编码是通过构建最优二叉树即带权路径长度最小的二叉树,来实现对数据的编码。Huffman编码的过程:   (1)对数据中的源符号的种类和数量进行统计,共有n个源符号,其出现的频率分别为w1,w2...wn;   (2)根据得到的n个权值{w1,w2...wn},构成n个二叉树的集合M={T1,T2...Tn},其中每棵二叉树Ti仅有一个带权为wi的根结点,其左右子树都为空;   (3)在M中选取两棵根结点的权值最小的作为左右子树,构造一个新的二叉树,设置新的二叉树的根结点的权值为左右子树根结点权值之和;   (4)在M中删除选中的两棵子树,同生死将新生成的二叉树加入到M中;   (5)重复(3)和(4),直到M中只含有一棵树HTree为止,HTree即为所求的哈弗曼树;   (6)从根结点出发对HTree进行先序遍历(向左记0,向右记1),从根结点到每个叶子结点的路径即为各个源符号所对应的huffman编码。    这种静态的huffman算法实质是统计源符号,然后对其编码,这样需要对数据进行扫描统计和编码压缩两次操作,压缩速度较慢,实际运用不广泛。为了解决静态Huffman编码的缺点,产生了动态Huffman编码(又称自适应Huffman编码),它只需要对数据进行一次扫描,不需要事先构造Huffman树,而是随着编码的进行逐步构建Huffman树,随着编码的进行同一字符的编码也会随之发生变化。动态Huffman编码流程:   (1)初始化编码树,仅含有一个结点,包含符号NYT(NYT是逸出码,不同于任何一个传送的符号,当有一个尚未在编码树中的符号需要被编码时,输出NYT编码,然后跟着符号的原始表达式),权值为0,符号集合M为空;   (2)扫描符号fi,如果fi ?埸M,将fi加入到M中,用包含新符号和新NYT的子树替换原NYT(替换后NYT居左,新符号结点居右),并输出由逸出码引导的编码。并使原NYT及字符结点的权值赋为1,改变当前结点为原NYT结点。如果fi?奂M,对该符号编码并输出,更新Huffman树。   动态Huffman编码中更新Huffman树的步骤:   (1)输入字符所在结点的权重加1,   (2)检测权重更改后Huffman树是否满足兄弟特性(一棵二叉代码树的每个节点(除根外)都有一个兄弟,而且所有节点能够以权的非递增次序排列并使得每个节点都与它的兄弟相邻,则这棵树就称为具有兄弟特性),满足则进行(4)操作,不满足则(3)操作。   (3)不满足兄弟特性时,该结点与权重小于该结点,但离根结点近的结点(包含其子树)进行交换,如果有多个结点满足,则与最右端结点交换。   (4)满足兄弟特性时,根据调整后的Huffman树 ,按结点指针依次调整各结点的父结点 权重。   2.1.2 Huffman编码的缺陷   Huffman编码没有错误保护功能,一旦一位出错,那么后面的代码也会出错;Huffmam编码是可变长度编码,很难随意查找或调用压缩文件中的内容。   2.2 PAQ压缩算法   2.2.1 PA

文档评论(0)

heroliuguan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档