相关笔记

概览

全章围绕最小生成树(Minimum Spanning Tree, MST)问题展开。首先建立MST的理论基础——通过(cut)与轻量边(light edge)的概念,证明安全边定理(Theorem 21.1),为贪心策略提供严格数学依据(21.1);然后给出两种经典算法的具体实现——Kruskal算法(排序+并查集)和Prim算法(优先队列),并分析各自的运行时间(21.2)。全章的核心主线是 贪心策略的正确性——安全边定理保证了每一步贪心选择的局部最优性最终导向全局最优。


知识结构总览

flowchart TD
    A["第21章 最小生成树"] --> B["21.1 生长最小生成树"]
    A --> C["21.2 Kruskal与Prim算法"]

    B --> B1["MST 问题定义"]
    B --> B2["割与轻量边"]
    B --> B3["安全边定理 (Thm 21.1)"]
    B --> B4["推论: 环性质 (Cor 21.2)"]
    B --> B5["推论: 割性质 (Cor 21.3)"]
    B --> B6["GENERIC-MST 通用算法"]

    C --> C1["Kruskal 算法"]
    C --> C2["Prim 算法"]
    C --> C3["复杂度对比"]

    C1 --> C1a["按边权排序"]
    C1 --> C1b["并查集判环"]
    C1 --> C1c["O(E lg V)"]

    C2 --> C2a["从顶点扩展"]
    C2 --> C2b["优先队列选边"]
    C2 --> C2c["二叉堆: O(E lg V)"]
    C2 --> C2d["斐波那契堆: O(E+V lg V)"]

    B3 --> C
    B6 --> C

核心概念回顾

MST 问题定义

要素内容
输入连通无向图 ,权函数
输出生成树 ,使 最小
前提 必须连通(否则求最小生成森林)

核心术语

术语定义直觉
划分为两个非空子集一条”分界线”
轻量边穿过割的权值最小的边分界线上最便宜的桥
尊重割边集 中没有边穿过割 没有跨越分界线
安全边加入 后仍属于某棵 MST 的边不会”走错路”的边

三大定理/推论

定理 21.1(安全边定理)

的子集且包含在某棵 MST 中, 是尊重 的割, 是穿过该割的轻量边,则 是安全的。

推论 21.2(环性质)

是连通图 中关于边集 的环( 中的边加上 形成环), 中唯一最大权边,则 不属于任何包含 的 MST。

推论 21.3(割性质)

的任意割, 是穿过该割的唯一最小权边,则 属于某棵 MST。

Kruskal vs Prim 对比

比较维度Kruskal 算法Prim 算法
贪心视角边(全局排序)顶点(局部扩展)
核心操作按权排序边从队列取最小 key 顶点
辅助数据结构并查集(判环)优先队列(选最小边)
时间复杂度(二叉堆)
最优复杂度(斐波那契堆)
适用场景稀疏图稠密图
正确性基础割性质(森林中每棵树定义割)割性质(已到达集 定义割)
关键前置第19章_用于不相交集合的数据结构-章节汇总第06章_堆排序-章节汇总

跨章关联

与第15章(贪心算法)的关系

MST 是贪心算法的经典成功案例。第15章_贪心算法-章节汇总中提出的贪心策略要素在MST中完整体现:

贪心要素MST中的对应
贪心选择性质安全边定理(Thm 21.1)保证局部最优→全局最优
最优子结构MST的子树仍然是其诱导子图的MST
排序决策Kruskal按边权排序,Prim按key值排序

与第19章(不相交集合)的关系

Kruskal 算法直接使用并查集数据结构:

  • FIND-SET(u) 判断 是否在同一棵树中(是否形成环)
  • UNION(u, v) 将两棵树合并
  • 使用按秩合并 + 路径压缩后, 次操作总代价

与第20章(基本图算法)的关系

  • 图的表示(邻接表/邻接矩阵)是MST算法的输入基础
  • BFS/DFS 的遍历思想与 Prim 的扩展策略有相似之处(都是逐层/逐步扩展)
  • MST 算法运行在无向连通图上,而 BFS/DFS 可运行在任意图上

综合复习题


常见误区

误区1:MST包含所有顶点对之间的最短路径

正确理解:MST是最小权生成树,它使边的总权值最小,但不保证任意两顶点间的路径最短。例如,在三角形 -- 中,,MST包含边 ,但 的MST路径长度为2,而直接边长度为3——这里恰好MST路径更短。反过来,也可能存在直接边更短的情况。

误区2:Kruskal和Prim总是产生相同的MST

正确理解:当所有边权互不相同时,两种算法产生唯一的MST。当存在等权边时,两种算法可能因为选择顺序不同而产生不同的MST,但它们的总权值一定相同。

误区3:MST算法可以直接用于有向图

正确理解:MST问题仅定义在无向图上。有向图上的类似问题称为”最小树形图”(minimum arborescence),需要使用不同的算法(如Edmonds算法/Chu-Liu算法)。


学习要点总结

学习目标掌握程度对应笔记
MST问题定义与存在性理解21.1 生长最小生成树
割、轻量边、安全边的定义与关系熟练21.1 生长最小生成树
安全边定理的陈述与证明思路掌握21.1 生长最小生成树
GENERIC-MST的正确性(循环不变式)掌握21.1 生长最小生成树
Kruskal算法的伪代码、正确性、复杂度熟练21.2 Kruskal与Prim算法
Prim算法的伪代码、正确性、复杂度熟练21.2 Kruskal与Prim算法
Kruskal vs Prim的选型依据掌握21.2 Kruskal与Prim算法
MST与贪心策略的关系理解第15章_贪心算法-章节汇总
并查集在Kruskal中的应用掌握第19章_用于不相交集合的数据结构-章节汇总

参见Wiki

概念页尚未创建