第 21 讲:图的表示与广度优先搜索

图的术语与两种表示的完整取舍(邻接表 vs 邻接矩阵)、稀疏与稠密的分界、BFS 的三色不变式与正确性证明、最短路径树、二分图判定,以及双向 BFS 与 0-1 BFS 这两个实用变体。

2026-08-28 · ifcalm

第 22 讲:深度优先搜索、拓扑排序与强连通分量

DFS 的时间戳与括号定理、四类边与环检测、拓扑排序的两种实现及其正确性、Kosaraju 与 Tarjan 求强连通分量的完整推导,以及缩点后的凝聚图为什么一定是 DAG。

2026-08-28 · ifcalm

第 23 讲:并查集与不相交集合

不相交集合 ADT、按秩合并与路径压缩两种优化各自的界、组合后 O(α(n)) 的含义与反 Ackermann 函数、带权并查集与可撤销并查集,以及为什么它在 Kruskal 和连通性问题中不可替代。

2026-08-28 · ifcalm

第 24 讲:最小生成树——Kruskal 与 Prim

割性质与环性质这两条定理如何一次性证明所有 MST 算法的正确性、Kruskal 与 Prim 的实现与复杂度对比、边权唯一时 MST 唯一的证明,以及 MST 与最短路径树的本质区别。

2026-08-28 · ifcalm

第 25 讲:单源最短路径——Dijkstra 与 Bellman-Ford

松弛操作与最优子结构、Dijkstra 的贪心正确性证明与「为什么怕负权」、Bellman-Ford 的动态规划视角与负环检测、DAG 上的线性最短路,以及 A* 如何用启发式把 Dijkstra 加速几个数量级。

2026-08-28 · ifcalm

第 26 讲:全源最短路径——Floyd-Warshall 与 Johnson

Floyd-Warshall 的动态规划推导与「为什么 k 必须是最外层循环」、路径重构、传递闭包与 Warshall 算法、Johnson 用重赋权把负权图转成非负权图的完整技巧,以及三种全源方案的选型。

2026-08-28 · ifcalm

第 27 讲:网络流——最大流最小割与二分匹配

流网络与残量网络、Ford-Fulkerson 与增广路定理、最大流最小割定理的完整证明、Edmonds-Karp 与 Dinic 的复杂度、König 定理与二分匹配的三个等价问题,以及如何把看似无关的问题归约为流。

2026-08-28 · ifcalm

第 28 讲:分治法

分治的三步框架与适用判据、最大子数组、Karatsuba 大整数乘法、Strassen 矩阵乘法为什么能省下一次乘法、平面最近点对的 Θ(n log n) 与「只需检查 7 个点」的证明、快速幂与快速傅里叶变换。

2026-08-28 · ifcalm

第 29 讲:回溯与穷举搜索

系统穷举的通用框架:状态-选择-撤销三要素、子集与排列的枚举与去重、N 皇后的位运算实现、剪枝的四种手段、分支限界与 A* 的关系,以及回溯、贪心与动态规划三者共同的底层结构。

2026-08-28 · ifcalm

第 30 讲:贪心算法与交换论证

贪心的两个必要条件、交换论证与「贪心保持领先」两种证明模板、活动选择与区间调度的完整证明、Huffman 编码的最优性、分数背包与 0-1 背包的分界,以及拟阵为什么是贪心正确性的统一理论。

2026-08-28 · ifcalm