码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-09-27 22:54:46      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:图片   关联   执行   最小   alt   http   节点   构造   生成   

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算法

标签:图片   关联   执行   最小   alt   http   节点   构造   生成   

原文地址:https://www.cnblogs.com/guxuanqing/p/9716026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!