文章目录
1.生成树和最小生成树
1.1 问题的定义
一个连通图 的生成树是一个极小连通子图
,它含有图中全部的顶点,但是只有足有构成一棵树的n-1条边。它有如下性质:
- 一棵有 n n n个顶点的生成树
有且只有
n − 1 n-1 n−1条边; - 如果一个图有 n n n个顶点和小于 n − 1 n-1 n−1条边,则是非连通图;如果它多于 n − 1 n-1 n−1条边,则一定有环;
- 但是有 n − 1 n-1 n−1条边的 n n n个顶点的图不一定是生成树。(它只是必要条件)
一棵生成树的代价就是树上各边的代价之和。
最小生成树就是构造连通网 的最小代价生成树(Minimum Cost Spanning Tree)(简称为最小生成树)的问题。
1.2 MST性质
构造最小生成树有多种算法,其中多数算法利用了最小生成树的一种简称为MST
的性质:
假设 N=(V,{E})是一个连通网,U是顶点集V的一个非空子集。
若( u , v u,v u,v)是一条具有最小权值(代价)的边,其中 u ∈ U , v ∈ V − U u∈U,v∈V-U u∈U,v∈V−U,则必存在一棵包含边( u , v u,v u,v)的最小生成树。
证明:(反证法)
假设网N的任何一棵生成树都不包含( u , v u,v u,v)。设T是连通图上的一棵最小生成树,当将边( u , v u,v u,v)加入到T中时,由生成树的性质,T中必存在一条包含( u , v u,v u,v)的回路。
另一方面,由于T是生成树(极小连通图),则T上必存在另一条边( u ′ , v ′ u^{'},v^{'} u′,v′),其中 u ′ ∈ U , v ′ ∈ V − U u^{'}∈U,v^{'}∈V-U u′∈U,v′∈V−U,且 u u u和 u ′ u^{'} u′之间, v v v和 v ′ v^{'} v′之间均有路径相通。删去边 ( u ′ , v ′ ) (u^{'},v^{'}) (u′,v′),便可以消除上诉回路,同时得到另一棵更小代价的生成树 T ′ T^{'} T′,这与假设矛盾。
简单点来说,将这条代价最小的边加入当前的生成树T会有环,再在环上找另一条代价更大的边去除然后就能得到代价更小的生成树 T ′ T^{'}