最小生成树

最小生成树

1、定义
①树——每个顶点都在树上;没有闭环。
②最小——边上的权值和最小

若有n个顶点,则有n-1条边。

2、实现算法:
①Kruskal(克鲁斯卡尔)算法——直接选择权值最小的边
首先,将边的权值由小到大排序;
再遍历边的集合,若该边加入后构成环,则继续遍历;否则,将该边加入到最短边的集合中,直到选中n-1条边。

最小生成树(Kruskal(克鲁斯卡尔)和Prim(普里姆))算法动画演示

②Prim(普里姆)算法——从顶点出发,间接选择与顶点相连,权值最小的边
首先,在连接已确定顶点集合与未确定集合之间的边中,选取最短的一条边;
再将该边加入到最小生成树的边的集合中,并将该边两端的顶点加入到已确定的顶点集合中,直到所有顶点都遍历一遍。

总结:克鲁斯卡尔算法主要是针对边来展开,边数少时效率会非常高,所以对于稀疏图有很大的优势;而普里姆算法对于稠密图,即边数非常多的情况会更好一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值