哈夫曼树及其应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
步骤2:在F中选取两棵其根结点的权值最小的二叉树,从F 中删除这两棵树,并以这两棵二叉树为左右子树构造一棵 新的二叉树添加到F中,该新的二叉树的根结点的权值为 其左右孩子二叉树的根结点的权值之和。
步骤3:判断F中是否只有唯一的一棵二叉树。若是,则求 解过程结束;否则,转步哈骤夫曼2树。及其应用
二、哈夫曼树及其应用
3.哈夫曼编码 ①等长编码:
以英文字符编码为例,一般英文字符编码是采 用7位二进制数编码(ASCII码)。7位二进制数可 以为27个不同的英文字符编码。
下面为讨论问题简单起见,假设被编码的字符 集中只有4个(即22个)不同字符,故只要两位二 进制数即可完成编码。
设这4个不同的字符为A,B,C,D,则可进行 等长编码如下:
2
7
c
a
4
7
5
24
d
a
bc
d
7
5
a
b
5
b
2
4
cd
哈夫曼树及其应用
二、哈夫曼树及其应用
1.哈夫曼树的有关概念
⑤哈夫曼树的定义:
设有n个叶子结点的二叉树,其第i个 叶子结点的权值为wi(i=1,2,3,...n),且第i个 叶子结点的路径长度为li ,则使
n
WPL=∑i=1wi*li最小的二叉树称为“最优 二叉树”或称为“哈夫曼树”。
1.哈夫曼树的有关概念
①结点的路径长度: 从根结点沿某条路径到某结点途中所经历的弧的条数
称为该结点的路径长度。
② 树的路径长度: 从根结点到每一个叶子结点的路径长度之和。
③结点的带权路径长度: 某结点的路径长度与该结点上的权值的乘积称为该结
点的带权路径长度。
④ 树的带权路径长度(WPL): 树中所有叶子结点的带权路径长度之和称为树的带权
哈夫曼树及其应用
路径长度。
1二实W.哈P、例夫树L哈:=曼的1夫已*树带7+曼知的权2*有树某路5+关径及 二3概*长其叉2+念度WW应树3PP*为4用的树树LL=:==3四的的225**带带个47++权权叶32**路路75子++径径32结**长长52点++度度12a**为为24,b==::,43c66,d 分别带权7,5,2,4,则可构造出有如下几 种不同形式的二叉树:
60
40 a
30 b
15
30
15 e
哈夫5曼树c及其应用 10 d
二、哈夫曼树及其应用
2.哈夫曼树的求解过程 ③实例:已知有5个叶子结100点的权值分别为:5 , 15 , 40 , 30 , 10 ;试画出一棵相应的哈夫曼树。
40 a
60
30 b
30
15
15 e
哈夫5曼树c及其应用 10 d
二、哈夫曼树及其应用
哈夫曼树及其应用
学生成绩i=数1 据分布情况表
分数
0~59 60~69 70~N79 80~89 90~100
i<=10000
结束
学生比例数 0.05 0.15 0.40 0.30 0.10
读取一个学生成绩→a
方法1:
循环一万次
i = i+1
a<60
yes
no
打印"bad“
a<70
yes
no
共做31500 次比较
打印"excellent" 10%的学生
思考:如何找学到生成一绩棵数最据优分布的情判况断表树使得编写 出来的分程数序的0运~5行9 时60~间69是7i=最01~7高9 效80~的89 ?90~100
学生比例数 0.05 0.15 i<=010.40000 0.30N 0.10 结束
方法2:
循环一万次
0.15 i<=010.40000 0.30N
0.10 结束
方法2:
读取一个学生成绩→a
循环一万次
a<80
yes
no
a<70
yes
no
a<90
yes
no
a<60
yes
no
打印"general"
打印 “good"
打印"bad" 5%的学生
打印"pass" 40%的学生
15%的学生
哈夫曼树及其应用
30%的学生
读取一个学生成绩→a
a<80
yes
no
共做22000 次比较
a<70
yes
no
a<90
yes
no
a<60
yes
no
打印"general"
打印 “good"
打印"bad" 5%的学生
打印"pass" 40%的学生
15%的学生
哈夫曼树及其应用
30%的学生
打印"excellent" 10%的学生
二、哈夫曼树及其应用
第六章 (续)
哈夫曼树及其应用
哈夫曼树及其应用
一、问题的提出
设有10000个学生某门课程的考试成绩的分布如 下表所示:
学生成绩数据分布情况表
分数
0~59 60~69 70~79 80~89 90~100
学生比例数 0.05 0.15 0.40 0.30 0.10
*问题:现在要编写程序依次根据每个学生的成绩 打印出该学生的成绩等级。
2.哈夫曼树的求解过程
③实例:已知有5个叶子结点的权值分别为:5 , 15 , 40 , 30 , 10 ;试画出一棵相应的哈夫曼树。
Байду номын сангаас
15
40 a
30 b
哈夫5曼树c及其应用 10 d
15 e
二、哈夫曼树及其应用
2.哈夫曼树的求解过程
③实例:已知有5个叶子结点的权值分别为:5 , 15 , 40 , 30 , 10 ;试画出一棵相应的哈夫曼树。
15
40 a
30 b
哈夫5曼树c及其应用 10 d
15 e
二、哈夫曼树及其应用
2.哈夫曼树的求解过程
③实例:已知有5个叶子结点的权值分别为:5 , 15 , 40 , 30 , 10 ;试画出一棵相应的哈夫曼树。
30
40 a
30 b
15
哈夫5曼树c及其应用 10 d
15 e
二、哈夫曼树及其应用
2.哈夫曼树的求解过程 ③实例:已知有5个叶子结点的权值分别为:5 , 15 , 40 , 30 , 10 ;试画出一棵相应的哈夫曼树。
打印"pass"
a<80
yes
no
打印"general"
5%的学生 15%的学生
yes 打印"good"
40%的学生 哈夫曼树及其应用 30%的学生
a<90
no
打印"excellent" 10%的学生
学生成绩数据分布情况表
分数 学生比例数
0~59 0.05
60~69 7i=01~79 80~89 90~100
哈夫曼树及其应用
二、哈夫曼树及其应用
2.哈夫曼树的求解过程 ①问题:
已知n个叶子的权值为{w1,w2,...wn},构 造一棵最优二叉树。
哈夫曼树及其应用
二、哈夫曼树及其应用
2.哈夫曼树的求解过程 ②方法:
步骤1:构造一个具有n棵二叉树的森林F={T1,T2,......,Tn}, 其中Ti是只有一个根结点且根结点的权值为wi的二叉树。
步骤3:判断F中是否只有唯一的一棵二叉树。若是,则求 解过程结束;否则,转步哈骤夫曼2树。及其应用
二、哈夫曼树及其应用
3.哈夫曼编码 ①等长编码:
以英文字符编码为例,一般英文字符编码是采 用7位二进制数编码(ASCII码)。7位二进制数可 以为27个不同的英文字符编码。
下面为讨论问题简单起见,假设被编码的字符 集中只有4个(即22个)不同字符,故只要两位二 进制数即可完成编码。
设这4个不同的字符为A,B,C,D,则可进行 等长编码如下:
2
7
c
a
4
7
5
24
d
a
bc
d
7
5
a
b
5
b
2
4
cd
哈夫曼树及其应用
二、哈夫曼树及其应用
1.哈夫曼树的有关概念
⑤哈夫曼树的定义:
设有n个叶子结点的二叉树,其第i个 叶子结点的权值为wi(i=1,2,3,...n),且第i个 叶子结点的路径长度为li ,则使
n
WPL=∑i=1wi*li最小的二叉树称为“最优 二叉树”或称为“哈夫曼树”。
1.哈夫曼树的有关概念
①结点的路径长度: 从根结点沿某条路径到某结点途中所经历的弧的条数
称为该结点的路径长度。
② 树的路径长度: 从根结点到每一个叶子结点的路径长度之和。
③结点的带权路径长度: 某结点的路径长度与该结点上的权值的乘积称为该结
点的带权路径长度。
④ 树的带权路径长度(WPL): 树中所有叶子结点的带权路径长度之和称为树的带权
哈夫曼树及其应用
路径长度。
1二实W.哈P、例夫树L哈:=曼的1夫已*树带7+曼知的权2*有树某路5+关径及 二3概*长其叉2+念度WW应树3PP*为4用的树树LL=:==3四的的225**带带个47++权权叶32**路路75子++径径32结**长长52点++度度12a**为为24,b==::,43c66,d 分别带权7,5,2,4,则可构造出有如下几 种不同形式的二叉树:
60
40 a
30 b
15
30
15 e
哈夫5曼树c及其应用 10 d
二、哈夫曼树及其应用
2.哈夫曼树的求解过程 ③实例:已知有5个叶子结100点的权值分别为:5 , 15 , 40 , 30 , 10 ;试画出一棵相应的哈夫曼树。
40 a
60
30 b
30
15
15 e
哈夫5曼树c及其应用 10 d
二、哈夫曼树及其应用
哈夫曼树及其应用
学生成绩i=数1 据分布情况表
分数
0~59 60~69 70~N79 80~89 90~100
i<=10000
结束
学生比例数 0.05 0.15 0.40 0.30 0.10
读取一个学生成绩→a
方法1:
循环一万次
i = i+1
a<60
yes
no
打印"bad“
a<70
yes
no
共做31500 次比较
打印"excellent" 10%的学生
思考:如何找学到生成一绩棵数最据优分布的情判况断表树使得编写 出来的分程数序的0运~5行9 时60~间69是7i=最01~7高9 效80~的89 ?90~100
学生比例数 0.05 0.15 i<=010.40000 0.30N 0.10 结束
方法2:
循环一万次
0.15 i<=010.40000 0.30N
0.10 结束
方法2:
读取一个学生成绩→a
循环一万次
a<80
yes
no
a<70
yes
no
a<90
yes
no
a<60
yes
no
打印"general"
打印 “good"
打印"bad" 5%的学生
打印"pass" 40%的学生
15%的学生
哈夫曼树及其应用
30%的学生
读取一个学生成绩→a
a<80
yes
no
共做22000 次比较
a<70
yes
no
a<90
yes
no
a<60
yes
no
打印"general"
打印 “good"
打印"bad" 5%的学生
打印"pass" 40%的学生
15%的学生
哈夫曼树及其应用
30%的学生
打印"excellent" 10%的学生
二、哈夫曼树及其应用
第六章 (续)
哈夫曼树及其应用
哈夫曼树及其应用
一、问题的提出
设有10000个学生某门课程的考试成绩的分布如 下表所示:
学生成绩数据分布情况表
分数
0~59 60~69 70~79 80~89 90~100
学生比例数 0.05 0.15 0.40 0.30 0.10
*问题:现在要编写程序依次根据每个学生的成绩 打印出该学生的成绩等级。
2.哈夫曼树的求解过程
③实例:已知有5个叶子结点的权值分别为:5 , 15 , 40 , 30 , 10 ;试画出一棵相应的哈夫曼树。
Байду номын сангаас
15
40 a
30 b
哈夫5曼树c及其应用 10 d
15 e
二、哈夫曼树及其应用
2.哈夫曼树的求解过程
③实例:已知有5个叶子结点的权值分别为:5 , 15 , 40 , 30 , 10 ;试画出一棵相应的哈夫曼树。
15
40 a
30 b
哈夫5曼树c及其应用 10 d
15 e
二、哈夫曼树及其应用
2.哈夫曼树的求解过程
③实例:已知有5个叶子结点的权值分别为:5 , 15 , 40 , 30 , 10 ;试画出一棵相应的哈夫曼树。
30
40 a
30 b
15
哈夫5曼树c及其应用 10 d
15 e
二、哈夫曼树及其应用
2.哈夫曼树的求解过程 ③实例:已知有5个叶子结点的权值分别为:5 , 15 , 40 , 30 , 10 ;试画出一棵相应的哈夫曼树。
打印"pass"
a<80
yes
no
打印"general"
5%的学生 15%的学生
yes 打印"good"
40%的学生 哈夫曼树及其应用 30%的学生
a<90
no
打印"excellent" 10%的学生
学生成绩数据分布情况表
分数 学生比例数
0~59 0.05
60~69 7i=01~79 80~89 90~100
哈夫曼树及其应用
二、哈夫曼树及其应用
2.哈夫曼树的求解过程 ①问题:
已知n个叶子的权值为{w1,w2,...wn},构 造一棵最优二叉树。
哈夫曼树及其应用
二、哈夫曼树及其应用
2.哈夫曼树的求解过程 ②方法:
步骤1:构造一个具有n棵二叉树的森林F={T1,T2,......,Tn}, 其中Ti是只有一个根结点且根结点的权值为wi的二叉树。