最小生成树模型与实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章 最小生成树模型与实验
树是图论中的一个重要概念,由于树的模型简单而实用,它在企业管理、线路设计等方面都有很重要的应用。 §6.1树与树的性质
上章已讨论了图和树的简单基本性质。为使更清楚明了,现在使用实例来说明。
例6.1 已知有五个城市,要在它们之间架设电话线,要求任何两个城市都可以互相通话(允许通过其它城市),并且电话线的根数最少。
用五个点54321,,,,v v v v v 代表五个城市,如果
在某两个城市之间架设电话线,则在相应的两个点之间联一条边,这样一个电话线网就可以用一个图来表示。为了任何两个城市都可以通话,这样的图必须是连通的。其次,若图中有圈的话,从圈上任意去掉一条边,余下的图仍是连通的,这样可以省去一根电话线。因而,满足要求的电话线网所对应的图必定是不含圈的连通图。图6.1的表达式满足要求的一个电话线网。
定义6.1 一个无圈的连通图称为树.
例6.2 某大学的组织机构如下所示:
v 5v
4
v
图 6.1
教务处
研究处
校行政办公室 研究生院 财务科 行政科
理工学院 人事学院 外语学院
……
如果用图表示,该工厂的组织机构图就是一个树。上章给出了一些树的性质,为使能进一步研究这部分知识,先再列出常用一些树和生成树的性质。 树的性质:
(1) 树必连通,但无回路(圈); (2) n 个顶点的树必有1-n 条边; (3) 树中任意两点间,恰有一条初等链; (4) 树连通,但去掉任一条边,必变为不连通;
(5) 树无回路(圈),但不相邻顶点连一条边,恰得一回路(圈)。 生成树与最小树
定义6.2 设图),(11E V G =是图},{E V G =的生成子图,如果1G 是一棵树,记),(1E V T =,则称T 是G 的一棵生成树。
定理6.1 图G 有生成树的充分必要条件是图G 的连通的。 证:必要性是显然的 充分性:设G 是连通图。
(i )如果G 不含圈,由定义6.1可知,G 本身就是一棵树,从而G 是它自身的生成树。
(i i )如果G 含圈,任取一圈,从圈中任意去掉一条边,得到图G 的
数学系 物理系
文科办公 理科办校教学办公室 校长
一个生成子图1G ,如果1G 不含圈,那么1G 是G 的一棵生成树(因为易见1G 是连通的);如果1G 仍含少量圈,那么从1G 中任取一个圈,从圈中再任意去掉一条边,得到图G 的一个生成子图2G ,如此重复,最终可以得到G 的一个生成子图k G ,它不含圈,则k G 是图G 的一棵生成树。
§6.2 最小生成树的实例与求解
由以上充分性的证明中,提供了一个寻求连通图的生成树的方法,称这种方法为“破圈法”。 例6.4 在图6.1中,用破圈法求出图
的一棵生成树
解: 取一圈}{1233211v e v e v e v 去掉3e ;取一圈
}{123544211v e v e v e v e v 去掉5e ;取一圈
}{2657442v e v e v e v 去掉7e ;取一圈}{123856211v e v e v e v e v 去掉6e ;
如图6.3所示,此图是图6.2的一个生成子图,且为一棵树(无圈),所以我们找一棵生成树},{11E V T =,其中,},,,{82411e e e e E =。 不难发现,图的生成树不是唯一的,对于上例若这样做: 取一圈}{1233211v e v e v e v 去掉3e ;取一圈}{123554211v e v e v e v e v 去掉4e ;取一圈}{123856211v e v e v e v e v 去掉6e ;取一圈}{4538574v e v e v e v 去掉8e 。
v 5
v 3
图 6.2
图6.3 图6.4
如图G 的生成树还有另外一种方法“避圈法”,主要步骤是在图中任取一条边1e ,找出一条不与1e 构成圈的边2e ,再找出不与},{21e e 构成圈的边3e 。一般地,设已有},,,{21k e e e Λ,找出一条不与},,,{21k e e e Λ构成圈的边1+k e ,重复这个过程,直到不能进行下去为止。这时,由所有取出的边所构成的图是图G 的一棵生成树。
定义6.2 设},{E V T =是赋权图},{E V G =的一棵生成树,称E '中全部边上的权数之和为生成树T 的权,记为)(T w 。即 ∑∈=
T
v v ij
j i w
T w ],[)(。 (7.1)
如果生成树*T 的权)(*T W 是G 的所有生成树的权中最小者,则称
*T 是G 的最小生成树,简称为最小树。即
)}({min )(*T w T w T
= (7.2)
式中对G 的所有生成树T 取最小。 求最小树通常用以下两种方法。
(1)破圈法:在给定连通图G 中,任取一圈,去掉一条最大权边(如果有两条或两条以上的边都是权最大的边,则任意去掉其中一条),在余图中(是图G 的生成子图)任取一圈,去掉一条最大权边,重复下去,直到余图中无圈为止,即可得到图G 的最小树。 例 6.4 用破圈法求图6.5的最小树。图6.5是一赋权图。
],[211v v e =,1)(1=e w ;],[312v v e =, 4)(2=e w ;
],[323v v e =,2)(3=e w ,],[424v v e =,3)(4=e w ;
],[435v v e =, 1)(5=e w ;],[526v v e =,5)(2=e w ,],[547v v e =,2)(7=e w ; ],[528v v e =,
3)(8=e w 。
解: 取一圈}{1233211v e v e v e v 去掉2e ;取一圈}{2338562v e v e v e v 去掉6e ;取一圈}{2335442v e v e v e v 去掉8e ;取一圈}{4538574v e v e v e v 去掉8e 。 如图6.6所示,得到一棵生成树,即为所求最小树*T ,
62121)(*=+++=T w 。
(2)避圈法(Kruskal 算法):在连通图G 中,任取权值最小的一条边(若有两条或两条以上权相同且最小,则任取一条),在未选边中选一条权值最小的边,要求所选边与已选边不构成圈,重复下去,直到不存在与已选边不构成圈的边为止。已选边与顶点构成的图T 就是所求最小树。
算法的具体步骤如下:
第一步:令1=i ,φ=0E (空集)
第二步:选一条边i i E E e \∈,且i e 是使图}){,(1E E V G i i ⋃=-中不含圈的所有边)\(i E E e e ∈中权最小的边。如果这样的边不存在,由
),(1-=i E V T 是最小树。
第三步:把i 换成1+i ,返回第二步。 例6.5 用避圈法求图6.5的最小树。
v 5
v 3
图 6.5