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

科技   2024-10-08 17:54   上海  

摘要:

1,最小生成树的介绍

2,Prim算法的实现步骤

3,Prim算法的代码实现



1,最小生成树的介绍

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

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


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


2,Prim算法的实现步骤

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

数据结构和算法
王一博,《算法秘籍》作者,1000多页的pdf算法题我也已经整理完成,在公众号“数据结构和算法”中回复关键字“pdf”即可下载。
 最新文章