安全边定理
概述
安全边定理(Cut Property / Safe Edge Theorem):设 是某棵最小生成树(MST)的边的子集, 是横跨割 的一条轻边,则 对 是安全的。这是 Kruskal 和 Prim 算法正确性的统一理论基础。
定理陈述
形式化陈述
定理(CLRS Theorem 23.1):设 是一个连通无向加权图, 是包含在某棵 MST 中的边的子集。设 是 中尊重 的一个割(即 中没有边横跨该割), 是横跨割 的一条轻边(即 )。则边 对 是安全的,即 也包含在某棵 MST 中。
术语说明:
- 割 :将顶点集 划分为两个不相交子集 和
- 尊重 的割: 中没有任何边横跨该割
- 轻边:横跨割的所有边中权重最小的边
证明概要
证明思路
证明的核心是”交换论证”(exchange argument):假设轻边不在某棵 MST 中,通过替换操作构造包含该轻边的新 MST。
步骤 1:选择包含 的 MST
设 是一棵包含 的最小生成树(由假设,这样的 存在)。
步骤 2:分情况讨论
情况 1:。则 , 对 显然安全。无需进一步论证。
情况 2:。将 添加到 中,得到 。
步骤 3:分析环结构
是树( 条边),添加 后 含有唯一一个简单回路 。由于 ,,回路 必须从 “穿越”到 再”穿越”回来。因此 中至少存在另一条横跨割 的边,设为 ,其中 ,。
步骤 4:证明
由于割 尊重 ( 中没有边横跨该割),而 横跨该割,所以 。
步骤 5:交换边并验证
令 。
- 是生成树:删除 打破了回路 , 有 条边且连通
- 包含 :,,所以
- 是最小生成树:(因为 是轻边,)。但 已经是 MST,所以
因此 对 是安全的。
学术参考:该证明与知识库中 11.5 节 Prim 算法正确性证明的交换论证思路一致,详见 11.5 最小生成树。
关键推论
- Kruskal 算法的正确性:Kruskal 算法维护的边集 始终是某 MST 的子集。每次选择的最小权不成环边恰好是横跨某个尊重 的割的轻边,因此对 安全
- Prim 算法的正确性:Prim 算法维护的割 ( 为已选顶点集)天然尊重 ,每次选择的最小关联边就是轻边,因此安全
- 唯一性判定:若每条横跨割的轻边都是唯一的(即所有边权互不相同),则 MST 唯一
应用场景
- 算法导论 Ch21:安全边定理是 GENERIC-MST 框架的理论基础,Kruskal 和 Prim 算法都是该框架的实例化
- 网络设计:在设计通信网络时,安全边定理保证贪心策略能找到最小成本的连通方案
- 聚类分析:单链接聚类(single-linkage clustering)利用最小生成树的性质,其理论基础也来自安全边定理
参见
- 贪心算法 — 贪心选择性质与最优子结构
- 图论 — 图论基础概念
- 加权图 — 带权图的定义与表示
- 11.5 最小生成树 — Prim/Kruskal 算法的详细说明与正确性证明