一、引例
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自动加的,我也不知道咋去掉