学习过程主要依照中国MOOC课程,感谢MOOC,感谢浙大授课大佬。
最小生成树问题
概念
- 是一棵树
- 无回路
- |v|个顶点一定有|v|-1条边
- 是生成树
- 包含所有顶点
- |v|-1条边都在图里
- 向生成树中任加一条边都一定构成回路
- 最小
- 边的权重和最小
如何构建
贪心算法:每次找权值最小的边,但有约束:
- 只能用图里有的边
- 只能正好用掉v-1条边
- 不能有回路
- Prim算法–让一颗小树长大
适合稠密图,时间复杂度O(|V|2)
1 | /* 邻接矩阵存储 - Prim最小生成树算法 */ |
- Kruskal算法–将森林合并成树
适合稀疏图,时间复杂度最小可为O(|E|Log|E|)
1 | /* 邻接表存储 - Kruskal最小生成树算法 */ |
以上。
注:转载文章请注明出处,谢谢~