1、树(4),5 哈夫曼树极其应用,哈夫曼(Haffman)树,也称最优二叉树。 5-1 哈夫曼树的引入 1几个术语 (1)路径长度从树中的一个结点到另一个结点之间的分支构成两个结点间的路径,路径上的分支数目,称作路径长度。 右图BH之间的路径长度为4: (2)树的路径长度从树根到每个结点的路径长度之和称为树的路径长度。,2如何求树的带权路径长度?设二叉树具有n个带权值的叶结点,那么从根结点到各个叶结点的路径长度与相应结点权值的乘积之和叫做二叉树的带权路径长度(WPL),记为: 其中:Wk为第k个叶结点的权值;L k 为第k个叶结点到根结点的路径长度。,(3)结点的带权路径长度从该结点到树根之间路
2、径长度与该结点上权的乘积。 (4)树的带权路径长度树中所有叶子结点的带权路径长度之和,称为树的带权路径长度。 (5)最优二叉树带权路径长度最小的二叉树,称为最优二叉树,也称哈夫曼树。,【例】 设给定权值分别为2,3,5,9的四个结点,下图构造了5个形状不同的二叉树。请分别计算它们的带权路径长度。,五棵树的带权路径长度分别为: (a)WPL2232529238 (b)WPL2333529134 (c)WPL2233539137 (d)WPL9353322150 (e)WPL2133539244五个图的叶结点具有相同权值,由于其构成的二叉树形态不同,则它们的带权路径长度也各不相同。其中以图(b)的
3、带权路径长度最小,它的特点是权值越大的叶结点越靠近根结点,而权值越小的叶结点则远离根结点,事实上它就是一棵最优二叉树。由于构成最优二叉树的方法是由D Haffman 最早提出的,所以又称为哈夫曼树。,3为什么要使用哈夫曼树在分析一些决策判定问题的时候,利用哈夫曼树,可以获得最佳的决策算法。例如,要编制一个将百分制数(n)转换为五级分制的程序。这是一个十分简单的程序,只要用简单的条件选择语句即可完成。如:if (n60) b=”E”;else if (n70) b=”D”else if (n80) b=”C”else if (n90) b=”B”else b=”A”;,上述判定过程可以用下图的判
4、定树来表示,表:学生成绩分布表,如果以百分比值5、15、40、30、10为权构造一棵有五个叶子结点构成的哈夫曼树,则可得到下图所示的判定树,它使大部分数据经过较少的比较次数,就能得到换算结果。,由于每个判定框都有两次比较,将这两次比较分开,就可以得到如下图所示的判定树,按此判定树编写出的程序,将大大减少比较的次数,从而提高运算的速度。,5-2 哈夫曼树的建立 1哈夫曼树构成的基本思想是: (1)由给定的n个权值W1,W2,Wn构造n棵只有一个叶结点的二叉树,从而得到一个二叉树的集合: FT1,T2,Tn; (2)在F中选取根结点的权值最小和次小的两棵二叉树作为左、右子树构造一棵新的二叉树,这棵
5、新的二叉树根结点的权值为其左、右子树根结点权值之和; (3)在集合F中删除作为左、右子树的两棵二叉树,并将新建立的二叉树加入到集合F中; (4)重复(2)、(3)两步,当F中只剩下一棵二叉树时,这棵二叉树便是所要建立的哈夫曼树。,【例】的叶结点权值:2,3,5,9为例,介绍哈夫曼树的构造过程:,(a) 权值之和为5 (b) 其权值之和为10 (c) 其权值之和为19 哈夫曼树建立过程 带权路径长度为: WPL=9*1+5*2+3*3+2*3=34对于同一组给定叶结点权值所构造的哈夫曼树,树的形状可能不同,但其带权路径长度值是相同的,而且必定是最小的。,【例】设结点的权集W =10,12,4,7,5,18,2,建立一棵哈夫曼树,并求出其带权路径长度。,哈夫曼树建立过程,作业,给定一个权集W = 4,6,23,9,18,12,6 ,请画出相应的哈夫曼树(要求有构造步骤),并计算其带权路径长度WPL。,