克鲁斯卡尔算法

克鲁斯卡尔算法是一种计算图的最小生成树的方法,通过对边集操作实现。算法过程包括选择权值最小的边,根据边连接的顶点是否形成闭环或连接不同子图进行处理,最终得到包含所有顶点的单一连通子图。适用场景主要是稀疏图。文中还提供了算法的示例和参考代码。
摘要由CSDN通过智能技术生成

定义

与普利姆算法通过操作顶点集合来计算最小生成树相比较,克鲁斯卡尔算法是通过对图中的边集操作来实现的。

算法过程如下:

设置边集为E,图中的每一个连通子图G,G_set为连通子图的集合,即G_set{G1,G2...},在E中选择权值最小的边e,加入到G_set中,其中可能存在如下情形:

1、G_set中的某个元素Gi连通子图,在加入边e后形成闭环,则不作处理;

2、e这条边的两个顶点分属G_set的两个不同元素Gi,Gj (i!=j),则将Gi,Gj两个子图合并为一个子图;

3、e这条边的两个顶点都不属于G_set的任一个元素,则新建只包含e的连通子图new_G,并加入到G_set中;

重复选择E中的权值最小边,直到G_set中只存在一个元素G,且G中包含所有图顶点,此时G即为最小生成树。

示例


选择相同的示例进行操作

克鲁斯卡尔操作步骤如下:

{A,G}         选择:A-G

{A,G,B}       

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值