Skip to content

模型Model

最小生成树

施工中 · 内容逐步修订

Minimum spanning tree · MST

连通加权图中总边权最小的生成树及其算法问题。

形式陈述 ​

设 G=(V,E) 为非空、连通的有限简单无向图,另给边权函数 w:E→R,取值于实数系。最小生成树(MST)是在全部生成树中使

w(T)=∑e∈Tw(e)

最小者。有限连通图至少有一棵生成树,候选数量有限,所以即使含负权边也总能达到最小值。

若输入以独立边 ID 保存平行边或自环,可先删去自环,再对每个无序端点对保留一条最小权代表边,并保存其原边 ID;平局按固定规则任选其一。所得简单图与原图具有相同连通分量。原图的任一生成树不含自环,也不同时包含同端点的两条平行边;把它的各边换成代表边,仍是同一端点结构的树,权重不增。反过来,简单图的生成树按保存的 ID 提升回原图,权重完全相同。因此两个问题的最优值相等,约化问题的一棵 MST 给出原问题的一棵 MST;这一适配不承诺枚举原图的全部最优树。

设原输入显式列出 n≥1 个已编号顶点和 m 条边记录,端点与权重比较按单位成本计费。按无序端点对比较排序、逐组选择最轻边,可在 O(n+mlog⁡(m+1)) 时间和 O(n+m) 存储内完成上述适配;它是求解前的额外成本。支持原边记录的 Prim、Kruskal 等实现也可直接忽略自环并逐条处理平行边,此时各自复杂度中的 m 按原记录数计费。单顶点输入约化后没有边,返回带原顶点的空树。

MST 贪心证明围绕两条交换性质展开。若边集 F 是某棵 MST 的子集,一个割 (S,V∖S) 尊重 F,即没有 F 中的边跨割,那么该割上的任意最轻边 e 都是安全的:取一棵包含 F 的 MST T;若 e∉T,加入 e 形成唯一圈,圈上另有一条跨割边 f。由 w(e)≤w(f),以 e 换掉 f 不增加总权,并仍包含 F。

对任意圈,若边 e 是圈中严格最重边,则 e 不属于任何 MST。否则从含 e 的生成树删去 e 会产生一个割,圈上还有一条更轻边跨割,替换后得到更轻生成树。若最重权并列,只能保证存在某棵 MST 不取指定的并列边,不能断言所有 MST 都排除它。

Prim 算法维护一棵树并反复取跨当前割的轻边;Kruskal 算法按全局边序合并森林;Borůvka 算法让每个分量同时选最轻出边。三者实现同一问题,但中间状态与复杂度模型不同。

直觉

生成树从原图删除所有环,却保留全部顶点之间的连通性;MST 再在这些骨架中比较边权总和。割性质从“任何连接方案都必须跨过这道边界”寻找可加入边,环性质从“圈上总有一条边可以删”寻找可排除边。两者是同一个交换动作的正反视角。

贪心过程应保持的是“已选森林能够扩充成某棵 MST”,而不仅是“现在没有环”。许多没有环的边集已经选入过贵边,无法完成为最优树。尊重当前森林的割保证交换时不会删掉已承诺保留的边;因此每一步都保留至少一个最优完成方案,最后选满 |V|−1 条边时便已经是其中之一。

目标函数只把所选边各计一次,不关心某条边会出现在多少对顶点的树路径中。因此一棵总造价最小的网络骨架,未必给任何指定根提供最短路线,也不自动具有冗余或容错能力。

最小生成树割性质示意图
例子与边界

三角形的边权为 1,2,4 时,取权 1,2 两边得到总权 3;权 4 的边在唯一圈中严格最重,不可能进入 MST。若三条边都为 1,删去任意一条都得到总权 2 的 MST,说明平局会造成多解。所有边权互异时 MST 唯一;反命题不成立,含相等权边的图也可能因结构限制只有一棵 MST。

全局排序为何还要检查分量 ​

设四个顶点的边为 ab:1,bc:2,ac:3,cd:4,bd:5。Kruskal 算法先选 ab,bc,此时森林分量为 {a,b,c} 与 {d};权重 3 的 ac 虽是下一条最便宜的边,却连接同一分量,必须跳过。随后选 cd,得到总权 7 的树。排序负责寻找便宜候选,分量检查负责保证候选跨越尊重当前森林的割,两个步骤缺一不可。

在比较与并查集操作的常用模型下,排序花费 O(mlog⁡(m+1)),分量查询与合并的总摊还成本为 O(mα(n))。n≥2 时,对于简单连通图可将主界写成 O(mlog⁡n);若允许任意多条平行边,应保留 m 或说明预处理,不能无条件利用 m≤n2。

负权边不会导致无界下降,因为任何生成树固定只含 |V|−1 条边;贪心证明也只比较边权。平行边应作为独立候选,较重的同端点平行边构成长度为二的多重图圈并可排除;自环不可能属于生成树。若基础文件格式只表示简单图,应在读入时明确合并平行边或保留边 ID,不能默默覆盖。

单顶点图的 MST 是空边集,权重为零;零顶点图按生成树条目的约定只输出空生成森林。图不连通时不存在覆盖全部顶点的生成树。对每个连通分量分别最小化,得到最小生成森林;若有 c 个分量,森林含 |V|−c 条边。有向图的对应问题需要指定根与入弧方向,称为最小树形图,并不由无向割性质直接解决。

MST 与最短路在非负权图上仍可不同。若 w(sa)=2,w(ab)=2,w(sb)=3,MST 取 sa,ab,总权 4;从 s 出发却会沿直边 sb 以成本 3 到达 b,而 MST 中的路线成本为 4。相应的最短路树取 sa,sb,总权 5。

推论与应用

在网络布线中,边权可表示铺设一段链路的成本,MST 给出无冗余连通骨架;若系统还要求故障容错,就要增加边连通约束,MST 本身不够。单链接聚类按边权从小到大合并分量,截断 Kruskal 过程可得到指定簇数;这一解释依赖权重是可比较的不相似度。

任意 MST 也是最小瓶颈生成树:若有另一棵树的最大边更轻,可在 MST 最大边诱导的割上找到更轻替换边,矛盾;最小瓶颈树反过来未必最小化总权。边权更新后,删除一条树边需要在新割上寻找替代边,动态 MSF因此是另一个带更新接口的问题,静态交换性质只提供正确性工具,不给出更新时间界。

参考资料
  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,Ch. 21, minimum spanning trees and cut property。
  • Jon Kleinberg and Éva Tardos, Algorithm Design, Pearson, 2005,§§4.5–4.6。
  • Robert Sedgewick、Kevin Wayne,Algorithms,4th ed.,2011,§4.3 Minimum Spanning Trees:割交换、Kruskal 分量检查与边权平局。
关系图谱17 个相邻概念 · 5 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
分类位置

上位 / 更一般

下位 / 直接特例

暂未标注直接特例。

类型化关系