图算法之最小生成树

本文介绍在连通无向图中寻找权重最小的生成树问题,包括Kruskal算法和Prim算法两种贪心策略。每种算法都确保每一步选择的安全边能够构成最小生成树的子集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连通的无向图G=(V,E)来表示,对于每条边都赋予权重w,希望能找到边的集合是的所有点都能够连接起来,而且这些边的权重能达到最小。

由于这些边是无环的而且能连通所有结点,所以最终构成了一棵树。图G的这棵树叫做生成树,求取该树的问题叫做最小生成树问题。

这里要学习的是Kruskal算法和Prim算法。

这两中算法都是属于贪心算法,其每一步都必须在多个可能的选择中选择一种。

这种策略并不能一定找到一颗权重最小的生成树。

 

贪心算法在每时每刻都生长最小生成树的一条边,并在整个策略的实施过程中,管理一个遵循下述循环不变式的集合A:

在每遍循环之前,A是某科最小生成树的一个子集。

在每一步之前,都会选择一条不属于集合A的边加入到集合A中,使得A和那条边的新集合仍然是某棵最小生成树的子集。

这种边加入到A中不会破坏掉A的循环不变式,因此也叫做安全边。

下面就是如何找到辨认安全边的规则和利用这种规则构建最小生成树算法。

安全边辨认规则

Kruskal算法

Prim算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值