简单理解Kruskal算法

一、引例

1.获得下面这个树的最小生成树,使用简单直接的贪心算法(每次都找最小边)

 2.先找到权重1的边,将它们描红

 然后是权重2的边描红

如果我们将权重3的边描红,会形成回路,这就不是最小生成树了 ,所以我们跳过3,描红4

 

 5也不能描,继续描红6

直到所有节点都被包括,此时最小生成树已经形成

二、kruskal算法需要遍历所有的边,复杂度O(nlogn)

1、初始化生成树的边集A,已经被连接的元素的集合B

2、将边按权值进行排序

3、对排序好后的边从小到大进行判断:如果这条边所连的2个顶点不同时位于B中,则将这条边加入到边集A中,并且将还没有位于B里面的顶点加到B中,如此循环加到生成树中的边集数量为n-1时停止.

4.最后边集A,B里面分别就是我们的最小生成树的边的点

注:文章的图片是观看浙大陈越老师的mooc的笔记截图,图片右下角的水印是csdn自动加的,我也不知道咋去掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值