文档详情

《图论课件--最小生成树》课件.ppt

发布:2018-09-25约5.42千字共36页下载文档
文本预览下载声明
* (3)后根次序遍历: 3) 访问根; 1)按后根次序遍历根的左子树; 2)按后根次序遍历根的右子树; v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v12 v11 后根次序遍历次序为:v6v7v4v2v8v11v12v10v9v5v3v1. * 最优二元树 定义8 设T是一棵二元树,若对所有t片树叶赋权值wi(1≦i≦t),且权值为wi的树叶层数为L(wi),称: 为该赋权二元树的权。而在所有赋权为wi的二元树中 W(T)最小的二元树称为最优二元树。 哈夫曼算法: (1) 初始:令S={w1,w2,…,wt}; (2) 从S中取出两个权值最小者wi与wj ,画结点vi ,带权wi,画结点vj,带权wj,画vi与vj的父亲v,连接vi与v,连接vj与v,令v带权wi + wj ; * (3) 令S = (S-{wiwj})∪{wi+wj}; (4) 判断S是否只含一个元素,若是,停止,否则转2). 例8 求带权为:7、8、9、12、16的最优树。 解:由哈夫曼算法: 7 8 15 (1) 7 8 15 (2) 9 12 21 9 12 21 7 8 15 (3) 16 31 9 12 21 7 8 15 (4) 16 31 52 * 作业 P43 习题2 : 16, 17, 18 * Thank You ! 谢谢! * 图论及其应用 应用数学学院 * 本次课主要内容 最小生成树 (一)、克鲁斯克尔算法 (二)、管梅谷的破圈法 (三)、Prim算法 (四)、计算机中的树简介 * 最小连接问题: 交通网络中,常常关注能把所有站点连接起来的生成树,使得该生成树各边权值之和为最小。例如: 假设要在某地建造5个工厂,拟修筑道路连接这5处。经勘探,其道路可按下图的无向边铺设。现在每条边的长度已经测出并标记在图的对应边上,如果我们要求铺设的道路总长度最短,这样既能节省费用 ,又能缩短工期 ,如何铺设? v1 v2 v3 v4 v5 1 2 2 4 3 4 5 5 * v1 v2 v3 v4 v5 1 2 2 3 不难发现:最小代价的连接方式为: 最小连接问题的一般提法为: 在连通边赋权图G中求一棵总权值最小的生成树。该生成树称为最小生成树或最小代价树。 (一)、克鲁斯克尔算法 * 克鲁斯克尔(Kruskal):1928年生,一家3弟兄都是数学家,1954年在普林斯顿大学获博士学位,导师是Erd?s,他大部分研究工作是数学和语言学,主要在贝尔实验室工作。1956年发表包含克鲁斯克尔算法论文,使他名声大振。 1、算法思想 从G中的最小边开始,进行避圈式扩张。 2、算法 (1)、选择边e1,使得其权值最小; (2)、若已经选定边e1, e2,…, ek, 则从E-{ e1, e2,…, ek }中选择边ek+1,使得: (a)、G[e1, e2,…, ek+1]为无圈图 (b)、ek+1的权值w(ek+1)尽可能小。 * (3)、当(2)不能进行时,停止。 例1 用克鲁斯克尔算法求下图的最小生成树。 3 v7 2 1 5 4 6 7 8 9 10 11 12 v1 v2 v3 v4 v5 v6 v8 * 解:过程如下: 1 v5 v8 2 1 v1 v5 v8 3 2 1 v1 v4 v5 v8 3 v7 2 1 5 v1 v4 v5 v8 3 v7 2 1 5 6 v1 v4 v5 v8 v3 * 3 v7 2 1 5 6 v1 v4 v5 v8 v3 v6 8 3 v7 2 1 5 6 v1 v4 v5 v8 v3 v6 8 v2 9 2、算法证明 定理1 由克鲁斯克尔算法得到的任何生成树一定是最小生成树。 证明:设G是一个n阶连通赋权图,用T*=G[{e1,e2,…,en-1}]表示由克鲁斯克尔算法得到的一棵生成树,我们证明:它是最小生成树。 * 设T是G的一棵最小生成树。若T*≠T 由克鲁斯克尔算法容易知道:T∩T*≠Φ。 于是令f (T)= k 表示T*中的边ei不在T中的最小i值。即可令T=G[{e1,e2,…,ek-1, ek,…,en}] 考虑:T∪ek ,则由树的性质,它必然为G中圈。 作 T1= T ∪ek- e ,容易知道:T1还为G的一棵生成树。 设e是圈T ∪ek中在T中,但不在T*中的边。 由克鲁斯克尔算法知道: 所以: 这说明T1是最小树,但这与f(T)的选取假设矛盾!所以:T = T*. * 例2 在一个边赋权G中,下面算法是否可以产生有最小权值的生成路?为什么? 算法: (1) 选一条边e1,使得w(e1)尽可能小; (2) 若边e1,e2,…,ei已
显示全部
相似文档