给定一个连通网(带权的连通图),如果想找到一棵它对应的最小生成树,可以借助本节讲解的 Kruskal 算法(克鲁斯卡尔算法)实现。
Kurskal 算法查找最小生成树的核心思想是:将连通网中所有的边按照权值大小做升序排序,从权值最小的边开始筛选,如果此边不会和已选择的边构成环路,就选择它构建最小生成树;反之则跳过,继续筛选其它的边。
对于包含 N 个顶点的连通网,Kurskal 算法只需要从中筛选出 N-1 条符合条件的边,这些边组成的生成树就是最小生成树。
接下来通过一个实例,给大家讲解 Kruskal 算法查找最小生成树的具体实现细节。
图 1 连通网
图 1 是一个连通网,Kruskal 算法查找最小生成树的过程是:
1) 初始状态下,为连通网中的各个顶点赋予不同的标记,便于后续选择某个边时判断是否会构成环路。这里我们用不同的颜色标识各个顶点,如下图所示:
图 1 为各个顶点赋予不同的标识
将连通网中的各个边根据权值大小做升序