《经典图论算法》普里姆算法(Prim)

摘要:

1,最小生成树的介绍

2,Prim算法的实现步骤

3,Prim算法的代码实现

1,最小生成树的介绍

在一个有 n 个顶点的加权无向图中,如果只需要使用 n-1 条边即可把图中的所有点都连接起来,那么这 n 个顶点和这 n-1 条边构成的图就是生成树,如下图所示,图G的两棵生成树。

f9f96d5381e056196d1fa4da24add161.png

一个图的生成树有很多,其中权值总和最小的就是最小生成树。如果存在权值相同的边,最小生成树也可能有多个,如下图所示,下面两个都是图G的最小生成树,它们的权值总和都是 8 。如果图的每一条边的权值都互不相同,那么最小生成树将只有一个。

773b0aff70ce87ef1ce6f2fadd420b18.png

求最小生成树有普里姆算法(Prim),克鲁斯卡尔算法(Kruskal),和博鲁夫卡算法(Boruvka),这里我们主要讲的是Prim算法。

2,Prim算法的实现步骤

首先我们把图中的点分成两部分,一部分是已经选择的,用集合 S 记录,一部分是还没选择的,用集合 T 来记录。

猜你喜欢

转载自blog.csdn.net/abcdef314159/article/details/142825184