首页 理论教育 支撑树与最小树:全面解析

支撑树与最小树:全面解析

时间:2023-06-27 理论教育 版权反馈
【摘要】:定义6.2.2设图G1=是图G={V,E}的支撑子图,如果G1是一棵树,记T=,则称T是G的一棵支撑树。定理6.2.1图G有支撑树的充分必要条件是图G的连通。例6.2.2在图6.1.7中,用破圈法求出图的一棵支撑树。图6.2.3求图G的支撑树还有另外一种方法“避圈法”,主要步骤是在图中任取一条边e1,找出一条不与e1构成圈的边e2,再找出不与构成圈的边e3……如图6.2.4所示,得到一棵支撑树,即为所求的最小树T*,W(T*)=1+2+1+2=6。

支撑树与最小树:全面解析

定义6.2.2 设图G1=(V,E1)是图G={V,E}的支撑子图,如果G1是一棵树,记T=(V,E1),则称T是G的一棵支撑树。

定理6.2.1 图G有支撑树的充分必要条件是图G的连通。

证明 必要性是显然的。

充分性的证明如下:

设G是连通图。

(1)如果不含圈,由定义6.2.1可知,G本身就是一棵树,从而G是它自身的支撑树。

(2)如果G含圈,任取一圈,从圈中任意去掉一条边,得到G的一个支撑子图G1。如果G1不含圈,那么G1是G的一棵支撑树(因为易见G1是连通的);如果G1仍含圈,那么从G1中任取一个圈,从圈中再任意去掉一条边,得到G的一个支撑子图G2。如此重复,最终可以得到G的一个支撑子图Gk,它不含圈,则Gk是G的一棵支撑树。

由以上充分性的证明中,提供了一个寻求连通图的支撑树的方法,这种方法称为“破圈法”。

例6.2.2 在图6.1.7(a)中,用破圈法求出图的一棵支撑树。

如图6.2.2所示,此图是图6.1.7(a)的一个支撑子图,且为一棵树(无圈),所以我们找到一棵支撑树,其中,E1=

图6.2.2

不难发现,图的支撑树不是唯一的,对于上例若这样做:

如图6.2.3所示,得到图6.1.7(a)的另一棵支撑树,其中E2

图6.2.3

求图G的支撑树还有另外一种方法“避圈法”,主要步骤是在图中任取一条边e1,找出一条不与e1构成圈的边e2,再找出不与构成圈的边e3……一般地,设e有,找出一条不与构成圈的边ek+1,重复这个过程,直到不能进行下去为止,这时,由所有取出的边所构成的图是图G的一棵支撑树。(www.xing528.com)

定义6.2.3 设是赋权图G=(V,E)的一棵支撑树,称E'中全部边上的权数之和为支撑树T的权,记为W(T),记

如果支撑树T*的权W(T*)是G的所有支撑数的权中最小者,则称T*是G的最小支撑树,简称为最小树,即

式中对G的所有支撑树T取最小。

求最小树通常用以下两种方法。

(1)破圈法:在给定连通图G中,任取一圈,去掉一条最大权边(如果有两条或两条以上的边都是权最大的边,则任意去掉其中一条),在余图中(是图G的支撑子图)任取一圈,去掉一条最大权边,重复下去,直到余图中无圈为止,即可得到图G的最小树。

例6.2.3 用破圈法求图6.1.7(a)(即图6.1.8)的最小树。

解 取一圈去掉e8

如图6.2.4所示,得到一棵支撑树,即为所求的最小树T*,W(T*)=1+2+1+2=6。

图6.2.4

(2)避圈法(Kruskal算法):在连通图G中,任取权值最小的一条边(若有两条或两条以上权相同且最小,则任取一条),在未选边中选一条权值最小的边,要求所选边与已选边不构成圈,重复下去,直到不存在与已选边不构成圈的边为止,那么已选边与顶点构成的图T就是所求最小树。

算法的具体步骤如下:

第1步:令i=1(空集)。

第2步:选一条边中不含圈的所有边e(e∈E\Ei))中权最小的边,如果这样的边不存在,则T=(V,E i-1)是最小树。

第3步:把i换成i+1,返回第2步。

例6.2.4 用避圈法求图6.1.7(a)(即图6.1.8)的最小树。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈