电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

课程设计(论文)哈夫曼编码及其应用

16页
  • 卖家[上传人]:ni****g
  • 文档编号:457326161
  • 上传时间:2022-09-01
  • 文档格式:DOC
  • 文档大小:329.50KB
  • / 16 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、图论论文论文题目 学生姓名 专业班级 学 号 邮 箱 2015年 12月 20日目 录摘要1第一章 哈夫曼树21.1 哈夫曼树的基本概念2第二章 哈夫曼算法构造32.1 哈夫曼树的构造算法32.2 举例说明其构造过程3第三章 哈夫曼树的应用53.1 用于通信编码5第四章 运行结果6第五章 总结7参考文献:7附录8哈夫曼编码及其应用摘要在现代社会,通信的发展,使得现代社会更加丰富多彩,我们可以随时随地在任何 地方了解到世界各地的信息,而这又必须依赖信息的传递。在信息化高度发达的当今社会,我们必须对信息的传递有着较高的要求,我们希望信息在传递的过程中,能够保持节省性和保密性和无损性,而著名的霍夫曼编码就能够达到这样的要求。因此研究霍夫曼编码对信息的压缩和解压就时相当有必要的,我们用C+对霍夫曼编码给出简单的算法以实现对文件的压缩和解压。哈夫曼树是由哈夫曼于1951年所创立并改进的,他本人也根据哈夫曼树提出了相应的编码.由于哈夫曼树是具有最小加权路径长度的二叉树,故哈夫曼编码能产生较短的码文.基于这个优势,在信息化高度发达的当今社会,对信息的传递也有着较高要求的我们,希望信息在传递过程中,能

      2、够保持节省性和保密性,哈夫曼编码则很好的满足了这方面的要求,因而对其的研究是相当有必要的.关键字:哈夫曼树,二叉树,信息压缩编码第一章 哈夫曼树1.1 哈夫曼树的基本概念首先要了解关于树的一些概念。定义1.1 在一棵树中,从一个结点往下可以达到的孩子或子孙结点之间的通路,称为路径.定义1.2 若将树中结点都赋给一个具有某种含义的数值,则这个数值称为该结点的权.定义1.3 由根结点到所有叶结点的路径长度之和称为二叉树的路径长度.定义1.4 从根结点到叶结点的路径长度与相应结点权值之积的和叫做二叉树的带权路径长度.定义1.5 最优二叉树,也称哈夫曼树,实质是对一组带有确定权值的叶结点,构造的具有最小带权路径长度的二叉树.如果二叉树中的叶结点都具有一定的权值,则可将这一概念推广,设二叉树有个带权值的叶结点,那么,二叉树的带权路径长度应记为:,其中为第个叶结点的权值;为第个叶结点的路径长度.如下图: 图在图中,即为根结点,而则为叶结点,若的权值分别为则二叉树路径长度为2,二叉树的带权路径长度为7,即.例 下面我们结合实例来说明哈夫曼树.如图1.2.2 按照的计算方法,经过计算比较后,我们发现,

      3、图的值最小,它即为哈夫曼树.由此可见,由相同权值的一组叶子结点所构成的二叉树有不同的形态和不同的带权路径长度.那么如何找到带权路径长度最小的二叉树呢?根据哈夫曼树的定义,一棵二叉树要使其值最小,必须使权值越大的叶结点越靠近根结点,而权值越小的叶结点越远离根结点,这样计算树的带权路径长度时,自然树会具有最小的带权路径长度,这是生成算法的一种基本思想.第二章 哈夫曼算法构造哈夫曼树,实质是对一组带有确定权值的叶结点,构造的具有最小带权路径长度的二叉树.尽管哈夫曼树可以通过比较后得出,可是在运算过程中往往会出现一些问题,使其实现起来并不容易,因而我们可以应用编程来有效地解决这个问题.2.1 哈夫曼树的构造算法为了构造权值为的哈夫曼树,哈夫曼提出了一种构造算法,现将其陈述如下:步骤1 根据题目给定的个权值构造有下列棵二叉树的集合 ,其中每棵二叉树中只有一个带权为的根结点,其 左右树均为空;步骤2 在中选取两棵根结点的权值最小的树作为左、右子树构造一棵新的二 叉树,且置新的二叉树的根结点的权值为其左、右子树上根结点的权值之 和;步骤3 在中删除这两棵树,同时将新得到的二叉树加入中;步骤4 重复步

      4、骤2和步骤3,直到只含有一棵树为止,这棵树便是哈夫曼树.2.2 举例说明其构造过程假设叶结点权值集合为的哈夫曼树的构造第一步 我们根据给定的4个权值来构造4棵二叉树的集合.第二步 在找出权值中最小的两个作为新二叉树的左右子树,且置新的二叉树根结点权值是其左右结点权值之和.第三步 将次小的树与新生成的树再作为左右子树生成权值为6的新树;第四步 再次将权值为4的树在同上一个权值为6的树再次生成新树即可.从以上过程可以计算出这棵二叉树的带权路径长度为19.第三章 哈夫曼树的应用3.1 用于通信编码在电报通讯中,电文是以二进制的序列传送的.在发送端需要将电文中的字符序列转换成二进制的序列,而在接收端又需要把接收的序列转换成对应的字符序列.例如给出一段电文: 电文中只使用了这四种字符,各字符出现的频度分别是,若进行等长编码,需要两位二进制位,可依次编码为 则所发电文是: 采用不等长编码要避免译码的二义性.例如,字符的编码是字符的编码的前缀部分.这样对于代码串,既是的代码,也是和的代码,因此,这样的编码不能保证译码的唯一性.所以,若对某一字符集进行不等长编码,可用该字符集中的每个字符作为叶子结点生

      5、成一棵编码二叉树,且约定左子树表示字符,右子树表示字符,则可以用从根结点到叶结点路径上的分支字符组成的字符串作为该叶子结点字符的编码.为了获得传送电文的最短长度,可将每个字符出现的频率作为字符结点的权值赋给该结点,从而求出此树的最小带权路径长度就等于求出了传送电文的最短长度.因此,求传送电文的最短长度问题就转化为求由字符集中所有字符作为叶子结点和由字符的出现频度作为其权值所产生的哈夫曼树的问题.例如,各字符出现的概率为,对各概率取整,得到各字符的权值,利用它们构造哈夫曼树,如图所示,则各字符的编码为:. 在构造了哈夫曼树之后,为求编码需从叶子结点出发走一条从叶子到根的路径,而为求译码需从根出发走一条根到叶子的路径.故哈夫曼编码成功地应用于离散数学与数据结构中的最优二叉树寻找.第四章 运行结果图4.1 编码界面图4.2解码界面第五章 总结程序经运行得到很好的实现,但程序中仍存在一些不足之处,需要再加以改进.通过此次论文设计很好的增强了我对编程及二叉树理论的认识和对C+软件的应用能力,也是将理论知识运用于解决实际问题的一次新尝试.并且对图论这门学科有更深刻的认识,感觉应用范围非常广泛。通过

      6、本课程的学习,我也认识了自己还有很多不足,需要进一步学习的地方,在接下来的学习中我会花更多时间,来认真加深知识理解与运用。参考文献:1 张清华.图论及其应用.M.北京:清华大学出版社,2013:134-231.2 严蔚敏.数据结构 M .北京:清华大学出版社,1995:145-147.3 谭浩强.C+面向对象程序设计 M.北京:清华大学出版社,2007:134-231.附录#include #include #include #define MAXLEN 100 typedef struct Huffmantree char ch; /*键值*/ int weight,mark; /*weight为权值,mark为标志域*/ struct Huffmantree *parent,*lchild,*rchild,*next; Hftree,*linktree; /*整理输入的字符串,合并相同的项,并求出每个字符在数组中出现的次数 */ linktree tidycharacter(char character) int i=0; linktree tree,ptr,beforeptr,n

      7、ode; /*链式 ,tree为头结点,beforeptr为ptr的前一结点,node为新申请的结点*/ tree=(linktree)malloc(sizeof(Hftree);/*创建单链表的头结点*/ if(!tree)return NULL; tree-next=NULL; /* 头结点为空,且后续结点为空*/ for(i=0;characteri!=0&characteri!=n;i+) /*遍历直到字符串结束为止*/ ptr=tree; beforeptr=tree; node=(linktree)malloc(sizeof(Hftree); /*新申请结点node*/ if(!node)return NULL; node-next=NULL; node-parent=NULL; node-lchild=NULL; node-rchild=NULL; /*置空*/ node-mark=0; node-ch=characteri; node-weight=1; if(tree-next=NULL) tree-next=node; /*头结点的下一结点为空,连接node*/ e

      8、lse ptr=tree-next; while(ptr&ptr-ch!=node-ch) /*将指针移至链表尾*/ ptr=ptr-next; beforeptr=beforeptr-next; /*后移*/ if(ptr&ptr-ch=node-ch) /*如果链表中某结点的字符与新结点的字符相同*/ /*将该结点的权加一*/ ptr-weight=ptr-weight+1; free(node); /*释放node结点的存储空间*/ else /*新结点与表中结点不相同,将新结点插入链表后*/ node-next=beforeptr-next; beforeptr-next=node; /*node连接在beforeptr之后*/ return tree; /*将整理完的字符串按出现次数从小到大的顺序排列 */ linktree taxisnode(linktree tree) linktree head,ph,pt,beforeph; /*head为新链表的表头结点*/ head=(linktree)malloc(sizeof(Hftree);/*创建新链表的头结点*/ if(!head)return NULL; head-next=NULL; /*新结点的头结点为空,后续结点也为空*/ ph=head; beforeph=head; while(tree

      《课程设计(论文)哈夫曼编码及其应用》由会员ni****g分享,可在线阅读,更多相关《课程设计(论文)哈夫曼编码及其应用》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.