Prim算法 Kruskal算法 简述

Prim算法和Kruskal算法,都是用来找出图中最小生成树的算法,两个算法有些小差别。

Prim算法

又称普里姆算法,以图上的顶点为出发点,逐次选择到最小生成树顶点集距离最短的顶点为最小生成树的顶点,并加入到该顶点集,直到包含所有的顶点。

步骤:

1.选择一出发点,加入集合A。

2.遍历与集合A中的点相邻的边,找到最短的边,并且不构成回路。

3.将步骤2得到的边的目标点加入集合A。

4.重复2,3直到所有结点都加入到集合A中。

图解:


Kruskal算法

又称克鲁斯卡尔算法,以图上的边为出发点依据贪心策略逐次选择图中最小边为最小生成树的边,且所选的当前最小边与已有的边不构成回路。

步骤:

1.边按照权值从小到大排序。

2.将排序好的权重边依次加入到最小生成树中,如果加入时产生回路就跳过这条边,加入下一条边。

3.将所有节点加入最小生成树时,就找出了最小生成树。


Prim算法和Kruskal算法 :

Kruskal算法,时间复杂度O(nlogn),Prim算法,时间复杂度O(n^2)

Kruskal算法在效率上要比Prim算法快,因为Kruskal只需要对权重边做一次排序,而Prim算法则需要做多次排序。

Kruskal算法主要是针对边来展开,边数少时效率会非常高,所以对于稀疏图有很大的又是,而Prim算法对于稠密图情况会好些。


  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值