最小生成树⚓︎
- Prim算法
- 朴素版Prim(常用):稠密图,时间复杂度 \(O(n^2)\)
- 堆优化版Prim(不常用):稀疏图,时间复杂度 \(O(m\log n)\)
- Kruskal算法(常用):稀疏图,时间复杂度 \(O(m\log m)\)
Prim算法⚓︎
朴素版Prim算法⚓︎
算法伪代码为:
例题:Prim算法求最小生成树
堆优化的Prim算法⚓︎
略
Kruskal算法⚓︎
- 将所有边按权重从小到大排序,本步骤时间复杂度为 \(O(m\log m)\);
- 从小到大依次枚举每条边 \(a,b\),权重 \(c\),如果 \(a,b\) 不连通,就将这条边加入到集合中。本步骤时间复杂度为 \(O(m)\)。
以上步骤类似于并查集。
算法伪代码为: