最小生成树(Prim、Kruskal)算法

本文介绍了最小生成树的概念及其应用,重点讲解了Kruskal和Prim两种算法的思想、步骤,并提供了相关代码。Kruskal算法通过并查集避免环路,Prim算法则从已知节点扩散寻找最小边。这两种算法都能找到带权图的最小生成树,但在实际操作中各有特点。
摘要由CSDN通过智能技术生成

目录

一、最小生成树的概念

二、最小生成树的应用

三、Kruskal算法

1、思想

2、步骤

3、代码

四、Prim算法

1、思路

2、步骤

3、代码


一、最小生成树的概念

一个图中可能存在多条相连的边,我们一定可以从一个图中挑出一些边生成一棵树。这仅仅是生成一棵树,还未满足最小,当图中每条边都存在权重时,这时候我们从图中生成一棵树(n - 1 条边)时,生成这棵树的总代价就是每条边的权重相加之和。

红色记号的边我最小生成树的边 

一个有N个点的图,边一定是大于等于N-1条的。图的最小生成树,就是在这些边中选择N-1条出来,连接所有的N个点。这N-1条边的边权之和是所有方案中最小的。 

二、最小生成树的应用

要在n个城市之间铺设光缆,主要目标是要使这 n 个城市的任意两个之间都可以通信,但铺设光缆的费用很高,且各个城市之间铺设光缆的费用不同,因此另一个目标是要使铺设光缆的总费用最低。这就需要找到带权的最小生成树

三、Kruskal算法

上面介绍了最小生成树是什么,现在需要掌握和理解最小生成树如何形成。给你一个图,用一个规则生成一个最小生成树。而在实现最小生成树方面有prim和kruskal算法,这两种算法的策略有所区别,但是时间复杂度一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值