最小生成树算法是用来求解一个图的最小生成树的算法。
所谓最小生成树,是指在一个图中选择一些边,使得这些边构成的子图恰好是原图的一棵生成树,且边权之和最小。
常用的最小生成树算法有 Kruskal 算法和 Prim 算法。
Kruskal 算法:
Kruskal 算法是一种贪心算法,它的基本思想是每次选择一条边权最小的边,将它加入到最小生成树中,直到最小生成树恰好包含原图的所有节点为止。
首先将所有边按照边权从小到大排序,然后依次加入每一条边。对于每一条边,我们先判断它是否会与最小生成树形成环,如果不会,就将它加入最小生成树中。为了判断是否会形成环,我们可以使用并查集进行维护。
Pr