最小生成树算法Kruskal详解

本文详细介绍了Kruskal算法解决最小生成树问题的步骤,包括将边按权值排序、使用并查集判断边的连接情况,以及如何构建最小生成树。通过代码示例和测试,展示了算法的运行过程和结果。
摘要由CSDN通过智能技术生成

一、算法概述

最小生成树(Minimum Spanning Tree,MST):或者称为最小代价树Minimum-cost Spanning Tree:对无向连通图的生成树,各边的权值总和称为生成树的权,权最小的生成树称为最小生成树。

最小生成树问题其实就是求一棵怎样的树可以遍历每个节点,且总权值最小。

本文介绍用Kruskal算法解决最小生成树问题。

二、算法步骤

1、将连通图看做无边的散点,每个散点即为自己的父节点。

2、将每条边按照从小到大的顺序排列,每次从中取最小的边加入散点图。

3、加入时需要满足两个点连接后不能出现连通图。

     要想确保不出现连通图,则两个点在连接前应属于不同的集合(树)。所以需要判定它们是否在一个集合中。

     方法是使用并查集,关于并查集的内容请参照:https://blog.csdn.net/hacker_wind/article/details/79687134

4、重复步骤直至散点图变为连通图。所以定义一个计数器,当计数器的数值等于节点个数时,程序退出。

三、代码及测试样例

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值