贪心算法-最小生成树Kruskal算法和Prim算法

Posted 北冥有鱼,南冥有猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪心算法-最小生成树Kruskal算法和Prim算法相关的知识,希望对你有一定的参考价值。

Kruskal算法:

不断地选择未被选中的边中权重最轻且不会形成环的一条。

简单的理解:

不停地循环,每一次都寻找两个顶点,这两个顶点不在同一个真子集里,且边上的权值最小。

把找到的这两个顶点联合起来。

初始时,每个顶点各自属于自己的子集合,共n个子集合。

每一步操作,都会将两个子集合融合成一个,进而减少一个子集合。

结束时,所有的顶点都在同一个子集合里,这个子集合就是最小生成树。

例子:

伪代码:

 

 Prim算法:

G=(V,E),S是V的真子集,如果u在S中,v在V-S中,且(u,v)是图的一条边,称之为特殊边,且(u,v)是所有特殊边中最短的,那么,(u,v)这条边一定在最小生成树中。

任意指定一个顶点作为起始点,放在S中。

每一步将最短的特殊边放入S中,需要n-1步,即可把所有的其他的点放入S中。算法结束。

例子:由节点A开始。

 伪代码:

 

以上是关于贪心算法-最小生成树Kruskal算法和Prim算法的主要内容,如果未能解决你的问题,请参考以下文章

贪心算法-最小生成树Kruskal算法和Prim算法

图--05---贪心算法Prim算法kruskal算法

贪心算法之最小生成树(Prim和kruskal算法)

最小生成树算法:Kruskal算法 Prim算法

prim和kruscal算法得到的最小生成树是不是一样

关于最小生成树的Prim算法和Kruskal算法