证明1: 最小生成树必然存在
根据well ordering principle,集合必然存在最小值,所以最小生成子树必然存在.
证明2: 最小生成树可能有多个.
显然,边权为1的图的每个生成树都是最小生成树
证明3: 最小生成树必然包含图G上最短的那条边
反证法. MST添加最小边e后一定有环(n条边,n个点,),去除环上的一条边
证明: 最小生成树必然包含图 G 上最短的那条边
证明步骤:
-
设定最短边: 设图
中存在一条最短边 ,其权重为 ,且 连接两个顶点 和 。 -
假设
不在最小生成树中: 假设 是 的一棵最小生成树,但不包含边 。 -
构造图: 在
中,去掉任意一条边 以保持树的特性(去掉一条边会产生两个连通分量)。由于 是一棵树,去掉边 会将树分成两个连通分量,设为 和 。 -
添加边
: 由于 连接 和 ,我们可以将边 加入 。加入 后,图中会形成一个环。 -
考虑环中的边: 该环中包含了边
和之前的边 。现在我们考虑这个环中的边权: - 因为
是最短边,且其权重 小于或等于环中其他任何边的权重。
- 因为
-
替换边: 我们可以用边
替换边 ,得到一棵新的生成树 。因为 是最短边,所以 ,于是 的总权重不大于 。 -
得出矛盾: 由于
已经是一棵最小生成树,总权重不可能再变小,所以 也是一棵最小生成树;但 包含了边 ,这与“ 不在最小生成树中”的假设矛盾。
所以假设不成立,图
证明3(核心):
4
|
|
1 --- 2
|
|
3
若森林A是某个最小生成树的子图,去除A的条一边后e1,添加一边e2,且
Kruskal算法的步骤如下
- 首先,将图中所有边按权重从小到大排序。
- 然后,从权重最小的边开始,将它和它所连接的两个顶点加入到一个连通子集中。
- 重复步骤2,直到所有顶点都属于一个连通子集。
- 最后,将所有边加入到最小生成树中,使得它是连通的。
证明3: Kruskal算法的正确性
使用数学归纳法
P(0) 是空集,必然是某个
假设P(i)成立,证明P(i+1) 成立
已知,P(i)是成立的,P(i)这森林一定是对应某个MST的子图.
现在添加一条边e, 最小的e,
证明过程与原来的证明3类似.