最小生成树 Kruskal算法

Prim算法又被称为加点法,而Kruskal与Prim算法不同,被称为加边法。、

伪代码:

输入:无向连通网G=(V,E)

输出:最小生成子树T=(U,TE)

1.初始化:U=V;TE={};

2.重复下列操作直到所有顶点都位于一个连通分量;

2.1在E中选取最短边(u,v)并入;

2.2如果顶点u,v位于两个连通分量,则

2.2.1将边(u,v)并入TE;

2.2.2将这两个连通分量并为一个连通分量;

2.3在E中标记边(u,v),使得不参与后续最短边的选取

最小生成树 Kruskal算法_第1张图片

在Kruskal算法中用到了边集数组来进行存储,更容易操作。

Kruskal算法因为只与边相关,则适合求稀疏图的最小生成树。而prime算法因为只与顶点有关,所以适合求稠密图的最小生成树。

Kruskal算法在效率上要比Prim算法快,因为Kruskal只需要对权重边做一次排序,而Prim算法则需要做多次排序。尽管Prim算法每次做的算法涉及的权重边不一定会涵盖连通图中的所有边,但是随着所使用的排序算法的效率的提高,Kruskal算法和Prim算法之间的差异将会清晰的显性出来。

 

 

你可能感兴趣的:(最小生成树 Kruskal算法)