最小支撑树问题

1. Prim算法

以某一个点开始,寻找当前该点可以访问的所有的边;在已经寻找的边中发现最小边,这个边必须有一个点还没有访问过,将还没有访问的点加入我们的集合,记录添加的边;寻找当前集合可以访问的所有边,直到没有新的点可以加入;此时由所有边构成的树即为最小生成树。

最小支撑树问题_第1张图片

2. Kruskal算法

基于贪心的思想得到的。首先我们把所有的边按照权值先从小到大排列,接着按照顺序选取每条边,如果这条边的两个端点不属于同一集合,那么就将它们合并,直到所有的点都属于同一个集合为止。

最小支撑树问题_第2张图片

总的来说,Prim算法是以点为对象,挑选与点相连的最短边来构成最小生成树。而Kruskal算法是以边为对象,不断地加入新的不构成环路的最短边来构成最小生成树。

你可能感兴趣的:(贪心算法,算法)