网站大量收购独家精品文档,联系QQ:2885784924

1.6最小生成树及其算法.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.6最小生成树及其算法

1.6 最小生成树及其算法 6.1 树的定义与树的特征 6.2 图的生成树 6.3 找图中生成树的方法 6.4 最小生成树与算法 6.1 树及其性质 例1 已知有5个城市,要在它们之间架设电话线,要求任何两个城市都可以互相通话(允许通过其它城市),并且电话线的根数最少。 定义5.1 连通且不含圈的无向图称为树.常用T表示. 树中的边称为树枝. 树中度为1的顶点称为树叶. 孤立顶点称为平凡树. 定理5.1 设G是具有n个顶点的图,则下述命题等价: 1) G是树( G无圈且连通); 2) G无圈,且有n-1条边; 3) G连通,且有n-1条边; 4) G无圈,但添加任一条新边恰好产生一个圈; 5) G连通,且删去一条边就不连通了(即G为最小连通图) 6) G中任意两顶点间有唯一一条路。 5.2 图的生成树 定义5.2 若T是包含图G的全部顶点的子图,它又是树,则称T是G的生成树. 图G中不在生成树中的边叫做弦. 定理5.2 图G=(V,E)有生成树的充要条件是图G是连通的。 5.3 找图中生成树的方法 可分为两种:避圈法和破圈法 A 避圈法 : 深探法和广探法 B 破圈法 A 避圈法 定理5.2的充分性的证明提供了一种构造图的生成树的方法. 这种方法就是在已给的图G中,每步选出一条边使它与已选边不构成圈,直到选够n-1条边为止. 这种方法可称为“避圈法”或“加边法”. 在避圈法中,按照边的选法不同,找图中生成树的方法可分为两种:深探法和广探法. B 破圈法 相对于避圈法,还有一种求生成树的方法叫做“破圈法”. 这种方法就是在图G中任取一个圈,任意舍弃一条边,将这个圈破掉,重复这个步骤直到图G中没有圈为止. 5.4 最小生成树(Minimum Spanning Tree)与算法 A. Kruskal算法(或避圈法) 步骤如下: 1) 选择边e1,使得w(e1)尽可能小; 2) 若已选定边 ,则从 中选取ei+1,使得: i) 为无圈图, ii) w(ei+1)是满足i)的尽可能小的权, 3) 当第2)步不能继续执行时,则停止. 定理5.3 由Kruskal算法构作的任何生成树都是最小树。 例5.2 用Kruskal算法求下图的最小树. 在下图中权值最小的边为e1,e5,任取一条e1,在{e2,e3,…,e8}选取权值最小的边e5; {e2,e3,e4,e6,e7,e8}中权值最小的边有e3,e7,从中选取一条边e3;在{e2, e4,e6,e7,e8}选取e7。 最后在{e2, e4,e6, e8}中任选一条边都会和已选边构成圈。 Kruskal算法步骤 例5.3 用Kruskal算法求下图的最小生成树。 解:将图的边按照权值从小到大进行排列,列出下表 Kruskal算法的复杂度 它主要决定于把各边排成有序的队列,当原图有m条边时可有m!种排法,相当于log2(m!)次比较.对于有n个顶点的图,最多有n(n-1)/2条边,故复杂度是n2log2(n)。 推导:斯特灵公式 最小生成树的Prim算法 Prim算法思路 从任意一顶点开始,首先把这个顶点包括在生成树里,然后在那些其一端已在生成树里,而另一端还未在生成树里的边中,找权值最小的一条边,并把这条边和其不在生成树里的那个顶点包括进生成树中。如此进行下去,每次往生成树里加入一个顶点和一条权最小的边,直到把所有顶点都包括进生成树里 理论上,当有两条具有相同最小权值的边可选择时,选哪一条都行,因此构造的最小生成树不一定唯一。但若给定算法,则唯一 C. 最小生成树的Prim 算法 算法步骤: 1.在网路中任选一点vi,令V={vi},其余点的集 合记为VC; 2.从V与VC的连线中找出最小边,它一定在树 中.设eij=[vi,vj]是最小边,让vj加入V,并从VC 中退出; 3.重复2,直到一切节点都包含在V内为止。 例5.4 如图5.10,求图G=(V,G)的最小生成树。 (1)任选一节点,例如v1,令V={v1},在V与VC的相连线中最短的是e12,长为1; (2)令V={v1,v2},它与VC中点的最短连线为e25,长为2; (3)令V={v1,v2,v5},下一条边是e45,长为2; (4)V={v1,v2,v5,v4},下一条边是e23,长为3. 总长为1+2+2

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档