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

Posted guxuanqing

tags:

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

Prim算法(使用visited数组实现)

Prim算法求最小生成树的时候和边数无关,和顶点树有关,所以适合求解稠密网的最小生成树。

Prim算法的步骤包括:

1. 将一个图分为两部分,一部分归为点集U,一部分归为点集V,U的初始集合为{V1},V的初始集合为{ALL-V1}。

2. 针对U开始找U中各节点的所有关联的边的权值最小的那个,然后将关联的节点Vi加入到U中,并且从V中删除(注意不能形成环)。

3. 递归执行步骤2,直到V中的集合为空。

4. U中所有节点构成的树就是最小生成树。

技术分享图片

方法上:Kruskal在所有边中不断寻找最小的边,Prim在U和V两个集合之间寻找权值最小的连接,共同点是构造过程都不能形成环。

时间上:Prim适合稠密图,复杂度为O(n * n),因此通常使用邻接矩阵储存,复杂度为O(e * loge),而Kruskal多用邻接表,稠密图 Prim > Kruskal,稀疏图 Kruskal > Prim。

空间上: Prim适合点少边多,Kruskal适合边多点少。

 

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

 

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

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

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

Prim算法和Kruskal算法求最小生成树

Prim算法和Kruskal算法(图论中的最小生成树算法)

[图] 最小生成树-Prime算法和Kruskal算法

图论最小生成树Prim和Kruskal算法