《经典图论算法》普里姆算法(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 来记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据结构和算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值