图论(一)最小生成树

最小生成树有两种算法:这里先不写代码

1:普利姆算法(prim):初始状态相当于两个篮子A与B,篮子中装的是点vertex,初始化时候A是空的,B是满的

算法描述:

先从B中随机找一个点放到A中,不断从B中找距离A集合最近的一个点放到A中,直到B为空

在这个过程中最近距离对应的边集便能构成一颗最小生成树

所谓B中距离A集合最近的点就是,与A集合中任意点相连的,且彼此距离最近的B集合中的点;

有点类似吸铁石,每次吸一个,有点像层次聚类的思想,只是prim最终需要寻找的是那些最近的边集合;

其实更像传销,不断的拉新人,每次只能是最近距离的人被拉进来。

 

2:克鲁斯卡尔算法(kruskal)

算法描述:

prim是找集合最近点,克鲁斯卡尔是找最小边加入到新的边集中,但是有约束,就是新的边集中不能有回路,如果有回路就找次近的边

 

描述的不好,权当自己看看怕忘了,写成代码中主要是考虑集合的问题

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值