【贪心】Prim和Kruskal算法的区别
Kruskal算法和Prim算法的优劣
Kruskal算法,相较于Prim算法是基于点的操作,Kruskal算法是基于边的操作,思想也比Prim简单,更容易理解
Prim算法是采用从点方面考虑来构建MST的一种算法,Prim 算法在稠密图中比Kruskal优。
示例
Prim算法
- 从源点出发,把源点所有的边加入一个集合(称为待选边集合E{}) 图1
- 从E{}中选出最短边,连接并移除,并将该点的所有的边加入E{} 图2
- 不断重复此步骤,如果遇到边已连接,则跳过此边并从E{}移除。
步骤图
1.
2.
3.
4.
5.
6.
7.
Kruskal算法
与Prim算法不同的是,
- 先将所有的边排序
- 连接并移除当前最短边,不断重复
- 如果步骤2遇到边的连接会形成环形,则跳过此边并移除。 如图5
步骤图
1.
2.
3.
4.
5.
6.
7.