最小生成树Kruskal算法详解

Kruskal算法简介:

Kruskal 算法是一种用来求最小生成树的算法,在稀疏图中比 Prim 有更高的效率,且方便实现,所以本文重点讲解 Kruskal 算法的用途和使用方法

Kruskal算法原理:

Kruskal 算法主要利用贪心的思想使得边权和最小

Kruskal 算法步骤:

  1. m m m 条边按边权从小到大排序
  2. 把图中的 n n n 个顶点看成独立的 n n n 棵树组成的森林;
  3. 先从边权小的边开始循环,通过并查集判断添加这条边后是否会形成环(也就是能否连接两个不同祖先的点),如果可以,则添加这条边。
  4. 重复第三点,直到添加了 n − 1 n-1 n1 条边后停止循环

Kruskal算法实现:

我们以 【模板】最小生成树 作为例题进行分析

题目分析:

该题是一个很典型的最小生成树例题,并且适合用Kruskal算法解决,代码如下:

 
 

你可能感兴趣的:(C++,图论,题解,算法,数据结构,c#,c++,c语言)