在我们开始讲解算法之前,大家需要先了解下面几个考试和面试中都经常出现的概念,
什么是生成树?
生成树是连通图的子集,其中所有边都是连接的,即可以从任一边遍历到任何边,中间有或没有中间节点。此外,生成树中不得有任何循环。因此我们可以说,如果一个连通图中有N 个顶点,那么生成树可能具有的边数为N-1 。
什么是最小生成树?
给定一个连通无向图,该图的生成树将是它的一个子图,也就是一棵将所有顶点连接在一起的树。一个图可以有许多不同的生成树。有权重的、连通的、无向的图的最小生成树 (MST) 或最小权重生成树是权重小于或等于所有其他生成树的权重的生成树。生成树的权重是生成树的每条边的权重之和。
最小生成树有多少条边?
最小生成树具有 (V – 1) 条边,其中V是给定图中的顶点数。
明白了上面的几个问题,我们就可以正式开始研究 Kruskal’s Minimum Spanning Tree Algorithm 了!
首先 Kruskal’s Minimum Spanning Tree Algorithm 具体是怎么工作的呢?
- 按权重的非递减顺序对所有边进行排序。
- 选择最小的边。检查它是否与到目前为止形成的生成树形成一个循环。如果没有形成循环,则包括该边。否则,丢弃它。