最小生成树(总结+例题)

何谓最小生成树

对于一个带权连通无向图G中的不同生成树,各棵树的边上的权值之和可能不同,边上的权值之和最小的树称之为该图得最小生成树

一、概念 
生成树:一个连通图的生成树,指的是该图的一个子图,它包含图的所有顶点(N个),但只有足够把所有顶点连接在一起的N-1条边。 如果再向其中添加一条边,那么必定会有环形成。 
最小生成树:一个连通图的所有生成树中,所有边的权值加起来最小的生成树,称为最小生成树。

二、实际应用 
学一种结构或者一种算法,我时常会考虑它跟实际生活中的哪些方面有联系, 是否可以运用到实际生活呢。而不只是知道可以作为题目的解法。 
最小生成树在实际中可以用于通信网络铺设的计算,城市间道路的计算,我所查到的资料一般都是考虑费用为主。即运用最小生成树知识,考虑如何建设才能最节省费用并且可以投入实用
三,算法

1.普里姆算法—Prim算法
算法思路: 
首先就是从图中的一个起点a开始,把a加入U集合,然后,寻找从与a有关联的边中,权重最小的那条边并且该边的终点b在顶点集合:(V-U)中,我们也把b加入到集合U中,并且输出边(a,b)的信息,这样我们的集合U就有:{a,b},然后,我们寻找与a关联和b关联的边中,权重最小的那条边并且该边的终点在集合:(V-U)中,我们把c加入到集合U中,并且输出对应的那条边的信息,这样我们的集合U就有:{a,b,c}这三个元素了,一次类推,直到所有顶点都加入到了集合U。

https://blog.csdn.net/red_red_red/article/details/84995803

2.克鲁斯卡算法

算法思路: 
(1)将图中的所有边都去掉。 
(2)将边按权值从小到大的顺序添加到图中,保证添加的过程中不会形成环 
(3)重复上一步直到连接所有顶点,此时就生成了最小生成树。这是一种贪心策略。

最小花费问题

畅通工程——最短长度

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
prim算法是一种用于解决最小生成树(Minimum Spanning Tree,MST)问题的算法。最小生成树是指在一个连通加图中找到一棵包含所有顶点并且边值之和最小的树。 下面以一个例题图来解释prim算法的过程。假设我们有一个加图,顶点分别为A、B、C、D、E,边的值为: AB: 2 AC: 3 AD: 7 BC: 8 BE: 4 CE: 5 DE: 6 首先选择一个任意顶点作为起始点,我们选择A点作为起始点。将A点标记为已访问,然后找到与A点相邻的边中值最小的边,即AB,将B点标记为已访问。此时A—B这条边就成为了最小生成树的一部分。 接下来,我们需要找到与A、B点相邻的边中值最小的边。分别是AC和BE,我们选择AC这条边,将C点标记为已访问。此时A—B和A—C这两条边就成为了最小生成树的一部分。 然后,我们找到与A、B、C点相邻的边中值最小的边。分别是AD和CE,我们选择CE这条边,将E点标记为已访问。此时A—B、A—C和C—E这三条边就成为了最小生成树的一部分。 最后,我们找到与A、B、C、E点相邻的边中值最小的边,即DE。将D点标记为已访问。此时A—B、A—C、C—E和D—E这四条边就组成了最小生成树。 通过上述过程,我们得到了最小生成树,其包含了ABCED这5个顶点,使得边的值之和最小。这就是prim算法的过程,通过不断选择最小的边来构建最小生成树

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值