



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.7 哈夫曼树一、Huffman树 二、Huffman编码 6.7.1 Huffman树(最优二叉树)若干术语:路 径:由一结点到另一结点间的分支所构成。路径长度:路径上的分支数目。 例如:ae的路径长度2二叉树的路径长度:从二叉树根到所有叶子结点的路径长度之和。树路径长度8二叉树的带权路径长度:从二叉树根结点到所有叶子结点的路径长度与相应叶子结点权值的乘积之和(WPL)即树中所有叶子结点的带权路径长度之和 Huffman树:带权路径长度最小的树。Huffman常译为哈夫曼、赫夫曼、霍夫曼等树的带权路径长度如何计算? WPL = wklk 构造Huffman树的基本思想:权值大的结点用短路径,权值小的结点用长路径。构造Huffman树的步骤(即Huffman算法):(1) 由给定的 n 个权值 w1, w2, , wn 构造n棵二叉树的集合F = T1, T2, , Tn (即森林) ,其中每棵二叉树 Ti 中只有一个带权为 wi 的根结点,其左右子树均空。(2) 在F 中选取两棵根结点权值最小和次小的树分别做为左右子树构造一棵新的二叉树,且让新二叉树根结点的权值等于其左右子树的根结点权值之和。(3) 在F 中删去这两棵树,同时将新得到的二叉树加入 F中。(4) 重复(2) 和(3) , 直到 F 只含一棵树为止。这棵树便是Huffman树。具体操作步骤:对权值进行合并、删除与替换在权值集合7,5,2,4中,总是合并当前值最小的两个权具体操作步骤:对权值进行合并、删除与替换在权值集合7,5,2,4中,总是合并当前值最小的两个权 Huffman树特点:肯定没有度为1的结点;一棵有n 0个叶子结点的Huffman树,共有2n0-1个结点;讨论:Huffman树有什么用?例:设有4个字符d,i,a,n,出现的频度分别为7,5,2,4, 怎样编码才能使它们组成的报文在网络中传得最快?法1:等长编码 令d=00,i=01,a=10,n=11,则:WPL12bit(7524)36法2:不等长编码 令d=0;i=10,a=110,n=111,则:WPL2=1bit72bit5+3bit(2+4)=356.7.2 哈夫曼编码问题 哈夫曼树可用于构造代码总长度最短的编码方案。具体构造方法如下: 设需要编码的字符集合为d1,d2,dn,各个字符在电文中出现的次数集合为w1,w2,wn,以d1,d2,dn作为叶结点,以w1,w2,wn作为各叶结点的权值构造一棵二叉树,规定哈夫曼树中的左分支为0,右分支为1,则从根结点到每个叶结点所经过的分支对应的0和1组成的序列便为该结点对应字符的编码。这样的代码总长度最短的不等长编码称之为哈夫曼编码。明确:要实现哈夫曼编码,就要先构造哈夫曼树按左“0”右“1” 对哈夫曼树的所有分支编号 在 哈夫曼树的基础上构造哈夫曼编码 哈夫曼编码结果:d=0, i=10, a=110, n=111WPL=1bit72bit5+3bit(2+4)=35(小于等长码的WPL=36)在建立不等长编码时,必须使任何一个字符的编码都不是另一个字符编码的前缀,这样才能保证译码的惟一性。例:若字符a的编码为01,b的编码为010, c的编码为10对于代码串01010,在译码时无法判定是将前两位码01译成字符a还是将前三位码010译为字符b。在哈夫曼树中,由于每个字符结点都是叶子结点,而叶子结点不可能在根结点到其他叶子结点的路径上,所以任何一个字符的哈夫曼树编码不可能是另一个字符的哈夫曼编码的前缀。练习:假设用于通信的电文仅由5个字母A,B,C,D,E组成,字母在电文中出现的次数分别为2,4,5,7,8。试为这5个字母设计哈夫曼编码。A:010 B:011 C:00 D:10 E:116.8 树与二叉树的转换 讨论1:树如何转为二叉树?转换步骤:step1: 将树中兄弟结点之间加一连线; step2: 保留结点的最左孩子连线,删除其它孩子连线;step3: 整理保留和添加的连线。讨论3:森林如何转为二叉树?即F=T1, T2, ,Tm B=root, LB, RB法一: 各森林先各自转为二叉树; 依次连到前一个二叉树的右子树上。法二:森林直接变兄弟,再转为二叉树法一和法二得到的二叉树是完全相同的、惟一的。森林转二叉树举例:(用法一,各森林先转二叉树,在连接成一棵二叉树)森林转二叉树举例:(用法二,森林直接变兄弟,再转为二叉树)讨论4:二叉树如何还原为森林?即B=root, LB, RB F=T1, T2, ,Tm要点:把最右边的子树变为森林,其余右子树变为兄弟 6.9 树的遍历树的遍历 深度优先遍历(先根、后根) 树没有中序遍历(因子树不分左右) 先根遍历 访问根结点; 按照从左到右依次先根遍历根结点的每棵子树。 后根遍历 按照从左到右依次后根遍历根结点的每棵子树; 访问根结点。 先根序列:a b c d e 后根序列:b d c e a讨论:树若采用“先转换,后遍历”方式,结果是否一样? 前序遍历:a b c d e 中序遍历:b d c e a 后序遍历:d e c b a 树的先根序列:a b c d e树的后根序列:b d c e a结论:1. 树的先根遍历与二叉树的前序遍历相同; 2. 树的后根遍历相当于二叉树的中序遍历;3. 树没有中序遍历,因为子树无左右之分。孩子兄弟 先根遍历 后根遍历 本 章 小 结存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京知识产权师培训班课件
- 2025年第一季度护理管理制度考核试题考题答案
- 营养专科护士培训考试题及答案
- 医院传染病防控知识培训考核试题(附答案)
- 护理导论知识练习测试题(含答案)
- 2024年上海市浦东新区高桥镇新益村社区工作人员考试模拟试题及答案
- 北京房屋测绘培训课件
- 2025年注册会计师重点试题带答案
- 标日课件第九课
- 北京公共知识培训总结课件
- DB32T 4073-2021 建筑施工承插型盘扣式钢管支架安全技术规程
- NOYAH诺雅品牌介绍
- 易制毒、易制爆培训试卷及答案
- 入行论94课第1个颂词
- 华西二院妇产科进修总结
- fog-106单轴光纤陀螺仪技术协议
- 全国学校艺术教育总体规划1989~2000年
- GB∕T 10715-2021 带传动 多楔带、联组V带及包括宽V带、六角带在内的单根V带 抗静电带的导电性:要求和试验方法
- 药学英语词汇汇总
- 吉利集团绩效管理创新与实践
- 超大跨径桥梁结构健康监测关键技术
评论
0/150
提交评论