1. 基本定义
-
生成树:在一个连通无向图中,一个生成树是包含所有顶点且边数为 n−1(n为顶点数)的无环连通子图。
-
最小生成树:在所有生成树中,边权和最小的那一棵树。也就是说,若每条边有一个非负权值,最小生成树就是使得所有选中边的权值之和最小的生成树。
2. 基本性质
-
连通性:MST必须覆盖图中的所有顶点,保证图中任意两个顶点之间都有路径连接。
-
无环性:由于MST是一棵树,所以它没有回路。
-
边数:对于一个有 n 个顶点的图,生成树总是包含 n−1 条边。
-
唯一性:如果图中所有边的权值都不同,则最小生成树是唯一的;当存在相同权值的边时,可能会有多个不同的最小生成树。
3. 关键性质与定理
-
割定理(Cut Property):对于图中的任意割(将顶点分成两部分的划分),跨越这个割的权值最小的边必定出现在某个最小生成树中。这一定理是贪心算法(如 Kruskal 和 Prim 算法)正确性的理论基础。
-
环定理(Cycle Property):在图中的任意一个环中,若存在一条边的权值最大,则这条边不可能出现在最小生成树中。这个性质用于排除在构造 MST 时会引入环路的边。
4. 贪心策略与算法
最小生成树的求解常采用贪心策略,即在每一步都选择局部最优的边,从而希望构造出全局最优的生成树。常见的算法包括:
-
Kruskal 算法:
-
思路:先将所有边按照权值从小到大排序,然后依次选择每条边(前提是不与已选边形成环),直到选出 n−1 条边。
-
理论依据:利用割定理保证每次选择的最小边是安全的。
-
-
Prim 算法:
-
思路:从任一顶点开始,逐步将与当前生成树相连的权值最小的边加入生成树,直到所有顶点都被包含在内。
-
理论依据:同样基于割定理,确保每次扩展都不会违背最优性。
-
5. 正确性证明
-
交换论证法:证明如果某个最小生成树解中没有使用当前选定的最小边,则可以用该边替换某条边而不增加总权值,从而证明贪心策略得到的解与最优解一致。
-
割定理证明:利用任意割的特性说明,在每个步骤选择跨割的最小边是安全的,且不会破坏后续构造最小生成树的可能性。
6. 算法时间复杂度
-
Kruskal 算法:
-
边排序:O(ElogE)
-
并查集操作:每次查找和合并的时间复杂度近似为 O(α(n))(α(n)) 是极其缓慢增长的阿克曼函数的反函数)
-
总体复杂度通常认为是 O(ElogE)。
-
-
Prim 算法:
-
利用优先队列(最小堆):总体时间复杂度为 O((E+V)logV)
-
对于稠密图来说,使用邻接矩阵和简单数组实现时的复杂度可达到
。
-
7. 应用与扩展
最小生成树理论不仅在理论计算机科学中占有重要地位,而且在实际问题中也有广泛应用,如:
-
网络设计:构造最经济的通信网络、交通网络和电网等。
-
聚类分析:在数据挖掘中用于发现数据中的结构。
-
近似算法:例如解决 NP-hard 问题时,通过构造 MST 提供近似解。