算法导论 23.1 最小生成树

本文介绍了最小生成树的概念,它在连通无向图中寻找权重最小的无环子集。文章探讨了Prime算法和Kruskal算法这两种贪心策略,并提供了通用的最小生成树伪代码。同时,详细解释了安全边的定义及其识别定理,强调了安全边在构建最小生成树过程中的关键作用。
摘要由CSDN通过智能技术生成

一,最小生成树的概念

        对于一个连通的无向图G=(V,E),每条边(u,v)∈E上赋予一个权重w(u,v)(可以是金钱、资源的消耗量或者长度等代价),我们需要找到一个E的无环子集T,既能将所有结点连接起来,又要让权重(代价)最小。由于T是无环的且连通所有结点,那他必然是棵树,我们称这棵树叫生成树,因为他是由图G生成的,而求最小权重的树的问题叫做最小生成树问题。

二,最小生成树的形成

        求最小生成树的方法有两种:Prime算法和Kruskal算法,两种算法都采用了贪心算法,即每一步都选择对于当前最佳的选择,这种贪心算法可以用下面这个通用的方法来描述,这个算法每一次让最小生成树增加一条边,并始终满足集合A中的边能形成最小生成树

三,最小生成树的通用伪代码

GENERIC_MST(G,w)

1. A=∅

2. while A does not form a spanning tree

3.     find an edge(u,v) that is safe for A

4.     A=A∪{(u,v)}

5. return A

第1行初始化了一个用于存放能形成最小生成树的边的子集A;2-4行中,如果A中的边能形成一个生成树,那么我们就再找一条能维持这个状态的安全边加进去;最后返回这个最小生成树。

四,安全边的概念及辨别

        安全边:加入该边后不会破坏循环不变式(即满足伪代码第2行),称其为安全边

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值