最小生成树Minimum Spanning Tree

本文详细介绍了生成树的概念及其在图论中的应用,并深入探讨了两种经典的最小生成树算法——Kruskal算法和Prim算法。通过实例解析,帮助读者理解这两种算法的工作原理和应用场景。

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

把一场败仗存草稿以后,开始收集一些看过的,打算做整理
先从和第一篇有联系的「贪心」「图论」「路径」「动规」算法开始

参考学习
http://blog.youkuaiyun.com/heavenboya/article/details/6654778
http://www.acmerblog.com/greedy-kruskal-spanning-tree-mst-5326.html

1.生成树Spanning Tree
「图论」图G=(V, E),包含所有顶点的极小连通子图
V个顶点,(V – 1)条边
(从不同顶点出发,走不同的分支,都可以得到不同的生成树)
此图可能是「强连通」、「有根」、「有向」、「非连通」
若“非连通”或“非强连通的有向图”,则可能只得到的「生成森林」

1)DFS生成树
优先往深处摸索,触底则回到上一节点

*「DFS」「BFS」「回溯」「剪枝pruning」

2)BFS生成树
优先遍历并保存节点的生成边,之后向深处迈步

2.最小生成树MST
最小 =「路径加权」,也称最小权重生成树
(生成树的所有边的权重总和最小)
MST

1)Kruskal算法
a.依权重排序所有边
b.从最小的边开始加入,检测是否成环
c.重复b,直到加入了(v-1)条边

猴子也能懂:上帝视角,排序加边

O(ElogE),快排

「成环检测」
将所有点V的集合,拆为已扩展v1 { } 和未扩展v2 { }
检测边的两个顶点是否都在已扩展的v1中,若都在则成环
否则,更新两个子集和

猴子也能懂:已未拆集,此消彼长

*「并查集Union Find」「路径压缩」

ALG

2)Prim算法
a.某点出发,其相连边「候选」
b.选最小侯选边,连接新的顶点,其相连边候选
c.检测目的地相同的侯选边,比较并留下小边
d.重复b,直到加入了(v-1)条边

猴子也能懂:步步为营,优胜劣汰

*「Dijkstra算法」与Prim有些像,不断优化源点所有点的最短路径距离,攻城拔寨

ALG

O(N^2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值