哈夫曼树.ppt

上传人:b****9 文档编号:671300 上传时间:2022-10-12 格式:PPT 页数:31 大小:496KB
下载 相关 举报
哈夫曼树.ppt_第1页
第1页 / 共31页
哈夫曼树.ppt_第2页
第2页 / 共31页
哈夫曼树.ppt_第3页
第3页 / 共31页
哈夫曼树.ppt_第4页
第4页 / 共31页
哈夫曼树.ppt_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

哈夫曼树.ppt

《哈夫曼树.ppt》由会员分享,可在线阅读,更多相关《哈夫曼树.ppt(31页珍藏版)》请在冰豆网上搜索。

哈夫曼树.ppt

哈夫曼树及其应用,【学习目标】,了解最优树(哈夫曼树)的特性,掌握建立最优树和哈夫曼编码的方法,会计算树的带权路径长度(WPL)。

【重点难点】建立最优树和哈夫曼编码的方法,教学内容,6.6哈夫曼树及其应用,课题导入相关概念构造哈夫曼树哈夫曼编码,1、课题导入,问题:

请编制一个将百分制转换成五级分制的程序,if(score60)b=“bad”;elseif(score70)b=“pass”;elseif(score80)b=“general”;elseif(score90)b=“good”;elseb=“excellent”;,图a,如果反复使用,且每次输入量很大,就应该考虑时间问题,语句频度,在实际生活中,学生的成绩在五个等级上的分布是不均匀的。

假如其分布规律如下表所示:

怎样使大部分的数据经过较少的比较次数得出结果并且使总的比较次数最少呢?

图a,哈夫曼树,路径:

从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径。

2、相关概念,路径长度:

路径上的分支数目。

树的路径长度:

树中每个结点的路径长度之和。

(完全二叉树是路径长度最短的二叉树),结点的路径长度:

从根结点到该结点的路径上分支的数目。

如:

B、C、D、E路径长度分别为:

1、1、1、2,如:

树的路径长度为:

1+1+1+2,结点的权值:

对结点赋予的一个有意义的数值量。

结点的带权的路径长度:

该结点到根结点之间的路径长度与该结点权值的乘积。

如:

E的带权路径长度=5*2,树的带权路径长度:

树中所有叶子结点的带权路径长度之和,如:

WPL=2*1+3*1+5*2,在所有含n个叶子结点、并带相同权值的m叉树中,必存在一棵其带权路径长度取最小值的树,称为“最优树”。

最优二叉树,给定一组具有确定权值的叶子结点,带权路径长度最小的二叉树,称为最优二叉树。

赫夫曼树/哈夫曼树/霍夫曼,例1:

给定4个叶子结点,其权值分别为2,4,5,3,可以构造出形状不同的多棵二叉树。

WPL=2x2+3x2+4x2+5x2=28,WPL=2x1+3x2+4x3+5x3=35,WPL=5x1+3x2+2x3+4x3=29,二叉树的带权路径长度:

哈夫曼算法基本思想:

初始化:

由给定的n个权值w1,w2,wn构造n棵只有一个根结点的二叉树,从而得到一个二叉树集合FT1,T2,Tn;,3、构造哈夫曼树,选取与合并:

在F中选取根结点的权值最小的两棵二叉树分别作为左、右子树构造一棵新的二叉树,这棵新二叉树的根结点的权值为其左、右子树根结点的权值之和;,删除与加入:

在F中删除作为左、右子树的两棵二叉树,并将新建立的二叉树加入到F中;,重复、两步,当集合F中只剩下一棵二叉树时,这棵二叉树便是哈夫曼树。

第1步:

初始化,例1:

W2,4,5,3哈夫曼树的构造过程,第2步:

选取与合并,第3步:

删除与加入,重复第2步,重复第3步,重复第2步,重复第3步,例2:

有八种字符:

abcdefgh,其在通信联络中出现的概率分别为:

0.050.290.070.080.140.230.030.11,试构造哈夫曼树。

5,29,7,8,14,23,3,11,5,3,7,8,11,14,23,29,42,19,8,58,100,29,15,设权w=(5,29,7,8,14,23,3,11)n=8,例3:

请编制一个将百分制转换成五级分制的程序,比较次数分析:

如一共10000个数,图a,WPL=500*1+1500*2+4000*3+3000*4+1000*4=31500,WPL=500*3+1500*3+4000*2+3000*2+1000*2=22000,思考:

哈夫曼树有什么特点?

哈夫曼树的特点:

哈夫曼树中没有度为1的结点。

若有n0个叶子结点,则总共有2n0-1个结点。

哈夫曼树中,权越大的叶子离根越近。

哈夫曼树的形态不唯一,WPL最小。

思考:

课堂练习,以数据集2,5,7,9,13为权值构造一棵huffman树(按数据的先后次序),并计算其带权路径长度。

4、赫夫曼编码,电报将文字转换成二进制的字符串。

例如:

电文“ABACCDA”,假设A,B,C,D的编码分别为00,01,10,11则,电文为:

“00010010101100”,如果对每个字符设计长度不等的编码,且让出现次数较多的字符采用尽可能短的编码,则电文的总长便可减少。

假设A,B,C,D的编码分别为0,00,1,01则,电文为:

“000011010”,但是无法翻译。

如“0000”“AAAA”或“ABA”或“BB”,前缀编码:

任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。

前缀编码保证了在解码时不会有多种可能。

可以利用二叉树来设计二进制的前缀编码。

如何得到使电文总长最短的二进制前缀编码?

设计电文最短的二进制前缀编码即为以n种字符出现的频率做权,设计一棵哈夫曼树的问题,由此得到的二进制前缀编码称为哈夫曼编码。

例2有八种字符:

abcdefgh,其在通信联络中出现的概率分别为:

0.050.290.070.080.140.230.030.11,试设计赫夫曼编码。

设权w=(5,29,7,8,14,23,3,11)n=8,5,29,7,8,14,23,3,11,5,3,7,8,11,14,23,29,0,0,0,0,0,0,0,1,1,1,1,1,1,1,a:

0000b:

11c:

1010d:

1011e:

100f:

01g:

0001h:

001,42,19,8,58,100,29,15,【课堂总结】,主要内容:

掌握树和森林与二叉树的转换方法;了解最优树(赫夫曼树)的特性,掌握建立最优树和赫夫曼编码的方法,会计算树的带权路径长度(WPL)。

重点难点:

建立最优树和赫夫曼编码的方法,本章总结,树和二叉树的基本概念,二叉树的性质二叉树的存储与遍历及遍历的应用、写序列、由给定序列确定二叉树、线索二叉树树的二叉链表存储,树、森林与二叉树的相互转换赫夫曼树、赫夫曼编码、带全权路径长度计算,课堂练习,二叉树结点的数值采用顺序存储结构,如图所示:

012345678910111213141516171819,画出二叉树写出前序、中序、后序遍历的结果写出结点值为c的父结点,左、右孩子,2.以数据集2,5,7,9,13为权值构造一棵huffman树(按数据的先后次序),并计算其带权路径长度。

一份电文中共使用5个字符:

a、b、c、d、e,它们的出现频率依次为4、7、5、2、9,试画出对应的赫夫曼树(按左子树根结点的权小于等于右子树根结点的权的次序构造),并求出每个字符对应的赫夫曼编码。

作业,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1