1.最小生成树的概念
对于一个带权连通无向图G=V,E),生成树不同,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所有生成树的集合,若T为R中边的权值之和最小的生成树,则T称为G的最小生成树(Minimum-Spanning-Tree,MST)
性质:
- 最小生成树可能有多个,但边的权值之和总是唯一且最小的
- 最小生成树的边数=顶点数-1。砍掉一条则不连通,增加一条边则会出现回路
- 如果一个连通图本身就是一棵树,则其最小生成树就是它本身
- 只有连通图才有生成树,非连通图只有生成森林
2.求最小生成树
1.Prim算法
从某一个顶点开始构建生成树;
每次把代价最小的新顶点纳入生成树,直到所有顶点都纳入生成树为止。
eg:从P城开始构建最小生成树

2.kruscal算法
每次选择一条权值最小的边,连通边的两端(原本连通的不选),直到所有顶点都连通

3.总结
| 算法名称 | 基本思路 | 时间复杂度 | 适用图类型 |
|---|---|---|---|
| Prim 算法 (普里姆) | 从一个顶点开始,每次将代价最小的新顶点纳入生成树,直到所有顶点都纳入为止。 | O(V^2) | 边稠密图 |
| Kruskal 算法(克鲁斯卡尔) | 每次选择权值最小的边,使这条边的两头连通(原本已连通的边不选),直到所有结点都连通为止。 | O(E*log_2E) | 边稀疏图 |