图论 最小生成树
最小生成树:连通加权无向图 权值总合最小 的生成树(例如下图红色连接)
1.应用
例如你要在城市 A、B、C、D之间修建公路连通每个城市
( A-B 之间连通,B-C之间连通,那么 A-C之间也自然连通)
最小生成树是连通所有城市需要建造总长度最短的方案(比如上图的红色连接)
常见求最小生成树的算法有
- 普利姆(Prime)算法
- 克鲁斯卡尔(Kruskal)算法
2.普利姆(Prime)算法
-
核心:挑选与已有点相连的最小的边
-
时间复杂度:
O(n2)
-
教程:https://zhuanlan.zhihu.com/p/336932880
3.克鲁斯卡尔(Kruskal)算法
普利姆(Prime)算法是以 点 为基础,挑选与 已有点 相连的最小边。
克鲁斯卡尔(Kruskal)算法是以 边 为基础,先将边从小到大排列,从小到大的添加不构成「环路」的边。
- 核心:先将边从小到大排列,从小到大的添加不构成「环路」的边
- 时间复杂度:
O(nlogn)
(这是由排序方式实现的) - 教程:https://zhuanlan.zhihu.com/p/337447019