13哈夫曼树精品PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
100
40 30
60 30
15
15
5
来自百度文库10
70a<80
Y
N
中等 80a<90
Y
N
良好 60a<70
N
Y
a<60
及
Y
N
格
不及格
优秀
比较次数分析:如一共10000个数
分数 0-59 60-69 70-79 80-89 90-100 比例数 0.05 0.15 0.40 0.30 0.10
a<60
Y
N
不及格 a<70
4、赫夫曼编码
电报—将文字转换成二进制的字符串。 例如:电文“ABACCDA”,
假设A,B,C,D的编码分别为00,01,10,11 则,电文为:“100” 如果对每个字符设计长度不等的编码,且让出现次数 较多的字符采用尽可能短的编码,则电文的总长便可减少。 假设A,B,C,D的编码分别为0,00,1,01则,电文为: “000011010”,但是无法翻译。 如“0000”—“AAAA”或“ABA”或“BB”
思考:哈夫曼树有什么特点?
思考:
哈夫曼树的特点:
① 哈夫曼树中没有度为1的结点。若有n0 个叶子结点,则总共有 2n0-1 个结点。
② 哈夫曼树中,权越大的叶子离根越近。 ③ 哈夫曼树的形态不唯一,WPL最小。
课堂练习
以数据集{2,5,7,9,13}为权值构造一棵 huffman树(按数据的先后次序),并计算其带 权路径长度。
第1步:初始化
24 5 3
第2步:选取与合并 第3步:删除与加入
5 23 45 5
23
重复第2步 重复第3步
45 5
23 9
45
5
9
2 3 45
重复第2步 重复第3步
5 23
9 45
14
5
9
2 34 5
例2 :有八种字符:a b c d e f g h ,其在通信联络中出现的概率分别为: 0.05 0.29 0.07 0.08 0.14 0.23 0.03 0.11 ,试构造哈夫 曼树。
分数 0-59 60-69 70-79 80-89 90-100 等级 不及格 及格 中等 良好 优秀
if (score<60) b=“bad”;
a<60
Y
N
else if (score<70) b=“pass”;
不及格 a<70
Y
N
else if (score<80) b=“general”;
及格 a<80
A
2B
4
CD
如:E的带权路径长度=5*2
3
5
E
树的带权路径长度:
树中所有叶子结点的带权路径长度之和
n
WPL= wk lk k =1
从根结点到第k个叶子的路径长度
第k个叶子的权值
2B
A
4
CD
3
5
E
如:WPL=2*1+3*1+5*2
在所有含 n 个叶子结点、并带相同权值的 m 叉 树中,必存在一棵其带权路径长度取最小值的 树,称为“最优树”。
WPL=2x1+3x2+4x3+5x3=35
WPL=5x1+3x2+2x3+4x3=29
3、构造哈夫曼树
哈夫曼算法基本思想:
⑴ 初始化:由给定的n个权值{w1,w2,…,wn} 构造n棵只有一个根结点的二叉树,从而得到一 个二叉树集合F={T1,T2,…,Tn};
⑵ 选取与合并:在F 中选取根结点的权值最小
从根结点到该结点的路径上分支
的数目。
E
如:B、C、D、E路径长度分别为:1、1、1、2
树的路径长度:
树中每个结点的路径长度之和。
(完全二叉树是路径长度最短的二叉树)
如:树的路径长度为:1+1+1+2
结点的权值:
对结点赋予的一个有意义的数值量。
结点的带权的路径长度:
该结点到根结点之间的路径长度 与该结点权值的乘积。
设权 w = ( 5, 29, 7, 8, 14, 23, 3, 11) n = 8
5
2
7
8
1
2
3
1
9
4
3
1
100
42
58
19 2 29 3
1
8
1
4 2
15 7
19
22 29 9 9
2 13 4
28 9
1
1 4
4
22 33
5
3
7
8
2 3
11 11
例3:请编制一个将百分制转换成五级分制的程序
分数 0-59 60-69 70-79 80-89 90-100 比例数 0.05 0.15 0.40 0.30 0.10
Y
N
及格 a<80
Y
N
中等 a<90
Y
N
良好
优秀
图a
WPL=500*1+1500*2+4000*3
+3000*4+1000*4
=31500
a < 80
Y
N
a < 70
Y
N
a < 90
Y
N
a<60
中等
良好 优秀
Y
N
不及格
及格
WPL=500*3+1500*3+4000 *2+3000*2+1000*2
=22000
Y
N
else if (score<90) b=“good”;
中等 a<90
Y
N
良好
优秀
else b=“excellent”;
图a
如果反复使用,且每次输入量很大,就应该考虑时间问题
语句频度
在实际生活中,学生的成绩在五个等级上的 分布是不均匀的。假如其分布规律如下表所示:
分数 0-59 60-69 70-79 80-89 90-100 比例数 0.05 0.15 0.40 0.30 0.10
给定一组具有确定权值的叶子结点,带权路径 长度最小的二叉树,称为最优二叉树。
最优二叉树
赫夫曼树/哈夫曼树/霍夫曼
例1:给定4个叶子结点,其权值分别为{2,4,5,3} ,可以构造出形状不同的多棵二叉树。
2
5
2 34 5
3 45
3 24
二叉树的带权路径长度:WPL=2x2+3x2+4x2+5x2=28
哈夫曼树及其应用
【学习目标】
了解最优树(哈夫曼树)的特性,掌握建立 最优树和哈夫曼编码的方法,会计算树的带 权路径长度(WPL)。
【重点难点】
建立最优树和哈夫曼编码的方法
教学内容
6.6哈夫曼树及其应用 课题导入 相关概念 构造哈夫曼树 哈夫曼编码
1、课题导入
问题:请编制一个将百分制转换成五级分制的程序
怎样使大部分的数据经过较 少的比较次数得出结果并且使 总的比较次数最少呢?
a<60
Y
N
不及格 a<70
Y
N
及格 a<80
Y
N
中等 a<90
Y
N
良好 优秀
图a
哈夫曼树
2、相关概念
路径:
从树中一个结点到另一个结点 之间的分支构成这两个结点之间 的路径。
路径长度:
路径上的分支数目。
A
结点的路径长度:
B CD
的两棵二叉树分别作为左、右子树构造一棵新的 二叉树,这棵新二叉树的根结点的权值为其左、 右子树根结点的权值之和;
⑶ 删除与加入:在F 中删除作为左、右子树
的两棵二叉树,并将新建立的二叉树加入到
F 中;
⑷ 重复⑵、⑶两步,当集合F 中只剩下一棵
二叉树时,这棵二叉树便是哈夫曼树。
例1:W={2,4,5,3} 哈夫曼树的构造过程