§4.2树
4.2.1树及其等价命题
定义4.2.1.设G=(P,L)是图。如果G是连通的,并且无回路,则称G为树。无回路的图(可能不连通)也称为森林。
引理1.设G是至少有一条边的有限图,且无回路,则G至少有一个点只相邻于另一个点,即G至少有一个点度数为1。
证明:因为G至少有一条边,所以G有一点v 1 ,且v 1 有相邻点v 2 。若v 2 即为所求,则引理得证。否则,令v 3 为v 2 的不同于v 1 的相邻点,以此类推,即,对k≥2,或者v k 只与v k−1 相邻,从而v k 即为所求;或者v k 又相邻于v k+1 ≠v k−1 。于是得v 1 ,v 2 ,⋯,v k−1 ,v k ,v k+1 ,⋯,因为G无回路,故这一串点不能重复。又因为G有限,故上述过程必在有限步内停止。从而引理得证。
定理4.2.1.如果G是图,则下列诸命题等价:1)G是树。2)G连通并且删去G的任意一边,所得之图都不连通。3)对G中任意两点v,v ′ (v≠v ′ ),恰有一条从v到v ′ 的简单路。如果G还是有限图,设P(G)元数为n,则下列命题也与上面命题等价:4)G不含回路,并且G有(n−1)条边。5)G连通,并且G有(n−1)条边。
证:1)⇒2)若G删去边vv ′ 后是连通的,则有从v到v ′ 的路(v,v 1 ,⋯,v ′ ),不妨设这是从v到v ′ 的所有路中最短者,于是,这是一条简单路。此路长度不小于2,于是这条路再加上边vv ′ 就是G中一条回路。矛盾。
2)⇒3)因为G连通,所以对于v,v ′ ,有从v到v ′ 的路,取其最短者,得从v到v ′ 的简单路。若有两条这样的路,设为(v,v 1 ,⋯,v n ,v n+1 ),(v,v ′ 1 ,⋯,v ′ m ,v ′ m+1 ),其中v n+1 =v ′ m+1 =v ′ 。从左向右看可找到最小的k,使得v k ≠v ′ k 。于是,从G删去边v k−1 v k ,从v k−1 到v k 还有路(v k−1 ,v ′ k ,⋯,v m+1 ,v n ,v n−1 ,⋯,v k )。故删去边v k−1 v k 后,所得之图仍连通。矛盾。
3)⇒1)由已知条件知,G是连通的。若G有回路(v,v 1 ,⋯,v k ,⋯,v),则从v到v 1 将有两条简单路:(v,v 1 )和(v,⋯,v k ,⋯,v 1 ),矛盾。故G中无回路,所以,G是树。
1)⇒4)因此G是树,所以G中无回路。往证:G有(n−1)条边。对n用归纳法。n=1时,命题成立。假设对于n−1,命题成立.设G有n个点,由引理1知,G有v n ,且v n 恰有一个相邻点v n−1 ,删去v n 和v n v n−1 得一图G ′ 。因为G无回路,所以G ′ 无回路。因为G连通,所以G中任意两点间,有路连接。因为v n 恰有一相邻点v n−1 ,故点v n 只能出现在G中任意一条路的两端,而不能出现在中间。所以边v n v n−1 只能出现在任何一条路的两端,所以删去点v n 和边v n v n−1 ,剩下的图中任意两点间仍有路,故G ′ 连通。因此,G ′ 是树。由归纳假设,G ′ 有(n−1)−1=(n−2)条边。故G有(n−2)+1=(n−1)条边。
4)⇒5)已知G中无回路,有n个点,(n−1)条边,往证G连通。对n用归纳法。n=2,命题成立。假设n−1时命题成立。设G有n个点。由引理1知,G中有点v n ,v n 恰有一相邻点v n−1 ,删去点v n 和边v n v n−1 得图G ′ ,显然,G ′ 中仍无回路。但G ′ 有(n−1)个点,由归纳假设,G ′ 连通。因此,将点v n 和边v n v n−1 添入G ′ 得G,G仍连通。
5)⇒1)设G有n个点,(n−1)条边,并且连通,往证:G是树。只需证G无回路即可。若不然,设G有一条回路,则删去回路中任一条边,所得之图仍连通。对G中每一条回路,都用此方法删去一边,最后得一个无回路但仍连通的图G ′ 。所以G ′ 是树。而G ′ 是由G删去k(>0)条边所得,故G ′ 仍有n个点,所以由1)⇒4)知,G ′ 有(n−1)条边,但是G ′ 有(n−1−k)条边,而n−1>n−1−k(因为k>0),矛盾。定理证毕。
推论1.任意有限连通图必有一支撑子图是树。此支撑子图称为母图的支撑树。
推论2.若G ′ 是有限图G的支撑树,vv ′ 为G中一边,且vv ′ 不在G ′ 中,则G ′ 添上边vv ′ 后必有回路。
4.2.2最优树Kruskal算法
设想要建设一个连接若干城市的铁路网。已知建造直接连接城市v i 与v j 的干线费用为c ij 。试设计一个铁路网,以使建设总费用达到最小。将每个城市看作权图中一点,权图中任意两点v i ,v j ,令c ij 为边v i ,v j 所带的权。这个问题是在权图中求一个带权总数最小的连通支撑子图。又因为权代表费用,所以肯定它们是非负的。因此,这一带有最小权的支撑子图中没有回路,即,这个子图必是图G的支撑树。
定义4.2.2.设G是加权连通图(这里只讨论边上的权都为正),带有最小权的支撑树称为权图G的最优树。
上述建设铁路网的问题就是一个权图中的最优树问题。
1956年,Kruskal给出了一个在权图中求最优树的算法。
Kruskal算法:设权图G=(G,L)是连通的。1.取l 1 ∈L(G),使w(l 1 )最小。2.如果l 1 ,l 2 ,⋯,l i 已经得到,则从L(G)−{l 1 ,l 2 ,⋯,l i }中取l i+1 ,使得{l 1 ,l 2 ,⋯,l i ,l i+1 }组成无回路的图,并且w(l i+1 )最小。如果不存在这样的l i+1 ,则算法停止。
定理4.2.2.设G=(P,L)是连通权图。于是Kruskal算法得到的T={l 1 ′ ,l 2 ′ ,⋯,l n }是G的最优树。
证:(1)先证明T是支撑子图,即证明P(T)=P(G)。P(T)⊆P(G),往证P(G)⊆P(T)。用反证法,设x∈P(G),但x∉P(T),任取T中点y,因G是连通的,所以在G中有x到y的路l=(x,v 1 ,⋯,v r ,y),则xv 1 不是T中的边,把边xv 1 加入T中不会产生回路,此与T终止在步骤C矛盾,所以,P(G)=P(T)。
(2)证明T是一棵树,只需证明T是连通的(无回路由算法保证)。若T不连通,不妨假设T有两个分支T 1 和T 2 ,令x∈T 1 ,y∈T 2 ,因G是连通的,所以,有G中的路(x,v 1 ,⋯,v r ,v r+1 ),其中x=v 1 ,y=v r+1 ,因此,必有边v i ,v i+1 ,使v i ∈T 1 ,v i+1 ∉T 1 ,那么,把v i v i+1 加到T中,不会产生回路,矛盾与算法停止,所以T是连通的。
(3)由(1),(2)得T是支撑树,设G有r个顶点,T有r−1条边。
(4)证明T是最优支撑树,证明可以通过以下不断交换边的办法,使T的所有边全在某一最优支撑树T ′ 中,则T=T ′ (均有r−1条边)。设T∗是一棵最优支撑树,T∗={l ′ 1 ,⋯,l ′ r−1 },T={l 1 ,⋯,l r−1 },若l 1 ∉T∗,在T∗中加入l 1 ,则形成一含有l 1 的回路,在此回路中删去一条非l 1 的边,不妨设为l ′ 1 ,得一图T ′ ,令T ′ ={l 1 ,l ′ 2 ,⋯,l ′ r−1 },则T ′ 是支撑树。对任意l∈L(G),因为w(l 1 )≤w(l),所以w(l 1 )≤w(l ′ 1 )而w(T ′ )=T∗−w(l ′ 1 )+w(l 1 ),所以w(T ′ )≤W(T∗),即T ′ 也是最优树。
一般地,设l 1 ,⋯,l k ∈T∗,l k+1 ∉T∗,T={l 1 ,⋯,l k ,l k+1 ,⋯,l r−1 },T∗={l 1 ,⋯,l k ,l k+1 ,⋯,l r−1 }因为T∗是支撑树,T∗∪{l k+1 }必然有回路C,不妨设l ′ k+1 是回路中一条边,l ′ k+1 ∉T,令T ′ ={l 1 ,⋯,l k ,l k+1 ,l ′ k+2 ,⋯,l ′ r−1 },则T ′ 是支撑树,由Kruskal算法步骤B,在算法实行中选了l k+1 而没选l ′ k+1 ,说明w(l k+1 )≤w(l ′ k+1 )所以w(T ′ )=w(T∗)−w(l ′ k+1 )+w(l k+1 ),即w(T ′ )≤w(T∗)因为T∗是最优树,所以T ′ 也是最优树,但T ′ 包括l 1 ,⋯,l k+1 ,反复执行上述过程,最后可得一最优树包括了T的所有边,即T ′ =T,所以T是最优树。