最小生成树——贪心算法

1.生成树和最小生成树
1.1 问题的定义

一个连通图 的生成树是一个极小连通子图,它含有图中全部的顶点,但是只有足有构成一棵树的n-1条边。它有如下性质:

  • 一棵有 n n n个顶点的生成树有且只有 n − 1 n-1 n1条边;
  • 如果一个图有 n n n个顶点和小于 n − 1 n-1 n1条边,则是非连通图;如果它多于 n − 1 n-1 n1条边,则一定有环;
  • 但是有 n − 1 n-1 n1条边的 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 uUvVU,则必存在一棵包含边( 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 uUvVU,且 u u u u ′ u^{'} u之间, v v v v ′ v^{'} v之间均有路径相通。删去边 ( u ′ , v ′ ) (u^{'},v^{'}) (u,v),便可以消除上诉回路,同时得到另一棵更小代价的生成树 T ′ T^{'} T,这与假设矛盾。

简单点来说,将这条代价最小的边加入当前的生成树T会有环,再在环上找另一条代价更大的边去除然后就能得到代价更小的生成树 T ′ T^{'}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值