【数据结构算法】图解prime算法和Kruskal算法(最小生成树)

最小生成树:

带权连接图中最小生成树:含所有顶点(n个)和n-1条边且它们权值之和最小

Prime算法:拉点法

时间复杂度:O(n*2),n为顶点个数

先选一个顶点放入集合U中,然后把U外顶点和U中任一顶点连线权值最小的加入U中,这样每一步加入U的都是权值最小的,所以,得到的是最小生成树

例:求下图的最小生成树

第一步:假设从顶点0开始,把顶点0加入集合U

 

5到U中顶点权值最小,把5加入U

4到U中顶点权值最小,4加入U

3到U中顶点权值最小,3加入U

2到U中顶点权值最小,2加入U(不包括6,画错了)

下面是顶点1,顶点6依次加入U

Kruskal算法:拉边法

时间复杂度:O(e*2),e为边数

去掉图中的所有边,然后不断加入权值最小的边,如果加入后构成一个环,则舍弃这条边

直至加入n-1条边

例:求下图的最小生成树

第一步:去掉所有边

第二步:依次把最小权值的边拉入顶点中

 

拉入过程中判断是否构成环,如果构成环则舍弃这条边,找下一个最小的权值的边

 

 

 

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值