最优树问题(Kruskal算法)

本文介绍了最优树问题中的Kruskal算法,通过详细步骤解释如何避免形成环路并找到最优树。算法通过逐次选择最小权值的边,并检查是否与已选择的边构成环路来构建最优树。在示例中展示了算法的具体操作过程,以及如何更新标记以确保不形成环路。

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

最优树问题(Kruskal算法)

由于没有看懂并查集 ,所以用了一种笨重的方法求解。
由于生成树有限,所以总可以通过逐个比较最终找到一个最优树(可能不唯一),这说明最优树是存在的,但当顶点和边的数目较大时,这种方法显然是不切实际的。Kruskal于1956年提出了求最优树的有效算法,其步骤如下(设G的各边权非负且无环) :

(1)选择e,∈E(G),使权w(e,)最小;
(2)假设已选好e,e,e,则从E(G)- {e,e..,.中选取0。,满足:
①G[ {e,.. ,.}无回路;
②w(e,1)是满足①的尽可能小的权;
(3)重复(2)直到不存在满足①的边

例如,下图给出了利用上述算法求最优树的过程,其中,粗边就是算法所选定的边.
在这里插入图片描述
权值标注
在这里插入图片描述
顶点标注
在这里插入图片描述

将其权值排列,找出最小权值
初始化cnt =1;
先选出权值最小的边,其两端顶点1和6
用sym[1][0] =1,sym[6][0]=1标记两点使用过
并用sym[1][1] ,sym[6][1]标记为cnt=1;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值