《哈夫曼编码.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  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文档。上传文档
查看更多
哈夫曼编码 系别:电子通信工程系 班级:电信121 姓名:付玉峰 学号:120407111 1发展 信息论是在人们长期的通信工程实践中,由通信技术和概率论、随机过程和数理统计相结合而逐步发展起来的一门学科。人们公认的信息论的奠基人是当代伟大的数学家、美国贝尔实验室杰出的科学家香农,他在1948年发表了著名的论文《通信的数学理论》,为信息论奠定了理论基础。近半个世纪以来,以通信理论为核心的经典信息论,正以信息技术为物化手段,向高精尖方向迅猛发展,并以神奇般的力量把人类社会推入了信息时代。随着信息理论的迅猛发展和信息概念的不断深化,信息论所涉及的内容早已超越了狭义的通信工程范畴,进入了信息科学领域。 2 概念和原理 哈夫曼编码(Huffman?Coding)是一种编码方式,以哈夫曼树—即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。?在计算机信息处理中,“哈夫曼编码”是一种一致性编码法(又称熵编码法),用于数据的无损耗压缩。这一术语是指使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。这种方法是由David.A.Huffman发展起来的。?例如,在英文中,e的出现概率很高,而z的出现概率则最低。当利用哈夫曼编码对一篇英文进行压缩时,e极有可能用一个位(bit)来表示,而z则可能花去25个位(不是26)。用普通的表示方法时,每个英文字母均占用一个字节(byte),即8个位。二者相比,e使用了一般编码的1/8的长度,z则使用了3倍多。倘若我们能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。 3?概要设计 3.1抽象数据类型定义? ADT?BinaryTree{? 数据对象:D={ai|ai∈ElemSet,i=1,2,...,n,?n≥0}?数据关系:? 若D为空集,则称为空树。? 若D仅为一个数据元素,则R为空集,否则R={H},H是如下的二元关系:????????(1)再D中存在唯一的称为根的数据元素root,它在关系H下无前驱。????????(2)若D-{root}空集,则存在一个划分D1,D2,···,Dm(m0)。????????(3)对应于D-{root}的划分,H-{root,X1},···,root,Xm}???有唯一的一个划分H1,H2,···,Hm(m0)。 基本操作:?InitTree(T)? 操作结果:构造空树T。?DestroyTree(T)?初始条件:树T已存在。?操作结果:树T被销毁。?ClearTree(T)? 初始条件:树T已存在。?操作结果:将树T清为空栈。?TreeEmpty(T)? 初始条件:树T已存在。? 操作结果:若树T为空,则返回TRUE,否则FALSE。?TreeDepth(T)? 初始条件:树T已存在。?操作结果:返回T的深度。?Root(T)? 初始条件:树T已存在。?操作结果:返回树T的根。 3.2总体框图以及功能描述 4?详细设计? 4.1数据类型的定义?? (1)哈夫曼树节点类型? ????struct?hufmtreenode{???????????????//哈弗曼树结点数据类型?????????char?data;? ????????float?weight;?????????????????//结点权值? ? ???????int?parent,lchild,rchild;???????//父结点,左、右孩子结点? ?????};? (2)哈夫曼树类型? ????struct?hufmtree{???????????????????//哈弗曼树数据类型?????????hufmtreenode?*node;?????????//结点数组(根据n的值动态分配)?? ???????int?n;????????????????????????//叶子结点数?};? (3)哈夫曼编码数据类型? ???struct?Codetype{?????????????????????//哈弗曼编码数据类型????????char?*bits;????????????????????//编码流数组,?? ??????int?start;//编码实际在编码流数组里的开始位置?} 4.2主要模块的算法描述? (1)主函数:?? ???????void?main()?????{????

文档评论(0)

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

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

1亿VIP精品文档

相关文档