摘要:
1,最小生成树的介绍
2,Prim算法的实现步骤
3,Prim算法的代码实现
1,最小生成树的介绍
在一个有 n 个顶点的加权无向图中,如果只需要使用 n-1 条边即可把图中的所有点都连接起来,那么这 n 个顶点和这 n-1 条边构成的图就是生成树,如下图所示,图G的两棵生成树。
一个图的生成树有很多,其中权值总和最小的就是最小生成树。如果存在权值相同的边,最小生成树也可能有多个,如下图所示,下面两个都是图G的最小生成树,它们的权值总和都是 8 。如果图的每一条边的权值都互不相同,那么最小生成树将只有一个。
求最小生成树有普里姆算法(Prim),克鲁斯卡尔算法(Kruskal),和博鲁夫卡算法(Boruvka),这里我们主要讲的是Prim算法。
2,Prim算法的实现步骤
首先我们把图中的点分成两部分,一部分是已经选择的,用集合 S 记录,一部分是还没选择的,用集合 T 来记录。