构造最小生成树方法之--Kruskal

本文介绍了贪心算法在构造最小生成树问题中的应用,重点对比了Kruskal和Prim两种算法。Kruskal算法从最小边开始选择,避免环路,适合边少的情况;而Prim算法则从一个顶点出发逐渐扩展,适用于顶点较多的网络。两种算法各有优势,适用于不同的场景。
摘要由CSDN通过智能技术生成

MST实际上是贪心算法:把权值最小的边直接选择它就行了,而克鲁斯卡尔算法是更直截了当的贪心。

他一开始,直接把连通图中的所有顶点加入到最小生成树的集合中,因为最小生成树当中包含n个顶点,即连通图中的所有顶点都必须包括,所以它直接把n个顶点都包含在最小生成树中。

不过一开始,一条边都没有,它这个边集是空集,所以一开始它只包含n个顶点,一条边都没有,所以n个顶点每一个都是一个连通分量,彼此之间不连通

接下来,直接找边的权值最小的边,怎么找?将所有的边按照他的权值排个序,从最小的开始选。

加边的时候不能形成环,若有环出现,我们就不加他了,我们去掉他,找下一个最小的

选到所有的顶点都连通为止,或者说我们选出n-1条边为止

 

有3个5:

 

这里会出现环,不加它

最小生成树可以不一样:
 

两种算法比较:


Prim它是不断选择顶点加入生成树

Krusal是选择边

Prim是每一个顶点都要找其他的顶点去判断,那么顶点数相乘

Krusal是选择边,和顶点数无关,排序时也是按边的顺序,这里用堆排序算时间复杂度

Krusal边少时,比较快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值