本页目录

图论与组合 III · 匹配、网络流与图上的算法

收官页三大块:匹配(Hall 婚配定理——"什么时候人人有对象")、网络流(最大流最小割——LP 对偶在离散世界的加冕礼,优化 IV 的欠条在此清偿)、以及图上的算法与随机游走(PageRank 与 Markov 链的会师)。图论在此从"结构的描述"升级为"资源的调度"。

先修入口:图的基本理论、线性规划与动态规划、Markov 链。

学习层:一条反向边,为什么能救回全局最优?

1. 先做预测:第一条路走错了,还有没有后悔药?

一个应急配送网络只有四个中转位置。每条有向边上的数字是每小时最多能通过的箱数。以下五条边容量都为 1:\(s\to a,s\to b,a\to b,a\to t,b\to t\)。你已经沿 \(s\to a\to b\to t\) 送出 1 箱,随后看起来所有继续向前的路都被堵住。请先判断:

  1. 已经送出的那 1 箱是否一定属于某个最大流,还是可能需要把其中一段撤回再改道?
  2. 残量网络里的反向边代表新建一条反向管道,还是代表取消一部分既有流?
  3. 找到一个值为 2 的可行流,是否已经证明 2 是最优值?还缺什么证书?
  4. 容量都是整数时能否找到整数最大流?这个结论能否无条件推广到任意线性规划?

实验先给出完整网络数据,再隐藏计算出的增广路径、流量和割。揭示后可逐次增广,也可直接运行到证书;每一步都把原边流量、正向余量、反向余量和中间点守恒放进同一张账本。

无 JavaScript 时的完整静态读法:考虑边容量全为 1 的网络

\[ s\to a,\quad s\to b,\quad a\to b,\quad a\to t,\quad b\to t. \]

若第一次沿 \(s\to a\to b\to t\) 增广 1,当前流值是 1,且 \(a\to b\)、\(b\to t\) 已饱和。残量网络会加入 \(b\to a\),容量等于已经走过 \(a\to b\) 的流量 1。第二条增广路是

\[ s\to b\to a\to t, \]

其中 \(b\to a\) 是残量反向边。沿它增广会把原边 \(a\to b\) 的流从 1 减回 0,同时把 \(s\to b\) 与 \(a\to t\) 各加 1。最终

\[ f(s,a)=f(a,t)=1,\qquad f(s,b)=f(b,t)=1,\qquad f(a,b)=0, \]

所以流值为 2。此时残量网络中从 \(s\) 出发已无可走的正余量边;可达集是 \(S=\{s\}\),割边 \(s\to a,s\to b\) 的容量和也是 2。可行流给下界,割给上界;二者相等才构成最优证书。

步骤 增广路 瓶颈 \(f(a,b)\) 总流值 证书状态
初始 无 -- 0 0 \(t\) 仍在残量图中可达
1 \(s\to a\to b\to t\) 1 1 1 只有可行流,尚未证明最优
2 \(s\to b\to a\to t\) 1 0 2 \(S=\{s\}\),割容量 \(=2\)

2. 四本账:容量、守恒、残量与割

对每条原边 \(e=(u,v)\),可行流满足 \(0\le f_e\le c_e\);除 \(s,t\) 外,每个顶点满足流入等于流出。残量网络同时记录

\[ c_f(u,v)=c(u,v)-f(u,v),\qquad c_f(v,u)=f(u,v). \]

这里按每条原边分别建立残量弧;若原图同时有 \(u\to v\) 与 \(v\to u\),同一方向可能还有来自另一原边的退流余量,须保留两条弧或相加,不能直接遗漏。第一项表示还能继续送多少,第二项表示最多能撤回多少。反向余量不是物理管道,而是修改旧决定的自由度。这也是增广路算法能从局部选择中恢复的原因。

任取 \(s\in S,t\notin S\),割容量只计算从 \(S\) 指向补集的原始正向边:

\[ c(S,\bar S)=\sum_{u\in S,\,v\notin S}c(u,v). \]

反向跨割边不加进这个和。由流守恒,任意可行流值都不超过任意割容量。算法停机时,令 \(S\) 为残量图里从 \(s\) 可达的顶点;若 \(t\) 不可达,则所有从 \(S\) 出去的原边饱和、所有进入 \(S\) 的原边流为零,因而流值恰等于该割容量。

3. 算法边界:最大流最小割不等于“随便走都立刻结束”

  • Ford--Fulkerson 是增广框架。 路径选择可以是 DFS,也可以来自别的规则。整数容量时从零流出发,每次的瓶颈和边流保持整数,至少增广 1,因此有限步停机,并存在整数最大流。
  • Edmonds--Karp 固定用 BFS。 它每次选择边数最少的增广路,得到 \(O(VE^2)\) 的多项式时间界;这不是任意 DFS 路径规则的复杂度。
  • 无理容量需要谨慎。 任意路径版 Ford--Fulkerson 可能不终止,甚至路径选择不当时不收敛到最大值;最大流最小割定理本身仍成立,算法停机论证却不能照搬整数情形。
  • 整数性有结构前提。 网络流约束矩阵的特殊结构保证整数容量存在整数最优流;不能据此宣称任意线性规划都有整数最优解。
  • “找到大流”不是证明。 只有再给出同值割,或等价地证明残量图中没有 \(s\to t\) 路,才关闭最优性缺口。

4. 从流回到匹配与 Hall 证书

把二部图左侧每点接到源、右侧每点接到汇,并给所有边容量 1。一条整数流路径 \(s\to x\to y\to t\) 就是一对匹配边;容量与守恒保证每个顶点最多用一次。若最大流不能覆盖左侧全部顶点,最小割会暴露一个选择不足的集合,正是 Hall 条件失败的算法证书。于是“匹配、增广路、最小顶点覆盖和网络流”不是四个孤立技巧,而是同一套残量与对偶语言。

5. 迁移问题:瓶颈在哪里,改一单位容量值多少钱?

对实验里的最终最小割任选一条割边,把容量增加 1,再预测最大流是否一定增加 1。随后把一条不在任何当前最小割上的边增加 1,比较结果。先用一张未变化的最小割写上界,再找仍可行的旧流写下界,避免只盯着某一条边。

核对四张割与扩容收益

四点网络只有四种含 \(s\) 而不含 \(t\) 的顶点集。记各边容量为 \(c_{sa},c_{sb},c_{ab},c_{at},c_{bt}\),对应割容量分别是

\[ \begin{array}{c|c} S&c(S,\bar S)\\\hline \{s\}&c_{sa}+c_{sb}\\ \{s,a\}&c_{sb}+c_{ab}+c_{at}\\ \{s,b\}&c_{sa}+c_{bt}\\ \{s,a,b\}&c_{at}+c_{bt} \end{array} \]

全 1 网络的四个值是 \((2,3,2,2)\),最小割不唯一。把 \(s\to a\) 从 1 扩到 2,源侧割变为 3,但汇侧割仍为 2;旧值 2 的流仍可行,所以最大流仍为 2。桥边 \(a\to b\) 不属于任何最小割,单独扩它也没有收益。只有改变所有仍限制吞吐的割,最大流才可能提高;例如同时把 \(s\to a\) 和 \(a\to t\) 各加 1,就能沿 \(s\to a\to t\) 送 2、沿 \(s\to b\to t\) 送 1,总流达到 3。

若一条边不在任何当前最小割中,扩容后至少保留一张容量不变的最小割,上界不变;旧最优流又给同样下界,故最大流不变。“在某张最小割上”本身不保证正的扩容收益,更不保证任意幅度下线性增长。

二部图最大匹配 + 归约成网络流(加源汇、边容量 1)。

图 graph-03.1二部图最大匹配 + 归约成网络流(加源汇、边容量 1)。

1. 二部图匹配与 Hall 定理

匹配:两两不共顶点的边集;完美匹配:覆盖图的全部顶点。只覆盖二部图一侧 \(X\) 的叫 \(X\)-饱和匹配,不一定覆盖 \(Y\)。场景原型:人-岗位、课程-教室、器官捐献配对。

定理(Hall 婚配定理,1935) 二部图 \((X,Y)\) 存在 \(X\)-饱和匹配 \(\iff\) 任何 \(S\subseteq X\) 的邻域满足

\[ |N(S)| \geq |S| \]

(任取 \(k\) 名申请者,他们合起来至少能申请 \(k\) 个岗位;不能有一组人共同挤在更少的选择里。)必要性显然;充分性的经典证法是增广路:未匹配点出发交替走"非匹配边/匹配边",找到增广路则翻转它使匹配 +1。若还要求完美匹配,必须让匹配也覆盖 \(Y\);有限二部图中必须有 \(|X|=|Y|\),此时覆盖 \(X\) 就自动覆盖两侧。这个算法思想同时是匈牙利算法与下节最大流的引擎。

König 定理(二部图):最大匹配的边数 = 最小顶点覆盖的顶点数——第一对"最大 = 最小"对偶(下节是它的推广),也是 LP 对偶在二部图上恰好整数可解的体现。

2. 网络流:最大流 = 最小割

设定:有向网络,源 \(s\) 汇 \(t\),边有容量。流:不超容量、中间点守恒;割:取 \(s\in S,t\notin S\),容量是从 \(S\) 指向 \(\bar S\) 的原始有向边容量和,不把反向跨割边混入。显然任何流值 \(\leq\) 任何割容量(把中间点守恒在 \(S\) 内求和即可——弱对偶,一行)。

定理(最大流最小割,Ford–Fulkerson 1956)

\[ \max\text{-flow} = \min\text{-cut} \]

算法即证明:反复找增广路(残量网络中 \(s \to t\) 的正余量路径,含“退流”反向边)提升流量;找不到时,\(s\) 可达集与其余部分形成的割恰好被流填满——该流与该割互证最优。整数容量下任意增广路版会有限步停机;一般实容量要使用有终止保证的实现或独立的极限/LP 论证,不能把任意路径规则的停机当作定理前提。\(\blacksquare\)

三重读法:LP 强对偶的组合化身(标准流 LP 的对偶可取到由 \(s\)-\(t\) 割表示的最优解;整数容量再由网络矩阵结构保证存在整数最优流——优化 IV 的影子价格在此变成“瓶颈边”);瓶颈定律(系统吞吐由最窄截面决定——供应链、带宽、人力的通用诊断语言);归约枢纽——二部匹配(Hall/König 是其特例:源连 \(X\)、\(Y\) 连汇、容量全 1)、项目选择、图像分割(视觉里的 graph cut)都化归最大流。

Hall 失败如何读出来:当当前匹配尚未覆盖 \(X\) 时,从所有未匹配的左点出发,交替沿未匹配边向右、沿匹配边向左搜索。若找不到到达未匹配右点的增广路,设到达的左、右点集为 \(Z_X,Z_Y\)。此时 \(N(Z_X)=Z_Y\),所有到达的右点都被匹配回到达的左点,而至少一个到达的左点未匹配,故 \(|N(Z_X)|=|Z_Y|<|Z_X|\),直接给出 Hall 反证。这些集合也构成最小顶点覆盖 \((X\setminus Z_X)\cup Z_Y\)。

3. 最短路与图算法速查

问题 算法 思想 复杂度级
单源最短路(非负权) Dijkstra 贪心扩张最近点(贪心正确性=非负权下"最近点不会被绕路改进") \(O((V+E)\log V)\)
单源(可负权) Bellman–Ford DP 松弛 \(V-1\) 轮(优化 IV Bellman 方程的原产地) \(O(VE)\)
全对 Floyd–Warshall 三重循环 DP("允许中转点集逐个扩大") \(O(V^3)\)
遍历/连通性 BFS/DFS 层序/深探(无权最短路 = BFS) \(O(V+E)\)

负权不等于负环:Bellman–Ford 还须检查从源可达的负环;若这样的负环能通向目标,目标的有限最短路就不存在。Floyd–Warshall 也需对负环影响的点对作相应标记,不能把松弛表中的有限数当答案。

图着色一嘴:色数 \(\chi(G)\)(相邻异色的最少颜色);贪心给上界 \(\Delta + 1\)(最大度+1);判定 \(\chi \leq k\)(\(k\geq3\))NP-完全。应用原型:排考试(冲突课程异时段)、寄存器分配——"冲突图 + 着色"是资源互斥调度的通用模板。

4. 随机游走与 PageRank(三门课会师)

图上随机游走:每步等概率走向邻居——图上的 Markov 链(无向图可写 \(P = D^{-1}A\))。至少有一条边的有限连通无向图,其平稳分布唯一且满足 \(\pi_v \propto \deg(v)\)(度大者常驻);若图二部,链有周期 2,普通迭代会振荡而不从任意初态收敛。加入自环、惰性步或其他非周期机制,才得到通常所说的遍历收敛。对有向图则要分别检查不可约性、周期性和零出度点。

PageRank:网页 = 顶点、链接 = 有向边,重要性 = “随机冲浪者”的平稳分布。采用 \(0\le\alpha<1\) 和均匀跳转。先把零出度网页的行替换为约定的跳转分布,使 \(P\) 真正随机;再以 \(1-\alpha\) 的概率跳转(经典实现常取 \(\alpha\approx0.85\),但它是设计参数而非定理常数),从而打破死胡同与周期陷阱:

\[ \pi = \alpha P^\top \pi + (1 - \alpha)\frac{\mathbf 1}{n} \]

求解 = 幂法迭代(数值线的幂法 + 随机过程的平稳分布 + 本页的图——三门课在一个改变互联网的公式里会师)。对同一行随机矩阵 \(P\) 的两次迭代,\(P^\top\) 作用于列向量时在 \(\ell_1\) 范数下不扩张,所以

\[ \|x_{k+1}-y_{k+1}\|_1\le\alpha\|x_k-y_k\|_1. \]

因此 \(0\le\alpha<1\) 时,均匀跳转直接给出唯一不动点与收敛界。对于一般有向链,单凭第二特征值不能描述所有有限步误差:非正规性或 Jordan 块还可能带来额外因子;可逆链的谱隙解释要连着相应范数和假设使用。

🔗 现代出口一瞥:常见消息传递式图神经网络(GNN)通过可学习的邻居聚合更新节点表示,其算子可与图上的传播、随机游走比较,但并不都等于随机游走;知识图谱/因果图(Medusa 的因果网正是带类型边的有向图,中心性/连通分量分析直接可用);谱聚类 = 图 Laplacian 的特征向量(高代谱理论 + 本页)。

5. 典型例题

例 1(Hall 判定) 4 名学生各会做题集 \(\{1,2\}, \{2,3\}, \{1,2\}, \{2\}\),能否每人分一道不同的题?取 \(S = \{1, 3, 4\}\)(会 \(\{1,2\}, \{1,2\}, \{2\}\)):\(|N(S)| = 2 < 3\)——Hall 条件破产,无解;且指出了病灶(这三人挤在两道题里)。Hall 定理的价值:不可行时给出"证据"。

例 2(最大流手算) 菱形网络:\(s\to a\)(3), \(s\to b\)(2), \(a\to b\)(1), \(a\to t\)(2), \(b\to t\)(3)。增广 \(s a t\)(2)、\(s b t\)(2)、\(s a b t\)(1):总流 5;割 \(\{sa, sb\}\) 容量 \(= 5\) 相等 ⇒ 双双最优 ✓。

例 3(PageRank 直觉) 三页环 \(A\to B\to C\to A\) 加一条 \(B\to A\):无阻尼时求 \(\pi P = \pi\) 得 \(\pi \propto (2, 2, 1)\)(\(C\) 只有一票来源)——链接结构即投票结构。取 \(\alpha=0.85\) 与均匀跳转后,\(\pi\approx(0.3974,0.3878,0.2148)\):\(A,B\) 仍都高于 \(C\),但原来的 \(A/B\) 并列被打破,严格排序变为 \(A>B>C\)。\(\blacksquare\)


扩展线收束

五门扩展课与主站的接线图:信息论把"熵/KL/交叉熵"的借条全部收回(概率→AI 的桥);随机微积分让布朗运动(随机过程)同时流向期权定价(金融)与扩散模型(AI);时间序列给 Medusa 式预测立了统计军规;图论与组合补齐离散半壁,并让 LP 对偶、Markov 链、幂法在离散世界再就业;博弈论把优化、概率与多智能体决策接起来。至此全站 22 门课,每一页都不是孤岛。

延伸:Princeton 网络流讲义 与 MIT 残量网络及最大流证明。