Minimum Spanning Tree

Base

  • A graph whose edge’s weight is not the same as another, is only one minimum spanning Tree.

    Proof:
    假设T1,T2是G的两棵最小生成树,其边集为E(T1) = {e1,e2,…,en-1}且按边权值从小到大排序(ei >= ei-1),E(T2) = {f1,f2,…fn-1}且按边权值从小到大排序(fi >= fi-1);设k是第一个使ek != fk的下标,不妨设fk > ek,将ek加入到T2中,则T2必定存在一个含边ek环,且在环中必定存在一条边fj,且fj > ek,否则将导致子集{f1,f2,…,fk-1,ek}已构成环与T1是生成树的矛盾。由此T2+{ek}-{fj}也是一棵生成树,而且这棵最小生成树的权值小于T2,这与T2是图G的最小生成树矛盾。故不存在k使得ek != fk,即图的最小生成树唯一;同时可以得到,一个图的最小生成树的权值边表是唯一的。

    说明:
    为什么一定存在环:生成树另加边,一定形成环(这个定理是:数加边形成环)
    为什么环中一定有fj>ek,这是因为k是最小的ek!=fk的边,所以k之前的在两个最小生成树中都是一一对应的,在第一个生成树中加入ek没有形成环,则在第二个生成树中的环也不会仅仅是小于k的边构成的.

  • If a graph has different minimum spanning tree, their edge weight sequence is the same.

Proof Prim Algorithm

  • 假定所有边的权值不同.
  • 用prim算法得出的边分别为e1,e2,en;
    若不存在最小生成树包含e1,那么把e1加入任意一颗最小生成树,必然成环,并且在环上可以找到一条不小于e1的边,删掉此边,得到一颗更优的生成树或者得到了一颗包含e1的最小生成树,矛盾。
    若包含e1的最小生成树都不包含e2,那么把e2加入其中一颗包含e1的最小生成树中,也会成环,并且在环中也能找到不小于e2的边,同上也会产生矛盾。
    同上可以证明prim算法得到的是最小生成树。

Proof Kruskal Algorithm

  • 为了避免最小生成树不唯一的问题,可以不妨假设这个图所有的边长都不相等
    (注意最小生成树的总长度是原图边长的连续函数,所以可以这样加强条件)
    然后用反证法,假定Kruskal算法中的第k步首次出现错误,算法选了E1,但实际上必须选另一条边E2才能得到最小生成树T0
    E1连接了两个连通分支,这两个连通分支在最终的T0里是连通的,所以把T0和E1放在一起之后形成的图有一个环,在这个环里一定有k步或之后新选的边(如果没有的话仅凭前k-1条边和E1不会构成环),依照E1的定义,这个环里存在比E1长的边,用E1换掉这条边之后得到的树T1比T0更短,矛盾
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值