克鲁斯卡尔和普里姆算法(最小生成树的构造过程详解)(期末考试速成大法)

图结构:

普里姆算法

普里姆算法第一步就是选取最短边,(注:如果有多个最短边,那就随便选一个)

如图所示,最短边为V1和V3之间的1,所以得到右边的结果

第二步,在未选取的点中,选取一个与已选取点最近的点连上。

听不懂? 大白话就是,在V1和V3基础上选一个最短的边,如下图,红色边刚才已经选了,你在它们的基础上选一个最短的,一眼看出是4:如果存在多个相等的最短边,任意选一个)

结果就是将4这条边加入:

继续选最小的边,一眼是值为2的这条边

结果:

继续选取边:

图中有未选取最小边长为5,,有3条。

此时发现有其中两条边(如下图加粗),如果选取了就形成了一个环,不满足最小生成树的定义,我们就去除(注:每次选取边后,如果形成了一个闭合的环就要舍弃边)

那么我们只能选剩下来的那条边了

结果就是:

继续选取边(形成闭环的边不选取)那只剩下3,6,6了,一眼3

最终结果:当所有点都被连起来后就结束了,N个点,最终有N-1条边

克鲁斯卡尔

这个比较简单,普里姆是在已选取点的基础上继续选择。

克鲁斯卡尔则是每次在全局选取最小的边。(注:如果选取的边形成了闭环应当舍弃

目前最小边为1:

继续,最小边为2:

继续最小边为3:

继续最小边为4:

继续选取最小边:此时有3条最小值为5的边。其中有2条不能选,因为会形成闭环,所以要舍去

最终结果:

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵药师

嘿嘿嘿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值