本书讲一门学问:代数几何——用多项式方程组的解集研究几何形状。它从一个朴素的观察出发:一条曲线的「几何」与刻画它的「方程」,其实是同一件事的两副面孔——把方程 x2 + y2 = 1 的解画出来是一个圆,而这个圆上的全部信息,又都能从方程所在的环里读回来。本书要回答的问题由此展开:为什么「理想与簇」的对应(Hilbert 的 Nullstellensatz)是整座大厦的地基?为什么必须把「无穷远点」请进画面,Bézout 定理才数得清两条曲线的交点?为什么「层」这种局部数据的组织方式,恰好捕捉了「局部如何拼成整体」这个几何最深的主题?为什么 Grothendieck 干脆把空间本身定义成交换环的素谱,让 Spec ℤ 也成为一个几何对象,从而把算术与几何缝成同一门学问?从 Descartes 的坐标系、Bézout 的计数、Riemann 的曲线论,到 Zariski、Serre、Grothendieck 的概型与上同调,代数几何两百年只做一件事:把「形状」翻译成可以计算的代数结构,再让代数把形状的秘密说出来。
本书按章组织:绪论并置「方程」与「几何」两条通往形状的路,从 Euclid 的图形与 Descartes 的方程讲到理想的对应与概形的远景;第一章搭第一层地基——仿射空间 𝔸n 与多项式环、代数集与理想的双向对应、Zariski 拓扑、Hilbert 基定理、不可约分解与仿射簇、坐标环、Nullstellensatz;第二章深入结构——局部化与局部环、有理函数域、维数的四种等价定义、切空间与光滑点、奇异性、态射与双有理等价、乘积;第三章把无穷远请进来——射影空间 ℙn 与齐次坐标、射影簇、齐次坐标环、Bézout 定理,并引入层与结构层 𝒪X、凝聚层与上同调初步;第四章完成飞跃——从簇到概型、Spec R 作为空间、概型的态射与纤维积、分离与紧合、局部性质与除子、概型上的上同调与 Serre 对偶、Riemann–Roch 的预演;第五章走向算术——曲线与亏格、Riemann–Roch 定理、椭圆曲线的群律、Mordell–Weil 定理、有限域上的曲线与 ζ 函数、Weil 猜想、étale 上同调、Jacobi 簇与 Arakelov 几何;第六章远眺现代疆界——从概形到栈、导出函子与谱序列、相交理论、étale 与晶体上同调、Motive、Hodge 猜想、模空间与形变、几何 Langlands、镜像对称、导出代数几何;综合站用年表、人物谱、方法决策树、两个综合实验与二十四题自查收束全书。
写作的三条约束(本书的自我要求)。① 直觉与例子先行:每一个概念都从一张图、一个具体的小例子讲起——先看见抛物线 V(y − x2) 与圆 V(x2 + y2 − 1) 在平面上的样子、两条三次曲线为何在无穷远处还「欠」两个交点、Spec ℤ 里素点与泛点如何排成一条线,再抽成公理;每一个定理先有「为什么它是对的」的直觉,再有完整的证明。② 一步一图:凡能画的都画——理想与簇的双向箭头、Zariski 拓扑的闭集谱、射影平面的仿射图卡拼贴、层的茎与截面的局部—整体示意、概型的纤维与基变换方块、曲线上的除子与 Riemann–Roch 的维数差。代数几何最漂亮的地方正藏在「形状—环—层」的三向对照图里:一条定义、一句定理,画出来便一目了然。③ 自给自足:本书不假设手边另有教材,所需工具在书内随用随补——多项式与理想的运算、环与商环、局部化与诺特环的必要片段、域扩张与有限域的一点基础,都在需要它的那一页现学现用;每一条定义都同时给出形式陈述与一句大白话的直觉。个别深刻而整体的结论(Nullstellensatz 的代数证明、Riemann–Roch 定理、Mordell–Weil 定理、Weil 猜想的证明、导出代数几何的框架)给出精确陈述、证明思路与文献指引,数值与程序对拍在实验页随附、可自行复算。
页型节奏。每章以 导引 开篇(一页说清这一章要解决什么);主体是 讲义 页(概念、定理、证明,一步一图);每章配 例题 与 习题(先示范再放手)、知识地图 一页(本章概念怎么连成网)、小结(正面清单+易错清单)、思想卡(一句话立起本章的哲学)、挑战(一道通向文献的硬题)、实验(一段可复算的程序)、格物札记(中西算学传统里的平行直觉)、速查表(本章公式与记号一页备翻);章末另设 衔接讲义,把下一章的问题提前立起来。所有编号 可跳读:每一页都自带上下文,随手翻开一页也能读下去。
难度标记。讲义页用 ★–★★★★★ 标出阅读难度:★ 高中基础即可,★★ 需要多项式与线性代数的熟练经验(书内自给),★★★ 需要抽象代数的入门(环、理想、商环与局部化的定义,书内自给),★★★★ 需要交换代数与同调代数的一点经验(书内随用随补),★★★★★ 需要概形、上同调与现代算术几何的观点(第六章疆界各页)。若只求理解主线,读绪论、第一章的 nullstellensatz、第二章的维数与光滑性、第三章的 Bézout 与层、第四章的概型与 Riemann–Roch 即可;若求完整掌握,按章顺序逐页推进,并把每章习题做完。
三条线索贯穿全书:
① 明线——从方程到概形:先在坐标平面上把「方程的解集」看成几何对象(绪论与第一章),再把「形状」翻译成「环与模」的语言(第二章),把无穷远点请进来并用层组织局部数据(第三章),最后换掉地基、把空间本身定义为交换环的素谱,让算术与几何合一(第四、五章),并以现代上同调与导出几何作结(第六章)——这正是代数几何从「Descartes 的坐标」长成「Grothendieck 的概形」的轨迹。
② 暗线——几何与代数的双向字典。本书反复演练一本字典:形状顺向搬运(几何→代数:把簇送到它的理想、把态射送到环同态),函数环反向拉回(代数→几何:把理想读到它的零点集、把环同态读成态射)。Nullstellensatz 让字典在代数闭域上成为双射,概形则把字典扩展到算术世界。什么时候能用这本字典、什么时候必须升到层与上同调,是全书的核心招式。
③ 接口——通往四个邻域。代数几何是现代数学的枢纽:与交换代数(环、理想、局部化与维数)、拓扑(Zariski 拓扑、层与上同调)、微分几何与分析(复流形、Hodge 理论)三条战线直接相通,并与数论(椭圆曲线、Weil 猜想、Langlands)深度合流,第六章与综合站余韵两页逐条架桥。
写法约定(TEX 标准):仿射空间记 𝔸n、射影空间记 ℙn;簇记 X、Y(变量斜体),多项式环记 k[x1, …, xn];理想记 𝔞、𝔪、𝔭;坐标环记 A(X)、结构层记 𝒪X;概型记 (X, 𝒪X)、素谱记 Spec R;层上同调记 Hi(X, ℱ)。变量用斜体,函数名(Spec、dim、deg、Pic、Hom)与群名(Cl、Gal、GL)用正体;关键一步配图,形状与环逐章对照。
两个城市之间有几条路?五个人的朋友圈里谁认识谁?芯片上千万个元件如何连线?这些问题共享一个特点:真正要紧的不是「东西」本身,而是它们之间的「连接」。图论研究的就是连接:把对象抽象成顶点,把两两关系抽象成边,于是世界变成一张图 G = (V, E)。
这门学科的起点是 1736 年的柯尼斯堡七桥问题。普鲁士的柯尼斯堡城中有四块陆地、七座桥,市民想知道:能否散步时每座桥恰好走过一次?欧拉的答案出人意料——这个问题与桥的长短、陆地的形状统统无关,只取决于「哪块陆地与哪块陆地之间有几座桥」。把陆地换成点、桥换成线,「一笔画」问题变成纯粹的连接问题,而答案是「不能」。证明只需要一个再朴素不过的观察:中途经过的每一块陆地都要「进得来、出得去」,度数必须是偶数。
近三百年过去,这张小小的手绘图已经长成参天大树:树与生成树说明怎样用最少的边保持连通;Euler 与 Hamilton 之别划出「容易」与「极难」的分水岭;平面图与着色回答「地图最少几种颜色」;匹配与 Ramsey 处理配对与秩序的必然;图谱方法则让矩阵开口说话,PageRank 靠它给整个互联网排序。
本册的读法有一条主线:每遇到一张图,先问三件事——它连通吗?它的骨架是什么?它的对称与谱长什么样?这三问贯穿绪论到第六章。下面这张图是全册的行军路线。
★ 1736 年,欧拉向圣彼得堡科学院提交论文《柯尼斯堡的七座桥》,后来被公认为图论的第一篇论文(也是拓扑学的先声)。这个问题值得完整重演一遍,因为它示范了「抽象」的全过程。
第一步:画掉不相干的信息。陆地的大小与形状、桥的长短与宽窄、过桥的方向——统统与问题无关。剩下的只有一张「关系表」:北岸与两岛各 2 座桥,南岸与两岛各 2 座桥,两岛之间 1 座桥。用图的语言:4 个顶点,边数按表连出,其中两岛之间是一条重边(多重图)。
第二步:把「走桥」翻译成「度」。每次过桥「进入」一块陆地,也要「离开」它。中途经过的陆地,关联的桥必须成对消耗;只有起点与终点可以例外。于是:若每座桥恰好走一次,则除起点与终点外,每块陆地的度数必须是偶数。柯尼斯堡四块陆地的度数是 5、3、3、3——四个奇点,一个偶点都没有。答案:无论是否回到出发点,都不可能。
第三步:把判决升级为定理。欧拉更进一步:一笔画(不重复走完所有边)充要条件是「奇点个数为 0 或 2(为 2 时恰好是 Euler 途径而非回路)」。这个定理我们将在第三章给出完整证明与线性时间算法。此刻只需记住它的方法论意义:抽象掉无关细节之后,一个几何难题变成一行算术。
★ 有了七桥的启发,定义可以一步到位。
这个定义刻意「贫瘠」:没有坐标、没有长度、没有方向(除非特别声明)。贫瘠正是力量——凡是只依赖连接结构的结论,对所有实现它的场景同时成立。一张图既可以是五个人的朋友圈,也可以是五座城市、五个网页、五个蛋白质。
几个立即可用的观察。其一,度是「局部信息」:只看点自己的邻边。其二,「边是顶点的无序对」意味着图上没有方向偏好,有向图(边带方向)在本册只在 PageRank 与网络流处短暂出场。其三,重边在大多数理论问题中可以合并(关心的是「连不连」),但在七桥、邮路这类计数问题中重边就是实质。
与代数学传统对读:群把「运算」抽象成公理,图把「连接」抽象成公理。本册将反复看到这个平行结构——图论的同构对应群论的同构,图的子结构(子图、生成树)对应群的子结构,图的谱对应矩阵的谱。抽象不是逃避具体,而是让一个证明服务一千个例子。
★ 同一张图可以画出无数种样子:顶点随便挪、边随便弯。什么时候两张画其实是「同一个图」?
与群论平行:同构的群「是同一个群」,同构的图「是同一张图」。判断两图同构,可以猜一个对应然后验证(构造性);而判断不同构,只需找一个同构不变量——任何在同构下保持不变的量:顶点数、边数、度序列、三角形个数、连通度、直径、特征值谱……只要有一个不同,立刻宣判。
不变量的反方向要小心:不变量相同不保证同构。经典反例:C6(六边形)与 K3,3 的两个拷贝之并(2K3)都有 6 顶点 6 边、度序列 (2,2,2,2,2,2),但一个连通一个不连通。这类「不变量撞车」是图论里的常态,也是它比群论更「野」的地方——图论中甚至不存在已知的「完备不变量套件」能高效判定同构(图同构问题的复杂度地位至今悬而未决,介于 P 与 NP 完全之间)。
本册将携带一整套不变量工具箱:度序列(第一章)、连通度(第一、三章)、色数与色多项式(第四章)、匹配数(第五章)、特征值谱(第六章)。每学一个不变量,就多一双分辨图的眼睛。
★ 认识几张「标准脸谱」,后面所有定理都有了试金石。
三个家族各带一个「纪录」:Kn 的边数最多(给定顶点数);K3,3 是最小的「非平面」图之一(第四章 Kuratowski 定理的主角);Cn 是最简单的 2-正则图、Euler 遍历问题的原型。它们还将联合制造大量反例与极端情形——极值图论的基本动作就是「在约束下数边」,而完全图与二部图正分别是「挤」与「匀」的两种极端。
握手引理(预告):Σv∈V d(v) = 2|E|
这张速记式将在第一章正式登场。它如此简单,却立刻给出三个免费结论:度数之和是偶数;奇度顶点个数是偶数;平均度 = 2|E|/|V|。极值图论的大量不等式都从这里起步。
★ 图要进计算机,先选一种「数据结构」。两种经典表示各司其职。
选择标准一句话:算法要反复问「两点相邻吗」→ 矩阵;要逐个拜访邻居 → 表。本册的实验(真跑)一律用邻接表,谱计算用矩阵——两套表示互为翻译,转换成本都是 O(V + E)。
顺带一提:这些表示正是「抽象又一次落地」——邻接矩阵就是图到线性代数的翻译,邻接表是图到数据结构的翻译。同一张图,两副替身,各展所长。
★★ 全册六章+综合站,一条主线两个侧翼。主线是「结构」:把图的性质一层层看清;侧翼是「算法」与「谱」:同一张图的两副替身各自发力。
第一章(基本语言)立词汇表:度与握手引理、连通与割、BFS/DFS。第二章(树)找骨架:树的刻画、Cayley 计数、最小生成树两大算法与并查集。第三章(遍历)问「走」:Menger 与最大流最小割、Euler 的轻快与 Hamilton 的沉重、最短路算法。
第四章(平面与着色)问「画」:Euler 公式、Kuratowski、五色定理与四色问题的百年史、色多项式。第五章(匹配与 Ramsey)问「配」:Hall 婚配、匈牙利算法、稳定婚姻,以及「混乱中必有秩序」的 Ramsey 定理。第六章(谱与网络)问「算」:邻接谱与 Laplacian、Matrix–Tree、随机图相变、PageRank 与图神经网络。
综合站收束全部:年表、概念总图、方法决策树、两个综合实验(谱方法与随机图真跑)、跨章大题与二十四问自查。
两条贯穿全书的方法论,先在此立此存照。其一,「结构 ↔ 算法」对读:每个定理都追问它的算法化(树的刻画 → 并查集的判环),每个算法都追问它的结构保证(Kruskal 的贪心 ← 切定理)。其二,「反例文化」:彼得森图、空图与完全图,会在每个新命题面前接受审问——图论的大量「显然成立」其实都假,识破它们是本册的基本功。
约定:n = |V|、m = |E|;「图」默认简单无向;「阶」指顶点数。准备好了吗?从握手开始。
★ 绪论立起了全学科的世界观,把最重要的概念与承诺收拢在一张清单里。
三个「第一印象」值得再咀嚼。其一,欧拉的判决只用「奇点个数」——局部信息合成全局结论,这是图论的典型招式。其二,C6 与 2K3 的「不变量撞车」——单一不变量必然失明,需要一组互补的探针。其三,邻接矩阵里已经埋着谱方法的伏笔——Ak 数路径,特征值放大它。
读法约定。每章节奏固定:导引立问 → 讲义建塔(定义·定理·证明·一步一图)→ 例题示范 → 习题巩固 → 地图·小结·思想卡收束,实验页真跑背书(所有代码与输出均经实跑核验)。见到定理先问反例,见到算法先问复杂度,见到结构先问谱——这三句话,本册陪练满 198 页。
下一页起进入第一章:从「度」出发,把基本语言一件件铸成趁手的工具。
★★★ 绪论把世界压成了图,本章开始给这张图配上「语言」。三十页的路程分两条线。
线一 · 结构语言(p11–p18)。从最局部的量——度——出发:握手引理把所有点的度加起来,立刻得到全学科第一个不变量;度序列追问「哪些数列能长成图」(Erdős–Gallai 定理预告)。然后建立词汇表:子图与图运算、途径/迹/路三种走法、圈与连通、点割与边割。二部图以「无奇圈」为刻画——这条等价式是第四章着色与第五章匹配的共同地基。彼得森图作为反例专业户压轴。
线二 · 算法语言(p19–p22)。BFS 与 DFS 是图上一切搜索的母版:前者像水波按层扩散,后者像绳索探到底再折返。两者都能在 O(V + E) 时间内访问全图,且各自附带一份「结构赠品」:BFS 给出最短路层数,DFS 给出深度优先森林。并用它们线性时间数连通分支。
收束(p23–p39)。建模范式(p23)把现实变成图;例题两组、习题两组把度序列与图搜索练熟;地图、双小结、思想卡、挑战(Erdős–Gallai 构造)、实验(六度分隔真跑)、札记与速查收尾,最后衔接第二章的「树」。
本章的学习心法只有一句:每见一个新概念,立刻问它的算法版本与它的反例。例如「连通」——算法版本是 BFS 一遍即知,反例思考是「连通但删一边就断」(桥)。心法练成,后面五章的路会越走越快。
★ 度 d(v) 是图上最便宜的观察:只数一个点自己的邻边。便宜不等于浅薄——它有三条立刻可用的推论。
证明。换一个视角数:从每条边的立场看,它恰与两个顶点「握手」(自环算两次)。左边按顶点收集握手,右边按边发放握手,两账必平。∎
推论②的用处随手一拈:「7 个人每人恰好与奇数个人握手」不可能——奇度点个数是奇数 7,违反②。这类「以奇偶性判决存在性」的论证在图论里俯拾皆是,它也预先解释了七桥问题:四块陆地度数全奇,注定失败。
握手引理还是极值论证的起点。想把「平均度 ≤ 2|E|/|V|」写成不等式,就得到 Turán 型问题的雏形:给定边数,度最大能多不均匀?更著名的反问是 Turán 定理——没有 r-团的图最多多少条边?答案由完全 (r−1)-部图给出,证明的核心正是「把边从低度对搬到高度对」的局部微调(本册第五章习题课演练其思想)。
★★ 把全图所有顶点的度数排成一列(习惯上从大到小),就是度序列。它是一张图最便宜的「指纹」:同构图必有相同的度序列。
握手引理给出第一道筛子:和必为偶数;还有一条显然上界 d1 ≤ n−1。但必要条件离充分很远:(3,3,3,3,3,3) 六点全 3 度,和为偶、上界满足,却不存在这样的简单图——尝试一下:任取两点 3-正则地连接,六点的 3-正则简单图唯有「三角棱柱」类结构?不,冷静数一遍:K3,3 恰是 6 点 3-正则的!它存在。真正的反例要更精巧:(3,3,3,1,1,1)?和 12 为偶,但三个 3 度点彼此相连成三角形后,各剩 2 度须连向三个 1 度点——每个 1 度点只能接一条边,供不应求。结论:(3,3,3,1,1,1) 不可图性。
失败的根源:高光度点「吃掉了」低度点的配额。Erdős–Gallai 定理(1960)把这一观察精确化:序列可图,当且仅当总和为偶且对每个 k,前 k 个(最大)度数之和不超过「前 k 点内部至多 k(k−1) 条边、其余点至多各给 1 度给前 k 点」的上界之和。这是一个「取等即可构造」的精确刻画。
算法侧还有更顺手的Havel–Hakimi 构造:反复取最大度 d1,把它与接下来的 d1 个点各连一条边并把这些点的度减一、删掉原最大点;中途出现负数即不可图。本册挑战页将要求证明:Havel–Hakimi 的每一步保持可图性不变——这正是 Erdős–Gallai 的构造性灵魂。
★ 有子群就有子图;有直积就有图运算。集合论的一小步,图论的一大步。
三类常用运算。其一,删与添:G − e(删边)、G − v(删点连带全部关联边)、G + e。其二,补图 Ĝ:顶点不变,「有边 ↔ 无边」互换;G ∪ Ĝ = Kn。补图常用于「从反面数边」,第五章的 Ramsey 手工证明正是补图思维。其三,并、交与连接:并/交按集合语义;连接 G + K1(加一个万能点与所有点相连)能把「连通但无三角形」的构造变得轻而易举——它是第四章证明色数下界、第六章讨论谱扰动的常用道具。
极值图论的「标准问法」就在这套语言上定义:「在所有含性质 P 的 n 点图中,边数最少/最多是多少?」例如「无三角形的 n 点图最多几条边」(Turán,答案 ⌊n2/4⌋,由 K⌊n/2⌋,⌈n/2⌉ 实现)。第五章的 Ramsey 定理则是它的「定性版」:只要点够多,任何图或其补图必含大团——结构逃避不了,只能选择在哪一侧出现。
★ 「从 u 走到 v」有三种口径,约束逐级收紧,混用是大忌。
证明。在所有 u–v 途径中取一条最短的。若它有重复顶点 w,把 w 到 w 的一段整体删去,得到更短的途径,矛盾。∎
三行证明,五处开花。其一,连通的等价刻画:「有途径」等价于「有路」,于是连通性可以放心用「路」来定义,不必背着重复的包袱。其二,最短路有内涵:最短途径必是路——Dijkstra(第三章)找的最短路天然无重复点。其三,距离的定义 d(u, v) = 最短路长(无边时为 ∞)成为良定义。其四,圈的「最短反例」手法同样起效:最短闭途径必是圈。其五,这是本册第一次演练图论证明的母题——取极小者,反证矛盾。
记住口径:数「走法多少」看途径(Ak 数的正是途径),谈「存在与否」用路,谈「每边用一次」是迹。
★★ 「连通吗?」是拿到任何图后的第一问。
证明骨架。右半:把最小度点关联的全部边删掉,图必断(该点成为孤点),故 λ ≤ δ。左半:取最小边割 F(|F| = λ),删掉 F 后图分成两半 A ∪ B;若 A 或 B 只有 1 个点,则该点度 ≤ λ,得 κ ≤ δ = 不足 λ 需更细论证;一般情形 F 中每条边在某半侧取一个端点,至多 λ 个点即可同时打断这 λ 条边——若这组点删后仍连通,再补一点即可,总数仍不超过 λ。∎(第三章用 Menger 定理回看,此链会更深一层。)
三个量分别回答三种攻击:删点(服务器宕机)、删边(光缆挖断)、单点自身薄弱(δ)。网络设计里的「至少 2-连通」意味着无割点——任何单点故障不断网,这正是第三章块分解的主题。到此,第一问「连通吗」升级成三个刻度:通不通、分几块、断多难。
★★ 二部图是本册出场率最高的图家族,值得给它一条漂亮的刻画。
证明。(⇒)二部图中沿任何圈走,每一步都在 X ↔ Y 之间往返,回到起点必须走偶数步,故圈长为偶。(⇐)只对每个连通分支处理:任取起点 r,按「到 r 的距离奇偶」把点分成 X(偶)∪ Y(奇)。若无奇圈,则任何点到 r 的所有路长奇偶一致(否则两条路的对称差里拼得出奇圈)——于是相邻两点必一奇一偶,恰是二部划分。∎
这个刻画有三大红利。其一,算法化:BFS 一遍染色即可判定二部性(途中遇同色邻边即否决),复杂度 O(V + E)——本章实验页真跑。其二,结构:二部图无三角形,与「资源-需求」类建模天然契合,第五章 Hall 定理的舞台。其三,谱线索:二部图 ⟺ 邻接谱关于 0 对称(第六章),「无奇圈」竟在矩阵里留了指纹。
速记:染色 = 按层染(BFS 层次奇偶);奇圈 = 唯一的钉子户。
★ 图论的定理大多形如「除非它是这几张标准图」。认识家族,是读懂定理的前提。
极端二兄弟。Kn 是「边数最多、最对称」的图;空图是另一端。几乎所有极值问题的两端由它们锚定,中间态才是研究的领土。
路与圈。路 Pn 与圈 Cn 是最简的连通结构:直径最大(Pn 直径 n−1)、圈最「圆」。第四章将证明:任何 2-连通图的最小度 ≤ 2⌊n/2⌋⋯——不,先记一个真实用法:Cn 既是 Euler 遍历的原型(全偶度),又是「唯一 2-正则连通图」。
超立方体 Qd。顶点是 {0,1}d,相邻 = 恰有一位二进制不同。它 2d 个点、d·2d−1 条边、d-正则、二部、顶点传递。并行计算机互联结构的明星,也是「二进制世界里的图」——第六章会请它出演「谱可精确计算」的主角:特征值恰为 d − 2k(重数 C(d,k))。
彼得森图(下页专述)。而二部家族中还要补一位:K3,3——它在第四章以「禁忌子图」的身份决定一张图能否画上平面。家族记熟了,反例与极值都会自动到场。
★★ 每门学科都有一位「职业反例」。群论里有 S3,分析里有 1/x sin(1/x),图论里就是彼得森图 P。
它的「档案」。10 点 15 边、3-正则、直径 2(任意两点距离 ≤ 2)、围长 5(最短圈是 5-圈)、顶点传递且点对称、不是 Cayley 图。这条档案单上每一条都能「作恶」:
① 3-正则却边色数为 4——Vizing 定理说 3-正则图边着色至多 4,彼得森图恰好卡死上界,证明「3-正则 ⇒ 3-边着色」不真(第四章)。② 围长 5 且直径 2 的极限——它是 (3,5)-笼:3-正则、围长 5 的最小图,同期候选 6~9 点全部出局。③ 色数 3——比多数人猜的大。④ Hamilton 圈不存在——3-正则、3-连通、顶点传递,仍然逃不出 Hamilton 的魔掌(第三章 Dirac 条件 δ ≥ n/2 远不满足,它示范了条件的「必要地带」外有多危险)。⑤ 非平面——它含 K5 与 K3,3 的细分(第四章习题验证)。
使用守则:本册每提出一个「显然」的命题,彼得森图第一个到场受审。养成交验的习惯,等于随身携带一座反例库。
★★ 图搜索是图论的「读盘」动作,两把刷子共用一副骨架。
三条延伸。其一,连通分支:外层循环没访问过的点就启动新一轮搜索,轮数即分支数。其二,「线性时间是金标准」:任何图算法若与输入同阶,就称「线性时间」——它意味着把图读一遍的功夫顺手把问题解完,第二章的并查集、第三章的 Hierholzer 都将拿到这枚勋章。其三,赠品决定主场:要最短路、染色找 BFS;要割点、桥、拓扑序找 DFS。记住「容器决定性格」:队列与栈,两种数据结构,两种世界观。
下一页起两页连讲:BFS 的波前怎么「拍电影」,DFS 的括号序怎么「看家谱」。
★★ 上一页说 BFS 的赠品是「最短路层数」,现在兑现它。
证明骨架。对 k 归纳。第 0 波只有 s。设结论对 k−1 成立:第 k−1 波的点都在队里且依次弹出时,把它们未访问的邻居(恰是距离 ≤ k 的点)入队标记;由距离的三角性,距离恰为 k 的点必与第 k−1 层相邻,且不可能更早入队(它的邻居都在更深层)。队列的先进先出保证层与层之间不插队。∎
两个应用当场兑现。其一,最短路:无权图的最短距离无需 Dijkstra,BFS 一遍即得全部点的 dist——这是「图不分轻重」时最便宜的最短路。其二,二部判定:按波前奇偶染色(上页定理的算法版),途中遇同色邻边即有奇圈。
波前还有一个「社会学读法」:在社交网络里,dist 就是「隔几层朋友」。下一章实验将真跑验证著名的六度分隔猜想——在合适的随机图上,平均距离果然是对数级的「小」。
★★ DFS 的赠品比 BFS 更「结构化」。
证明思路。DFS 一次只深入一个分支,u 未退出(仍在递归栈上)时访问到 v,则 v 的整个区间落在 u 内;否则两区间完全分离。部分重叠要求 u 退出后才访问 v 而 v 又比 u 早进——矛盾。∎
这枚「家谱放大镜」的用处马上见效:判断 u 是否 v 的祖先,O(1) 查两个时间戳即可。第三章的割点判据(子树里没有指回祖先的回边)与桥判据(low 值比较),全部建立在括号序之上。第四、六章的拓扑序(DAG 排序)也是 DFS 的 out 序取逆。
本册反复出现一个句式:「容器决定性格」——队列给出层(BFS),栈给出深度(DFS),并查集给出等价类(第二章)。数据结构不是工程的脚手架,而是数学结构的选择器。
★ 不连通的图要「分块」,算法比想象更省。
这个「外层换班、内层扫描」的壳子价值远超本页:它演示了全局状态 + 局部搜索的分工——vis 数组是全局账本,BFS/DFS 是局部执行者。第三章的块分解、第六章的社区发现,骨架皆是它。
隐式图值得专门点一句:很多问题的「图」根本不用预先建出来。数独的每个局面是一个顶点、走一步是一个邻居;八数码、词梯(cat → cot → dog)皆是。邻居「现场生成」,vis 数组用哈希表——算法框架一字不改。图论的力量一半来自:常常已经身处一张图中,只是没察觉。
下两页换口味:把「现实 → 图」的翻译规则讲清楚,再看权重与方向如何进入画面。
★★ 图论应用的第一课不是定理,而是翻译。
表中的六例各有深意。「课程表 → 着色」:冲突课程连边,最少教室数 = 色数——图着色 NP 难,但贪心给好上界(第四章)。「任务分配 → 匹配」:胜任连边,问完美匹配存在性——Hall 定理(第五章)。「芯片布线 → 平面性」:能单层布线 ⟺ 图可平面,Kuratowski 定理是判决书(第四章)。
两个高级技巧预告。其一,「状态即顶点」:把问题状态(剩余容量、已走集合、当前余数)当作顶点,复杂问题瞬间变成图搜索——第六章的随机游走与 PageRank 都在此列。其二,「补图反转」:有些问题在原图上难、在补图上易(第五章 Ramsey 的手工证明正是补图论证)。
建模没有唯一正解:同一个问题,顶点选得好,NP 难变多项式;选得差,线性时间也救不了。翻译的艺术,是图论与应用之间的那道门。
★ 简单图是骨架,真实世界还要加装三件套。
加装不改骨架的例子随手可得:无向图的最短路,就是在「每条无向边换成两条反向有向边」的有向图上跑;无向图的最大流同理。简单图是所有变体的「公约数」——把简单图的定理吃透,加装版的定理往往只差一层皮。
★★ 圈何时必然存在?这个问题把「度」与「圈」第一次焊在一起。
证明。取一条最长路 v1v2⋯vt。v1 的所有邻居都在这条路上(若邻居 u 不在,可延长路,与最长矛盾)。由 d(v1) ≥ 2,它在路上有邻居 vj(j ≥ 3),于是 v1v2⋯vjv1 是圈。∎
逆否命题同样锋利:无圈图(森林)必有度 ≤ 1 的点——「叶」的存在性。树与森林的一切归纳证明(第二章几乎每条定理)都从这里下针:摘掉一片叶,对剩下的归纳,再接回去。
把这套论证推到极限就是第三章的 Dirac 圈定理:δ ≥ n/2 时不仅出圈,还出 Hamilton 圈——「最长路的端点」招式不变,只是数数更精。再看第六章:谱隙 ≥ 2 意味着图「足够连通」,其存在性证明同样要回到这条最朴素的圈判据。
一式三用:δ≥2 出圈;δ≥n/2 出 Hamilton 圈;无圈出叶。「最长路端点」是图论存在性证明的万能起手式。
★ 十六节讲义收束成一张口袋清单(上图)。逐件自问三句:它说了什么?它怎么算法化?它的反例是什么?
概念之间的关系链值得再走一遍:度是原子 → 握手引理把原子合成账本 → 度序列把整图压成一行数(第一个全局不变量)→ 连通把「走法」升格为「可达」→ 割给连通装上刻度 → 二部图是「无奇圈」的刻画 → 搜索算法把上述一切变成线性时间的可执行程序。一条链走完,「结构 ↔ 算法」的双向字典就翻开了第一页。
两处伏笔先立此存照,后文兑现。其一,割的语言(κ ≤ λ ≤ δ)将在第三章被 Menger 定理深化成「最小割 = 最多不相交路」。其二,二部判定的 BFS 染色将在第四章变成色数理论的特例(χ = 2),在第五章变成匹配理论的前提(Hall 的舞台)。
下面进入例题:第一组把「度序列与构造」演成操作,第二组把「BFS 与最短路」算成层数。
★★ 例题 1(度序列与构造)。判断下列序列可图性,可图者构造实现:① (4,3,3,2,2);② (5,4,3,2,1);③ (4,4,3,3,2,2)。
① 用 Havel–Hakimi。序列 (4,3,3,2,2),5 点。取最大 4:与后续 4 点各连一边,度数变为 (2,2,1,1)(原 3→2, 3→2, 2→1, 2→1),删去原最大点。继续:(2,2,1,1) 取 2:连后续两点 → (1,0,1) 排序 (1,1,0);取 1:连下一点 → (0,0)。全部归零,可图。构造回放:中心点连其余 4 点;第二步的 2 连两个 1 度点;第三步连最后两个 1 度点。得 5 点 7 边图:一个中心 + 两个三角形共享中心点。
② 一眼假。5 点最大度 4;序列 (5,4,3,2,1) 的首位 5 违反 d1 ≤ n−1 = 4。不可图。(也可由 Erdős–Gallai 判:k=1 时 5 > 1×0 + min(4, 4×1) = 4。)
③ 奇偶先筛。和 = 4+4+3+3+2+2 = 18,偶;6 点、最大度 4 ≤ 5。走 Havel–Hakimi:取 4 → (3,2,2,2,1);取 3 → (1,1,2,1) 排序 (2,1,1,1);取 2 → (0,0,1) 排序 (1,0,0);取 1 → (−1,0)?等一下:取 1 连后续 1 个点 → (0,0),无负数。可图。
★★ 例题 2(BFS 与最短路的层数)。给定 8 点图:边集 {12, 13, 24, 25, 36, 47, 57, 58, 68, 78},从顶点 1 出发跑 BFS,写出 dist 并判定是否二部图。
手演 BFS。队:[1] → 弹 1,入 2、3(第 1 波)→ 弹 2,入 4、5 → 弹 3,入 6 → 弹 4,入 7 → 弹 5,入 8(5 的邻居 7 已访问)→ 弹 6(8 已由 5 标记?6−8 有边,若 8 未标记则此处标)——注意顺序:弹 5 时邻居 7、8,7 已标,8 未标,入 8;弹 6:邻居 3、8 全标;弹 7、8 收尾。
dist:d(1)=0;d(2)=d(3)=1;d(4)=d(5)=d(6)=2;d(7)=d(8)=3
染色判定。按层染色:层偶 {1,4,5,6} 红,层奇 {2,3,7,8} 蓝。逐边核对:12 红蓝✓,13 红蓝✓,24 蓝红✓,25 蓝红✓,36 蓝红✓,47 红蓝✓,57 红蓝✓,58 红蓝✓,68 红蓝✓,78 蓝蓝✗——边 78 两端同层同色!
这里有一个容易踩的坑:同层相邻不违反「奇偶染色」,但违反「二部」吗?边 78 连接两个 dist=3 的点:1→7 与 1→8 都是 3 步,加上边 78 形成闭走 1−4−7−8−5−1?长 5——奇圈 C5(1,4,7,8,5)!果然非二部。教训:BFS 奇偶染色时,同层相邻边就是奇圈的告密信(更准确地:同色邻边出现即非二部;标准实现里在扫描邻居时当场发现,不必等收尾)。
★★ 习题课(一):度与连通。七题由浅入深,先自答再看提示。
T1.证明:任何图中,度为奇数的顶点有偶数个。提示:握手引理 + 奇偶性。
T2.能否存在 9 人的聚会,每人恰与 3 人握手?提示:nk = 27 为奇,违反握手引理——不存在。
T3.证明:若 G 不连通,则其补图 Ĝ 连通。提示:取分属两分支的点 u, v,Ĝ 中 uv 必是边;其余点一步接入。
T4.n 点 m 边的图至少有多少个连通分支?(用 m 的上界反推。)提示:k 个分支最多 C(n−k+1, 2) 条边(挤进一个分支);解不等式。
T5.证明:δ(G) ≥ 2 ⇒ G 有长 ≥ δ+1 的圈。提示:最长路 v1…vt 的两端邻居全在路上,圈长至少 δ+1。
T6.举例说明 κ = λ = δ 可以全部取等,也可以全部不取等。提示:完全图取等;「两个 K5 之一条桥相连」的图:κ=1, λ=1, δ=1 取等;尝试 δ 大而 κ 小的(两团多点桥)。
T7(挑战级).证明:若 δ(G) ≥ n/2,则 diam(G) ≤ 2。提示:不相邻的两点 u, v,邻域 N(u) 与 N(v) 的规模之和 ≥ n,必有公共点 w,u−w−v 长 2。
★★ 习题课(二):图搜索实战。以下五题围绕 BFS/DFS,全部可手演。
S1.8 点图(例题 2 的图)改从顶点 8 出发跑 BFS,写出访问顺序与 dist(邻居按编号升序入队)。答案示例:dist(8)=0, dist(5)=dist(7)=1, dist(2)=dist(4)=dist(6)=2, dist(1)=dist(3)=3。
S2.同一图从 1 出发跑 DFS(邻居升序),给出 in/out 时间戳。1(1/16)→2(2/9)→4(3/8)→7(4/7)→5(5/6)→8(6/? )——8 的邻居 5,6,7?6 未访问继续 6(7/? )……务必自己走完。
S3.证明:BFS 树中任何非树边连接的两点,其 dist 至多差 1。若差 ≥ 2,则波前漏洞——较早层会先标记对方。
S4.DFS 树中是否也可能出现「同层相连」?举例并说明它与 BFS 的本质区别。DFS 无「层」的概念——深浅由回溯决定;任何非树边都是「回边」(连向祖先),这是无向图 DFS 的铁律,证明见第三章。
S5(设计题).词梯问题:cat→cot→dot→dog,每次改一个字母且每步都是真单词。如何建模为图?求最短变换用什么算法?顶点 = 同长度单词集,边 = 恰差一字母;最短变换 = BFS。若词典 5 万词,建图 O(n·L·26)(L 为词长)。
★ 本章地图一句话:「度」是原子,「序列与连通」是分子,「搜索」让分子进入计算机。
底层(p11–p14)。度与握手引理立账本;度序列问「数列能否长成图」(Havel–Hakimi 给构造、Erdős–Gallai 给刻画);三种走法(途径/迹/路)与提炼引理把「走」的语言擦干净。
中层(p15–p19)。连通与分支、割与三个连通度(κ ≤ λ ≤ δ);二部图的无奇圈刻画;五个标准家族与彼得森反例库;BFS/DFS 骨架与「容器决定性格」。
上层(p20–p30)。波前定理(dist = 层号)、括号序(祖先 O(1) 判定)、连通分支线性时间、建模范式三连问、最长路存在性论证、口袋清单与两组例题习题。
地图用法。学新章前回看本图:第二章「树」将接走「无圈 + 连通」两个词(圈存在性 p25 正是伏笔);第三章「遍历」将接走「割与连通度」(Menger 深化);第五章「匹配」直接建在「二部图」之上;第六章「谱」则让邻接矩阵(p7)开口说话。每个箭头都是一条已兑现的承诺,每条悬空的词都会在后面某章被接走。
★★ 第一章小结(上):概念的五种视角。同一个「图」,五种学科的眼光各取所需。
① 集合论的视角。图是二元组 (V, E),子图与运算是集合语言的直译。这种视角给定义以保证——所有构造都有明确的「成分表」。
② 几何的视角。图是「画出来的连接」:顶点是点、边是弧。这种视角给直觉——波前像水波、DFS 像绳索;但它同时是危险的:第四章将看到「画不出来」的图照样存在,直觉必须被定理接管。
③ 代数的视角。邻接矩阵 A 让图进入线性代数:Ak 数途径、对称性变特征值。这种视角给计算——第六章整章兑现,本章只埋伏笔(p7)。
④ 概率的视角(远眺)。把图看作随机实验(每条边以概率 p 出现),「典型图长什么样」成为可证命题——随机图相变(第六章)是二十世纪后半叶图论最大的思想输入。
⑤ 算法的视角。图是数据结构 + 遍历程序:BFS/DFS 是「把图读进机器」的两种次序。这种视角给可计算性——线性时间是金标准,复杂度是分水岭(第三章 Hamilton vs Euler 的天堑)。
五视角守则:定义以①为准,直觉借②,计算靠③,猜想用④,落地走⑤。一个概念五种语言都会说了,才算真的学会。
★★ 第一章小结(下):定理与算法的对读表。本章每个结构事实都配一个算法事实,逐条对读。
| 结构事实 | 算法事实 | 共同的地基 |
|---|---|---|
| 握手引理 Σd = 2m | 度序列 O(n) 可读 | 每边两个端点 |
| 提炼引理(最短途径是路) | BFS 的 dist 即最短路 | 波前定理(层归纳) |
| 二部 ⟺ 无奇圈 | BFS 染色 O(V+E) 判定 | 距离奇偶 = 层奇偶 |
| 括号定理(祖先关系) | DFS 时间戳 O(1) 查询 | 单分支深入 |
| 连通分支 = 等价类 | 分支数 = 外层轮数 | 全局 vis + 局部搜索 |
| δ ≥ 2 ⇒ 有圈 | Havel–Hakimi 负数即否决 | 最长路/极小反证 |
对读表的第三列是灵魂。「共同的地基」一栏说明:结构定理与算法定理不是两堆事实,而是同一块地基上的两座建筑。这确实是本册最想传递的方法论:看见一条定理,先问它的算法影子;写一段算法,先问它的结构执照。
三条对读中最值得一提的是「二部 ⟺ 无奇圈」:结构侧的证明用对称差(两条奇偶不同的路拼出奇圈),算法侧的证明用波前(同色邻边即告密)。两个证明几乎不共享词句,却共享同一个几何意象——把图按到 s 出发的水波里,圈的长短由波纹的相遇方式决定。
★★★ 思想卡:抽象的代价与回报。绪论说「抽象让一个证明服务一千个例子」,本章提供了一个完整案例,值得把账算细。
代价一:丢失度量。图没有长度、角度、坐标——「近」只剩「邻接」,「形状」只剩「同构类」。代价有多大?七桥问题里桥的长短被扔掉,答案毫发无损;但交通问题里扔掉里程就全错了。于是有了第二次抽象:带权图把丢掉的再买回来(p24)。抽象不是一次到位,而是按需分层。
代价二:丢失个体。同构类抹平顶点的身份——「哪个点是哪个」不再有意义。代价:网络上「关键人物」的个体性没了?回报:度、介数、PageRank 这些结构角色恰恰在抹平个体后显形——重要性不是名字给的,是位置给的。
回报一:不变量 = 可交易的通货。度序列、色数、谱……不变量把「图与图的关系」变成「数与数的关系」。第五章 Ramsey 定理的本质是:任何不变量维度上的混乱,在够大的尺度上必然塌缩出秩序。
回报二:算法的普适性。BFS 一段代码,同时是导航、社交分析、词梯、网络分块——抽象一遍写好,具体问题无限次复用。这是计算机科学与图论联姻的深层原因。
★★★★ 挑战:Erdős–Gallai 的构造性证明。目标:证明 Havel–Hakimi 过程的正确性——序列 d 可图 ⟺ 删去最大度 d1 并将其余前 d1 个各减一后的序列可图。这是 Erdős–Gallai 定理的算法化身。
方向一(⇐)容易。减一后的序列若实现为图 H,加回一个新顶点连向那 d1 个「被减一」的点,即得 d 的实现。
方向二(⇒)是真正的战场。设 G 实现 d,最大度点为 v,要证:存在一个实现,其中 v 恰连向度数次大的 d1 个点。
关键引理(交换论证)。若 v 连 x 不连 y,而 d(y) > d(x),则存在 z 使 yz 是边、xz 不是边(若 y 的邻居全部也是 x 的邻居,则由 d(y) > d(x) 得 y 有额外邻居——即 v 自己?v 不连 y,故 z ∉ {x, v} 存在)。交换两条边:vx, yz → vy, xz——各点度数全部不变,而 v 的邻居名单「换进」了更富的 y。
收束。定义 v 邻居的「度数潜力」Σd(邻居)。每次交换严格增加这个和(交换 x↔y 且 d(y) > d(x)),而总和有上界,故有限步后 v 连向的恰是度数最大的 d1 个点。删去 v 即得减一序列的实现。∎
★★★ 把本章核心账目真跑一遍:邻接表建图、BFS 最短路、二部染色、DFS 时间戳、连通分支,全部与手算对拍。数据用例题 2 的 8 点图与一个随机社交网络。
from collections import deque
def build(n, edges):
adj = [[] for _ in range(n + 1)]
for u, v in edges:
adj[u].append(v); adj[v].append(u)
return adj
def bfs_dist(adj, s):
dist = {s: 0}; q = deque([s])
while q:
u = q.popleft()
for v in adj[u]:
if v not in dist:
dist[v] = dist[u] + 1; q.append(v)
return dist
def bfs_bipartite(adj, s):
col = {s: 0}; q = deque([s])
while q:
u = q.popleft()
for v in adj[u]:
if v not in col:
col[v] = col[u] ^ 1; q.append(v)
elif col[v] == col[u]:
return False, u, v
return True, None, None
def dfs_stamp(adj, u, vis, t):
vis[u] = [t[0], None]; t[0] += 1
for v in adj[u]:
if v not in vis:
dfs_stamp(adj, v, vis, t)
vis[u][1] = t[0]; t[0] += 1
return vis
E = [(1,2),(1,3),(2,4),(2,5),(3,6),(4,7),(5,7),(5,8),(6,8),(7,8)]
adj = build(8, E)
print("dist from 1:", dict(sorted(bfs_dist(adj, 1).items())))
print("二部判定:", bfs_bipartite(adj, 1))
print("DFS in/out from 1:", {k: tuple(v) for k, v in sorted(dfs_stamp(adj, 1, {}, [1]).items())})
# 六度分隔:随机社交网络(200 人,每人随机 4 友),看平均距离
import random
random.seed(7)
N, edges = 200, set()
while len(edges) < 400:
a, b = random.randrange(1, N + 1), random.randrange(1, N + 1)
if a != b:
edges.add((min(a, b), max(a, b)))
adj2 = build(N, sorted(edges))
ds = [d for v in range(1, N + 1) for d in bfs_dist(adj2, v).values()]
print(f"社交网络: 200 人 400 条边, 可达点对平均距离 = {sum(ds) / len(ds):.2f}")实跑输出(与手算逐项对拍):
dist from 1: {1: 0, 2: 1, 3: 1, 4: 2, 5: 2, 6: 2, 7: 3, 8: 3}
二部判定: (False, 7, 8)
DFS in/out from 1: {1: (1, 16), 2: (2, 15), 4: (3, 14), 7: (4, 13), 5: (5, 10), 8: (6, 9), 6: (11, 12), 3: (16, 15)}
社交网络: 200 人 400 条边, 可达点对平均距离 = 3.21★★ 格物札记:从七桥到拓扑学的伏笔。欧拉 1736 年的那篇论文,标题里没有「图论」三个字——它叫《位置几何学解》。这个细节里藏着一段学术史的伏笔。
「位置几何」是什么?莱布尼茨曾设想一门「只研究位置关系、不管度量」的学问。欧拉用七桥问题示范了它的可能:把桥的长短全部丢弃,答案依然完整——因为问题的本质不在度量,而在连接。这正是半个世纪后「拓扑学」(analysis situs)的纲领。
第一条伏笔:Euler 示性数。欧拉后来又发现多面体的 V − E + F = 2。这个「顶点减棱加面」的量在拉伸、挤压下不变——拓扑不变量的第一个标本。本书第四章将把这条公式移植到平面图(V − E + F = 2 的图论版),并从它推出非平面图的路障。多面体与平面图是同一个拓扑对象——这一发现把立体几何与图论焊在一张纸上。
第二条伏笔:柯尼斯堡的「桥」变成了「洞」。一笔画的 impossibility 其实是「度奇偶」这个代数不变量的判决。更一般的框架(一维同调)说:一笔遍历的障碍恰好由「圈的独立条数」度量——七桥图有 4 个独立圈、8 个奇点。这套语言在二十世纪长成代数拓扑,而它的种子就是本章的握手引理与圈的概念。
札记的结论。图论不是拓扑学的穷亲戚,而是它的离散祖先;反过来,拓扑思想(连通、割、亏格)将持续给图论供血。第四章的平面性、第六章的谱隙,都是这段姻缘的后话。
★★ 速查:第一章概念与定理。考前一页纸,逐条过。
| 对象/定理 | 陈述(速记) | 备注 |
|---|---|---|
| 度 d(v) | 关联边数(自环计 2) | Σd(v) = 2m |
| 握手引理 | Σd = 2m ⇒ 奇点偶数个 | 欧拉 1736 |
| 可图性 | Havel–Hakimi:取最大连次大 | Erdős–Gallai 充要 |
| 走法 | 途径 ⊃ 迹 ⊃ 路 | 提炼引理:途径藏路 |
| 距离 d(u,v) | 最短路长(不可达 ∞) | BFS 直接给出 |
| 连通度 | κ(G) ≤ λ(G) ≤ δ(G) | Whitney |
| 二部图 | ⟺ 无奇圈 ⟺ 2-染色 | König;BFS 判定 |
| 波前定理 | BFS 第 k 波 ⟺ dist = k | 层归纳 |
| 括号定理 | 区间必包含或分离 | 祖先 O(1) 判定 |
| 搜索复杂度 | BFS/DFS 均 O(V+E) | 线性时间基准 |
| 圈存在 | δ ≥ 2 ⇒ 有圈 | 最长路论证 |
| 彼得森图 | 10 点 3-正则;围长 5;非 Hamilton | 反例专业户 |
三个易错点。① 「不变量相同 ⇒ 同构」是伪命题(C6 vs 2K3);② 迹与路混用(七桥要的是迹!);③ 同层相邻边与二部判定的关系(例题 2 的坑)。
★ 第一章的口袋清单已经鼓鼓囊囊,但有一条线还悬着:「连通」的代价是多少?保持 n 个点连通,最少要几条边?答案是 n − 1,而达到这个下界的连通图,恰好就是「无圈的连通图」——树。
第二章围绕这个「最经济」的对象展开三件事。其一,刻画:树的六种等价定义——「连通无圈」「n−1 条边且连通」「任意两点唯一路」「删一条边即断」……条件可以互相兑换,这种「定义过剩」本身就是定理,也是一切归纳证明的弹药库。其二,计数:Cayley 公式断言 n 个标号点有 nn−2 棵树——这个梦幻般的封闭公式由 Prüfer 序列的双射漂亮证明,本册将完整走一遍。其三,最优化:带权图中怎么挑「总代价最小的生成树」?Kruskal 与 Prim 两大贪心算法、切定理的合法性证明、并查集的近线性实现,以及最小生成树在聚类与网络设计中的落地。
一句话预告方法论:树是把「连通」与「无圈」两件好事同时占全的唯一结构——它是图论里的「既不浪费也不冗余」,而最优化与计数都围绕着这份「刚刚好」展开。
★★★ 第一章留下的接口问题——「连通的最小代价」——本章一步答完。
答案:n 个点的连通图至少 n − 1 条边;恰好取等的连通图必无圈,反之亦然。这个双重身份的对象叫树:它是「既不浪费也不冗余」的连接。多一条边必出圈(冗余),少一条边必断(浪费)——树的全部理论都是这份「刚刚好」的展开。
线一 · 刻画与计数(p41–p46)。树的六种等价刻画像瑞士军刀:归纳证明随手换刀。Cayley 公式数出 nn−2 棵标号树——一个出人意料的封闭表达式;Prüfer 序列给出树与长度 n−2 数列的双射,让「数树」变成「数数列」。
线二 · 最优化(p47–p53)。带权图中挑总代价最小的生成树:Kruskal(全局贪心:边从小到大收)与 Prim(局部贪心:从一点长出来)双算法,切定理为贪心签发执照,并查集把 Kruskal 推到近线性时间。唯一性与「边全不同权」的关系一并讲清。
收束(p54–p64)。三组例题(树刻画验证、Prüfer 双向演算、Kruskal 手演)、两组习题、地图、小结、思想卡(贪心的合法性从哪里来)、挑战(Cayley 的矩阵证明)、实验(Kruskal 真跑对拍)、札记与速查,末页误读纠正四个陷阱。
★★ 上章的圈存在性判据(δ ≥ 2 ⇒ 有圈)立刻给出树的第一个代数特征:树的 δ ≤ 1。
叶的存在性值得单独写一行:树(阶 ≥ 2)必有叶。证明即上章最长路论证的逆否版——若所有点度 ≥ 2,则有圈;树无圈,故有叶。叶是树的「可摘的果子」:任何关于树的归纳证明,都从摘叶开始——摘掉叶 v,对 T − v(仍是树!)用归纳假设,再把 v 接回来核对性质。这个三步舞将在后面六节里反复跳出。
森林与树的关系即连通分支的语言:森林 = 树的不相交并;n 点 k 分支的森林恰有 n − k 条边(每棵树贡献「点数 − 1」)。这条「边数账本」是无数计数问题的第一行:例如「n 点 m 边无圈 ⟺ m = n − (分支数)」。
速记:树 = 最便宜的连通;森林 = 树的拼盘;叶 = 归纳的把手。
★★★ 树最迷人的地方是「定义过剩」——六种互不相同的说法,说的都是同一类图。
证明路线图(不必全证,学会挑路)。(1)⇒(2):对 n 归纳,摘叶后 n−1 点树有 n−2 边,接回叶 +1 边。(2)⇒(3):若 (2) 而有圈,从圈上删一边仍连通(圈的性质:圈上任一边是「冗余」的),得 n−2 边的连通图——与连通图边数 ≥ n−1 矛盾(边数账本:每次连入一个新点至多加一条边仍连通)。(3)⇒(4):无圈保证至多一条路(两条则拼出圈);m = n−1 + 无圈 ⇒ k = n − m = 1 个分支 ⇒ 连通 ⇒ 至少一条路。(4)⇒(5):删边后那两点间再无第二条路。(5)⇒(6) 与 (6)⇒(1) 走对偶账本。∎
六刻画的用法哲学。证题时挑「最顺手」的那条:要证「唯一性」用 (4);要数边用 (2)/(3);要证「最小性」用 (5);要证「 maximal 无圈」用 (6)。定义过剩 = 论证自由。
★★ 生成树是「结构的最小代表」:保连通、去冗余。
证明(删圈法)。若 G 有圈,删去圈上任意一边——连通性不破坏(圈上两点仍可沿圈剩下的部分互达)。重复至无圈。每轮边数 −1、点数不变,过程必然终止(边有限),终态连通无圈即生成树。∎
基本圈(重要的副产物)。删圈法删掉的每条边 e,在最后的树 T 中,其两端点有唯一树路——加上 e 本身恰成一个圈。余边有 m − (n−1) 条,于是基本圈至少有 m − n + 1 个;更进一步可证图的全部圈都能由基本圈「异或拼出」(圈空间维度恰为 m − n + 1,第六章谱方法会用这个账本)。对偶地,树里的每条边对应一个基本割(删它树断成两半,跨界边全体),共 n − 1 个。圈与割的这一对「基本家族」是图论线性代数化的双柱。
生成树的个数可以非常多:完全图 K10 的生成树有 108 棵(下页 Cayley 公式)。「哪一个最好」由权决定——这正是线二(最小生成树)的出发点。
★★★★ 「n 个标号点的树有多少棵?」——Cayley 在 1889 年给出答案,形式美得不像话。
先做数量级体检。n = 3:3 棵(三条路)✓;n = 4:16 棵;n = 10:108 棵。增长是「超指数模样」的——对固定 n,树的空间大到无法枚举,这解释了为什么必须发展双射、公式与算法三件套。
公式为什么「合理」?三条启发式。其一,一棵 n 点树有 n−1 条边,Kn 有 C(n,2) 条边,「每棵树 = 从 Kn 里挑 n−1 条边且无圈」——但无圈约束极难直接数。其二,信息量视角:n−1 条边的信息 ≈ (n−2) 个「n 选 1」的独立决策——Prüfer 序列将把这句话变成严格双射。其三,矩阵视角:生成树个数 = Laplacian 的任意余子式(Matrix–Tree 定理,第六章真跑验证),对 Kn 算矩阵恰好得 nn−2——两条完全不同的路殊途同归,是数学内部一致性的漂亮展品。
本册的路线:下一页用 Prüfer 序列给出最「看得见摸得着」的证明;挑战页(p60)再走矩阵路线。双路线对读,正是「组合双射 ↔ 代数计算」的一次完整预演。
★★★★ Prüfer(1918)给出的双射,把 Cayley 公式变成一页纸。
小例手演(6 点星形加长枝):树 = 中心 1 连 2、3、4,4 连 5,5 连 6。编码:最小叶 2 → 记 1,删;最小叶 3 → 记 1,删;最小叶 4?度 2 不是叶;叶 5 → 记 4,删;叶 4 → 记 1,删;剩 {1,6} 停。序列 = (1, 1, 4, 1)。解码自检:出现次数 1×3、4×1 ⇒ 度 1:4, 4:2, 其余 1——正是原树。∎
双射的红利清单:① Cayley 公式(n−2 位、每位 n 选);② 度为 di 的树有 (n−2)! / Π(di−1)! 棵(多项式系数!)——「给定度序列数树」一步解决;③ 叶的个数 = 序列中缺席的标号数,树的「统计量」变成数列的「统计量」。把结构问题翻译成序列问题,是组合数学最锋利的一招。
★★ 给每条边标上造价,「最便宜的连通方式」就是一个明确的优化问题。
为什么解一定存在、且在「树」里?存在性:连通图有生成树(p43),生成树只有有限多棵,有限集必有最小。为什么最优解必是树而不是别的连通子图?若连通子图 H 有圈,删圈上一边仍连通且代价更小——最优解永不多付冗余的钱;「最小连通生成子图」必然无圈,即树。这是「树 = 刚刚好」的优化版重述。
证明(交换剪除)。设 T ≠ T′ 两棵 MST,取 T 有而 T′ 无的最小权边 e;在 T′ 中加 e 生成基本圈,圈必与 T − e 相交于另一边 f(圈穿过 e 的两侧)。由权互异且 e 是「差异中最小」,w(e) < w(f),于是 T′ − f + e 是更便宜的生成树——矛盾。∎
权相等时 MST 可能不唯一(三角形三边同权,任取两边),但最优总代价唯一;且可证「对每一种权值的边数,所有 MST 相同」——多重解只是「同一预算下的不同花法」。
★★★ MST 有两个互为镜像的贪心算法,先讲全局版。
三问三答。① 为什么贪心是对的?——切定理(下页):任何横切最小边必属于某棵 MST,而 Kruskal 收边时恰在收「某横切的最小边」。② 为什么不会死循环/提前失败?——F 永远无圈(判圈后才收);连通图的任何横切在「还没跨接前」必有可收边,直到 n−1 条收满。③ 复杂度瓶颈在哪?——排序 O(m log m);判连通若用笨办法每次 BFS 会让总复杂度爆炸,并查集把它压到近线性(p49)。
行为画像。Kruskal 像「国家收购」:把全国所有道路按价排队,价低的先纳入路网,与已有路网成环的跳过。它对图的「全局」一目了然——适合边稀疏或已按权排序的输入;而 Prim(下页)像「城市扩张」,从一点出发步步为营,适合稠密图。两者殊途同归:都只收「安全边」。
★★★★ 贪心算法最需要回答的一句质疑:「先拿小的,以后会不会后悔?」切定理给出否定的答案。
证明。反设 MST T 不含 e* = uv(u ∈ S)。把 e* 加入 T 得基本圈(p43);这个圈从 u 出发回到 v,而 u, v 分属两侧,圈上必另有一条横切边 f。由 e* 的最小性 w(f) ≥ w(e*)。现在 T′ = T − f + e*:仍是生成树(树 + 新边成圈、圈上删一边仍是树),且 w(T′) ≤ w(T)——因 T 是 MST,只能取等;权互异时严格更小导出矛盾,故含 e* 的 MST 存在。∎
两个算法都是切定理的「执行器」。Kruskal 收边 e 时,切 = 「e 两端所在两个并查集」,e 正是当前未考察边中跨此切的最小者。Prim 的切 = 「已长出部分 ∪ 其余」,每次收最便宜的外伸边。同一个执照,两种执法。第五章的匹配算法、第三章的最大流,都会再见到这枚「交换论证」图章。
★★★ Kruskal 每收一条边都要问一次「这两点连通吗」,暴力 BFS 会让总账爆炸。并查集是标准答案。
在 Kruskal 里的台词:考察边 uv 时,find(u) ≠ find(v) ⇒ 不成圈,收下并 union;否则丢弃。「判圈」从图问题退化成两次树查询——这是第二章最漂亮的一次「结构换算法」。
更深的一层:并查集本身就「是」一张图。它维护的等价关系正是「当前已收边集 F 的连通分支」——find 等价于「同一分支」这个等价类的标签。第一章的连通分支(BFS 版)是静态的;并查集是增量版:边一条条进来,分支动态合并。数据结构的进化,本质是对「问题的时间维度」的回应。
总账:排序 O(m log m) + 并查集 O(m α(n)) ⇒ Kruskal 全程 O(m log m)。
★★★ 第二个贪心从「点」的视角长出骨架。
正确性一句带过:每轮收的恰是切 (U, V∖U) 的最小横切边——切定理直接背书。实现:优先队列里放「边界上每点 v ∈ V∖U 到 U 的最短外伸边」,每收一点做「减小关键字」,总复杂度 O(m log n)(二叉堆)——稠密图(m ≈ n2)时比 Kruskal 的 O(m log m) 略占优。
算法谱系图值得画一张:Prim 与 BFS 是同一个「区域生长」框架——BFS 的「权」恒为 1(层号)、容器是先进先出队列;Prim 的权是真实造价、容器是按关键字出队的优先队列。第三章的 Dijkstra 再改一处:关键字从「单步权」换成「起点累计距」。三个算法、一副骨架——「容器决定性格」的家族第三位成员。
选择指南:稀疏图/边已排序 → Kruskal;稠密图/邻接矩阵在手 → Prim;两者正确性同源(切定理),跑出来的树在权互异时必相同(唯一性引理)——两条路,同一棵树。
★★ MST 的应用清单长得出奇,挑四个有代表性的。
单链接聚类。n 个数据点两两算距离,得完全带权图;求 MST 后删去最长的 k−1 条边,剩下的 k 棵树就是 k 个簇。为什么合理?MST 边是「最值得保留的亲缘」,被删的是「最大的跨簇鸿沟」。这是层次聚类的原型,复杂度 O(n2 log n)——一章的算法直接变成一章的数据分析。
网络设计的真实账本。光缆、管网、电网的主干规划,第一问都是「保连通的最小造价」= MST;但工程还要抗毁性——于是在 MST 之上加回冗余边(双连通改造,第三章的块分解是理论工具)。MST 是预算的下界锚点。
TSP 的 2-近似。第三章将证明:度量 TSP(距离满足三角不等式)可以用「MST 的深度优先周游」拿到至多 2 倍最优的路线——树先出场卖个破绽,圈随后收割。这是近似算法教科书的第一课。
图像分割。像素为点、相邻像素差异为权,MST 上删「大权」边即得分割——Felzenszwalb–Huttenlocher 算法(2004)至今是视觉领域的基础件。同一个 Kruskal,六十年后在像素里打工。
★★ 例题 1(树的刻画逐条验证)。设 G 是 7 点 6 边的连通图,证明它是树,并验证六刻画逐条成立。
第一步:连通 + m = n−1 ⇒ 无圈。反设有圈 C:从圈上任删一边仍连通,得 6 点级「7 点 5 边连通图」。但连通图每加一点至少加一边,n 点连通图 m ≥ n−1 = 6,5 < 6 矛盾。故 G 连通无圈——是树。
六刻画逐条打卡。(1) 连通无圈 ✓(刚证)。(2) 连通且 m = 6 = n−1 ✓(题设)。(3) 无圈且 m = n−1 ✓。(4) 任意两点恰一条路:无圈 ⇒ 至多一条(两条拼圈);连通 ⇒ 至少一条。✓。(5) 删任一边即断:删边 e 后 m = 5 < n−1 = 6,连通图边数下界被破,必不连通。✓。(6) 添任一边恰一圈:任取两点 u, v,树上恰一条路;添 uv 后该路 + 新边成圈;若成两个圈,则删去某圈上一条原有边图仍连通(圈边冗余),与 (5) 矛盾——恰一个圈。✓。
★★★ 例题 2(Prüfer 序列的双向演算)。对 6 点树:边集 {12, 13, 14, 45, 56},完成编码与反向解码。
编码。度表:d(1)=3, d(2)=d(3)=1, d(4)=2, d(5)=2, d(6)=1。
第 1 步:最小叶 2 → 记 1,删 2(d1=2)。
第 2 步:最小叶 3 → 记 1,删 3(d1=1)。
第 3 步:候选叶 4(d=2 否)、5(d=2 否)、6(d=1 ✓)→ 记 5,删 6(d5=1)。
第 4 步:候选叶 4(d=2 否)、5(d=1 ✓)→ 记 5,删 5(d4=1)。
剩 {1, 4},停。Prüfer 序列 = (1, 1, 5, 5)。
解码。出现次数:1×2, 5×2 ⇒ 度表 d(1)=3, d(5)=3, 其余 1(含 2, 3, 4, 6 候选叶)。
第 1 位 a1=1:最小叶候选 = {2,3,4,6} 中最小 2 → 连 2–1(d2 耗尽,d1 剩 2)。
第 2 位 a2=1:候选 {3,4,6} → 连 3–1(d1 剩 1)。
第 3 位 a3=5:候选 {4,6},最小 4 → 连 4–5(d4 耗尽;d5 剩 2,且 5 仍在序列中待用)。
第 4 位 a4=5:候选 {6},6 → 连 6–5(d5 剩 1)。
收尾:剩余两点 {1, 5} 连 1–5。边集 = {21, 31, 45, 56, 15}。
★★ 例题 3(Kruskal 手演小图)。6 点带权图,边与权:12:1, 34:1, 56:2, 23:3, 45:3, 25:4, 36:5, 16:6, 14:7。求 MST。
排序:1(12) ≤ 1(34) < 2(56) < 3(23) = 3(45) < 4(25) < 5(36) < 6(16) < 7(14)。
逐边过审(并查集状态记作 {…}):
12:1 → 收({1,2})。34:1 → 收({3,4})。56:2 → 收({5,6})。23:3 → 收({1,2,3,4})。45:3 → 收(并 {1..4} 与 {5,6} ⇒ {1..6})。已收 5 条 = n−1,停。后续 25, 36, 16, 14 不再考察(或考察即弃)。
MST 边集 = {12, 34, 56, 23, 45},总代价 = 1+1+2+3+3 = 10
验证三件事。① 是树:5 条边 6 点、并查集最终并成一类(连通)、逐条收边时均不成圈(无圈)。② 切定理抽查:收 45 时切 = ({1,2,3,4}, {5,6}),横切边 45:3, 25:4, 16:6, 14:7 中 45 最小 ✓。③ 总代价下界核对:删去任何一条 MST 边(如 45:3)后不连通;换入任何余边(如 25:4)代价 +1——树的最大权边 45:3 的「基本圈」上没有更小余边。
break 一致。★★ 习题课(一):树与生成树。五题入门+两题进阶。
T1.证明:n ≥ 2 的树至少两片叶。最长路的两端不能有延伸——两端都是叶。
T2.证明:树中任何两个不相邻的顶点之间添一边,恰得一个圈;且删去新圈上任一原有边,又还原为树。用刻画 (4) 与 (6)。
T3.连通图 G 的每条边都属于某个圈 ⟺ G 删去任何一条边仍连通。证明并举例说明「每条边在某个圈里」与「G 有 Hamilton 圈」无关。前者叫「2-边连通」;彼得森图与两个三角形粘一条边的图是两个方向的例子。
T4.n 点树中度为 k 的顶点个数记 n_k。证明:Σ n_k = n 且 Σ k·n_k = 2(n−1);由后者推出 n_1 ≥ 2 + Σk≥3 (k−2) n_k。第二式即握手引理;变形即得——「多足的点靠叶养」。
T5.设 T 是树,证明其顶点可 2-染色当且仅当 n ≥ 2。( surprise:树都是二部图!)树上无圈,奇圈更无从谈起;或直接从任一点按距离奇偶染。
T6(进阶).证明:m = n−2 的图至少 2 个连通分支。边数账本:k 个分支 ⇒ m ≤ n − k。
T7(进阶).若连通图 G 的每条边都是「桥」(删去即断),证明 G 是树。每边是桥 ⇒ 无圈(圈边非桥)。
★★★ 习题课(二):最小生成树与并查集。
S1.4 点完全图 K4,边权:12=1, 13=2, 14=3, 23=3, 24=4, 34=5。手演 Kruskal 与 Prim(起点 1),比较两算法收边顺序。两法都得 {12, 13, 14}?——不对!Kruskal 收 12, 13, 23?(3 已与 1 连通则弃 23)……自己跑并查集,答案是 {12,13,14},总代价 6;Prim 从 1 出发依次收 12, 13, 14。顺序不同、结果同。
S2.构造一个 MST 不唯一的带权图(各边权不必互异),并找出全部 MST。三角形三边同权即可:任取两边都是 MST,共 3 棵。
S3.证明:若 e 是某 MST 中权最大的边,则删去 e 后图不连通(即 e 是桥)。反设 e 非桥:e 在某圈上,圈上其余边权 ≤ w(e);若严格小则可交换降总权——矛盾;若全相等,交换得另一棵 MST。
S4.证明 Kruskal 收边的顺序中,「权相同的边」无论先后,最终 MST 的权值多重集相同。切定理对「并列最小」同样成立——任意并列最小横切边都安全。
S5.并查集只做 union 与 find 能否撤销一次合并?为什么?不能高效撤销——路径压缩摧毁了「回滚点」;需要可持久化或按操作分块。这是数据结构的经典代价权衡。
S6(挑战级).证明:把 MST 的每条边权都减 1(其他边不变),原 MST 仍是新图的一棵 MST,但不一定唯一了。树有 n−1 条边,全体统一减 1 ⇒ 生成树间的大小次序不变;但新图可能出现「同总权」的竞争者。
★ 本章地图一句话:「树」领到六重身份,生成树把它装进每一张连通图,计数与最优化再把这份结构变成数字与算法。
身份层(p41–p42)。叶与摘叶归纳、六种等价刻画、边数账本——一切证明的弹药库。
代表层(p43)。删圈法保证生成树存在;基本圈(m−n+1 个)与基本割(n−1 个)互为对偶,预埋第六章圈空间的线性代数。
计数层(p44–p45)。Cayley 的 nn−2 由 Prüfer 双射落地:数树变成数数列;度分布的多项式系数顺手拿下。
优化层(p46–p51)。问题的提法(最小连通造价)→ 唯一性(权互异)→ 两个贪心(Kruskal 全局收边、Prim 局部生长)→ 执照(切定理交换论证)→ 引擎(并查集 α(n))→ 落地(聚类、网络设计、TSP 近似、图像分割)。
地图用法。第三章将把「最小骨架」升级为「最短路径」(Dijkstra 与 Prim 同源);第五章的匹配算法将复用「增广/交换」招式;第六章 Matrix–Tree 定理把本章的「计数」与「谱」接通。树上每一根枝,后面都有果子。
★★ 第二章小结:树的语言。本章术语密度不高,但每一件都要「三会」:会定义、会证明、会算法化。
概念线。树(连通+无圈)→ 叶与森林 → 生成树与余树 → 基本圈/基本割 → 切与横切边。关系线:六刻画互为兑换;生成树是「连通图的最小代表」;基本圈由余边生成、基本割由树边生成——一对外偶家族。
定理线(五条主定理)。① 六刻画(边数账本+摘叶归纳);② 生成树存在性(删圈法);③ Cayley 公式(Prüfer 双射);④ 切定理(交换论证);⑤ MST 唯一性(权互异 + 交换剪除)。
算法线(三件套)。Kruskal(O(m log m),全局贪心,并查集判圈)、Prim(O(m log n),局部贪心,优先队列)、并查集(find/union + 按秩合并 + 路径压缩,α(n) 近常数)。两个算法一棵树:权互异时 Kruskal 与 Prim 的输出必然相同(唯一性引理)——这是检验实现正确性的免费 oracle。
一句话总结全章:树是「连通」与「无圈」的联姻;生成树把联姻推广到所有连通图;Cayley 数出联姻的总数;Kruskal 与 Prim 挑出最便宜的联姻。「刚刚好」三个字,贯穿 25 页。
★★★ 思想卡:贪心的合法性从哪里来?Kruskal 每一步都「只顾眼前最便宜」,凭什么全局最优?这张思想卡把「贪心」这门手艺的底盘拆展示。
贪心的三个构件。① 贪心选择性质:存在一个最优解,包含当前贪心选择(切定理:最小横切边必在某 MST 中);② 最优子结构:做出选择后,剩下的问题仍是同型问题(收掉一条安全边后,「在收缩图上求 MST」);③ 不可逆性:一旦安全,永不反悔(交换论证保证「换进来不亏」)。三件齐备,贪心才有执照。
反例教育:贪心何时破产?把同一招式搬到别处立刻翻车:找「从 s 到 t 的最长简单路」,贪心(每步走最长的邻边)会走进死角——Hamilton 路没有「切定理」,交换论证的第一步就断(第三章主角)。贪心不是性格,而是可证明的性质;没有证明的贪心只是赌博。
贪心与双射、与谱的暗中呼应。Prüfer 序列其实也是贪心:每步摘「最小叶」——合法性来自「叶的结构地位无差别」。第六章的 Matrix–Tree 则从谱侧给出 MST 计数的另一张面孔。三种武器(贪心、双射、谱)在「树」这同一个对象上各显神通,对象越基本,武器的交集越大——这是选树当第二章主角的深层理由。
★★★★ 挑战:Cayley 公式的矩阵证明。目标:用 Matrix–Tree 定理(第六章将完整叙述)重推 Cayley 公式,体验「代数一条龙」。
Matrix–Tree 定理(Kirchhoff, 1847,陈述先行)。连通图 G 的生成树个数 = Laplacian 矩阵 L = D − A 的任意一个 n−1 阶主子式的行列式值(D 为度对角阵,A 为邻接阵)。
第一步:完全图的 Laplacian。Kn 的 L = nI − J,其中 J 是全 1 矩阵。取任意主子式(删去第 n 行列):剩下的 (n−1)×(n−1) 矩阵是 nI − J−(J− 为全 1 的 (n−1) 方阵)。
第二步:算行列式。矩阵 nI − J− 的特征值:J− 的特征值为 1(特征向量全 1 向量)与 0(n−2 重);平移 n 后得 n−1(单重)与 n(n−2 重)。行列式 = (n−1)·nn−2。
第三步:定理回代。生成树个数 = 行列式 = (n−1)·nn−2?——比 Cayley 多个 (n−1)?冷静:Matrix–Tree 的标准陈述是对「图的 Laplacian」而言,但 Cayley 数的是「标号树(即 Kn 的生成树)」——代入检查 n=3:行列式 = 2·3 = 6 ≠ 3。矛盾说明第一步的 L 记错了:Kn 的度全是 n−1,L = (n−1)I − (J − I) = nI − J——没错;再查定理:应为「任意主子式」的 n−1 阶子式,而 n=3 时 K3 的 L 的 2 阶主子式 = |2 −1; −1 2| = 3 ✓(上面算的是 3−1=2 阶?n−1 = 2 阶主子式 = det(nI(n−1) − J) = (n−1)·1 − … 让我们直接按特征值算 2 阶:矩阵 [[2,−1],[−1,2]] 特征值 1, 3,行列式 3 ✓)。通式:det(nIn−1 − Jn−1) = (n−1)·1 + n 的重数账 = nn−2·(n−1)/(n−1)?——直接算:(n−1) 阶矩阵 nI − J 的行列式 = nn−2(n − (n−1))·?
★★★ 把 MST 的核心账目真跑一遍:Kruskal+并查集、Prim(优先队列)双算法对拍,Prüfer 编解码往返验证,Cayley 计数抽查。先手算后机器,全部一致。
class UF:
def __init__(self, n):
self.p = list(range(n + 1)); self.r = [0] * (n + 1)
def find(self, x):
while self.p[x] != x:
self.p[x] = self.p[self.p[x]] # 路径减半
x = self.p[x]
return x
def union(self, a, b):
ra, rb = self.find(a), self.find(b)
if ra == rb: return False
if self.r[ra] < self.r[rb]: ra, rb = rb, ra
self.p[rb] = ra
if self.r[ra] == self.r[rb]: self.r[ra] += 1
return True
def kruskal(n, edges): # edges: (w, u, v)
uf, F, tot = UF(n), [], 0
for w, u, v in sorted(edges):
if uf.union(u, v):
F.append((u, v, w)); tot += w
if len(F) == n - 1: break
return F, tot
import heapq
def prim(n, adj, s=1):
seen = {s}; h = [(w, s, v) for v, w in adj[s]]
heapq.heapify(h); F, tot = [], 0
while h and len(seen) < n:
w, u, v = heapq.heappop(h)
if v in seen: continue
seen.add(v); F.append((u, v, w)); tot += w
for x, wx in adj[v]:
if x not in seen: heapq.heappush(h, (wx, v, x))
return F, tot
E = [(1,12,2),(1,34,3),(2,56,4),(3,23,1),(3,45,2),(4,25,3),(5,36,4),(6,16,5),(7,14,6)]
# 例题 3 的图(w, u, v)
edges = [(w, u, v) for (u, w, v) in E]
print("Kruskal:", kruskal(6, edges))
adj = {i: [] for i in range(1, 7)}
for w, u, v in edges:
adj[u].append((v, w)); adj[v].append((u, w))
print("Prim :", prim(6, adj))
# Prüfer 编解码往返
def prufer(n, tree_edges):
d = [0] * (n + 1); adjt = {i: set() for i in range(1, n + 1)}
for u, v in tree_edges:
adjt[u].add(v); adjt[v].add(u); d[u] += 1; d[v] += 1
seq = []
for _ in range(n - 2):
leaf = min(i for i in range(1, n + 1) if d[i] == 1)
nb = next(iter(adjt[leaf]))
seq.append(nb); d[nb] -= 1; d[leaf] = 0; adjt[nb].discard(leaf)
return seq
print("Prüfer(例2树):", prufer(6, [(1,2),(1,3),(1,4),(4,5),(5,6)]))实跑输出:
Kruskal: ([(1, 2, 1), (3, 4, 1), (5, 6, 2), (2, 3, 3), (4, 5, 3)], 10) Prim : ([(1, 2, 1), (1, 3, 3), (3, 4, 1), (4, 5, 3), (5, 6, 2)], 10) Prüfer(例2树): [1, 1, 5, 5]
★★ 格物札记:从电路到化学——树概念的漂移。「树」这个名词是英国的凯莱(Cayley)与数学家西尔维斯特(Sylvester)在 1857 前后起的,但这个结构早在他们之前就在两门「非数学」学科里干活了。
电路里的树。基尔霍夫(Kirchhoff,1845,年仅 21 岁)分析电路网络,提出两条定律。他的计算里出现了一个关键步骤:选取电路图的「生成树」作为独立回路方程的基底——余边(连支)各对应一个基本回路,树边各对应一个基本割。他更进一步得到生成树个数的行列式公式(Matrix–Tree),比 Cayley 的计数早了四十年。今天 electric network theory 的教科书仍原样讲授这套语言。
化学里的树。19 世纪中叶,化学家面对新问题:C4H10 有几种「异构体」?碳原子组成连通骨架,分子式相同的化合物可以结构不同。凯莱 1857 年起用「树」为分子骨架建模:饱和烃(烷烃)的碳骨架恰是最大度 4 的树。数同构类的问题直接推动了他 1875 年对 Cayley 公式的重新推导与树计数理论(Pólya 计数定理的先声)。「丁烷有 2 种、戊烷有 3 种」——这些化学教科书数字,是树枚举的最早战果之一。
札记的结论。同一个数学对象,在电路里叫「基底的树」,在化学里叫「分子图」,在算法里叫「MST」。命名随场景漂移,结构不变性正是数学的通货。下一章的 Euler 之路还会再讲一次类似的故事:从一笔画游戏到 RNA 链的组装。
★★ 速查:第二章概念与公式。
| 对象/定理 | 陈述(速记) | 备注 |
|---|---|---|
| 树 | 连通且无圈;n−1 条边 | 六刻画等价 |
| 叶 | 度 1;n ≥ 2 的树至少 2 片 | 归纳抓手 |
| 生成树 | 连通图必存在(删圈法) | 基本圈 m−n+1 个 |
| Cayley 公式 | n 点标号树 nn−2 棵 | Prüfer 双射 / Matrix–Tree |
| Prüfer 序列 | 删最小叶记邻居;n−2 位 | 度 d_i 的树 (n−2)!/Π(d_i−1)! 棵 |
| 切定理 | 最小横切边必属某 MST | 贪心执照(交换论证) |
| Kruskal | 边升序收无圈边;O(m log m) | 并查集引擎 |
| Prim | 区域生长收最小外伸;O(m log n) | 稠密图占优 |
| 并查集 | find/union;α(n) 近常数 | 按秩 + 路径压缩 |
| MST 唯一性 | 权互异 ⟹ MST 唯一 | 权相等可多解 |
三个易错点。① Prüfer 解码的收尾:连「最后剩下的两点」,别连错到序列末项(例题 2 的坑);② MST 的「贪心」必须由切定理背书——不要在别的优化问题上裸用贪心;③ 并查集的 find 忘路径压缩会把复杂度从 α(n) 退化到 O(log n) 甚至 O(n)。
★★ 常见误读:树与生成树的四个陷阱。
陷阱一:「生成树必含最短边」。对——最小权边确实总在某 MST 里(切定理取 S = {最短边一端})。但「次短」「第三短」没有保证!反例:三边 12:1, 23:1, 13:100——MST = {12, 23},第三短 13 落选。边不「排队进树」,边只在「安全时」进树。
陷阱二:「Kruskal 收的边恰好按权递增」。收的顺序按权非降不假,但「非降 ≠ 全部更小的边都入选」:更小的边可能因成圈被弃。被弃的边同样可能比留下的某些边便宜——圈里的便宜边是冗余。
陷阱三:「Prüfer 序列长 n−1」。长 n − 2:最后剩两点停止。n = 2 时序列为空——两点的树对应「空数列」,1 棵 = 20 ✓。空串不是例外,是公式的自洽。
陷阱四:「生成树唯一 ⟺ 权互异」。方向搞反:权互异 ⇒ 唯一(真);但唯一 ⇏ 权互异——存在权相等的图 MST 仍唯一(例如唯一的横切结构锁死了选择)。充分条件不是充要条件,阅读定理时刻留意箭头方向。
★★★ 第二章问「连通的最小骨架」,本章问两个更动态的问题:拆散它有多难?走遍它有多难?
线一 · 割与流(p66–p69)。割点、桥与块分解给图做「体检」;Menger 定理是全章的理论心脏——「两点的分离规模 = 不相交路的条数」,其流量化身「最大流最小割」是运筹学的基石定理之一。
线二 · 遍历(p70–p77)。「每条边恰走一次」的 Euler 之路由奇点数完全刻画(握手引理的回流!),Hierholzer 算法线性时间找回路,中国邮路引入权;「每个点恰访一次」的 Hamilton 圈没有好用判据,Dirac/Ore 给出充分条件,TSP 把「难」变成产业;Dijkstra 与 Floyd 解决带权最短路。
收束(p78–p94)。例题四组(割点桥判定、Euler 手演、Dijkstra 演算、Menger 与块)、习题三组、地图、双小结、思想卡(局部规则与全局存在)、挑战(中国邮路完整求解)、实验(Hierholzer 与 Dijkstra 真跑)、速查、误读、札记、衔接。
本章最值得期待的对读:Euler 问题(多项式时间)与 Hamilton 问题(NP 完全)只差一个「边与点的对调」——而这对调,是复杂度世界的深渊。
★★ 网络的可靠性,从「哪些部件坏了会断网」问起。
三条基础事实。其一,圈边不是桥(圈上任意一边可删保连通)——所以树的所有边都是桥:树是「全是单点故障」的图,MST 便宜但脆弱,工程上加冗余的动机即此。其二,两点相邻 ⟺ 它们同属一个块;块沿割点拼接,块-割点关联图是一棵树(块割树)——整张图被分解成「块串在割点上」的积木。其三,2-边连通(无桥)与2-点连通(无割点)是抗毁性的第一档:前者任两点有两条不相交通路(边意义),后者更强。
算法化(DFS 的第二次大显身手)。DFS 括号序之外再算一个 low[v]:v 的子树经回边「最高能爬到」的祖先时间戳。判据:非根 v 是割点 ⟺ 存在子树 low ≥ in[v](子树爬不上去,v 是唯一出口);边 uv 是桥 ⟺ low[v] > in[u](子树连回边都没有)。全部 O(V+E)——第三章实验真跑对拍。
★★★★ 第一章的 κ ≤ λ ≤ δ 只是不等式,Menger 把它变成等式。
为什么震撼?「最多能并行修几条互不干扰的路」是一个 packing 问题,「拆散最少删多少」是一个 covering 问题——两者通常天差地别,Menger 说在图上它们相等。「分离的障碍 = 通路的容量」,这个对偶模式将统治本册的后半:最大流最小割(p68)、LP 对偶(远望)、甚至第五章 Hall 定理(婚配就是二部图上的 Menger!)。
n-连通的新语言。κ(G) ≥ n ⟺ 任两点间有 n 条内部不相交路。于是「2-连通」=「任何两点有两条无公共内点的路」——比第一章「无割点」的定义更可视。快拆快修的对偶也解释了 Whitney 链:点不相交路 ≤ 边不相交路 ≤ 任意路,所以 κ ≤ λ ≤ δ 的每个「≤」都是 Menger 的影子。
证明策略一瞥:点版本把每个点 v 劈成「入点 v− → 出点 v+」(内部容量 1 的边),点不相交变边不相交;边版本由最大流最小割定理直接给出(下页)——两条定理互为归约,一张底牌。
★★★★ Menger 的流量版,也是运筹学第一定理。
证明骨架(增广 + 停机判决)。「≤」方向一瞬:任何流的价值不超任何割(跨割的净流量 = 流值 ≤ 割容量)。「≥」方向:反复找增广路(残余网络里 s 到 t 的正容量路),沿路推流(反向边记「可退」);停机时残余网络 s 不可达 t,令 S = 残余中 s 可达点集,则跨 (S, S̄) 的边全部饱和、反向边全空——这个割的容量恰等于当前流值。两界夹出相等。∎(整数容量下每轮至少 +1,必终止。)
三笔遗产。① 对偶范式:primal 最大化、dual 最小化,障碍即答案——第五章 Hall 定理用二部图流一页重证;② 构造性:算法同时交出流与割,判决附赠证据;③ 复杂度谱系:Ford–Fulkerson 伪多项式,Edmonds–Karp O(VE2),Dinic O(V2E)——工程上 DINic 是常客。「最大流最小割」是本册第四次见到同一枚图章:Menger、Hall、切定理、LP 对偶——对偶思想是图论的母语。
★★★ 绪论的七桥判决,现在升级成完整定理。
必要性。每次「经过」一个顶点消耗一进一出两条边;中途顶点的关联边被成对消耗,度必为偶。闭途径连端点也成对。奇点若存在,只能是起点与终点——至多 2 个。
充分性(数学归纳的妙用)。对边数归纳:全偶连通图任取一点出发乱走,直到回到起点(度全偶保证「进得来必出得去」,停机必在起点),得一个闭游走 W;删去 W 的边,剩下度仍全偶的小连通片;每个连通片有 Euler 回路(归纳假设);把小回路「插进」W 的相应顶点,拼成大回路。∎——这正是 Hierholzer 算法的灵魂(下页)。
七桥复盘:4 个奇点,既非 0 也非 2,无解——但多修一座桥(连两个奇点)即变 2 奇点,立刻有 Euler 途径。「加一条桥救活全城散步」是握手引理最实用的推论。
对照表:Euler(边遍历)= 奇点 0/2,多项式可解;Hamilton(点遍历)= 无判据,NP 完全。天堑见 p74。
★★★ 上一页的归纳证明几乎就是伪代码,本章实验将真跑它。
算法骨架(栈版)。维护当前点 u 与栈:若 u 还有未用边,取一条 uv 标记已用、u ← v 入栈;否则把 u 弹出记录进答案(倒序输出即回路)。正确性:弹出时 u 已无未用边——它是某个「子回路完成」的时刻;栈的回溯恰实现了「插桩」。
复杂度精算。每条边恰好被标记一次、每点弹出一次,配合邻接表 + 边指针(记录「扫到哪条」),总时间 O(V + E)——又一个线性时间勋章,与 BFS/DFS 同殿。
延伸:中国邮路(管梅谷,1962)。边带权时,「每边至少走一次的最短闭游走」不必恰一次:奇点成对沿最短路「补走」。算法三步:① 找全部奇点;② 奇点间最小权完美匹配(第五章的匹配算法在此上班);③ 把匹配路径的边「复制」进图,全偶后跑 Hierholzer。「复制边」这一手,让不可达的完美变成可达的最优——挑战页将完整求解一个邮路实例。
应用速览:DNA 测序的片段拼接( reads 为边、重叠为点,找 Euler 途径)、路线规划、除雪车与洒水车的路线——「每边一次」的世界几乎都是 Euler 的,而「每点一次」的 Hamilton 是另一个故事(p74)。
★★★ 带权的现实里,Euler 的「完美」常常不成立,退而求「最优」。
解法三步(上图)。关键洞察是第二步:补走的最小代价 = 奇点间「最小权完美匹配」的补走方案——这是把一个遍历问题转译成匹配问题的漂亮一跳(匹配理论在第五章)。整数规划一瞥:邮路也可写成 LP,其线性松弛恰好整数(欧拉图的多面体性质),是组合优化的幸运案例。
「复制边」的哲学值得停一拍。Euler 要求「不重复」,现实允许「重复但要最省」——把硬约束软化为带惩罚的目标,这是整个运筹学的句式:TSP 不许重复(p74 的 NP 难),配送可以重复(货车、扫街车);转换的关键永远是「找出最小代价的软化方式」。第五章将看到镜像操作:匹配不够完美时,「最小增补」同样是最优解的形状。
历史脚注:管梅谷 1962 年的论文先发表,西方 1968 年经 Edmonds 引入才广为人知,「Chinese Postman」这个名称由 Alan Goldman 建议并沿用至今——运筹学史里罕见的中国原生问题名。
★★★★ 把 Euler 的要求改一个字——「每条边」换成「每个点」——世界的难度立刻翻转。
为什么这么难?三条线索。其一,局部信息不够用:Euler 的判决只看每点的度(局部账本);Hamilton 却牵扯「全点的一次性安排」,任何局部账本都判不了一个全局配对。其二,必要条件松、充分条件弱:必要的有「无割点」「2-连通」「对任意 S 有分支数 ≤ |S|」(Toughness 一瞥);充分的总带着强假设(下页 Dirac/Ore)。其三,复杂度判决:判断 Hamilton 圈存在是 NP 完全问题——它是 Karp 1972 年 21 个 NP 完全问题之一,与 TSP、子集和同狱。
彼得森图再立功:3-正则、3-连通、顶点传递的「优等生」,却无 Hamilton 圈——一切「看起来该有」的直觉在此撞墙。反例库的第二件镇馆之宝。
本册把 Hamilton 命题一律写成「充分条件 + 反例」两栏:这是面对 NP 完全问题的成熟姿态。
★★★★ 第一章 1.15 节留的悬念(T7:δ ≥ n/2 ⇒ 直径 ≤ 2)现在结出正果。
证明(Ore 版,Dirac 是特例)。取最长路 P = v1⋯vt。端点邻居全在 P 上。设 v1 的邻居为 vi 系列。关键一步:若存在 i 使 v1vi 是边且 vi−1vt 是边,则圈 v1vivi+1⋯vtvi−1⋯v1 形成。若无此 i,则 {d(v1) 个下标} 与 {d(vt) 个下标−1} 不相交,两者都在 {2..t} 里,故 d(v1) + d(vt) ≤ t − 1 < n——与 Ore 条件矛盾(P 之外无点时 t = n;P 之外有点时连通性可把圈外的点接进来延长 P,仍与最长矛盾)。∎
读法。① 这是「度强 ⇒ 结构好」的样板:全局连通结构由最贫者的度兜底;② Dirac 界 n/2 不能放宽:完全二部图 Kn/2−1, n/2+1 的 δ = n/2−1 无 Hamilton 圈(二部圈必偶数对半);③ 条件式思维:NP 难问题上,学者们的分工是「一层层减弱充分条件」——Bondy–Chvátal 的闭包理论把这类条件统一成「度闭包」,是本方向的集大成。
★★★ Hamilton 的「难」最著名的化身是 TSP。
精确侧。整数规划 + 分支定界 + 割平面(Concorde 求解器)已解到 85,900 点的最优(2006,pla85900 芯片布线实例)——NP 完全挡不住指数时间的精雕,只挡不住「所有大实例都快」。
近似侧的经典一笔:度量 TSP 的 2-近似——① 求 MST(第二章的 Kruskal 上班);② 沿 MST 做 DFS 周游(每边走两次,长 ≤ 2·MST ≤ 2·OPT,因 MST ≤ Hamilton 圈删一边);③ 抄近路(三角不等式保证不增)。「树先出场、圈随后收割」——本册第二章与第三章在此握手。欧氏版有 Christofides 1.5-近似(用到最小完美匹配,第五章预告)与近年 Karlin–Klein–Oveis Gharan 的 1.5−ε 突破。
复杂度的世界观(本册态度):P 与 NP 之间横着证据充足的天堑,但算法家的三件套——精确(指数但聪明)、近似(有保证的近)、启发式(实践强、无保证)——把天堑变成梯田。第四章起,本书不再回避「难」,而把「难度分级」作为地图的一部分。
★★★★ BFS 的加权升级版,本册第三个贪心算法。
三个注记。① 非负权是生死线:负权边会破坏上述判决(锁定 u 后可能经负边回抄更短路)——负权用 Bellman–Ford O(nm)(允许逐层松弛),有负圈则最短路无定义;② 全源最短路:以每点为源跑 n 次 Dijkstra 得 O(nm log n);Floyd–Warshall 用动态规划 O(n3) 一锅端(下页);③ 谱系:BFS(权 1)→ Prim(单步权)→ Dijkstra(累计权)——同一具「区域生长」骨架,关键字定义的三次进化,本册「容器决定性格」系列的完整闭环。
应用侧:导航(分层图 + 收缩点图工程化)、网络路由(OSPF 协议内核即 Dijkstra)、关节运动规划。1956 年 Dijkstra 在咖啡店陪未婚妻时二十分钟想出的算法,如今每天被调用万亿次。
★★ Dijkstra 有两条边界:单源与非负权。两侧各有一件补丁。
三个对读。① Floyd 的 dp 是「中转点集合递增」,Dijkstra 的贪心是「距离递增」——同题不同序;② Floyd 能处理负边(只要无负圈),因为它不依赖贪心判决;③ 复杂度上 Floyd O(n3) 对稠密图反而比 n 次 Dijkstra 的 O(nm log n) 稳(无堆开销)。算法选择从来不是单一维度的比较。
至此最短路三件套齐备。下一页进入例题实战:割点与桥的判定、Euler 回路手演、Dijkstra 逐步演算。
★★ 例题 1(割点与桥的判定)。图:边集 {12, 23, 31, 34, 45, 56, 64, 47}。从 1 跑 DFS(邻居升序),判定全部割点与桥。
DFS 过程(in/out 与 low)。1(1)→2(2)→3(3)→回 1(边 31 是回边)→4(4)→5(5)→6(6)→回 4(64 回边)→7(7)。时间戳:in = {1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7};low 计算自叶向根:low(7)=in(7)=7?——7 无回边且无子,low(7) = 7;但它挂在 4 下:回溯时 low(4) = min(in4, low5, low6, low7) = min(4, 5, 6, 7) = 4;low(6) = min(in6, 回边 64) = min(6, 4) = 4;low(5) = 5;low(3) = min(3, 回边 31) = 1;low(2) = min(2, low3) = 1;low(1) = 1。
判据执行。① 桥:树边 uv 满足 low[v] > in[u]:检查树边 12(low2=1 ≤ in1)、23(low3=1 ≤ in2)、34(low4=4 = in3=3?4 > 3 ✓ 桥!)、45(low5=5 > in4=4 ✓ 桥!)、47(low7=7 > in4 ✓ 桥!)——桥 = {34, 45, 47}。② 割点:非根 v 存在子 low ≥ in[u](父 u):顶点 4(子 5: low5=5 ≥ in4=4 ✓)、顶点 5(子 6: low6=4 < in5?4 < 5 否;子 6 对 5 而言 low6 = 4 < 5,不判)——重算:6 的父是 5,low6=4 < in5=5,6 的子树能经 64 爬过 5,故 5 非割点;顶点 4 有子 5(low5=5 ≥ 4 ✓)与子 7(low7 ≥ 4 ✓)——割点 = {4}。根 1:子树数(DFS 树)= 1 个,非割点。
★★ 例题 2(Euler 回路的手演与算法对拍)。图 G:点 {1..6},边 {12, 23, 31, 34, 45, 56, 64, 25, 16}。判断并构造 Euler 回路。
第一步:度表与判决。d(1)=3(12,31,16)、d(2)=3(12,23,25)、d(3)=2、d(4)=3(34,45,64)、d(5)=3(45,56,25)、d(6)=2。奇点 4 个(1, 2, 4, 5)——无 Euler 回路也无 Euler 途径(需 0 或 2 个奇点)。
第二步:最小增补。奇点配对:{1,2} 与 {4,5} 各加一虚边(或复制路径)。最省的补法:复制边 12 与边 45(各权 1,若权皆 1)。增补后全偶,跑 Hierholzer。
第三步:Hierholzer 手演(增补图)。从 1 出发贪走:1–2–5–6–4–3–1(用到 12,25,56,64,43,31),回到 1。未用边:12′, 45′, 45?——45 已用、45′ 复制品未用;12′ 未用。未用边的点:1(有 12′)、2(有 12′)、4、5(有 45′)。从 1 再走:1–2(12′)回 2 无未用边?2 的边 23、25、12 全用——子回路 1–2 退化为「边」;插入主回路顶点 1 处:1–2–(2 的原路已含)……插桩后总回路:1–2–1–2–5–4–5–6–4–3–1(检验:边 12 与 12′ 都在,45 与 45′ 都在;每边恰一次 ✓;回到 1 ✓)。
★★★ 例题 3(Dijkstra 逐步演算)。5 点带权有向图:边 12:4, 13:1, 32:2, 24:5, 35:7, 25:8, 43:−?(无负权), 45:3, 15:∞?(无边)。求 1 到各点最短路。
初始化:dist = {1:0, 2:∞, 3:∞, 4:∞, 5:∞},S = ∅。
轮 1:取 u=1(0)。松弛:dist2 = 4,dist3 = 1。S = {1}。
轮 2:取 u=3(1)。松弛:dist2 = min(4, 1+2) = 3(经 3 绕更短!),dist5 = 1+7 = 8。S = {1,3}。
轮 3:取 u=2(3)。松弛:dist4 = 3+5 = 8,dist5 = min(8, 3+8) = 8(并列)。S = {1,3,2}。
轮 4:取 u=4(8)。松弛:dist5 = min(8, 8+3) = 8(不变)。S = {1,3,2,4}。
轮 5:取 u=5(8)。完成。最终:dist = {1:0, 2:3, 3:1, 4:8, 5:8};最短路树:1→3→2→{4,5}。
三处值得停顿。① 轮 2 的 dist2 从 4 被「降级」到 3——Dijkstra 的锁定机制保证锁定值永不变,但未锁定值可以反复降低(优先队列 decrease-key);② 最短路树:dist 的「最后一次松弛」给出前驱,回收成树——n−1 条边、覆盖全部可达点(恰是一棵生成树!第二章的骨架以新身份回归);③ 若加入负边 43:−10,轮 4 将把 dist3 拉低——但 3 已锁定,算法不会回头,这就是非负权铁律的失效现场(负权须 Bellman–Ford)。
★★★ 例题 4(Menger 与块分解演算)。对 8 点图:① 找全部割点与桥;② 写出块分解与块割树;③ 用 Menger 验证 κ(1,8) 与 λ(1,8)。
① 逐点体检。删 1:其余仍连通(2 仍经 3, 4 达各方)——非割点;删 2:1 只经 4 连外?1 的邻居是 2 和 4,4 还在——1 经 4–3–5 连通,但检查整体:{1,4,3} 连着 5,通——2 不是割点(它与 3, 4 成三角形,三角形无割点);删 3:5 的唯一入口没了?5 的邻居是 3, 6, 7——经 6, 7 仍通!重看:3 删后左块 {1,2,4} 经哪条边连 5?无(边 3–5 是唯一跨接)——3 是割点。同理删 5:{6,7,8} 的唯一入口(5–6, 5–7)全断——5 是割点。桥:每条边做删边实验——三角形 {2,3,4} 内的边删后仍可绕行,全图唯一的桥不存在:3–5?删后 {1,2,3,4} 与 {5,6,7,8} 断开——3–5 是桥!同样 5–6、5–7 各自是 {6,8}/{7,8} 与外界的两条边……删 5–6:6 仍经 8–7–5 通;删 5–7:7 经 8–6–5 通——非桥。结论:割点 {3, 5},桥 {3–5}。
② 块分解。极大无割点子图:B1 = {1,2,3,4}(三角形两次叠连,无割点),B2 = {3,5}(桥两端,单边成块),B3 = {5,6,7,8}(四边形加两对角?不——是「5 连 6、7,6–8、7–8」的双三角共边 6–8?6–7 无边:是两个三角形共享边 6–8?检查:边 5–6, 5–7, 6–8, 7–8——这是 4 圈 5-6-8-7-5,无弦,无割点 ✓)。块割树:B1 —3— B2 —5— B3,割点 3、5 交替串联——线性骨架,与图 3-13 下注一致。
③ Menger 验证。1 到 8 的内部不相交路:1–2–3–5–6–8 与 1–4–3?相交于 3——不行。找两条点不相交的:1–2–4–3–5–7–8 与 1–?1 的邻居只有 2, 4,两条路必须分别走 2 和 4;到 5 汇合前必经割点 3(唯一跨接)——任何两条路都共享 3,故内部不相交路最多 1 条,而 1–2–3–5–6–8 本身存在 ⇒ κ(1,8) = 1。边版本:1–2–3–5–6–8 与 1–4–3–5–7–8 边不相交(3–5 只能被一条用?两条都要过 3–5!)——重数:3–5 是单边,边不相交路最多 1 条 ⇒ λ(1,8) = 1。Menger 的判决:割点 3(或桥 3–5)正是分离 1 与 8 的最小障碍,等式严丝合缝。
★★ 习题课(一):连通性与割。围绕割点、桥、块与 Menger,五题全部可手演。
S1.证明:树中每条边都是桥、每个度数 ≥ 2 的点都是割点、孤立边端点(度 1)不是割点。树 = 全桥图;删内部点后其分支各自散开。
S2.例题 4 的 8 点图,若给 6、7 之间加一条边,割点与块如何变化?块割树长什么样?6–7 使 {5,6,7,8} 仍是单块(K4 减边仍 2-连通);割点缩为 {3, 5},块割树不变——加边在块内部不改变分解。
S3.证明:任何连通图都存在两个点,删去其中任一者图仍连通(除非图是完全图 K2 以下)。取直径路的两个端点:删直径端点不破坏连通——双连通图的「两个安全点」定理,面试经典。
S4.κ(G) = 1 而 λ(G) = 2 的图存在吗?造一个最小例。两个三角形共享一个点:删公共点图断(κ=1),但任何一条边的删除都不断(λ=2)——Whitney 链中严格不等号的最小标本。
S5.用 Menger 语言重述「朋友的朋友」:一个社交网络里,任意两人若总有两层不同的共同熟人通道(两条内部不相交路),则「拆散」他们至少要同时移除几个人?κ ≥ 2 ⟺ 最小点割 ≥ 2——2-连通社交圈无「关键人物」。
★★ 习题课(二):Euler、Hamilton 与遍历。围绕一笔画、周游与最短路,五题手演。
S1.完全图 K5 与 K6:各有多少奇点?哪个有 Euler 回路?K5 各点度 4(全偶)——有;K6 各点度 5(全奇)——六个奇点,连途径都没有。奇点个数的奇偶由握手引理锁定为偶数。
S2.彼得森图满足 Dirac 条件吗?它有 Hamilton 圈吗?这说明 Dirac 定理是什么类型的命题?n=10, δ=3 < n/2=5——不满足条件;也无 Hamilton 圈。定理是「条件⇒结论」的单向蕴含,条件不满足时结论可真可假——充分条件的正确读法。
S3.证明:若图有 Hamilton 途径,则对任意非空子集 S,去掉 S 后分支数 ≤ |S| + 1。圈去 k 点最多碎成 k 段;途径版本留一格余量。这是 Hamilton 的必要条件——彼得森图正是用它毙掉的(S 取 5 个独立点,得 5 > 3+1?)自己把数字算对。
S4.带权图中把所有边权加 1,最短路会变吗?Euler 型问题(邮路)呢?最短路:会变(多的段数被加权惩罚);中国邮路:奇点配对结构不变,但增量重新洗牌——「平移不变」对不同问题性质不同,出题人最爱在此设坑。
S5.一个「走遍所有走廊」的保洁机器人问题:楼道图为树。何时能回到出发点?树全偶度 ⟺ 只有点度为偶 ⟺ 树至少 2 度……事实上只有平凡情形(无树有 Euler 回路,因树叶度 1)——机器人必须重复走边,重复量 = 2×(树边),这正是中国邮路在树上的平凡解。
★★ 本章地图:三块结构、两处深水。
依赖主线。割与流一节(3.1–3.3)只需要第一章的连通度与 DFS;一笔画一节(3.4–3.6)的判据回流到握手引理(第一章第一定理)——全册最老的概念在这里结出最新的果;周游与短路(3.7–3.11)向前接入第六章的谱方法与复杂度。Menger(3.2)是理论心脏:它把 κ ≤ λ ≤ δ 变成等式,把第五章的 Hall 定理预演为「二部图上的流」。
两处深水,跳过不影响主线:其一,最大流最小割的证明骨架(p68)——想完整吃透需要一点归纳构造的耐心,但「增广 + 停机判决」的两界夹逼值得读三遍;其二,中国邮路的奇点配对(p71)——它是最早的「中国贡献」命名定理,其 T-join 技术通向组合优化的腹地。
与前后章的接口。第一章的 BFS/DFS 在本章以「工具人」身份回归(块分解、Hierholzer 全靠它们);第四章平面图将用 Euler 公式 V − E + F = 2 与本章无关的另一个「Euler」相认;第六章邻接矩阵谱会解释 Dijkstra 为什么不能处理负权(负圈 → 无穷振荡)。
★★ 第三章小结(上):连通的语言与遍历的判决。
概念清单(割侧)。桥(删边即断)、割点(删点即断)、块(极大无割点子图)与块割树;κ(点连通度)、λ(边连通度)、δ(最小度),Whitney 链 κ ≤ λ ≤ δ;Menger 定理(分离规模 = 不相交路条数)与流量化身最大流最小割。
概念清单(遍历侧)。Euler 回路/途径(度数全偶 / 恰两奇点)——判据完全;Hierholzer 算法(O(m) 拼圈成路);中国邮路(奇点最短配对 + 欧拉化);Hamilton 圈(无好判据);Dirac/Ore(充分条件:δ ≥ n/2 / 度数和 ≥ n−1);TSP(NP 完全);Dijkstra(非负权单源最短路,贪心锁定);Floyd(全源 O(n3),可容负权不容负圈)。
定理的「等式化」。第一章的 κ ≤ λ ≤ δ 是不等式链,Menger 把每一环都改写成等式:κ(s,t) = 内部不相交路数,λ(s,t) = 边不相交路数。不等式说「受限」,等式说「对偶」——后者才是结构性的认知。同样地,「最大流 = 最小割」把「运多少」与「卡在哪」焊成一个数。
证明技术清单。① 度数奇偶(Euler 判据:必要 + 构造充分);② 两界夹逼(最大流最小割:≤ 平凡、≥ 靠增广停机);③ 反例与必要条件(Hamilton 的分支不等式);④ 贪心判决(Dijkstra 锁定的正确性归纳)。四个技术将分别在第四、五、六章再度登场。
一句话记住第三章:割的多寡 = 路的多寡(Menger);边好走点难约(Euler 易而 Hamilton 难);短路的贪心只在非负权上成立。
★★★ 思想卡:容易与极难——边与点的对调。
把「一笔画」的要求从每条边恰好一次改成每个点恰好一次,只动了两个字,问题的计算性格却从「本科习题」跃迁为「千禧悬案的前哨」。这不是孤例:
同款悬崖还有很多。线性规划多项式可解,整数规划 NP 完全——只加「取整」二字;2-SAT 线性时间,3-SAT NP 完全——只把子句从两个文字加到三个;最短路有多项式算法,最长路是 NP 完全——只把 min 换成 max。「容易」与「极难」之间常常没有渐变,只有一道悬崖——P vs NP 问的正是:悬崖是真实的,还是我们的眼睛还没找到上山的路。
为什么 Euler 易?因为「边」配对是局部的:一个点的进出现场即可核销(度数的奇偶),局部核销拼起来就是全局解——Hierholzer 算法把局部圈缝合成大回路,从不回头。为什么 Hamilton 难?因为「点」的选择是全局的:在第 k 步选错点,要到很多步之后才暴露恶果,而局部信息无法排除恶果的累积——分支必要条件只能毙掉个别图,无法给出好判据。
思想的迁移。识别一个问题的「局部可核销性」是判断其难度的第一直觉:带权最短路的 Dijkstra 之所以是贪心,因为「锁定最近点」这一步局部安全(非负权保证不会翻案);TSP 之所以难,因为任何前缀的选择都无法局部核销。本卡给未来所有章节一个透镜:先问「哪里核销、何时翻案」。
★★★★ 挑战:中国邮路的完整求解。把 p71 的理论走成一个完整数字答案——这是本章含金量最高的手演。
题目。街道图 6 点 9 边(无向,单位长):圈 A:1-2-3-1;圈 B:3-4-5-3;连桥 2-4、3-6、5-6。邮递员从 1 出发走遍每条街再回 1,求最短总长与方案。
第一步:度数体检。d(1)=2, d(2)=3, d(3)=5, d(4)=3, d(5)=3, d(6)=3——奇点:2, 3, 4, 5, 6 共五个?握手引理抗议:奇点必偶数个。重数:d(3) 关联 2,1,4,5,6 = 5 ✓;d(6) 关联 3, 5 = 2(偶!)。修正:奇点为 2, 3, 4, 5 共四个。(教训:先数度、再下笔——错账的邮路全盘作废。)
第二步:奇点间最短距离表(图上跑 Dijkstra 或目测):d(2,3)=1, d(2,4)=1, d(3,4)=1, d(2,5)=2(2-3-5 或 2-4-5), d(3,5)=1, d(4,5)=1。
第三步:最小配对。三种配对方案:(2,3)+(4,5):1+1=2;(2,4)+(3,5):1+1=2;(2,5)+(3,4):2+1=3。最优 2——两方案并列(配对多解是常态,总长才是唯一目标)。
第四步:欧拉化。方案一:重复边 2-3 与 4-5。新度:d(2)=4, d(3)=6, d(4)=4, d(5)=4,全偶 ✓。总长 = 原边数 9 + 重复 2 = 11。
第五步:Hierholzer 提回路。在加倍图上找 Euler 回路(一条合法答案):1-2-3-1 + 3-4-3(重复边)+ 4-5-4(重复边)+ 5-6-3-2(重复边 2-3)+ … 拼接成 1-2-3-4-3-4-5-4-5-6-3-2-1?验边:每条原边恰一次、重复边 2-3 与 4-5 各两次 ✓,总长 12+重复核验:走了 11 段。 p87 的 Hierholzer 代码在加倍图上跑一遍,把程序给出的回路与手工拼接对拍。
★★★ 把本章两个算法真跑一遍:Hierholzer 在 6 点图上提 Euler 回路;Dijkstra 复现 p79 例题的带权图,与手算逐项对拍。
import heapq
def hierholzer(edges):
adj = {}
for u, v in edges:
adj.setdefault(u, []).append(v)
adj.setdefault(v, []).append(u)
start = min(adj)
stack, circuit = [start], []
while stack:
u = stack[-1]
if adj.get(u):
v = adj[u].pop()
adj[v].remove(u)
stack.append(v)
else:
circuit.append(stack.pop())
return circuit[::-1]
E = [(1,2),(2,3),(3,1),(2,4),(4,5),(5,6),(6,2)]
print("Euler 回路:", " -> ".join(map(str, hierholzer(E))))
deg = {}
for u, v in E:
deg[u] = deg.get(u, 0) + 1; deg[v] = deg.get(v, 0) + 1
print("度数表:", dict(sorted(deg.items())))
def dijkstra(n, wedges, s):
adj = [[] for _ in range(n + 1)]
for u, v, w in wedges:
adj[u].append((v, w))
dist = [None] * (n + 1); dist[s] = 0
pq = [(0, s)]
while pq:
d, u = heapq.heappop(pq)
if dist[u] != d: continue
for v, w in adj[u]:
nd = d + w
if dist[v] is None or nd < dist[v]:
dist[v] = nd; heapq.heappush(pq, (nd, v))
return dist[1:]
W = [(1,2,4),(1,3,1),(3,2,2),(2,4,5),(3,5,7),(2,5,8),(4,5,3)]
print("Dijkstra dist from 1:", dijkstra(5, W, 1))
实跑输出(与手算逐项对拍):
Euler 回路: 1 -> 3 -> 2 -> 6 -> 5 -> 4 -> 2 -> 1
度数表: {1: 2, 2: 4, 3: 2, 4: 2, 5: 2, 6: 2}
Dijkstra dist from 1: [0, 3, 1, 8, 8]
★★ 速查:第三章概念与定理。考前一页纸,逐条过。
| 对象/定理 | 陈述(速记) | 备注 |
|---|---|---|
| 桥 / 割点 | 删去即断的边 / 点 | 圈边非桥;三角形无割点 |
| 块 | 极大无割点子图 | 块割树:块与割点交替成树 |
| Whitney 链 | κ ≤ λ ≤ δ | Menger 使每环成等式 |
| Menger 定理 | 分离最小集 = 不相交路最大数 | 点/边两版本;对偶标本 |
| 最大流最小割 | 最大流值 = 最小割容量 | Ford–Fulkerson;增广停机 |
| Euler 判据 | 全偶度 ⟺ 回路;恰 2 奇点 ⟺ 开途径 | 握手引理回流 |
| Hierholzer | 局部圈缝合,O(m) | 栈实现;先找支圈再缝主圈 |
| 中国邮路 | 奇点最短配对 + 重复边欧拉化 | 1962 管梅谷;T-join 鼻祖 |
| Dirac / Ore | δ ≥ n/2;不相邻度和 ≥ n−1 | Hamilton 的充分条件 |
| Hamilton 必要条件 | 去 S 后分支数 ≤ |S|(圈版) | 毙掉彼得森图的尺子 |
| TSP | NP 完全;2 近似 = MST + 回抄 | 复杂度第一现场 |
| Dijkstra | 非负权单源最短 O(m log n) | 贪心锁定:dist 永不翻案 |
| Floyd–Warshall | 全源 O(n3),DP 中转点枚举 | 容负权、不容负圈 |
易忘三则。割点判定看子树 low(low ≥ in 则割);块割树中单边也是块;「负权 ≠ 无解,负圈才无解」。
★★ 常见误读:连通性与遍历的四个陷阱。
陷阱一:「Euler 途径 ⟹ 存在 Euler 回路去掉一段」。错。恰两个奇点的图有开途径而无回路(如七桥若补一桥即成),回路要求全偶度——开与闭之间隔着奇点配对,不是「走远一点再回来」能补的。
陷阱二:「Dirac 条件不满足就一定没有 Hamilton 圈」。错得最贵。Dirac/Ore 是充分条件;圈 Cn 本身 δ = 2 < n/2 却有 Hamilton 圈。充分条件的正确用法是「够格就断言,不够格就闭嘴」——判定 Hamilton 的一般问题至今没有好刻画。
陷阱三:「Dijkstra 加个负权边顶多结果略差」。大错。负权直接破坏贪心锁定的正确性归纳——锁定的点可能被负边「翻案」,且不是「略差」而是系统性错误。负权图用 Bellman–Ford(允许逐层松弛),负圈则最短路根本无定义。工程教训:用错工具不是降级,是失效。
陷阱四:「最大流最小割里的『割』是删边集合」。不准。割是把 s 与 t 分开的边集(跨某个点划分 S | S̄ 的所有出边),不是任意断集;最小割在容量语言下比较,而 λ(边连通度)在计数语言下比较——单位权图时两者相认,带容量时是推广。
★★★ 例题 5(Floyd–Warshall 手演与最短路树)。仍用 p79 的 5 点带权有向图(边 12:4, 13:1, 32:2, 24:5, 35:7, 25:8, 45:3),用 Floyd 复算并检查与 Dijkstra 的一致性。
初始化 D(0):对角 0,直接边填权,无边填 ∞:
| D(0) | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 1 | 0 | 4 | 1 | ∞ | 8 |
| 2 | ∞ | 0 | ∞ | 5 | 8 |
| 3 | ∞ | 2 | 0 | 7 | 9 |
| 4 | ∞ | ∞ | ∞ | 0 | 3 |
| 5 | ∞ | ∞ | ∞ | ∞ | 0 |
中转 3(k=3):D[1][2] = min(4, 1+2) = 3(降级!);D[1][4] = min(∞, 1+7) = 8;D[1][5] 已 8 不变。中转 2(k=2):D[3][4] = min(7, 2+5) = 7 不变;D[3][5] = min(9, 2+8) = 9 不变?再经 4:等 k=4 轮。中转 4(k=4):D[1][5] = min(8, 8+3) = 8;D[3][5] = min(9, 7+3) = 9(10 更大)不变;D[2][5] = min(8, 5+3) = 8 不变。中转 5(k=5):无改善。
终表:1 行 = [0, 3, 1, 8, 8]——与 Dijkstra 逐位一致;另赠全源:2 行 [∞,0,∞,5,8],3 行 [∞,2,0,7,9],4 行 [∞,∞,∞,0,3],5 行 [∞,∞,∞,∞,0]。全源共算出 Dijkstra 要跑 5 次的信息。
最短路树检查。由「最后一次中转」回溯前驱:dist2 的最后改善在 k=3(经 3)→ pred(2)=3;dist4 经 2 → pred(4)=2;dist5 的 8 初值即直接边 1→5?但树版应取 dist5 = dist4+3?两者同为 8——并列时前驱不唯一,最短路树也不唯一(这是最小生成树「同一权多解」的翻版)。取 pred(5)=1 或 4 均合法;n−1 = 4 条前驱边恰构成生成树(第二章骨架的回归)。
★★ 习题课(三):最短路实战。围绕 Dijkstra、Floyd 与建模,五题手演。
S1.把 p79 例题图的边 13:1 改为 13:−2(其余不变),Dijkstra 的哪一步开始出错?正确答案是什么?轮 2 锁定 3 后,1→3→2 = 0 < 4 会翻案——锁定值被破坏;Bellman–Ford 给 dist2 = 0, dist4 = 5, dist5 = 8。
S2.证明:Dijkstra 算法选出的边(每个非源点的「最后松弛前驱边」)构成一棵以源为根的生成树(在源可达子图上)。每点恰一条前驱边、无环(dist 严格递减沿边回溯)。
S3.无权图上跑 Dijkstra(全权 1)与 BFS 结果一致吗?复杂度呢?一致;但 Dijkstra 用优先队列 O(m log n) 反而慢——权越简单,专用算法越快,这是「容器决定性格」的算法版。
S4.「换乘最少」的地铁导航(站为点、线路为边权)该用什么模型?若改为「时间最短且等车时间不计」呢?前者 BFS(权 1);后者带权 Dijkstra;若换乘本身有代价——把「线路上车状态」并入顶点做状态图(分层图),这是导航系统的标准手法。
S5.Floyd 的 k 循环为什么必须在最外层?把 k 放内层会怎样?D(k) 的定义是「只许经前 k 个点中转」——归纳的地基;k 在内层则中途用了未授权中转点,归纳证明失效(实践上多数图仍对,但证明不再成立——算法正确性不能靠运气)。
★★ 第三章小结(下):算法对读——同一骨架的三种性格。
「区域生长」统一视角。BFS、Prim、Dijkstra 是同一骨架的三个实例:维护「已定区域」,每轮从边界挑一个「最优新点」纳入。三者的差别只在「最优」的定义——BFS 取层数最少(队列),Prim 取单边权最小(优先队列),Dijkstra 取累计距离最短(优先队列 + 松弛)。一个骨架、三种「容器决定性格」,本书的母题在此完成第三次变奏。
两种时间观。Dijkstra 是「单源深挖」:一次只回答一个起点,但沿途可停(early exit);Floyd 是「全源平铺」:三重循环一锅端出所有点对。n 大 m 稀疏时前者占优(n 次 Dijkstra = O(nm log n)),稠密或多源查询时后者占优(O(n3) 换全部答案)。没有更好的算法,只有更合身的算法。
贪心与 DP 的分野。Dijkstra 的贪心依赖「非负权 ⇒ 锁定不翻案」;Floyd 的 DP 依赖「中转点授权有序 ⇒ 归纳地基」。同一个最短路问题,两种范式各自成立、互不覆盖——识别问题适配哪种范式,比多背十个算法更值钱。
复杂度的两次露面。本章 TSP 把 Hamilton 的「难」变现成产业问题(NP 完全 + 2 近似保底);P vs NP 的正式舞台在全书余韵处,但「Euler 易而 Hamilton 难」这堂现场课已经把悬崖踩在脚下。
一句话记住算法侧:生长骨架三兄弟(BFS/Prim/Dijkstra),权性定生死(1/单步/累计);单源贪心、全源 DP;负权找 Bellman,负圈无定义。
★★ 格物札记:从七桥到中国邮路——一个问题的两百年。
1736,柯尼斯堡。欧拉判决「不存在」:四块陆地奇点太多。问题的名字叫「位置几何」, answers 用的语言叫「度」——它杀死了问题的几何外衣,只留下连接的骨架。
1962,山东曲阜。管梅谷在《数学学报》发表《奇偶点图上作业法》:邮递员要走遍所有街道,走不动就重复走,但要重复得最省。问题从「可能不可能」升级为「最优怎么走」——从判定到优化,是应用数学的经典一跃。国际上由此得名「Chinese Postman Problem」, alan Goldman(美国 NBS)1965 年在审稿中首用此名——一个以提出者国籍命名的问题,至今仍是最优化文献中的惯例。
问题的谱系。中国邮路是「T-join」技术的最小标本:给定奇点集 T,找最短的「边集 F 使 T 中各点在 (V, F) 中度数为奇」——奇点配对的最短化。这条线通向 Edmonds 的匹配算法(第五章 Blossom 的远亲)、通向 STEJ(斯坦纳树)的近似、也通向「欧拉化」这一通用技巧:凡是需要「每边都走」的场景(扫地机器人、DNA 测序的读段拼接、道路除雪),先把度数配平,再交 Euler。
判决→优化→算法→工程。七桥的两百年走完了一个完整的闭环:欧拉给「判决」,管梅谷给「优化」,Hierholzer 给「算法」,今天的导航与机器人给「工程」。一条学术链最动人的地方在于:每一环都以为自己在解决一个小问题,回头一看,链已经从东普鲁士延伸到每个人的手机里。
★★★ 第三章我们问「连不连通、走不走得遍」,从没关心图画在纸上长什么样。第四章把「画」本身变成研究对象:什么样的图能不交叉地画在平面上(平面性)?画好之后,给相邻的点涂不同颜色,最少要几种(着色)?
为什么是「约束」?平面性是刚性极强的结构假设:Euler 公式 V − E + F = 2 立刻压出 E ≤ 3V − 6 的边数天花板(第一章的 δ 与平均度全要重新审度),并逼出两个「禁手」——K5 与 K3,3 是不可平面化的最小障碍,Kuratowski 定理说它们是仅有的两种病根。与此同时,电路布线、地铁图设计、芯片布局都在为「不许交叉」付出真金白银——平面性不是几何洁癖,是工程约束。
着色是划分的化身。「最少颜色数」χ(G) 把「相邻不同色」翻译成「按颜色划分独立集」:考试排期(冲突课程不同时段)、寄存器分配(冲突变量不同寄存器)、频率规划(相邻基站不同频点)——全是着色。四色定理(任何平面地图四色足够,1976 年机器辅助证明)与五色定理(我们能用手证出的版本)将展示「计算机证明」这一方法论首次闯入纯数学的现场。
衔接讲义。下一章开始:平面图的 Euler 公式、边数上限、Kuratowski 判据,以及从「四色猜想」到「四色定理」的一百年。带着第三章的两件武器上场:块分解(平面嵌入逐块拼装)与握手引理(边数账目审计)。
★★★ 前三章问「连不连、走不走」,从不管图画出来什么样。本章把画法本身变成数学。
线一 · 平面性(p96–p101)。「不交叉地画」看似几何趣味,实则刚性极强:Euler 公式 V − E + F = 2 一出场就压出 E ≤ 3V − 6 的天花板;K5 与 K3,3 两个小图是「怎么画都交叉」的病根,Kuratowski 定理说它们是仅有的病根。电路布线与芯片布局天天在为这个定理打工。
线二 · 着色(p102–p109)。「相邻不同色最少几种」是划分问题的化身:考试排期、寄存器分配、频率规划全是着色。贪心着色给出 χ ≤ Δ + 1,Welch–Powell 是能上手的算法;平面图的红利是 δ ≤ 5,于是五色定理唾手可得——而四色定理(1976,机器辅助证明)把「计算机能否证明定理」推上哲学法庭。
收束(p110–p124)。误读、例题三组(Euler 公式验算、Welch–Powell 手演、色多项式)、习题两组、地图、双小结、思想卡(反例推动定理)、挑战(五色定理重排证明)、实验(课程表染色真跑)、札记、速查、衔接。
本章的对读主线:「画得出」是比「连通」强得多的结构假设——它把一团乱麻变成有面、有界、有上限的几何对象。
★★ 定义先行:平面图 = 可以画在平面上使任何两边不交叉的图;这样的画法叫平面嵌入。
三个立即要立的规矩。其一,平面性是抽象图的存在性性质:一张画稿有交叉不代表图非平面(K4 就常被画「错」)——「画不好」与「画不出」是两回事,这也是平面性检测成为算法问题的原因(p109)。其二,嵌入不唯一:同一个平面图可以有本质不同的嵌入(对偶图因此也不唯一,p101)。其三,自环与重边不改变理论但污染公式——本章默认简单图。
为什么值得整章?平面性是图论里最强的「免费结构」:它自带面、自带对偶、自带边数上限、自带低度数红利。后面的一切——Euler 公式、禁手、五色——都是「画得出」这三个字的红利兑现。反过来看,非平面性同样值钱:芯片布局中 K5 型交叉约束就是布线复杂度的来源。
★★★★ 本章的发动机,也是数学史上最优雅的公式之一。
证明(生长归纳)。先画一棵生成树:树是平面嵌入,且 V = E + 1、F = 1(只有无限面),检验 V − E + F = (E+1) − E + 1 = 2 ✓。然后把其余边一条条加回:每条非树边在当前嵌入中两端已连通(经树路),故它必然围出一个新面——E 加 1,F 加 1,V 不动,代数和纹丝不动。∎
公式的三重身份。① 计数恒等式:三个量锁死一个,知道两个必知第三个;② 拓扑不变量:它在一切连续变形下不变——多面体的顶点数 − 棱数 + 面数 = 2 是同一个公式(把多面体压扁到球面再投射到平面);第三章札记埋的伏笔在此兑现;③ 非平面性的探针:若某图怎么算都凑不出 2,它就画不出来——下一页立刻兑现。
推论(边数天花板)。简单连通平面图每个面至少 3 边、每边至多属 2 面 ⇒ 3F ≤ 2E,代入 Euler:E ≤ 3V − 6(V ≥ 3)。这是「平面图很稀疏」的第一张定量证书——K5 有 10 边 > 3×5−6 = 9,K5 非平面当场毙命。
★★★ 边数天花板取等的图,值得单独认识。
取等的账目。三角剖分中每面 3 边、每边属 2 面 ⇒ 3F = 2E,代入 Euler:E = 3V − 6,且每点 d(v) ≥ 3 时平均度 = 6 − 12/V < 6。平面图平均度恒小于 6——对比第一章「六度」直觉:平面世界挤不进那么多连接。
两个紧随的推论。① 平面图必有度 ≤ 5 的点(若全 ≥ 6 则 2E ≥ 6V 违反天花板)——这是五色定理的全部弹药,p104 兑现;② 三角剖分的对偶是三次(3-正则)平面图——四色问题等价于「三次平面图的边三着色」(Tait,p107 札记式一提)。
局部 vs 全局的一次教育。「每个面都是三角形」是局部描述,「E = 3V − 6」是全局账目——由局部账(3F = 2E 的双计数)搬到全局账(Euler 恒等式),正是第一章握手引理「局部度数 Σ 全局边数」同款双计数技术。双计数是图论的会计学:哪里有「每物两侧」,哪里就能记账。
★★★★ 「怎么画都交叉」的完全刻画,1930 年落下。
K5 的死因(上一页已验尸)。E = 10 > 3V − 6 = 9,Euler 上限直接毙掉。
K3,3 的死因(更精细的账)。K3,3 是二部图——无三角形,故每个面至少 4 边 ⇒ 4F ≤ 2E。与 Euler 联立:V − E + 2E/4 ≥ 2 ⇒ E ≤ 2V − 4。K3,3 有 E = 9 > 2×6 − 4 = 8。毙命。教学价值:两个禁手展示「同一公式、不同面账」——三角形的存在与否改变每面的最少边数,上限随之改变。
定理的三层读法。① 完备性:非平面性只有一个病因谱系——拉长 K5 或 K3,3;② 实用性:证非平面只需「找细分」(彼得森图含 K3,3 细分,自找);证平面仍需手工嵌入;③ 算法化的起点:判据存在 ⇒ 平面性检测有算法(p109 的线性算法是工程奇迹)。
一句题外话。同一时代另有 Whitney 的 «2-连通可平面图有唯一嵌入»(球面上)——嵌入不唯一的担忧被限制掉一半;但对偶图的「几何对偶」仍是选择的艺术(p101)。
★★★ 把「面」变成「点」,着色问题完成舞台转换。
基本账目。V(G*) = F(G)、E(G*) = E(G)、F(G*) = V(G);对偶再对偶回到自身(连通时):(G*)* ≅ G。桥在 G 中「一侧同面」,对应 G* 的自环;度 1 的点对应 G* 的重边——对偶把两种「退化」互换身份。
着色的关键换位。地图着色 = 给面染色使相邻面异色 = 给 G* 的点染色使相邻点异色。四色问题的现代表述由此变为:任何平面图的色数 χ ≤ 4。地图的语言(国家、边界)与图的语言(点、边)在对偶处会师。
三个提醒。① 嵌入不唯一 ⇒ 对偶也不唯一——不同嵌入的对偶可能不同构,「那个对偶图」的说法要小心;② 对偶保 E 数不保 V 数,「点多的图」与「面多的图」是同一回事;③ 对偶思想是本册第五次登场:Menger 的割-路对偶、最大流最小割、LP 对偶、切定理,如今的面-点对偶——对偶是图论的母语,本章贡献了它最几何的标本。
★★ 着色的定义页:把「划分」的语言立起来。
三个锚点。χ(G) = 1 ⟺ 无边(空图);χ(G) = 2 ⟺ 二部图(第一章 König 判据的回归——二部图就是能双色 worlds 的图);χ(Kn) = n。奇圈 χ = 3:既非二部、又用不满三色以上的结构,是「最小非平凡障碍」。
下界与上界的账。下界:χ ≥ ω(团数——团内两两相邻,必须各占一色);χ ≥ n/α(色类是独立集,每类至多 α 个点)。上界:χ ≤ Δ + 1(贪心着色:任何顺序、逐点挑邻区未用的最小色,最多用 Δ + 1 色)。上下界之间可能天堑:ω 可以是 2 而 χ 可以任意大(Mycielski 构造,第五章远眺)——团不是着色难度的全部。
着色 = 划分。χ ≤ k ⟺ 点集可划成 k 个独立集(色类)。这一句把「涂颜色」翻译成「分箱子」:排课表 = 把课程分成互不冲突的时段;寄存器分配 = 把活跃变量分进有限的寄存器;频率规划 = 把基站分进有限频段。颜色只是独立集的昵称。
本章的路线。贪心能给 Δ + 1(p103 算法化);平面图世界红利 δ ≤ 5 能压到 5 色(p104)、传闻 4 色(p105);但一般图的 χ 计算是 NP 完全——着色与 Hamilton 同坐一条难船。容易的世界与极难的世界,在着色问题上再次接壤。
★★ 着色的第一个算法:快、糙、常用。
保证的证明(一扫描即得)。给 vi 上色时,它的邻居中已上色的至多 d(vi) ≤ Δ 个,占掉至多 Δ 种色,色板共 Δ + 1 色,必有剩余。∎ 于是 χ ≤ 任何贪心所用色数 ≤ Δ + 1。注意方向:贪心给的是上界,不是 χ 本身——同一图换个顺序,色数可以更多。
贪心的失效现场(重要!)。存在二部图(χ = 2)被某个顺序的贪心用 Δ + 1 色——顺序不当,贪心可以把「两条颜色就够」的世界涂成「彩虹」。极端例:路径两端各接一个 Δ-团的「双团哑铃」,若先涂一端大团再涂另一端,颜色被锁死错位。教训:贪心的成本在「回不了头」——与 Dijkstra 的锁定同病,但着色没有「非负权」式的安全条件兜底。
Welch–Powell 的合理性(无定理,有直觉)。度数大的点约束最多,先涂它们可避免「最后被逼开新色」。它是工程默认启发式:p121 实验拿它真跑排课表。理论侧的补充:Brooks 定理(1941)说连通图 χ ≤ Δ,仅三种例外(完全图、奇圈)——比 Δ + 1 精一档,证明巧妙但超纲;列在速查备用。
★★★★ 平面红利兑付日:五色定理——用手就证得出的极限。
证明(对 V 归纳 + 度 5 时代的救援)。V ≤ 5 平凡。设 V ≥ 6,由「平面图有点度 ≤ 5」(p98 推论)取度最小点 v,归纳给 G − v 上色。
情形 d(v) ≤ 4:邻居至多占 4 色,v 用剩下的色。∎
情形 d(v) = 5:若 5 个邻居未用满 5 色,照样插入。若用满(设色 1–5,环序 v1…v5),考虑子图 G12 = 色 1、2 的点导出子图:若 v1 与 v3 在其中不连通,交换 v1 所在分支的两色(1↔2),腾出色 1 给 v。若连通——v1 到 v3 有一条 1-2 交替路,它与 v 围成一个圈;则 v2 与 v4 被此圈隔开(平面性登场!),在 G24 中必不连通,交换 v2 分支的 2↔3 色?——准确地说是交换 2↔4,腾出色 2 给 v。∎
证明的三处精益。① Kempe 链:两色交替路是1879年 Kempe 错证四色时的遗产——错证明留下对的工具;② 平面性只在 d(v) = 5 情形「隔开」一步用到——几何约束兑换成代数自由度的典范;③ 归纳的支点是谁?「有点度 ≤ 5」全部来自 Euler 公式的边数账——p97 的发动机一路供油到 p103。
为什么停在 5?d(v) = 5 时恰好五条交替路「十字锁」,Kempe 链的两两缠绕会互相拆台(他的原始交换程序会死循环)——四色的补齐需要机器时代的穷举(p105)。5 与 4 之间,隔着一个世纪的工具升级。
★★★★ 一段百年史,也是一堂方法论课。
起点(1852)。Guthrie 给地图上色时注意到:四种颜色似乎总够。De Morgan 在信件里传播这个「小观察」——它朴素到没人认为会难。
错证的黄金时代(1879)。Kempe 的「证明」优雅流畅、被权威认可十余年;1890 年 Heawood 指出 Kempe 链交换的致命漏洞(交换会互相干扰)——但 Kempe 的工具保留下来,成就了五色定理(p103)。错误证明对数学的贡献,常被低估。
机器证明(1976)。Appel–Haken 的策略:把所有「不可避免」的构形(任何平面图必含其一)逐个验证「可约」(含它则可归约到更小图)。1,936 个构形的人工检查 + 计算机穷举,四色定理成立。1996 年 Robertson–Sanders–Seymour–Thomas 压缩到 633 构形;2005 年 Gonthier 用 Coq 完全形式化——「正确」本身成为被验证的对象。
三问三答。① 「数学证明的本质是说服」——不可手验的证明算数吗?多数派立场:验证成本本就早已外包(大型定理的文献链);② 「有没有人类可读的四色证明?」——至今没有,多数人不再期待;③ 「着色的难度会不会其实很简单?」——平面情形难在证明,一般情形难在本质(χ 判定 NP 完全)。四色是「简单问题 + 艰难证明」的极致标本。
★★★ 色多项式:把「几种颜色够」升级为「几种方式着」。
两个基例。P(树, k) = k(k−1)n−1(根 k 种、其余各避开父亲:n−1 个 n−1 次幂因子);P(完全图 Kn, k) = k(k−1)⋯(k−n+1)(阶乘式下降)。树与团是着色世界的两个极点:约束越少,多项式越「松」。
递归(删除–收缩)。对边 e:P(G, k) = P(G − e, k) − P(G / e, k)——e 的两端异色的方案(G−e 中)减去同色的方案(把同色强扭成一点 = 收缩 G/e)。这是着色版的「删除–收缩递归」,与生成树计数的 Matrix–Tree(第六章)形成双峰。
多项式身份的惊人处。按定义它是「计数函数」,Birkhoff (1912) 证明它真的是多项式:n 个点、m 条边的图,P(G, k) 是 k 的 n 次多项式,首项 kn、次项 −m·kn−1、常数项 0(k=0 无方案)。「方案数」这种组合对象长出代数牙齿——系数里藏着图的情报(连通分支数 = P 在 k=0 处导数零点结构等)。
与本章主线的挂钩。四色问题即「P(平面图, 4) > 0?」;色多项式的零点理论(Birkhoff–Lewis:平面图实零点仅 0 与 [32/27, 4) 区间片段?)曾试图迂回攻克四色——未竟,但催生了整整一支代数组合。哪怕失败的方法论也在增殖。
★★ 边着色:把颜色从点搬到边上。
惊人的二分与惊人的难。边着色的答案只有两个候选——比点着色(χ 可以是从 2 到 n 的任何值)温和得多;但判断属于哪一类是 NP 完全的!两个候选之间横着 NP 完全的鸿沟,这是复杂度世界最富哲学意味的标本之一:「答案空间极小」不等于「判定极容易」。
哪些图是第一类?二部图(König);平面图当 Δ ≥ 7?——不对,是 Vizing 邻点引理推出「平面图 χ′ = Δ 当 Δ ≥ 7,χ′ = Δ + 1 当 Δ = 2, 3 的部分情形」……精确版本:平面图在 Δ = 7 时必第一类、Δ = 6 时第二类存在(孤立反例构造)——Δ = 4, 5, 6 的平面图分类至今开放(着色理论里罕见的现役难题)。
应用速写。排赛程:队 = 点、比赛 = 边,边着色 = 时间片分配(每队每轮恰一场 ⟺ 完美匹配分解);边着色的「匹配分解」视角直接通向第五章。点着色分独立集、边着色分匹配——同一个划分母题的两种度量。
★★★ 着色落地:寄存器分配与排课表——编译器与教务处的同一场数学。
案例一:寄存器分配(编译器后端的着色现场)。把变量的「活跃区间」建模为图:变量 = 点,两变量同时存活 = 边;寄存器个数 = 颜色数。χ ≤ 寄存器数 ⟺ 无需溢出到内存。实际做法:构造干涉图 → 贪心/Welch–Powell 着色 → 溢出代价最小者落盘、重跑。Chaitin (1981) 开创此路线,至今是 LLVM/GCC 后端的骨架之一。每编译一个程序,都在解一次着色。
案例二:排课表(教务处的着色现场)。课程 = 点,共享学生的课程对 = 边,时段 = 颜色。约束强化时升级为边着色(教室数固定:同一时段的课程数 ≤ 教室数 = 色类大小限制)或列表着色(课程有禁用时段)。现实排课几乎从不求最优——求解一个可行解已足够,而可行性判定已是 NP 完全:教务系统的默认策略是贪心 + 人工微调。
案例三(远眺):频率规划。基站 = 点、同频干扰 = 边、频段 = 颜色;无线网络的真实约束(干扰随距离衰减)催生「距离-2 着色」(两跳内异色)等变体。着色的变体族谱 = 工程约束的族谱。
★★★ 平面性检测:从判据到线性时间——本章收官的算法戏。
朴素路线及其天花板。按 Kuratowski 找禁手细分:子图枚举指数级;删除–收缩试嵌入:指数级。判据存在 ≠ 算法可行——Kuratowski 定理给的是「特征」,不是「程序」。
线性时间算法的三代谱系。① Auslander–Parter (1961) / Hopcroft–Tarjan (1974):路径加入法(PPathAddition),DFS 低点结构 + 「片段」(bridge)交换翻转,O(V);实现细节臭名昭著,教科书常只讲思想。② Boyer–Myrvold (1999):边加入法(EdgeAddition)+ 左右引用(LR)避免翻转,现代实现(LEMON、OGDF)的主流。③ de Fraysseix–Rosenstiehl:另一条边加入路线,Planarity 软件采用。共同底座:DFS 的括号结构与低点函数(第三章 3.1 的家什)+ 双连通分解(块!)——平面性检测是第三章工具箱的阅兵式。
算法核心直觉(Hopcroft–Tarjan 一瞥)。逐块处理;在已嵌入的子图上,每个「片段」(还悬空的连通件)有若干「可附着面」;若某片段无处安放 → 非平面(且可顺藤摸瓜提取 Kuratowski 细分作为证书——现代实现不只判 Y/N,还交出反例)。失败时给证据,是工程算法与存在性定理的分水岭。
地位。平面性检测 O(V) 是少数「线性时间解决非平凡全局性质」的范例,与本章一起构成图论「结构 ⇄ 算法」对读的高峰。
★★ 讲义 4.14:本章工具箱——十件套清点与使用须知。
概念件(四件)。平面嵌入与面(画出世界的 vocabulary);对偶图(面点互换,着色舞台的搭台工);色数 χ 与边色数 χ′(两个划分度量);色多项式 P(G, k)(从「够不够」到「几多种」)。
定理件(四件)。Euler 公式 V − E + F = 2(发动机,一切上限的源头);边数上限 E ≤ 3V − 6 与二部版 E ≤ 2V − 4(禁手探测器);Kuratowski 定理(非平面性的完全刻画);Vizing 定理(边着色的二分 + 判定的 NP 完全)。
算法件(三件)。贪心/Welch–Powell 着色(上界 Δ + 1,工程默认);五色定理的 Kempe 链程序(平面红利的人工兑付);平面性检测 O(V)(结构定理的算法化终点)。
使用须知三条。① Euler 公式只对连通平面图成立,非连通要逐分支(或加分支修正 C + 1);② 边数上限只在简单图上成立,重边会击穿(两个点之间三重边照样平面);③ 对偶图依赖嵌入选择,「图的对偶」严格说是「嵌入的对偶」——写证明时留神。
与前后章的接口。块分解(3.1)在平面性检测中逐块进场;边数上限将在第五章 Ramsey 计数中充当「稠密必含结构」的探针;Euler 公式的拓扑血统将在综合站回望(它也是拓扑学 Euler 示性数的 n = 2 维特例)。工具箱不封箱——每一件都在后续章节返场。
★★ 常见误读:平面性的四个误区。
误区一:「画出来有交叉就不是平面图」。最常见。平面性看的是存在性:K4 常被画成两交叉对角线,但它有标准的无交叉画法。「画不好」≠「画不出」——判断平面性要找嵌入或跑检测算法,不能看一张画稿。
误区二:「非平面图都是 K5 的亲戚」。漏了 K3,3。很多「看起来很稀疏」的图是 K3,3 的细分——彼得森图 10 点 15 边远低于 3V−6=24,却非平面(含 K3,3 细分)。边数上限只能毙掉稠密图,稀疏的非平面图要靠禁手细分毙。
误区三:「四色定理说任何图四色可着」。大错。四色定理只对平面图成立;K7 立刻需要 7 色。同理「χ ≤ 4 ⇔ 平面」也不对——平面图的 χ ≤ 4 是单向上界,χ ≤ 4 的图大把非平面。定理的适用域是第一条纪律。
误区四:「χ′ 只有 Δ 或 Δ + 1 两个候选,所以判定很简单」。恰恰相反——Vizing 定理把答案压进两个值,但判断落在哪个值是 NP 完全的。候选少 ≠ 判定易,这是复杂度世界最反直觉的一课(与「答案非 0 即 1 的 SAT 同样难」同宗)。
★★★ 例题 1(Euler 公式验算与极大平面图)。① 验证 6 点「八面体图」的 Euler 公式;② 证明八面体图是极大平面图;③ 求其对偶图。
① 账目。八面体图 = 正八面体的顶点棱图:6 点(上下两极 + 赤道四边形)、12 边(赤道 4 + 两极各连赤道 4)。面数?八面体有 8 个三角面。验:V − E + F = 6 − 12 + 8 = 2 ✓。再验边数上限:E = 12 = 3×6 − 6,取等——它必是三角剖分。
② 极大性证明(两路并进)。路 A(账目路):E 已达 3V − 6 的天花板,再加任何边必超上限、必非平面(上限是平面性的必要条件)——完。路 B(几何路):每个面已是三角形,任何两点要么相邻(重边不行)、要么隔着面——在三角形内部连线必与边界交叉。两路对照:账目路用必要条件「反向使用」(超上限⇒非平面),几何路用构造——前者更快,适用面更窄(只在取等时可用)。
③ 对偶图。8 面各放一点(8 点),每条棱连对偶边(12 边):对偶图 8 点 12 边,面数 = 6。它是什么?正八面体的面对偶是正方体图(立方体 8 顶点 12 棱 6 面)——两种柏拉图体的对偶关系在图论账目上精确兑现:V↔F 互换、E 不变。账目即几何。
★★★ 例题 2(Welch–Powell 着色手演)。对 8 点图求 Welch–Powell 着色,并回答能否更少。
排队:度数 3(5) > 6(4) > {1,2,4,5,7,8}(3)——并列按编号:顺序 3, 6, 1, 2, 4, 5, 7, 8。
逐点上色(邻居未用的最小色):
| 点 | 已色邻居 | 禁用色 | 取色 |
|---|---|---|---|
| 3 (d=5) | — | ∅ | 1 |
| 6 (d=4) | 3 | {1} | 2 |
| 1 | 3 | {1} | 2 |
| 2 | 1, 3 | {2, 1} | 3 |
| 4 | 3 | {1} | 2 |
| 5 | 3 | {1} | 2 |
| 7 | 6 | {2} | 1 |
| 8 | 3, 6 | {1, 2} | 3 |
结果:3 色。色类:色1 = {3, 7}、色2 = {6, 1, 4, 5}、色3 = {2, 8}。合法性自查:色2 的四点两两不相邻?6 邻 3,7,8,5——5 与 6 相邻!抓出错误:5 的邻居是 3, 7, 8(看图重核),6 的邻居是 3, 7, 8——5 与 6 不相邻 ✓(手演时最容易错的就是邻居表——务必先抄对邻接表再上色)。逐对核验:色2 内 (1,6) (1,4) (1,5) (4,6) (4,5) (5,6) 均无边 ✓。
能否 2 色?图中有三角形(3-5-7 与 3-6-8),三角形 χ = 3。下界 χ ≥ 3 与上界 χ ≤ 3 夹出 χ = 3——Welch–Powell 此处恰好最优(它不保证最优,本次运气与结构双好)。例题的方法论:上界靠算法、下界靠障碍(团或奇圈),两头夹逼才是完整答案。
★★ 习题课(一):平面图与对偶。五题手演。
S1.连通平面图 V = 10, F = 6,求 E;再问它可能是简单图吗?Euler:E = V + F − 2 = 14。上限 3V−6 = 24,14 ≤ 24 合法——可能。上限是必要条件,不排除。
S2.证明:简单平面图若每个面至少 4 边,则 E ≤ 2V − 4;并给出一个取等的图。4F ≤ 2E 代入 Euler;取等例:四边形剖分(如立方体图:8 点 12 边 = 2×8−4 ✓)。
S3.彼得森图中找出 K3,3 的一个细分(提示:删去一条外圈对边后的 8 点子图)。彼得森 = 内五角星 + 外五边形 + 五辐条;删辐条换对接的思路——动手画,细分不需要直线边的「直」。
S4.树的(唯一)嵌入的对偶图是什么?「对偶再对偶」在树上还成立吗?树 F = 1 ⇒ G* 单点带自环(每条桥一个自环);自环图不是「图的图」——对偶对偶等式需连通简单嵌入,退化情形是理论的边界贴纸。
S5.正十二面体图(20 点 30 边 12 面)验证 Euler 公式,并求每点度数与每面边数。20−30+12 = 2 ✓;3-正则(2E=60=3V);五边形面(2E=60=5F)——柏拉图体的账目自洽。
★★★ 例题 3(色多项式演算)。求路径 P4(4 点链)与圈 C4 的色多项式,并从中读出色数。
P4(递归法)。树公式直接给:P(P4, k) = k(k−1)3。展开验证删除–收缩:取中间一条边 e,P4 − e = P3 + K1(不连通:色多项式相乘)= k(k−1)2 · k;P4/e = P3 = k(k−1)2。差 = k(k−1)2(k − 1) = k(k−1)3 ✓。
C4(递归法)。取一边 e:C4 − e = P4,C4/e = C3(三角形)。P(C4, k) = k(k−1)3 − k(k−1)(k−2)。展开:k(k−1)[(k−1)2 − (k−2)] = k(k−1)(k2−3k+3)。读色数:k=1 给 0;k=2 给 2·1·1 = 2 > 0 ✓——C4 是二部圈,双色可着(对径同色)。C3 对照:P(C3, k) = k(k−1)(k−2),k=2 给 0——奇圈就是双色世界的一票否决者,与第一章 König 判据账目相合。
多项式体检。P(C4, k) = k4 − 4k3 + 6k2 − 3k?展开 k(k−1)(k2−3k+3) = k4 − 4k3 + 6k2 − 3k。次项系数 −4 = −E ✓(m = 4);首项 k4 = kV ✓;常数 0 ✓。三个「指纹」全部对上——多项式身份的三重认证。
★★ 习题课(二):着色实战。五题手演。
S1.求轮图 W6(C5 加中心点)的 χ,并说明它与「四色定理的距离」。奇轮 χ = 4(圈 3 色 + 中心第 4 色);偶轮 χ = 3。轮图是平面图 χ = 4 的最小天然标本——四色的「下界说明书」。
S2.证明:χ(G) ≥ n/α(G),并用它证明「χ = 2 ⟺ 二部」的必要方向。色类是独立集、大小 ≤ α;双色 ⟹ 两个独立集覆盖全图 ⟹ 二部划分。
S3.一个 Δ = 3 的图可能 χ = 2, 3, 4 各举一例。χ=2:偶圈或 K3,3 之外的任意二部 3-正则(立方体);χ=3:奇圈;χ=4:K4——三例同 Δ,Δ 不决定 χ。
S4.三次平面图(如立方体图)的边着色与四色问题有何关系(Tait 化)?Tait:三次 2-连通平面图 χ′ = 3 ⟺ 面四色可着。1880 年 Tait 曾据「一切三次平面图皆 χ′=3」宣布证明四色——1891 年 Petersen 指出缺口(存在非第一类的三次图吗?)——错误的另一座金矿。
S5.色多项式 P(G, k) 在 k = −1 处的值有组合意义吗(远眺)?有——Stanley 的负概率解释:P(G, −1) = (−1)V × 无向图 acyclic 定向数。着色多项式与生成树计数(第六章 Matrix–Tree)经由「图多项式」家族遥相呼应。
★★ 本章地图:一源两支三出口。
源:Euler 公式(4.2)。V − E + F = 2 是全章的发动机:向右压出边数上限(4.3、4.4)、毙掉 K5 与 K3,3(4.5);向上压出「有点度 ≤ 5」(4.3 推论)、供弹五色定理(4.9)。一个公式养活半章。
支一:嵌入线(4.1 → 4.5 → 4.6)。从「画得出」的定义到「怎么都画不出」的刻画(Kuratowski),再到面与点的互换(对偶)。这支队的关键词是结构刻画。
支二:着色线(4.7 → 4.11)。定义 χ、贪心给上界、平面红利给五色、机器时代给四色、色多项式给计数。关键词是划分与上界——着色几乎没有好刻画(二部之外),一切成果都以上界/下界/特类的形式存在。
三出口(4.12 → 4.14)。边着色(Vizing 二分 + NP 完全判定)、应用现场(寄存器、排课、频率)、平面性检测(线性算法)。出口的共同气质:理论给结构,工程拿去用;难处不硬啃,次优也要走。
与前后章的接口。块分解与 DFS 工具箱(第三章)在平面性检测里挑大梁;奇圈与二部判据(第一章)在色数下界返场;对偶思想(Menger/流)收获最几何的标本;下一章匹配是边着色的分解视角的纵深。
★★ 第四章小结(上):嵌入的语言。
概念清单。平面图(存在无交叉画法)、平面嵌入、面(含无限面);对偶图 G*(面变点、共边连边、桥变自环);细分(边上插点);三角剖分(全三角面 = 极大平面)。
定理清单。Euler 公式 V − E + F = 2(连通);边数上限 E ≤ 3V − 6(简单、V ≥ 3)与二部版 E ≤ 2V − 4;推论「平面图有点度 ≤ 5」;Kuratowski 定理(禁手 = K5 / K3,3 的细分);Whitney:2-连通平面图的球面嵌入唯一。
「必要条件的两种用法」。边数上限作为证伪器:超上限即非平面(K5 之死)——快而窄;作为约束器:平面图必稀疏(平均度 < 6)——为一切「平面图上的更好算法」提供地基(平面图分离定理、线性时间最短路等是后话)。同一个不等式,证伪时是斧头,建模时是地基。
嵌入的两个易错点。① 平面性是存在性——「这张画有交叉」不构成非平面证据;② 对偶依赖嵌入——同一图的不同嵌入可有不同对偶;严格写作「嵌入的对偶」。
一句话记住嵌入侧:公式记 2,上限记 6 与 4(3V−6、2V−4),禁手记两个小图(K5、K3,3),对偶记一句「面变点、桥变环」。
★★ 第四章小结(下):着色的语言。
概念清单。正常着色与色数 χ(点着色 = 独立集划分);边着色与 χ′(匹配划分);色多项式 P(G, k)(方案计数、χ = 最小正零点);第一/第二类图(χ′ = Δ / Δ+1)。
定理清单。贪心上界 χ ≤ Δ + 1(任何顺序);Brooks:连通图 χ ≤ Δ(除团与奇圈);五色定理(平面图 χ ≤ 5,Kempe 链 + δ ≤ 5);四色定理(平面图 χ ≤ 4,机器证明 1976);Vizing:χ′ ∈ {Δ, Δ + 1}(判定 NP 完全);König 边着色:二部图 χ′ = Δ。
着色的「不对称知识版图」。χ = 2 有完全刻画(二部图);χ ≤ 4 对平面图有定理;一般的 χ 计算与「χ ≤ k?」判定 NP 完全;χ′ 的候选只有两个值而判定仍 NP 完全。知识版图的边界本身就是学习成果:知道「哪里有定理、哪里只有算法、哪里连判定都难」,比多记三个定理更有用。
方法论三遗产。① 上下界夹逼:χ 的完整答案 = 下界(团、奇圈、n/α)+ 上界(贪心、Brooks、平面红利)的合围——很多时候「证明最优」就是「两头堵」;② Kempe 链:错证明的正确遗产——交换两色分支是着色算法与四色史的枢纽技术;③ 删除–收缩:色多项式的递归引擎,与第六章 Matrix–Tree 同构。
一句话记住着色侧:贪心 ≤ Δ+1,平面 ≤ 5(人证)≤ 4(机证),二部恰 2,边着色二选一但难判。
★★★ 思想卡:反例推动定理。
本章的定理史有个扎眼的规律:进步常常不是被证明推动,而是被反例推动。
三块反例纪念碑。① Heawood 击穿 Kempe(1890):Kempe 的四色「证明」流传十余年后,一个精心设计的图让 Kempe 链交换互相拆台——但拆解过程留下的 Kempe 链技术成了五色定理的钥匙;② Petersen 击穿 Tait(1891):Tait 基于三次平面图边着色的「四色证明」依赖一条未经证明的引理,Petersen 构造出 3-正则非 Hamilton 图(就是那位「反例专业户」),暴露缺口—— Petersen 图从此成为一切「想当然」的照妖镜;③ Grötzsch / Mycielski 击穿「团决定一切」(1950s):三角形-free 却 χ 任意大的图存在——「没有小团也难着色」,把着色难度与团数的纽带一刀斩断。
为什么反例如此高产?因为猜想是「全称命题」,而一个反例就是一次精确的边界测绘:它同时说明「这条路到此为止」与「墙外是什么形状」。K5 与 K3,3 本身就是最好的例子——两个反例被 Kuratowski 升格为全部病因,反例摇身变刻画。从反例到定理的距离,常常只是一个「还有没有别的」的问题。
思想的迁移。本册至今的反例账:彼得森图(Hamilton、着色、Tait 三杀)、K5/K3,3(平面性)、七桥图(一笔画)、双团哑铃(贪心失效)、Grötzsch 图(团≠χ)。一个好反例的学术寿命远长于一打平庸定理——构造反例是图论的基本功,也是本章习题反复训练的肌肉。
★★★★ 挑战:五色定理的重排证明。p103 给了「标准叙事」,现在要求重排证明的骨架——把每个零件的位置自己摆一遍。
零件清单(打乱顺序)。A. 归纳假设:G − v 可 5 着色;B. 平面图有点度 ≤ 5(Euler 上限的双计数);C. Kempe 链:两色交替路;D. 平面性保证两条交替路不能交叉(隔出);E. 情形分析 d(v) ≤ 4 与 d(v) = 5;F. 交换一个分支的两色腾位。
任务一:排序。正确的骨架是 B → E → A → (d≤4 直接收) → (d=5) C → D → F。为每个箭头写出「为什么必须在这里」:B 是支点(没有低度点归纳无从落子);E 先于 A 分流(不同情形对 A 的依赖不同);C 提供道路语言;D 把几何兑换成代数;F 是最后一步腾挪。
任务二:补全 d(v) = 5 情形的一个细节。若色 1 的 Kempe 链把 v1 连到 v3,为什么恰好「隔开」v2 与 v4,而不是「隔开」v5?邻居的环序是 v1, v2, v3, v4, v5——1-2 链连 v1 与 v3?注意链的两端是 v1 与 v3(色 1 与 3 的交替路连的是「色 1 的点」与「色 3 的点」……端的颜色写清楚,这是本证明最易含糊处。
任务三:压力测试。把「5 色」改成「4 色」重走骨架:d(v) = 4 时照样通?d(v) = 5 不再出现?——错在哪?4 色时 d(v) = 5 的情形依然存在(v 的 5 个邻居用 4 色必有同色对,看似有救),但「同色对」的位置分析会遇上两条链缠绕——Kempe 的原始死穴。画出缠绕的示意。
★★★ 把 Welch–Powell 真跑一遍:8 门课的排课表问题——冲突图建模、度排序贪心着色、结果合法性与手工验证三重对拍。
def welch_powell(n, edges):
deg = [0] * (n + 1)
adj = [[] for _ in range(n + 1)]
for u, v in edges:
adj[u].append(v); adj[v].append(u)
deg[u] += 1; deg[v] += 1
order = sorted(range(1, n + 1), key=lambda x: -deg[x])
color = [None] * (n + 1)
for v in order: # 度数从大到小,逐点
used = {color[u] for u in adj[v] if color[u] is not None}
c = 1
while c in used:
c += 1
color[v] = c # 邻居未用的最小色
return color[1:], max(color[1:])
names = {1:'高数', 2:'线代', 3:'英语', 4:'物理',
5:'化学', 6:'体育', 7:'编程', 8:'史学'}
E = [(1,2),(1,3),(1,4),(2,3),(2,5),(3,4),(3,6),(4,5),
(4,7),(5,6),(5,8),(6,7),(6,8),(7,8)]
col, k = welch_powell(8, E)
for v in range(1, 9):
print(f" 时段{col[v-1]}: {names[v]}")
print("总时段数 =", k)
实跑输出:
时段3: 高数 时段2: 线代 时段1: 英语 时段2: 物理 时段1: 化学 时段2: 体育 时段1: 编程 时段3: 史学 总时段数 = 3
★★ 格物札记:从地图到芯片——着色的两次落地。
第一次落地:地图(1852)。着色的诞生场景是 Cartography——给郡县上色使相邻异色。四色猜想在这一语境里是印刷经济学:四种油墨够不够。有趣的是,现代地图学几乎不再需要四色定理:等高线分层设色、专题地图的视觉变量早已超出「相邻异色」的朴素需求——定理赢在数学,而不是它的出生行业。
第二次落地:芯片(1970s)。着色的真主场是 VLSI:布线层的通道分配(相同层的线段不相交 = 着色)、寄存器分配(p107)、测试引脚分配——每颗芯片的诞生都走过若干次着色。与地图不同,这里的问题规模(百万级变量)与约束密度让「NP 完全」成为每天的日常:工程界的回应不是等理论,而是启发式 + 次优 + 良率换算。
两次落地的方法论对照。地图着色追求「定理」(保证任何地图 4 色够);芯片着色追求「解法」(这颗芯片 3 层布线行不行)。前者是全称量词的胜利,后者是存在量词的战场——同一个数学结构,在「保证」与「找到」两种业态里过两辈子。排课、排班、频谱是第三种业态:约束每日变、解每日找,启发式为王。
札记的结论。一个数学问题的产业价值不在它出生的场景,而在它的结构可迁移性:「互斥关系 + 有限资源」在哪里出现,着色就在哪里上岗。下一章的匹配(婚配、任务分派)是它的孪生兄弟——划分的另一半。
★★ 速查:第四章概念与定理。考前一页纸,逐条过。
| 对象/定理 | 陈述(速记) | 备注 |
|---|---|---|
| 平面图 | 存在无交叉画法 | 存在性;画稿有交叉≠非平面 |
| Euler 公式 | V − E + F = 2(连通) | 归纳 + 树基例;拓扑不变量 |
| 边数上限 | E ≤ 3V − 6;二部 E ≤ 2V − 4 | 双计数 + Euler;K5/K3,3 之死 |
| 低度推论 | 平面图有点 d ≤ 5 | 五色定理的全部弹药 |
| Kuratowski | 可平面 ⟺ 无 K5/K3,3 细分 | 非平面性的完全刻画 |
| 对偶图 G* | 面变点、共边连边 | 依赖嵌入;桥 ↔ 自环 |
| 色数 χ | 最少正常着色色数 | χ=2 ⟺ 二部;χ ≥ ω, n/α |
| 贪心 / Welch–Powell | χ ≤ Δ + 1 | 上界;顺序敏感、不保最优 |
| Brooks | χ ≤ Δ(除团、奇圈) | 比贪心精一档 |
| 五色定理 | 平面图 χ ≤ 5 | Kempe 链 + δ ≤ 5,可手证 |
| 四色定理 | 平面图 χ ≤ 4 | 1976 机器证明;2005 形式化 |
| 色多项式 | P(G,k):方案数;χ = 最小正零点 | 删除–收缩;树 k(k−1)n−1 |
| Vizing | χ′ ∈ {Δ, Δ+1} | 判定 NP 完全;二部 χ′ = Δ |
| 平面性检测 | O(V)(Hopcroft–Tarjan 等) | DFS + 块;失败交 Kuratowski 证书 |
易忘三则。Euler 公式要连通(非连通逐支);上限要简单图(重边击穿);「对偶图」属于嵌入不属于图。
★★★ 第四章处理「画与涂」,第五章回到图论最人文的两问:能不能两两配对(匹配)与乱到一定程度是否必然有序(Ramsey)。
匹配线。从婚配、任务分派、器官移植到广告竞价,匹配是最「实用」的图论分支:Berge 的增广路判据是理论心脏(与最大流的增广路一脉相承);Hall 定理给出「一侧全部配成」的充要条件(Menger 在二部图上的化身);匈牙利算法把它变成多项式程序;Gale–Shapley 的稳定婚姻拿了 2012 年诺贝尔经济学奖——一条线从数学直通斯德哥尔摩。
Ramsey 线。「任何 6 人的派对,必有三人互相认识或三人互相不认识」——R(3,3) = 6 是最容易上手的定理之一;其推广(R(5,5) 至今未知!)展示组合数学「定理易述、数值难求」的极端个性。它与匹配共享一个气质:存在性先于构造——Ramsey 干脆放弃构造,只证明「必然」。
衔接讲义。下一章开始:匹配的定义与增广路、Hall 定理及其应用面、匈牙利算法、稳定婚姻、Ramsey 定理与 R(3,3)。带着本章的两件武器上场:König 的二部判据(双色 = 配对的舞台)与对偶思想(Hall 是 Menger 的婚装)。
★★★ 前四章问「连不连、画不画得出、几笔上色」,本章问两个更贴近生活的字:配与必然。
线一 · 匹配(p126–p135)。婚配、任务分派、志愿调剂、器官交换——「一边的人配上另一边的东西」是二部图匹配;Berge 的增广路判据是理论心脏,Hall 定理是「一侧全配成」的充要刻画,匈牙利算法把它变成程序,Gale–Shapley 的稳定婚姻拿下 2012 年诺贝尔经济学奖。Menger 与最大流的「增广」母题在此全线回流。
线二 · Ramsey(p136–p139)。任意 6 人派对必有 3 人互识或 3 人互不相识——R(3,3) = 6 是全册最容易上手的定理;而 R(5,5) 至今无人知晓。Ramsey 理论的气质独特:放弃构造、只证必然——「足够大 ⇒ 必有序」是组合数学的存在主义。
收束(p140–p154)。误读、例题两组(增广路手演、Gale–Shapley 手演)、习题两组、地图、双小结、思想卡(鸽笼到 Ramsey)、挑战(R(3,4) 的界)、实验(匈牙利算法真跑)、札记(肾脏交换)、速查、衔接。
本章的读法提示:匹配线全程「构造性」——每个定理配一个算法;Ramsey 线全程「存在性」——每个定理都拒绝说明怎么找。两种气质的对照本身,就是复杂度世界的预演。
★★ 定义先行:把「配对」翻译成图的语言。
三种「最好」的区分。最大匹配看数量(最多几对);完美匹配看覆盖(是否人人有份);后面 p132 的稳定匹配看质量(没有互相抱怨的对子)——三者互不蕴含,混用是初学第一大坑。ν(G) ≤ n/2,完美匹配即 ν = n/2。
为什么都从二部图起步?因为二部结构让「配对」有方向:一侧是「想要的人」,另一侧是「被想要的东西」——判据(Hall)、算法(匈牙利)、对偶(König)全部在二部情形最干净。一般图的匹配(Blossom 算法,Edmonds 1965)是「非二部障碍」的技术活,本册只点到(p130)。
母题挂旗。「最大流 = 最小割」「不相交路 = 分离集」之后,这里将出现第三对对偶:最大匹配 = 最小点覆盖(König,二部图限定)——「能配成几对」与「至少几个关键点挡路」是同一个数。对偶母语的第四课,开讲。
★★★★ 匹配理论的心脏,也是最大流算法的孪生器官。
「⇒」方向(有增广必非最大)。沿增广路做异或翻转:匹配边换非匹配边——路的 2k+1 条边中有 k 条匹配、k+1 条非匹配,翻转后匹配数 +1。这是所有匹配算法的发动机:找增广路 → 翻转 → 重复。
「⇐」方向(最大则无增广)。反证:设 M 最大但增广路 P 存在。考察对称差 M △ P 的边集——每个点在其中至多关联 2 条边(M 内至多 1、P 内交替各 1),故 M △ P 分解成偶圈、孤立边与新的交替路;而 P 的两端在 M 中不饱和,使分解中至少一条路的非匹配边比匹配边多——它就是关于 M 的更大匹配的素材,与 M 最大矛盾。∎(细节课堂板书,此处记骨架。)
与最大流的对照表(本册母题的收获时刻)。流:增广路 = 残余网络中 s→t 的正容量路;匹配:增广路 = 交替路。流:Ford–Fulkerson 反复增广;匹配:匈牙利算法反复增广。流:无增广路 ⇔ 最大 ⇔ 最小割证据;匹配:无增广路 ⇔ 最大 ⇔ König 覆盖证据(p129)。一个「增广」概念,两次兑现——第三章的理论投资在本章收利息。
算法剩余问题。Berge 只说「找得到就还能更大」——怎么找增广路?二部图:把已匹配边定向「右→左」、未匹配边定向「左→右」,从未饱和左点 BFS——右点未饱和即得增广路,右点全饱和则继续(这正是 Hall 判据的算法化,p128)。一般图:Blossom 收缩(p130 远眺)。
★★★★ 匹配的存在性定理,本册第五座「对偶」里程碑。
必要性一瞬。若匹配饱和 X,则 S 的每个人被配到不同邻居,这些邻居都在 N(S) 里——数够了。充分性(反证骨架)。设 Hall 条件成立但最大匹配 M 未饱和某 x0;所有从 x0 出发的交替路只能终止在已饱和右点(否则是增广路,Berge 拒绝)。令 S = 交替路可达的左点集:可证 N(S) 中的每个右点都饱和且其配偶 ∈ S,于是 |N(S)| = |S| − 1(x0 无配偶),违反 Hall 条件。∎
三重身份(母题汇合点)。① Menger 的化身:加超源连 X、超汇连 Y、容量 1 的流网络——Hall 条件 ⟺ 任何「左点组」的失败都造不出比人数小的割;最大流最小割一页重证 Hall(第三章 3.3 的直接分红)。② König 对偶的一半:最大匹配 = 最小点覆盖(下页)。③ 算法的停机证词:匈牙利算法找不到增广路时,失败证据恰是一个违反 Hall 条件的 S——算法给出「配不成」的作案团伙名单(构造性定理的完美形态)。
应用预告。正则二部图必完美(p131 系)、SDR 代表系(p131)、拉丁方补全、不可区分元素分组——Hall 是「资源够不够」问题的万能判据。
★★★★ König 对偶与 Hall 的应用面——本章理论密度最高的一页。
证明一瞥(经由 Hall)。τ ≥ ν 平凡(每条匹配边需一个专属覆盖点)。反向:取最大匹配 M,按「未饱和左点出发的交替可达性」把点分箱,令 C = (不可达的左点)∪(可达的右点)——逐类验证 C 覆盖所有边且 |C| = |M|。∎(这还是增广路的遗产:可达性分析一次,对偶两端同时到手。)
一般图为什么不行?三角形:ν = 1、τ = 2——König 在奇圈上立刻阵亡。奇圈是「点覆盖必须超配」的病灶,与第四章着色里的奇圈一脉相承(χ = 3 的最小障碍也是它)。二部 = 无奇圈 = 对偶成立——「无障碍」与「对偶成立」再次同步。
Hall 应用四连。① 正则二部图必有完美匹配(k-正则:任何 S 的边账 3k|S| ≤ k|N(S)| ⇒ Hall 成立——两条双计数,一页解决,课堂演);② SDR(相异代表系):集合族 {A1,…,An} 有各取一元素互不相同的选法 ⟺ Hall 条件——「委员会各派一名不同代表」;③ 0-1 矩阵的项秩:非零元所在行能被不同列覆盖的最多个数,Hall 直接判 d;④ 任务分派的可行性判定:worker-task 图 Hall 检查 = 匈牙利算法的失败证词(p151 真跑)。
远眺。一般图的 ν = τ 失败由 Edmonds 的 Blossom 算法修复为「一般图最大匹配多项式可解」(1965,O(n3))——奇圈的收缩技术;「最大匹配 = 最小覆盖」在一般图的正确推广是 Gallai–Edmonds 结构定理(远眺,本册不展开)。对偶思想在非二部世界的修复史,是二十世纪组合优化最精彩的章节之一。
★★★ 把 Berge + Hall 焊成一台机器。
两个内生产物。① 最大匹配:增广只增加不减少,停机即无增广路,Berge 保「最大」;② Hall 证据:某左点堵死时,它的交替可达集 S 满足 |N(S)| < |S|——算法自动产出「为什么配不成」的名单。不存在性也有证词,这是构造性数学的招牌(对照:Ramsey 定理不给出任何证词,p136)。
复杂度账。每次增广 O(E)(BFS 建交替森林),至多 min(|X|, |Y|) 次 ⇒ O(nE)。Hopcroft–Karp (1973) 分阶段增广(每阶段沿最短增广路集合多路推进)降至 O(√n·E)——与二部图最大流的 Dinic 同族(最大流归约视角下二者本是一物)。
工程现场。广告竞价(每秒百万次增广)、任务调度、网络交换机端口匹配(Hashed 匈牙利的硬件版)——「找增广」是基础设施级算法。p151 实验真跑一个 6×6 任务分配并与贪心对照——贪心会错、增广会救,是本章实验的戏剧点。
★★ 讲义 5.6:正则二部图与完美匹配——Hall 条件最优雅的代偿。
证明(两条双计数,三行完事)。Hall 条件:任取 S ⊆ 左部,S 关联的边共 k|S| 条,全部落在 N(S) 中;N(S) 每点至多收 k 条 ⇒ k|S| ≤ k|N(S)|。无条件成立——正则性验完 Hall。分解:取一个完美匹配删掉,剩 (k−1)-正则二部图,归纳。边色数 = k(König 边着色的特例,回看 p106)。
三个立即的应用。① 每面偶数边的立方图 3-边着色(Tait 化的原料,p115-S4);② 拉丁方:n 阶拉丁方每行可视为 1-因子分解的记账(正则二部图的分解 = 拉丁方的行)——Hall 保证每步可补;③ 排课的「教师-班级」双正则情形:每人课时相同、每班需求相同 ⇒ 可完美排满,König 分解给出课时表。
与一般正则图的对照。3-正则「非二部」图可无完美匹配——彼得森图就是(它 3-正则、无桥、却每条「截边组」都卡 Hall 的推广版)。Tutte 定理(一般图完美匹配判据,1947):G 有完美匹配 ⟺ 对任何 U ⊆ V,奇分支数 o(G − U) ≤ |U|——Hall 的正确一般化,证明深刻,本册存目。
方法论一得。「正则验条件」的实质:对称性是最强的资格证——当个体差异抹平,存在性问题塌缩成账目问题。凡遇到「人人一样多」的场景(均匀负载、对称网络),先想正则推论。
★★ 讲义 5.7:换一种「最好」——从数量到质量。
为什么是新增维度?p126 已辨三种「最好」:最大(数量)、完美(覆盖),如今第三种——稳定(激励):没有任何一对有共同动机拆伙。完美匹配可以很不稳定(人人想换),稳定性自动蕴含完美(若某人单身,他与他更爱的任何单身者构成 blocking?——严格说人数相等时稳定匹配必完美,自证一行)。
存在性的悬念。偏好是任意的——会不会出现「怎么配都有私奔对」的死局?博弈论里这种死局比比皆是(投票悖论、囚徒困境)。Gale–Shapley 的答案:婚姻市场没有死局——稳定匹配永远存在,且能用一个极其朴素的算法找到。下一页见证。
现实原型(预告)。美国 NRMP 住院医匹配(每年数万岗位)、纽约/波士顿学校录取(2012 诺奖的直接工程来源)、肾交换链(p152 札记)。「私奔对」的直觉值得展开:不稳定的市场会被人自发地绕开——机制设计的第一课。
★★★★ 全册「最简规则 + 最深定理」的冠军页。
停机(一排户口)。每位男士的求婚严格沿偏好表下滑、永不回头 ⇒ 总求婚次数 ≤ n2;每轮至少发生一次求婚 ⇒ 有限停机。停机时无单身男(有单身则其列表未划完,仍会求婚)⇒ 输出完美匹配。O(n2)——输入下界级的快。
最优性(不对称的惊人结论)。男方求婚版输出的是男士最优稳定匹配(每位男士在所有稳定匹配中拿到他的最好结局)同时是女士最劣稳定匹配。规则的设计者站着,参与者中的「主动方」赢麻——机制设计的核心教训:谁求婚,谁得利。对称地,把求婚权给女方,结论镜像。
算法纪律的美学。没有回溯、没有全局优化、没有权重——纯局部规则滚动出全局稳定结构,与 Dijkstra 的贪心锁定、Hierholzer 的圈缝合同列「局部规则 → 全局保证」名人堂。2012 诺奖(Roth 的市场设计)是它的工程加冕。
★★★ 讲义 5.9:稳定性的深化——结构与变体。
格点视角(一图看穿稳定域)。把每个完美匹配画成点 (m的排名和, w的排名和):稳定匹配是「不可能双向改善」的帕累托极值点。稳定匹配可有很多个(指数多个例子存在),但男士最优/女士最优是两个极端锚点;任何「男好则女坏」的反向单调成立——「极值点之间没有搭便车」。
不完整偏好与不可接受的对方。现实版本允许「宁缺毋滥」(某男某女互相不可接受)。结论:稳定匹配仍存在(Gale–Sotomayor),且「宁可单身」的选项使算法照常运转——不可接受边直接删除即可。人数不等、单边缺席(医院-申请者)也全部可化归:加虚拟参与者的标准化技术。
策略行为(真话是否最优?)。男方求婚版中,男士说真话是占优策略(Roth 1982 证明女方说真话不占优——存在虚报获益的实例);机制设计从此分支(「激励相容」系列)。这一页对现实的杀伤力最大:设计机制时不仅要看输出,还要看参与者会不会撒谎。
匹配市场的工程谱系。NRMP 住院医匹配(1952 起用类 GS 机制,1980s 重设计为申请者最优版);纽约学校匹配(2003,考虑兄妹、距离的多维偏好);肾交换(p152)。同一条算法骨架,三套制度外衣——「市场 = 算法 + 制度」的等式第一次在本册显形。
与线一的收束。匹配线的理论件(Berge/Hall/König)与制度件(GS/激励)在此合流:图论给出可行性,博弈论给出稳定性,机制设计给出落地——三段论是应用数学的标准成型工艺。
★★ 讲义 5.15 前半:应用总览——任务分配与网络中枢。
应用一:任务分派(每周都在发生的匹配)。工人-任务、服务器-求、出租车-订单:二部图匹配的工业规模版。决策链:可行性(Hall/匈牙利)→ 最优权重(Kuhn–Munkres 的带权匈牙利,O(n3),远眺)→ 在线化(求即时到达:在线匹配与竞价,远眺)。先问配不配得上、再问配得好不好、最后问来不来得及配——三问对应三章深度的算法家族。
应用二:网络中枢与覆盖(König 的对偶兑现)。「在二部网络中选最少的节点监控所有链路」= 最小点覆盖 = 最大匹配(König):监控预算从「试试看」变成「解一个匹配」。对偶视角的价值在「下界证书」:匹配给出「至少这么多」的证明——最优解与它的证据同时到手,与最大流最小割同一格局。
应用三:社交网络的「结构洞」。中介中心性高的点(连接两个大群的桥点)是覆盖问题的天然解——覆盖与匹配的对偶把「谁是关键人物」变成可计算问题。第六章的 PageRank 将给出另一种「重要度」——「关键」有多义:结构关键(覆盖)与流量关键(谱),两把尺子将在第六章并排放好。
方法论收束。匹配线的三段式——判据(Hall)回答「可不可能」,算法(匈牙利)回答「怎么找到」,对偶(König)回答「为什么到头」——是图论方法论的完整样本:存在性、构造性、最优性三证合一。下一线(Ramsey)将牺牲全部构造性,换取更惊人的必然性。
★★★★ 线二开题:从「能不能配」到「必不必然」。
存在性证明(双归纳,骨架)。R(r, 1) = R(1, b) = 1 平凡。核心递推:R(r, b) ≤ R(r−1, b) + R(r, b−1)。取 N = R(r−1,b) + R(r,b−1) 个点中任一点 v:它连出 N − 1 条边,红邻居 ≥ R(r−1,b) 或蓝邻居 ≥ R(r,b−1)(鸽笼!)——红邻居群内部要么红 Kr−1(加 v 成红 Kr)要么蓝 Kb;蓝对称。∎
气质的三个注脚。① 非构造性:证明只给上界(松得吓人:R(5,5) 的已知界 43–48?——是 43 ≤ R(5,5) ≤ 48,已是最精确的实战前沿之一);「存在」与「找到」在此彻底分家;② 单调:R 随参数增大只增不减;③ 对称:R(r, b) = R(b, r)。
哲学极点(Erdős 的双寓言)。「若有外星人入侵,索要 R(5,5) 的值,人类应动员全部计算资源硬算;若索要 R(6,6),人类应立即备战——根本算不出。」已知:43 ≤ R(5,5) ≤ 48(McKay–Radziszowski 1995);R(6,6) 的界 102–165。数值雪崩式难,定理却一句话说尽存在——Ramsey 是「易述难算」的极限标本。
与匹配线的对照收口。匹配:判据 + 算法 + 对偶(构造性天堂);Ramsey:存在 + 无构造 + 界粗(存在性荒原)。两种气质拼在一起,恰好是「图论」乃至「数学」的一张全景照。
★★★ 讲义 5.11:R(3,3) = 6——亲手完成的第一个 Ramsey 数。
下界 R(3,3) > 5(5 人反例)。5 人围成一圈,相邻者红(认识)、对角者蓝——五边形加五角星染色:红边成 C5(无三角)、蓝边也成 C5(无三角)。两侧都干净——6 的必然性不再平凡,5 的确是「自由的极限」。
上界 R(3,3) ≤ 6(三行证明)。任取一人 A,对其余 5 人:至少 3 条同色关系线(鸽笼:2+3 分组)。设 A–B、A–C、A–D 为红。看 B、C、D 三人:若任何一条红线(如 B–C),则 A-B-C 红三角;若全蓝,则 B-C-D 蓝三角。∎
证明的三处精益。① 取点 + 数邻边 + 鸽笼:Ramsey 上界证明的标准起手式,p138 的递推正是此式的机械化;② 「若…要么…要么」的二岔:组合证明的呼吸节奏——每种岔路都通向目标;③ 反例先行的完整性:没有 5 人反例,「= 6」就只是「≤ 6」——精确值的军功章一半属于反例构造(与 Erdős–Gallai 的可图性判定同风)。
派对问题的变身术。「认识/不认识」=「同色/异色」=「同侧/异侧」:三人共进午餐(鸽笼+握手?)、无汉密尔顿的随机图论证、同调代数的「有限染色」……R(3,3) 是离散数学的「瑞士军刀刀片」:凡遇「任意分成两类必有一类抱团」的直觉,先想到它。
预告。下一页把 R(3,4) 也拿下(界),并见识 R(4,4) = 18 与 R(5,5) 未知之间的深渊——从 6 到「未知」,只隔了两个参数。
★★★ 讲义 5.12:Ramsey 数的边界与困难——深渊观光。
已知版图(截至当代)。R(3,3) = 6;R(3,4) = 9;R(3,5) = 14;R(4,4) = 18;R(3,6) = 18;R(3,7) = 23;R(4,5) = 25;R(5,5):43 ≤ R ≤ 48,未知;R(6,6):102 ≤ R ≤ 165。参数只挪一格,难度指数式爆炸——枚举空间是 2n(n−1)/2 张染色图,n = 48 时超过 10300,宇宙原子不够数。
为什么这么难?上界靠「递推 + 有限枚举」(组合 + SAT 求解器合力,R(4,5) = 25 即 2024 年前后机器辅助的收官战之一?——更准确:R(4,5) = 25 由 McKay–Radziszowski 1995 定谳);下界靠构造染色图(循环图、概率法)。每前进一步都是一篇论文——Ramsey 数是「组合数学的费马大定理」式难关家族。
概率法一瞥(Erdős 1947 的下界革命)。随机染色:每边独立红蓝各半。含红 Kr 或蓝 Kr 的概率 ≤ 2·C(n,r)·2−C(r,2);当它 < 1 时,存在「无单色 Kr」的染色 ⇒ R(r,r) > n。「证明存在」不必「拿出它」——随机性做证词,这是 Erdős 概率方法的开山之作,直接催生概率组合学(第六章随机图的先声!)。数值上给出 R(r,r) > ⌊2r/2⌋ 量级——比任何显式构造都大。
上界的天花板。Erdős–Szekeres 经典递推给 R(r,r) ≤ C(2r−2, r−1) ≈ 4r/√r;与下界 2r/2 之间隔着指数鸿沟——「对角 Ramsey 数的渐近」是组合数学最大的开放问题之一。
方法论的镜子。匹配线教「构造的秩序」,Ramsey 线教「存在的混沌」;而概率法在混沌中辟出存在性走廊——三件工具(构造、枚举、概率)构成当代组合学的全部武器谱。
★★ 讲义 5.13–5.14:独立集、团与 Gallai 恒等式——收拢散落的概念。
Gallai 恒等式(1959,二部图全套对偶)。无孤立点的任何图:α + τ = n(补集关系:非覆盖点成独立集);二部图另有 ν = τ(König)与 ν = ρ(边覆盖对偶,可由 Hall 推)。合账:二部图里 α、τ、ν、ρ 四个量互相锁死——一个匹配算出,全部到手。一般图只有 α + τ = n 与 Gallai 弱不等(ν ≤ τ ≤ 2ν)——奇圈又一次是病灶。
Ramsey 的「序语言」重述。R(r, b) ≤ n ⟺ 任何 n 点图必有 ω ≥ r 或 α ≥ b——「认识团」是团、「陌生团」是独立集(补图视角)。于是 Ramsey 理论 = 「团数与独立数不可同小」的存在定理:n 大时 max(ω, α) ≥ ~½log2n。「任何大群体必有子结构」从定理升格为数量级。
与着色线的回望。χ ≥ n/α(p102)+ Ramsey 保证 α ≤ log ——两者夹出:存在 χ 大于团数的图(R(3,k) 类构造 + Mycielski)——第四章埋的「χ ≠ ω」伏笔在此结账:着色难度不在团,而在全局结构。
本章三线合账。匹配(ν, τ, ρ 的对偶家族)、Ramsey(α, ω 的必然家族)、着色回望(χ 的下界家族)——独立集是三线交汇的枢纽概念:它是色类的成员、覆盖的补集、Ramsey 的另一方。
★★ 讲义 5.15 后半:网络中枢——从覆盖到枢纽再到下一章。
网络中枢问题。「选最少的监控点看住全部链路」(τ)、「选最多的互不干扰单元」(α)、「给最多对配对成功」(ν)——同一个图的三个预算问题,二部世界全部多项式,一般世界全部 NP 完全(α/τ 的判定 NP 完全;ν 一般图也多项式——Blossom!)。「难题家族」的成员资格取决于问法与图的类型——这是复杂度敏感性的第一堂实例课。
中枢的两种哲学。覆盖哲学(König):关键点 = 拦住所有边的最小集合——「拆网要拆哪几根柱子」;中介哲学(第六章谱方法):关键点 = 流量汇聚处——「网上的人绕不开谁」。两把尺子常常选中不同的人:结构关键者未必流量关键。「重要」是个需要指定度量的问题——第六章 PageRank 会把这句口号变成一行公式。
应用落点清单(本章全部应用的合账)。婚配与学校录取(GS + NRMP)、任务分派(匈牙利 + 带权版)、器官交换(匹配链 + 不完整偏好)、监控与枢纽(König 对偶)、广告竞价(在线匹配)、实验排班(二部正则)——一条「配对」母题贯穿十行产业。
通往第六章。至此,本册的图论主角(度、连通、遍历、平面、着色、匹配、Ramsey)全部登场,但它们各说各话。第六章请出一位 universal translator:邻接矩阵的谱——所有概念将获得线性代数的第二语言:连通性 = λ2 > 0、二部 = 谱对称、匹配计数 = 积和式(远眺)、随机游走 = 谱隙、PageRank = 主特征向量。矩阵里的图,是本书的收官之地。
★★ 常见误读:匹配与 Ramsey 的四个误区。
误区一:「最大匹配 = 完美匹配的另一个说法」。错。3 人对 4 事:最大匹配 3 对、完美匹配不存在(人数不等或 Hall 卡死时)。最大看「最多几对」,完美看「全覆盖」——后者是更强的要求。
误区二:「Hall 条件只查全部 X 就够了」。大错——这是 Hall 定理最经典的坑。必须每个子集 S ⊆ X 都验 |N(S)| ≥ |S|:全体合格而某个「小团伙」邻居不足的失败案例比比皆是(三个人合起来只认识两个项目)。Hall 的威力恰在于把失败定位到团伙。
误区三:「稳定匹配是唯一的」。错。稳定匹配可以有很多个(指数多个的实例存在);Gale–Shapley 输出的是两个极端之一(求婚方最优/被求方最劣)。把「算法输出」当成「定义唯一解」是机制设计的常见误读。
误区四:「R(3,3) = 6 说明 Ramsey 数都很好算」。6 → 9 → 14 → 18 → …,R(5,5) 已是悬案(43–48),R(6,6) 的界宽出天际。Ramsey 的「易述」与「难算」是两件事——定理一句话、数值一个世纪,正是它的魅力与恐怖。
★★★ 例题 1(增广路的手演)。5 工人 5 任务二部图(图 5-9),给定 M = {W1-Ⅰ, W3-Ⅱ},逐步增广至最大,并回答是否存在完美匹配。
第一轮(从 W2 出发)。W2 未饱和。交替搜索:W2-Ⅰ(非匹配)→ Ⅰ 已被 W1 饱和 → W1-Ⅱ(匹配)→ Ⅱ 被 W3 饱和 → W3-Ⅲ(非匹配)→ Ⅲ 未饱和——增广路到手:W2→Ⅰ→W1→Ⅱ→W3→Ⅲ。翻转:W2-Ⅰ、W1-Ⅱ、W3-Ⅲ 入 M,旧边 W1-Ⅰ、W3-Ⅱ 出 M。|M| = 3。
第二轮(从 W4 出发)。W4-Ⅳ(非匹配)→ Ⅳ 被 W3 饱和 → W3-Ⅱ?Ⅱ 现在的配偶是 W1 → W1-Ⅰ → Ⅰ 被 W2 饱和 → W2 的其他邻居?无——堵死;W3-Ⅲ → Ⅲ 未饱和!等等——Ⅳ 的搜索里走到 W3 后可走 W3-Ⅲ(匹配边)→ Ⅲ 未饱和 ⇒ 增广路 W4→Ⅳ→W3→Ⅲ?Ⅳ 被 W3 饱和(第二轮前的 M 含 W3-Ⅲ?第一轮翻转后 Ⅲ 的配偶是 W3!所以 W4-Ⅳ 非匹配 → Ⅳ 被 W3 饱和 → W3-Ⅲ 匹配边 → Ⅲ 已饱和——堵死一半)。重走:W4-Ⅳ→W3→W3-Ⅲ→Ⅲ 饱和(就是 W3 自己)——死路。W4 的邻居只有 Ⅳ——W4 堵死。
第三轮(W5)。W5-Ⅴ(非匹配)→ Ⅴ 被 W4?不——M 现为 {W2-Ⅰ, W1-Ⅱ, W3-Ⅲ, W4-Ⅳ, W5-Ⅴ}? 逐查:第二轮 W4 堵死无增广,M 仍 3 条;W5-Ⅴ:Ⅴ 邻居 4、5——Ⅴ 被 W4 饱和?M 中 W4 的配偶是 Ⅳ!Ⅴ 未饱和 ⇒ W5-Ⅴ 本身就是增广路(单边)。翻转:|M| = 4:{W2-Ⅰ, W1-Ⅱ, W3-Ⅲ, W5-Ⅴ}。
第四轮。W4 堵死已证(唯一邻居 Ⅳ 的配偶 W3 无处可去?——W3-Ⅲ 的配偶就是 W3;Ⅲ 的其他非匹配邻?Ⅲ 的邻居是 2、3——2 的配偶 Ⅰ、1 的配偶 Ⅱ……完整交替森林:W4→Ⅳ→W3→Ⅲ→W2→Ⅰ→W1→Ⅱ:全饱和无出口 ⇒ W4 堵死确证)。停机。最大匹配 = 4;完美匹配不存在(W4 永远单身——它的失败证词即 Hall 反例:S = {W4 与所有能「让位」的工人},其合邻居不足)。
★★ 习题课(一):Hall 判据演练。五题手演。
S1.验证例题 1 的图中 W4 的堵死对应哪个 Hall 违反子集(把它找全)。S = 交替森林里的全体左点 {W4, W3, W2, W1}?数邻居:N(S) = {Ⅰ, Ⅱ, Ⅲ, Ⅳ},|N| = 4 = |S|?差一个——把可达范围算准, violation 在 {W4, W3, W2, W1, W5}?自己数。
S2.n 个姑娘每人恰认识 n 个小伙、每个小伙恰被 n 个姑娘认识(n-正则二部图)——证明人人可婚配。p131 正则推论:Hall 条件由双计数自动成立。
S3.集合族 A1={1,2}, A2={1,3}, A3={2,3}, A4={1,2,3}:有 SDR(相异代表系)吗?违反 Hall 的子集是谁?四个集合的并只有 3 个元素——S = 全体,|N(S)| = 3 < 4。整体不足与「团伙不足」在此合一。
S4.证明:若二部图 X 侧每点度 ≥ k 且 Y 侧每点度 ≤ k,则存在饱和 X 的匹配。k|S| ≤ 边账 ≤ k|N(S)|——与正则推论同款双计数,正则性放宽为「左多右少」。
S5.0-1 矩阵(6×6):每行恰 3 个 1、每列至多 3 个 1——证明可选出 6 个 1 使两两不同行不同列。行-列二部图是「左度 3 右度 ≤ 3」——S4 直接适用;「不同列」即匹配。
★★★ 例题 2(Gale–Shapley 手演)。3 男 3 女完整走一遍男方求婚算法,并验证稳定性与「男方最优」。
偏好表(从最到最不接受):
| 男士 | 偏好 | 女士 | 偏好 |
|---|---|---|---|
| m1 | w1, w2, w3 | w1 | m2, m1, m3 |
| m2 | w1, w3, w2 | w2 | m1, m3, m2 |
| m3 | w1, w2, w3 | w3 | m1, m2, m3 |
轮 1:m1、m2、m3 都向 w1 求婚。w1 保留 m2(她的第一名),拒绝 m1、m3。
轮 2:m1 向 w2 求婚(保留);m3 向 w2 求婚——w2 比较 m1 与 m3:保留 m1(她的第一名),拒绝 m3。
轮 3:m3 向 w3 求婚(保留)。无单身男——停机。匹配:{m2-w1, m1-w2, m3-w3},总求婚 5 次 ≤ n2 = 9。
稳定性核查(3 对各查 6 个外配 = 18 次)。抽查最可疑的:m1 更爱 w1,但 w1 现任是 m2——w1 的第一名 ✓ 不动心;m3 更爱 w1/w2:w1 现任第一名、w2 现任 m1 是她的第一名 ✓;w2 更爱 m2?m2 现任 w1 是 m2 自己的第一名 ✓。全部排除——稳定。
「男方最优」验证。m2 拿到第一名 w1、m1 拿到 w2(他的第二)?m1 可能更好吗——存在稳定匹配使 m1 得 w1 吗?若 m1-w1、m2 得 w2/w3:w1 爱m2 胜 m1 且 m2 爱 w1 胜 w2/w3 ⇒ (m2, w1) 是 blocking——不稳定。m1 的 w2 已是他能拿到的最好稳定结局 ✓。同理 m3 的 w3。三男同时「稳定意义下最优」——不对称性当场可见:三位女士全部拿到最劣稳定结局(w1 丢第一、w2 得第二?w2 的第一名正是 m1 ✓——但相对全体稳定匹配仍最劣,全表核验略)。
★★ 习题课(二):稳定婚姻实战。五题手演。
S1.把例题 2 改为女方求婚版,写出轮次与结果,验证「女士最优/男士最劣」。轮 1 三女都向 m1:m1 保留 w1(他的第一);轮 2 w2→m2、w3→m2:m2 保留 w2?他的排序 w1, w3, w2——w2 是他最不爱?m2 现任是 w1!w2、w3 依次被拒……最终 {m1-w1, m3-w2?, m2-w3?}——动手算,结果必与男方版不同。
S2.构造一个 3×3 实例,使稳定匹配恰有一个,且双方版本输出相同。让所有男士偏好完全一致、所有女士偏好也完全一致(且有「共同认可的第一名」互锁)——极端一致 ⇒ 稳定域坍缩成一点。
S3.证明:男方求婚版中,任何男士若被全部女士拒绝则算法不停(矛盾于停机证明)——从而停机时必为完美匹配。被拒 n 次需 n 个不同女士各拒一次;拒绝总数 ≤ 求婚总数,而停机判定正是「无单身男」。
S4.「宁缺毋滥」版:m3 把 w3 标为不可接受(w3 也把 m3 标为不可接受)。例题 2 的输出如何变化?还存在稳定匹配吗?删除 m3-w3 边后重跑:GS 照常停机,输出仍完美(其他两对不受影响)——若某对只剩互相不可接受,则必有人单身(稳定但不完美)。
S5(设计题).医院-申请者匹配中医院席位可多招(一对多)。如何化归为标准稳定婚姻?医院按席位拆成多个「虚拟医院」(偏好一致)——p134 的标准化技术;真实系统 NRMP 即如此。
★★ 本章地图:三线两气质。
匹配线(5.1–5.6)。定义 → Berge 判据(增广路)→ Hall 充要(存在性)→ König 对偶(最优性证据)→ 匈牙利算法(构造性)。依赖前章:Menger/最大流(增广母题)、DFS(交替森林的搜索底座)。一条完整的「判据—算法—对偶」流水线。
稳定线(5.7–5.9)。在匹配之上加偏好与激励:GS 算法给存在性与构造性,最优性定理给不对称性,策略行为给机制设计的开口。它是匹配线的博弈论续篇——把「能不能配」升级为「愿不愿意留在配对里」。
Ramsey 线(5.11–5.13)。存在性定理 + 手工里程碑 R(3,3) = 6 + 数值深渊。气质与匹配线全面对照:无构造、无算法、无对偶证词——只有「必然」本身。
枢纽与出口。独立集 α 是三线枢纽(5.14):它是色类成员(第四章)、覆盖补集(Gallai)、Ramsey 的另一方。出口在第六章:谱语言将重述连通(λ2)、二部(谱对称)、随机游走(谱隙),并给「网络重要度」第二把尺子(PageRank)。
前后章接口。第二章生成树(交替森林是带根的树结构);第四章色数(χ ≥ n/α 在 5.14 结账);第六章随机图(Erdős 概率法的正式舞台)。
★★ 第五章小结(上):匹配的语言。
概念清单。匹配 / 最大匹配 ν / 完美匹配 / 饱和;M-增广路(首尾未饱和、红蓝交替);Hall 条件(任意 S ⊆ X:|N(S)| ≥ |S|);点覆盖 τ / 边覆盖 ρ / 独立集 α;稳定匹配与 blocking pair。
定理清单。Berge(M 最大 ⟺ 无增广路);Hall(饱和 X ⟺ Hall 条件,失败证词 = 违反子集);König(二部图 ν = τ);正则二部图有完美匹配且 1-因子分解;Gallai 恒等式 α + τ = n;GS(稳定匹配存在,男方最优/女方最劣)。
算法清单。匈牙利 O(nE)(增广 + 堵死证据);Hopcroft–Karp O(√nE)(分阶段);GS O(n2)(求婚轮次);带权匈牙利 O(n3)(远眺)。
对偶母语的期末结算。本册五座对偶里程碑:Menger(路-割)、最大流最小割、切定理(生成树)、König(匹配-覆盖)、GS(个体理性-全局稳定)。「一侧最大化与另一侧最小化取等」是二部结构反复赠送的礼物——凡是「左右分明」的世界,对偶几乎总在场。
一句话记住匹配侧:增广路在就能更大(Berge),邻居不够分必是团伙的锅(Hall),配对数 = 拦路点数(König),求婚制保稳定且求婚方占优(GS)。
★★ 第五章小结(下):Ramsey 的语言。
概念清单。Ramsey 数 R(r, b)(单色 K_r 或 K_b 的必然阈值);对角数 R(r, r) 与非对角数;团 ω / 独立集 α;概率方法(随机染色证存在反例)。
定理清单。Ramsey 定理(存在性,递推上界 R(r,b) ≤ R(r−1,b) + R(r,b−1));R(3,3) = 6(上界鸽笼 + 下界五边形五角星染色);Erdős 概率下界 R(r,r) > ⌊2r/2⌋;已知数值 R(3,4)=9, R(4,4)=18, 43 ≤ R(5,5) ≤ 48。
证明技术清单。① 取点数邻 + 鸽笼二岔(上界证明的起手式);② 反例构造(下界:显式染色图或概率存在);③ 双归纳(递推的两个参数);④ 概率证词(「存在」不必「给出」——Erdős 1947 的革命)。
气质的最终对照表。匹配线:判据精确、算法快、对偶证书、失败也给证词;Ramsey 线:定理易述、数值难求、无构造、界宽。两线共享一个哲学断言——「结构是大数量的宿命」:匹配说「资源够则配对存在」,Ramsey 说「人数够则同色团存在」。
一句话记住 Ramsey 侧:6 人必有三人互识或互不识(R(3,3)=6);每挪一个参数难度翻一个世纪;想证存在大反例——交给随机。
★★★ 思想卡:必然性——从鸽笼到 Ramsey。
「n+1 只鸽子进 n 个笼,必有两只同笼」——鸽笼原理是最朴素的必然性:数量越过容量,碰撞不可避免。本章的 Ramsey 把这个直觉推向深水:不是「必有碰撞」,而是「必有成建制的结构」。
三级火箭。第一级(鸽笼):碰撞必然——两物同处;第二级(R(3,3)=6):成团必然——三人同色;第三级(Ramsey 定理):任意规模的成团必然——r 人同色团在足够大的系统里躲不掉。每一级都从「计数碰撞」升级为「结构涌现」。
必然性的两个方向。正向(Ramsey):混乱足够大 ⇒ 秩序必然——「彻底的混乱不可能存在」;反向(概率法):想要秩序 ⇒ 随机往往就有——Erdős 用「随机」证明「有序样本的存在」,混沌成了秩序的证人。必然与随机这对冤家,在组合数学里互相作证。
认知的迁移。① 「必然」常以「阈值」的面目出现:R(3,3)=6 的 6、随机图巨型分支的临界 p ≈ 1/n(第六章)、相变的临界温度——阈值前后是两个世界;② 「必然」不承诺「好找」:R(5,5) 的值存在但人类不知道——存在性与可知性是两种资源;③ 「必然」不指定「哪个」:6 人派对必然有三团,但哪三人——必须看具体的认识关系。定理锁住存在,个案留给计算。
本卡的位置。它是本册「抽象的代价与回报」(第一章思想卡)的续篇:抽象让我们看见「必然性」本身的形状——而不是一次一次地撞见它。
★★★★ 挑战:R(3,4) = 9 的完整论证。复刻 R(3,3) 的双路战术,把下一个 Ramsey 数拿下。
下界:R(3,4) ≥ 9,即造一个 8 点染色图:无红三角、无蓝 K4。经典构造:8 点圈,红边取「相邻 + 对径?」——提示方案:点标 0–7,红边 = 差 ±1(圈),蓝边 = 其余(差 ±2, ±3, ±4)。验证:红边只有圈边,无红三角 ✓;蓝图 = 圈的补图——需要验证无蓝 K4,即任 4 点中必有一条圈边(红)。任取 4 点,若它们两两不相邻(无圈边),则它们是圈上的「独立集」——C8 的最大独立集是 4(对径交替取法 0,2,4,6)!检查 {0,2,4,6}:两两差 2 或 4 或 6——无圈边——全是蓝边 = 蓝 K4!构造失败。修正:改红边为「差 ±1 与 ±4」?逐案试错,直到两侧同时干净(答案存在;这正是 Ramsey 下界研究的日常:构造-验尸-重造)。
上界:R(3,4) ≤ 9。任取一点 v:9 点中 v 连出 8 边。若红邻 ≥ 4:4 个红邻中若有一条红边 → 红三角;若全蓝 → 蓝 K4(4 点全蓝互连)——两条岔路都出结果 ✓(注意此处连讨论都省了:红邻 4 个直接够)。若红邻 ≤ 3:蓝邻 ≥ 5——5 个蓝邻中依 R(3,3) = 6?不对,5 点:若其中有红 K3?我们要蓝 K4:5 个蓝邻内部若无红三角,则……红三角 v 不需要——5 个蓝邻若无红边成三角形(即内部无红 K3),那么它们的「红边图是三角形-free」⇒ 蓝 K3?逻辑写完整:蓝邻集内或红 K3(加?不加 v——红 K3 自身即是!)或蓝 K3 + v = 蓝 K4。∎
结算。两条岔路的「自动出结果」来自 3 与 4 的 asymmetry:非对角 Ramsey 的证明常比对称版更巧——参数的不对称给岔路「不对称的火力」。
★★★ 把匈牙利算法真跑一遍:6 工人 × 6 任务的任务分配,与「先到先得」贪心对照,见证增广路的翻盘时刻。
def hungarian(n, m, adj):
match = [-1] * m
def try_aug(u, vis):
for v in adj[u]:
if not vis[v]:
vis[v] = True
if match[v] == -1 or try_aug(match[v], vis):
match[v] = u
return True
return False
cnt = 0
for u in range(n):
if try_aug(u, [False] * m):
cnt += 1
return cnt, match
def greedy(n, m, adj):
taken = [False] * m
cnt = 0
detail = []
for u in range(n):
for v in adj[u]:
if not taken[v]:
taken[v] = True; cnt += 1
detail.append("W%d->T%d" % (u + 1, v + 1))
break
return cnt, detail
adj = [[0, 1], [0], [1, 2], [3], [4], [5]]
c, M = hungarian(6, 6, adj)
pairs = ["W%d->T%d" % (u + 1, v + 1) for v, u in enumerate(M)]
print("匈牙利最大匹配 =", c, ";", " ".join(sorted(pairs)))
g, detail = greedy(6, 6, adj)
print("贪心匹配 =", g, ";", " ".join(detail))
实跑输出:
匈牙利最大匹配 = 6 ; W1->T2 W2->T1 W3->T3 W4->T4 W5->T5 W6->T6 贪心匹配 = 5 ; W1->T1 W3->T2 W4->T4 W5->T5 W6->T6
★★ 格物札记:从婚配到肾脏交换。
1962:一篇「游戏文章」。Gale 与 Shapley 发表《大学录取与婚姻的稳定性》时,它更像一个智力玩具——10 页纸、无数据、无应用。谁能想到半个世纪后它每年调度数万条生命线。
1980s–2000s:市场的算法化。Roth 接手 NRMP(美国住院医师匹配):发现 1950 年代的机制「恰好」是 Gale–Shapley 的一个变体且运行稳定——「算法早已在产业中无意识演化」的惊人事实;随后亲手设计纽约学校匹配(2003)与肾交换机制——2012 年诺贝尔经济学奖(与 Shapley)加冕。同一骨架的三次落地:婚姻、教育、器官——「配对」的结构普适性。
肾脏交换的图论内核。供体-受体不兼容的对子(如妻子需要、丈夫不能捐)构成「交换圈」:A 对的供体给 B 对的受体、B 对的供体给 A 对的受体——二元环 = 二部图的匹配边;三元环、长链(含「无条件捐献者」作源)是增广路的现实化身。「找最多对子的交换方案」= 最大匹配(带兼容约束);而「从不反悔」的稳定性约束在器官语境里生死攸关——手术需同步进行,任何一方退出都毁掉全链(现实机制用「同步 + 保险」处理,激励问题远未终结)。
札记的结论。本章算法的三个现实教益:① 朴素规则(求婚制)可以承载深刻的市场设计;② 「失败证词」(Hall 反例)在现实里是「谁被卡住了」的医学与伦理清单;③ 图论给的从来不是答案,而是把价值冲突翻译成约束的语言——剩下的是人的选择。
★★ 速查:第五章概念与定理。考前一页纸,逐条过。
| 对象/定理 | 陈述(速记) | 备注 |
|---|---|---|
| 匹配 M | 两两不共点的边集 | ν 最大;完美 = 饱和全部 |
| Berge 定理 | 最大 ⟺ 无 M-增广路 | 增广 = 首尾未饱和交替路 |
| Hall 定理 | 饱和 X ⟺ ∀S⊆X: |N(S)| ≥ |S| | 失败证词 = 违反子集 |
| König 定理 | 二部图 ν = τ | 最大匹配 = 最小点覆盖 |
| 正则二部图 | 有完美匹配;1-因子分解 | 双计数验 Hall |
| Gallai 恒等式 | α + τ = n(任何图) | 二部另有 ν = ρ |
| 匈牙利算法 | 增广至堵死,O(nE) | Hopcroft–Karp O(√nE) |
| 稳定匹配 | 无 blocking pair 的完美匹配 | GS:男方最优 / 女方最劣 |
| Gale–Shapley | 求婚轮次制,O(n2) | 真话:求婚方占优策略 |
| Ramsey 定理 | R(r,b) 存在;≤ R(r−1,b)+R(r,b−1) | 非构造;界松 |
| R(3,3) = 6 | 上界鸽笼 + 下界 C5 染色 | 派对定理 |
| R(3,4) = 9 | 同法可手证 | 非对角岔路火力 |
| R(5,5) | 43 ≤ R ≤ 48,未知 | 概率下界 2r/2 量级 |
易忘三则。Hall 要逐子集验(不是验全体);稳定匹配不唯一(GS 只给两端);概率法证存在不给出构造。
★★★ 五章以来,图的每个概念都说「图论方言」。第六章请出一位普适翻译:矩阵。
谱线。邻接矩阵 A 的特征值(图的谱)是图的「声纹」:连通 ⟺ λ2 > 0;二部 ⟺ 谱关于 0 对称;生成树个数 = Laplacian 代数余子式(Matrix–Tree,第二章 Cayley 公式的矩阵化兑现);随机游走的收敛速度 = 谱隙——第一章埋的「代数视角」伏笔整章兑现。
网络线。随机图 G(n, p) 的相变(巨型分支在 p ≈ 1/n 处骤现)解释真实网络为什么「一敲全连」;小世界定理把第一章实验的「平均距离 3.21」升格为定理(~ log n / log d);PageRank 把「重要」变成主特征向量——谷歌的起点;图神经网络让机器直接「读」图。图论从课堂走进每个人的口袋。
衔接讲义。下一章开始:谱的定义与不变量、Laplacian、Matrix–Tree、随机游走与电网络、随机图与相变、PageRank 与社区发现。带着全书的家当上场:度(握手引理)、连通(BFS/DFS)、树(Cayley)、着色(二部谱对称)、匹配(积和式远眺)——它们都将在矩阵里再见。
★★★ 全书的收官章:把五章的家当全部押进矩阵,再把矩阵送进真实网络。
线一 · 谱(p156–p163)。邻接矩阵的特征值是图的「声纹」:连通 ⟺ λ2 > 0、二部 ⟺ 谱对称、生成树个数 = Laplacian 余子式(第二章 Cayley 公式的矩阵化)、随机游走收敛速度 = 谱隙、电阻网络 = Laplacian 的直接物理实现。Kirchhoff 1847 年的定律是这一切的起点。
线二 · 网络(p164–p169)。随机图 G(n, p) 在 p ≈ 1/n 处的相变(巨型分支骤现)是二十世纪概率组合的高峰;小世界定理把第一章实验的 3.21 升格为 ~log n/log d 的定理;PageRank 把「重要性」变成主特征向量——谷歌的起点;图神经网络让机器直接学习图结构。
收束(p170–p184)。误读、例题两组(小图谱手算、Matrix–Tree 演算)、习题两组(随机游走、PageRank 迭代)、地图、双小结、思想卡(矩阵是图的另一种笔迹)、挑战(谱隙与扩张图)、实验(Matrix–Tree + PageRank 真跑)、札记(从 Kirchhoff 到 Google)、速查、全册回望。
本章的读法:每个矩阵事实旁边都站着一张旧面孔——度、连通、树、着色、匹配。旧概念的第二语言,就是本章的教学法。
★★ 定义先行:把图写成数表。
第一条定理:途径计数。(Ak)[i][j] = i 到 j 的长 k 途径条数。归纳一步:走 k 步 = 先走 k−1 步到某中转、再走一步——恰是矩阵乘法的定义。「途径」是第一章的老朋友(提炼引理的对象),现在它有了代数引擎。直接推论:Ak 对角线 = 回到自己的长 k 闭途径数;A2 的对角 = 度。
矩阵视角的立竿见影。① 图同构 ⇒ 谱相同(换基不换特征值)——「谱相同不同构」的反例存在(同谱图),谱是必要指纹不是充分;② 对称矩阵实谱 + 正交对角化——图论的线性代数福利立等可取;③ Perron–Frobenius(非负矩阵理论):λ1 单、对应正特征向量——连通图的「主声部」。
为什么值得整章?因为矩阵把「结构问题」变成「计算问题」:连通性、二部性、生成树计数、游走混合、重要性排序——全部落进特征值/向量的一口锅里。第五章说过「独立集是三线枢纽」,本章宣布:特征值是全书的枢纽。
★★★ 谱与图的不变量:第一批「声纹读法」。
| 谱特征 | 图的性质 | 理由一瞥 |
|---|---|---|
| λ1 = d | d-正则(连通时) | 全 1 向量是特征向量 |
| Σλi = 0 | (恒等式) | 迹 A = 0 |
| Σλi2 = 2m | 边数读谱 | 迹 A2 = 2m |
| 闭途径数 | 迹 Ak 给长 k 闭途径 | 三角形数 = 迹 A3 / 6 |
| λ_min 群律 | −λ_min ≤ λ1(对角 = 0 时) | 对称 + 零迹 |
第二条定理:二部性的谱刻画。连通图是二部图 ⟺ 谱关于 0 对称(λ 与 −λ 成对出现)。理由一瞥:二部图可分部重排为块矩阵 A = [0 B; BT 0],特征多项式 χ_A(t) = χ_B(t2)·(−t)n−2m?——直接版:向量 (x; −x) 是 A 对应 −λ 的特征向量当 (x; x) 对应 λ。第一章的 König 判据(无奇圈)如今有了代数等价物——奇圈是「谱不对称」的几何病灶。
第三条:连通性的谱刻画。λ2 > 0 ⟺ 连通(Laplacian 语言,下下页正式化)。「第二声部」的存在 = 整图一体。第一章 κ 的对抗语义(「要拆开需要几个点」)与谱的振动语义(「第二振动频率」)在此汇合——代数连通度 λ2 将成为本章的主角之一。
谱的「不充分性」警示。同谱非同构的反例从 4 点起就有(爪 K1,3 与 C3 + 孤点不同构却同谱?——经典最小对例是 5 点 Star 与 C4+孤点对,查正谱表——速查页给出)。谱是必要指纹:听得音色认不出人——这是谱方法的第一个天花板。
★★★★ 本章的发动机二号机。
能量形式的证明枢纽。xTLx = Σ边 uv (x_u − x_v)2(用 L = BBT 一行导出)。0 重数 = 分支数:x 常值于每分支 ⟺ 能量为 0 ⟺ 核维度 = 分支数。μ2 = min 能量/范数比(瑞利商)——「在正交于全 1 的约束下最难晃动」。一切谱切分、图 partition、扩张图讨论都从这里长出。
谱隙的两副面孔。本书统一用语:L 的 μ2(代数连通度)与随机游走的混合率(1 − 采样相关)是同一枚硬币——「信息扩散得多快」由它定价。第二章的星 K1,7 vs 完全图 K8 对比重演:两者都连通,但 μ2(K1,7) = 1 而 μ2(K8) = 8——桥点网络「一断全断」在谱上是「第二声部太低沉」。
应用速写。谱聚类(按 Fiedler 向量切图)、图像分割(归一化切,Shi–Malik 2000)、扩张图构造(挑战页)、同步稳定性(μ2 大则耦合振荡器同步快)。
★★★★ Matrix–Tree 定理:第二章 Cayley 公式的矩阵化收官。
为什么划哪都一样?L 的行和全 0 ⇒ 各余子式相等(伴随矩阵的统一性)。证明骨架(三点)。① 生成树 ↔ 「关联矩阵 B 的 n−1 列线性无关」(树的列满秩 = 无圈连通的代数等价——第二章六刻画的第 7 位成员!);② Binet–Cauchy:det(B′B′T) = (B′ 的 n−1 列组构成的基个数)2——对称化后 = 树数?精确版:τ(G) = det(B0B0T)(B0 为任去掉一行的关联矩阵);③ 展开即得余子式。「树 = 极小线性无关边组」是本章送给第二章的礼物反向。
三例验算(p181 实验真跑)。K4:L = 3I − J,余子式 det = 16 = 42 ✓(Cayley nn−2);C5:任何圈图 τ = n(划断一条即树,5 ✓);星 K1,7:树数 = 1(唯一的「全部辐条」)。
谱形式的优雅收笔。τ(G) = (1/n)·μ2μ3⋯μ_n(非零特征值之积 / n)——生成树个数是谱的函数:同谱图生成树数相同(谱不充分性的又一注脚)。
回望第二章。Cayley 的 nn−2 由 Matrix–Tree 直接给出:K_n 的 μ2⋯μ_n = nn−2?——K_n 特征 {n−1, −1×(n−1)},L 谱 {0, n×(n−1)},积/n = nn−2 ✓。第二章的「挑战页」(Cayley 矩阵证明)正是本页的伏笔——全书最长的一条伏笔回收。
★★★★ 谱的「动力学」兑现:图不只是结构,还是运动场。
二部病号的病理。P 的谱关于 ±1 对称(同 A 的对称论证)——λ = −1 的振动模不被衰减。第一章的 König 判据在动力学里的第三现身:无奇圈不仅是「可双色」「谱对称」,还是「醉汉能回家」的条件。
与电网络的等价(下页展开)。随机游走与电阻网络是同构的数学对象:图 = 电阻网络(每边 1Ω),两点间电压 = 游走命中概率;有效电阻 = 通量。Kirchhoff 的一篇 1847 论文同时是电网络、Matrix–Tree 与随机游走三家的祖坟。
混合速度的直觉账。星图 K1,n:游走者一半时间困在叶点与中心之间「折返」——混合慢(|λ2| → 1);扩张图(μ2 大):每步「横跨」一半点集——O(log n) 步混合。「快混」与「无瓶颈」是同一件事的两种说法——挑战页把这句话变成定理。
★★★ 电网络类比:Laplacian 的物理实现。
对照表(一图三世界的完整版)。
| 对象 | 图论 | 电网络 | 概率 |
|---|---|---|---|
| 度 d(v) | 关联边数 | 接地总电导 | 游走停留份额 ×2m |
| 电压 v | Fiedler 向量 | 节点电位 | 命中概率之差 |
| 电流流 | 切分流量 | Kirchhoff 定律 | 净游走通量 |
| 有效电阻 | 1/μ2 量级(全局) | R_eff(u,v) | 往返时间 C·R_eff |
两个可手算的明星结果。① 往返定理:从 u 出发回到 u 的期望时间 H(u,u) = 2m·R_eff(任意图!);K_n 上 = n−1(快)、路径图上 = Θ(n2)(慢)——电阻是「图的拥挤度」的物理计价;② Foster 定理:Σ边 R_eff(e) = n − 1(n 点连通电阻网络)——全图有效电阻的守恒账,谱账的又一变形。
为什么电网络是「谱的显微镜」?能量泛函 Σ(x_u − x_v)2 在电路里就是「焦耳热」;最小化热 = 电压自然分布 = Laplace 方程解。「谱 = 振动」「能量 = 热」「游走 = 粒子」三位一体——Laplacian 是它在数学上的统一名字,本册三个世界各取一个化身。
远眺。这层等价在当代极活跃:谱稀疏化(BSS 2011:任何图可被 O(n/log n) 条边的加权图谱近似——「电路简化定理」)、最大流的新算法(电网络流 – Christiano et al.)。Kirchhoff 的 1847 年论文至今在发新枝。
★★★★ 图论的「世界观升级」:从对象到系综。
第一条「典型」定理(对角线级)。a.a.s.:最大度差 ≤ 1?不——最大团约 2log1/p n、直径 ~ log n / log(np)、着色数 ~ n/(2log1/p n)(稠密情形)。随机图的每个「典型值」都可算——「典型图」是精确的数学对象。
方法论的血统。Erdős 1947 用「随机存在」证 Ramsey 下界(p138);1959 与 Rényi 把随机性从「工具」升格为「对象」:不是「用随机找图」而是「研究随机图的性质分布」。一篇 1959 论文(论随机图的演化)开创了整门学科。
为什么真实网络要跟它学?G(n,p) 是零阶模型:它给出「没有设计、只有随机」时的基线行为——真实网络的一切「反常」(小世界、幂律、社区)都是相对基线的偏离。先立基线、再谈反常——下一页的相变与下下页的小世界是这个方法论的两次示范。
★★★★ 随机图的相变定理——二十世纪数学最漂亮的画面之一。
方程 θ = 1 − e−cθ 的读法。「一个点属于巨分支的概率 = 它至少有一个已入巨分支的邻居」——不动点方程即自洽条件。c ≤ 1 只有零解;c > 1 冒出正解。临界现象的数学指纹:解的「无中生有」。物理学的二阶相变(水沸腾、磁化)同构——随机图给了相变一个可严格计算的玩具宇宙(重整化群方法的试验场)。
与第一章实验的精确对账(母题回收)。p36 的 200 人 400 边社交网络:平均度 c ≈ 4,远在临界之上 ⇒ a.a.s. 巨分支吞掉几乎全体 ⇒ 平均距离 = 小常数 3.21。当时的「实验事实」如今是「定理推论」——全册最大的伏笔之一在此兑现。
应用的望远镜。流行病阈值(R0 = 1 是 c = 1 的医学翻版)、互联网鲁棒性(随机失效 vs 定向打击的巨分支响应)、渗流理论(多孔介质、页岩油气)。「一敲全连、一断全崩」的临界敏感性,是复杂系统的宿命课。
★★★ 小世界:六度分隔的科学定谳。
从轶事到实验。1929 Karinthy 的文学遐想 → 1967 Milgram 实验(内布拉斯加居民把信件转给波士顿股票经纪人:中位 5–6 手)→ 1998 Watts–Strogatz 模型 → 2011 Facebook 全网实测(7.2 亿用户,平均 4.74)→ 2016 复测(15.9 亿用户,3.57)。六度从都市传说变成可复现的测量。
一行证明的直觉(波前账)。从一点出发 k 步可达约 dk 个点(波前指数膨胀,第一章 BFS 波前的随机版);覆盖 n 点需要 dk ≈ n ⇒ k ≈ log n / log d。n = 109、d = 30:log/leg ≈ 6.4?——以 e 为底 (ln 109)/(ln 30) ≈ 6.2——「六度」的数量级当场算出。真实社交网 d ≈ 100+:3–4 度 ✓ 与 Facebook 实测吻合。
Watts–Strogatz 的补充洞察(1998)。单纯随机图虽「小」但「乱」(聚簇系数极低);单纯规则环网「聚簇」但「大」(直径 ~ n)。「少数随机长边 + 大量局部短边」同时拿下两者——现实网络的结构配方:邻里关系 + 偶然远方。直径骤降的临界窗极窄——「加 1% 长边,世界缩小一个数量级」。
应用面。路由与搜索(Kleinberg:可导航的小世界需要「长边按距离幂律分布」)、疾病传播速度、谣言动力学、分布式网络的跳数设计。「世界很小」是波前膨胀的算术,不是诗意。
★★ 无标度网络与幂律:真实网络的第二反常。
反常在哪里?G(n,p) 的度是二项分布(典型点都「普通」);真实网络(万维网入链、合作网、代谢网)的度是幂律:P(d ~ k) ∝ k−γ(γ ≈ 2–3)——少数「枢纽」(hub)连接极端多的点,多数点极端冷清。「无标度」= 没有典型尺度 = 度的分布跨数量级(Barabási–Albert 1999 的命名)。
生成机制:富者愈富(优先连接)。BA 模型:网络逐点生长,新点以正比于现有度的概率连边。「受者更容易被新来者搭上」——一条极简的行为假设,解析给出幂律 γ = 3。与随机图的「人人等概率」对照:增长 + 偏好 = 幂律,两要素缺一不可。
幂律世界的性格(与随机图对照表)。
| 性质 | G(n,p) | 无标度网 |
|---|---|---|
| 典型度 | 都在均值附近 | 跨数量级(枢纽统治) |
| 平均距离 | ~ log n / log d | 更小:~ log log n(枢纽捷径) |
| 随机失效 | 平缓 | 极鲁棒(枢纽少而幸存) |
| 定向打击枢纽 | 平缓 | 骤然崩解(Achilles 之踵) |
鲁棒且脆弱(robust yet fragile)。无标度网对随机故障近乎免疫(枢纽被随机击中的概率小),对蓄意攻击却一击致命。互联网的防火墙、疫苗的优先级、反垄断的尺度——都是这个二维账本上的政策题。
谱的注脚。无标度图的 Laplacian 谱隙通常很小(枢纽制造瓶颈结构)——「鲁棒又脆弱」在谱上的读法:μ2 偏小而 μ_max 偏大。谱从不撒谎:结构的两副面孔它都记账。
★★★★ 特征值理论的产业级胜利。
三个思想内核。① 加权投票:入链是票,但票值随投票者的重要性变化——「被谁链接」压倒「被多少链接」;② 随机游走定义重要性:长期被游走者停留的概率 = 重要性(p160 的 π(v) 度数版升级为「传送修正版」);③ 传送项的双重使命:数学上保证不可约(Il 死胡同与蜘蛛陷阱都让矩阵退化)+ 现实上容忍「用户无聊跳走」。
与第五章的隐形握手。随机游走收敛性(p160 定理)保证幂法收敛;传送修正保证连通与非二部(消除周期病号)——「连通 + 非二部才收敛」的老定理在谷歌机房里天天被兑现。第五章的「一句话」在这里回声:图论给的从来是结构,谱给它定价。
谱方法的今天。Personalized PageRank(个性化传送 = 局部社区发现)、TrustRank(反作弊)、特征向量中心性(Katz、Bonacich)——一族「主特征向量方法」统治网络分析四分之一个世纪。「重要」从修辞变成方程。
★★ 社区发现一瞥:谱聚类与模块度。
什么是社区?内部边密、跨边稀的点群——「物以类聚」的网络版。应用:朋友圈划分、蛋白质复合体、舆情极化测量、供应链集群。「划分」是着色(第四章色类)的老母题在网络语境的还魂——只是这次我们想要「有意义的」划分而非「任意可行的」。
谱聚类(Shi–Malik 2000 / Ng–Jordan–Weiss 2001)。三步:① 算 Laplacian 的 Fiedler 向量(μ2 对应);② 按向量分量排序/符号切点;③ 递归或 k-means 细分。原理 = p158 的能量语言:Fiedler 向量是「最小能量摆动」的形状——沿它切图,切得最「省」(割边最少、内部最紧)。归一化割把「省」修正为「比例公平」——避免切下孤点。
模块度(Newman–Girvan 2004)。Q = (实际社区内边数 − 随机基线下的期望)/总边数:Q > 0.3 算「有社区结构」,逼近最大化 Q 即社区划分。Newman 自己把它谱化:模块度最大化的leading eigenvector 法——又一次,一个优化问题落进特征值的手心。
诚实的边界。「社区」没有公认定义(模块度有分辨率极限:小社区被吞并;谱方法对「弱社区」与「重叠社区」吃力);随机图基线(p162)提醒我们:任何划分方法在纯随机图上也会「发现」社区——先问显著性,再谈结构(社区发现的「可检测性相变」是当代活跃前沿)。
★★★ 图上的动力学:传染、同步与意见。
传染模型(SIS/SIR 的谱阈值)。每步感染邻居概率 β、康复概率 γ。谱阈值定理:疫情爆发 ⟺ β/γ 超过阈值 ~ 1/μ_max(A 的最大特征值)——「最毒的声部」决定传染的命运。免疫策略的最优化 = 砍 μ_max:给枢纽打疫苗(无标度网的打击软肋)优先于随机接种——PageRank 式重要性再次出现(这次是反向:找出来打掉)。
同步(Kuramoto 振荡器 + 耦合拓扑)。n 个振荡器相位 θ_i,耦合强度 K,网络拓扑 G。同步判据:K·μ2(L) 超过固有频率散布——「代数连通度买同步」:μ2 大的网络(扩张图)同步快而稳;星图的 μ2 小,中心一乱全网乱。电网功角稳定、萤火虫齐闪、心跳起搏细胞——同一个方程族。
意见动力学(DeGroot / voter 模型)。每人每步向邻居观点平均靠拢:收敛到共识 ⟺ 交互矩阵本原(非二部 + 连通——p160 收敛定理的翻版);最终共识 = 平稳分布加权的初始意见——「谁的声音留在共识里」由谱与度定。极化(两个吸收态)是「二部化」社交网络的动力学症状——回音室 = 谱上的「近似二部」。
本章动力学三条的统一句。图的结构决定过程的命运:μ_max 定传染,μ2 定同步与省切,非二部性定收敛——三个「命运判据」全是第六章前半的谱量。「容器决定性格」的最终形态:谱决定动态。
★★ 图神经网络一瞥:让机器读图。
问题。前面的方法(谱、PageRank、社区)都是「人设计特征、算法执行」;可节点还有自己的属性(用户画像、分子原子)、任务还有标签(哪些账户是欺诈?哪个分子有效?)。能不能让机器端到端地「读图学任务」?——图神经网络(GNN)。
消息传递范式(Gilmer et al. 2017 的统一视角)。每层:① gather——每个点聚合邻居的当前表示(加权和/最大/注意力权重);② update——与自身旧表示组合过非线性。k 层后,每点的表示「见过」k 跳邻域——「感受野随层数指数扩张」正是第一章 BFS 波前与 p164 小世界算术的机器学习版。GCN 的标准层与「归一化 Laplacian 的多项式滤波」等价(Kipf–Welling 2017 的谱解读)——GNN 的骨架依然是本章的谱。
任务三型。点级(欺诈检测、社交推荐)、边级(链接预测 = 「推荐关注」的学术名)、图级(分子性质:图分类,药物筛选的主战场)。AlphaFold 的蛋白质相互作用、材料发现中的晶体图——凡是「关系 + 属性」的数据,GNN 是默认起点。
谱的影子与边界。GNN 的表达能力有上限(WL 同构测试级——「图谱认不出的,它也难认出」);过平滑(层数过深所有点表示趋同 = 「向平稳分布收敛」的机器学习翻版)。六十年的谱理论仍是它的地基与边界说明书。
一句话。GNN = 「消息传递 + 学习聚合权重」;谱 = 它的物理;波前 = 它的时钟。本册的全部母题在机器里换了衣装,但骨骼未变。
★★★ 讲义 6.15:结语——连接的代数。
一张矩阵,两个方向。把图写成矩阵,是「结构 → 计算」:连通、二部、树数、游走、重要性……全部落进特征值的一口锅。把矩阵读回图,是「计算 → 洞见」:谱隙说鲁棒、Fiedler 向量说该在哪切、主特征向量说谁最重要。代数不是图论的翻译腔,而是它的第二母语。
本章概念的第二语言清单(期末对账)。
| 图论概念 | 谱第二语言 | 出处 |
|---|---|---|
| 连通分支数 | 0 的重数(L 谱) | p158 |
| 连通性 | μ2 > 0 | p158 |
| 二部性 | A 谱关于 0 对称 | p157 |
| 生成树数 | L 非零特征积 / n | p159 |
| 游走收敛 | |λ2(P)| 小 | p160 |
| 瓶颈/聚簇 | μ2 小 / 聚簇系数高 | p158/164 |
| 重要性 | 主特征向量 | p166 |
「容器决定性格」的终章裁决。本册的五次变奏:权性定搜索(BFS/Prim/Dijkstra)、面性定上限(平面图)、奇偶定着色与对偶、二部定匹配与收敛、谱性定动态(传染/同步/混合)——同一个图论母体,五种「容器」各发一次言。结构不是装饰,是命运的说明书。
下一站:综合站。余下十四页不再推进新定理,而做三件事:全册年表与人物(1736 柯尼斯堡到 2012 诺贝尔与 AlphaFold)、概念的全景关系图(谁生谁、谁证谁)、走向下一册的桥(抽象代数视角的图论:群作用、代数图论的正统前沿)。回望不是终点的仪式,是起跑的姿势。
★★ 常见误读:谱方法的四个误区。
误区一:「谱相同 ⟹ 图同构」。错。同谱非同构的反例从 5 点起就有(速查页附最小对例);谱是必要指纹而非充分指纹——「听音辨人」在图上只能排错,不能认人。一切「谱判定」的结论都只对「必要方向」负责。
误区二:「μ2 大就一定连通得均匀」。半对。μ2 大保证「无低频晃动」(无大规模瓶颈),但小尺度结构(桥、局部低密)可能藏在更高频段——μ2 是全局下界意义上的均匀,不是逐点均匀。扩张图页(p180)给出精确语言。
误区三:「PageRank 高 = 页面质量高」。混淆「重要性」与「正确性」。PageRank 度量的是链接拓扑中的游走停留份额——可被链接农场操纵(SEO 攻防)、随时间漂移、对新页面天然不利。它是「网络引力」,不是「真相度量」。
误区四:「真实网络 ≈ 随机图 G(n,p)」。零阶模型当真模型是当代最流行的滥用。G(n,p) 度均匀(无枢纽)、聚簇系数极低(无朋友圈)、无增长偏好——真实网络的三反常(幂律、高聚簇、小世界)全是相对它的偏离。基线是用来测偏离的,不是用来冒充现实的。
★★★ 例题 1(小图的谱手算)。求路径 P4 与星 K1,3 的邻接谱与 Laplacian 谱,并读出连通、二部、边数。
P4 的 A 谱(对称技巧)。P4 点序 1-2-3-4,A = 0-1 0 / 1-0-1 0 / 0-1-0-1 / 0-0-1-0。利用「对径对称」:设特征向量 (a, b, b, a)(对称)与 (a, b, −b, −a)(反对称)。对称组:λa = b, λb = a + b ⇒ λ2 − λ − 1 = 0 ⇒ λ = φ, −1/φ(黄金比!);反对称组:λa = b, λb = a − b ⇒ λ2 + λ − 1 = 0 ⇒ λ = 1/φ, −φ。A 谱 = {φ ≈ 1.618, 1/φ ≈ 0.618, −1/φ, −φ}。读数:谱关于 0 对称 ⇒ 二部 ✓(P4 无奇圈);Σλ2 = 2φ2 + 2/φ2 = 6 = 2m ✓(3 条边)。
P4 的 L 谱。已知 A 谱,L = D − A 在度不全等时不能直接搬——用「路图标准结果」:μ_k = 2 − 2cos(kπ/n) = 4 sin2(kπ/2n),n = 4:{0, 2−√2 ≈ 0.586, 2, 2+√2 ≈ 3.414}。读数:0 单重 ⇒ 连通 ✓;μ2 ≈ 0.586 很小 ⇒ 路是「低连通度」图(两头易断)——与第一章「路是链式脆弱结构」的直觉账目相符。
K1,3 的双谱。A 谱:中心与叶的对称分块——{±√3, 0, 0}(二部 ✓);L 谱:{0, 1, 1, 4}(连通 ✓;μ2 = 1)。P4 与 K1,3 的对照:同为 4 点 3 边的树,μ2 却 0.586 vs 1——同量不同质,谱把「链状」与「放射」分开(谱是比边数更细的指纹)。
★★ 习题课(一):谱与随机游走。五题手演。
S1.圈 C_n 的 A 谱是 2cos(2πk/n)(k = 0..n−1)。用谱读法验证:C_n 二部 ⟺ n 偶。cos 对称 ⟺ k 与 n−k 谱值成对取负 ⟺ 存在 k 使 cos = −1 ⟺ n 偶。
S2.证明:正则图中 μ2(L) = λ1(A) − λ2(A)。正则 ⇒ L = dI − A,特征值平移:μ_k = d − λ_k。
S3.路径 P_n 上从端点出发的随机游走「回家时间」的量级?与圈 C_n 对照。H(端, 端) ~ n2(一维游走的漫散),圈 ~ n——电阻语言:路径 R_eff ~ n,圈 R_eff ~ n/4?往返定理 H = 2m·R_eff 核账。
S4.星 K1,n 上随机游走:叶点到叶点的期望时间?为什么「醉汉讨厌星星」?叶→中心 1 步,中心→指定叶 1/(n+1)?——错,中心度 n+1?星 n+1 点:中心度 n、叶度 1。H(叶,叶) = 2 + H(中心,叶),H(中心,叶) ~ n——量级 Θ(n),游走大量时间「折返」。
S5.证明二部图上随机游走不收敛(分布周期振荡),并说明「加 15% 随机传送」如何治愈。λ = −1 模不衰减;传送项把最小特征值抬到 ≥ −(1−d)?——精确说修正矩阵的特征 ∈ [−(1−d), 1]?自验符号方向。
★★★ 例题 2(Matrix–Tree 演算)。用余子式与谱两条路,数 K4 减一边(「钻石图」)的生成树。
图形。4 点:边 12, 13, 14, 23, 24(K4 缺 34)——两个三角形共边 12。
路一:余子式。L = ⎡3 −1 −1 −1;−1 3 −1 −1;−1 −1 2 0;−1 −1 0 2⎤。划 4 行 4 列,算 3×3 行列式 M = ⎡3 −1 −1;−1 3 −1;−1 −1 2⎤:按第一行展开 3(6−1) − (−1)(−2−1) + (−1)(1+3) = 15 − 3 − 4 = 8。τ = 8。
路二:对称差数。K4 有 16 棵树(Cayley);含边 34 的树数 = 34 被使用的树 = 把 34 固定、其余任选——收缩 34 得 K3(3 点完全图)?收缩后 3 点、生成树数 32−2 = 3?含 34 的 K4 树 = 2×2 = 8?直接数:K4 的树是 16 棵,对称性下每条边出现在 τ(K4)·4/6 = 16·4/6 = 32/3?——不对(非整数!):边使用数不均匀?K4 是边传递的,每边使用数必相等 = 16·3/6 = 8 ✓(每树 3 边)。故缺 34 后树数 = 16 − 8 = 8 ✓ 两条路合龙。
路三:谱。钻石图 A 谱:{3, 1, −1, −1}(12 对角 + 三角特征)?验证:Σ = 2 ✓(迹 0?3+1−1−1 = 2 ≠ 0!重算:点 1、2 度 3,点 3、4 度 2。谱 = {3, 1, 0, −2}?——L 谱更直接:L = D − A;由「共边双三角」结构,L 谱 = {0, 2, 4, 4}? μ2μ3μ4/n = 2·4·4/4 = 8 ✓)。三路同归:τ = 8。
★★ 习题课(二):PageRank 迭代。五题手演。
S1.两个页面互相链接的 2 点网:写出 PageRank 并验证对称。r1 = r2 = 1/2;对称图对称得分。
S2.3 点链 A→B→C(单向):PageRank 谁最高?「链尾最高」反直觉吗?C 只有入链没有出链——死胡同!需传送修正兜底;不修正则 C 囤积全部质量(质量守恒破坏)。传送项的必要性在此现形。
S3.证明:PageRank 向量之和 = 1(概率分布),与 d 无关。对更新式两边求和:Σr = (1−d) + d·Σ_v Σu→v r_u/out_u = (1−d) + d·Σ_u r_u——自洽。
S4.d = 0 与 d = 1 的极端:得分各是什么?各自的病理?d=0:均匀分布(人人相等,投票无意义);d=1:无传送——死胡同囤积、陷阱周期化。0.85 是「信息保真 vs 数值健康」的工程折中。
S5.把 PageRank 用在「无人链的有向环」上会怎样?在「完全二部有向图」上呢?环上均匀;二部有向:游走周期 2?传送项压平周期——再次见到「非二部/本原性定收敛」。
★★ 本章地图:一地基、一基线、三应用。
地基:谱理论(6.1–6.6)。A 谱给不变量(连通、二部、边数、三角形数),Laplacian 给能量与混合,Matrix–Tree 给计数,电网络给物理。依赖链:6.1 途径计数 → 6.3 能量形式 → 6.5 收敛定理 → 6.6 等价网络。一条从「写矩阵」到「算电阻」的直线。
基线:随机图(6.7–6.10)。G(n,p) 立「无设计基线」:相变给临界敏感性、小世界给距离标尺、幂律给真实网络的反常清单。方法论:基线不是模型,是测量偏离的原点。
应用三线(6.11–6.14)。PageRank(主特征向量 = 重要性)、社区发现(Fiedler/模块度 = 划分)、动力学(μ_max/μ2/非二部 = 传染/同步/收敛三判据);GNN 把三者装进学习框架。
全书接口大合账。度(握手)→ 平稳分布;连通(κ, λ2)→ 代数连通度;树(Cayley)→ Matrix–Tree;二部(König)→ 谱对称与游走收敛;实验(p36 六度)→ 小世界定理。每一章都在矩阵里有一位「证人」出庭。
★★ 第六章小结(上):谱的语言。
概念清单。邻接谱(λi)与 Laplacian 谱(μi);代数连通度 μ2;谱隙(A 的 λ1−λ2 或游走的 1−|λ2(P)|);有效电阻与往返时间;Fiedler 向量。
定理清单。途径计数 (Ak)ij;二部 ⟺ A 谱对称;连通分支数 = μ=0 重数、连通 ⟺ μ2 > 0;Matrix–Tree(τ = 余子式 = 谱积/n);游走平稳分布 π = d/2m 与收敛定理;Foster(Σ R_eff = n−1)。
方法清单。对称分块手算小谱;九九表(路/圈/星/完全/完全二部);瑞利商(μ2 = 最小能量比);对称差与谱积双路数树。
谱的双向纪律(再次强调)。「图 → 谱」永远可行且忠实计算;「谱 → 图」只有必要方向——同谱非同构是谱方法的永久边界。用谱下结论时,永远注明走的是哪个方向。
一句话记住谱侧:0 的重数数分支,μ2 定抱团,对称定二部,谱积数树,|λ2(P)| 定混合,主特征向量定重要。
★★ 第六章小结(下):网络的语言。
概念清单。G(n, p) 与 a.a.s.;平均度 c 与巨型分支;小世界(log n / log d);无标度与幂律 γ ≈ 2–3;鲁棒且脆弱;PageRank 与传送。
定理清单。相变(c=1 两侧两个世界,θ = 1 − e−cθ);小世界定理;优先连接生成幂律(BA);PageRank = 平稳分布 = 主特征向量;传染阈值 ~ 1/μ_max;同步判据 K·μ2。
方法清单。波前账(dk ≈ n ⇒ 距离);不动点自洽(θ 方程);基线对照(真实网络的「反常」测量学);幂法迭代(PageRank 的可计算性)。
三个世界观级的教训。① 临界敏感性:复杂系统的性质在阈值附近剧变(巨分支、疫情、同步)——「渐变导致突变」有严格的数学形态;② 基线思维:没有随机基线,「反常」无从谈起——科学方法在网络科学的复刻;③ 结构与命运:拓扑参数(μ_max、μ2、幂指数)直接定价系统行为——「性格决定命运」在网络里是「结构决定动力学」。
一句话记住网络侧:c=1 分天下,波前算距离,富者愈富出幂律,游走平稳即排名,μ_max 管传染、μ2 管同步。
★★★ 思想卡:矩阵是图的另一种笔迹。
同一个三角形,可以画成三条弧,也可以写成 ⎡0 1 1; 1 0 1; 1 1 0⎤。两种笔迹记录的是同一个对象——但能问的问题不同:画法问「长什么样」,矩阵问「怎么算」。
翻译的红利清单(本章实证)。连通性从「搜索可达」变成「μ2 > 0」;树计数从「逐棵枚举」变成「一个行列式」;重要性从「声誉修辞」变成「主特征向量」;相变从「现象观察」变成「不动点方程」。每次翻译都把一个问题从「巧」变「稳」——巧解依赖灵感,稳解依赖结构。
翻译的代价(同样真实)。矩阵语言有「口音损失」:同谱不同构(音色 ≠ 人)、谱只给必要方向、μ2 掩盖局部瓶颈。每种笔迹都有盲区——高手的标志不是偏爱哪种笔迹,而是知道何时换笔:结构直觉用图、精确结论用谱、规模现实用网络模型。
全册的「换笔」编年史。七桥用「度」换掉「地图」(第一章);Euler 用「面」换掉「透视」(第四章);管梅谷用「配对」换掉「路线感」(第三章);Gale–Shapley 用「轮次」换掉「市场玄学」(第五章);Kirchhoff–PageRank 用「谱」换掉「结构修辞」(第六章)。数学史的一半,是换笔史。
本卡与第一张思想卡的对话。第一章问「抽象的代价与回报」:代价是丢掉细节,回报是看见结构。本章给出终审判决:换笔的回报 = 新笔迹自带的定理库;代价 = 旧笔迹的部分直觉失效。会换笔的人,两个定理库通吃。
★★★★ 挑战:谱隙与扩张图。把「μ2 大 = 无瓶颈 = 快混合」三句口号焊成一条定理链。
定义(扩张图 expander)。d-正则图族 {G_n} 称扩张图:n → ∞ 时 μ2 保持 ≥ ε > 0(谱定义;等价组合定义:任何点集 S(|S| ≤ n/2)的边界 |∂S| ≥ c·|S|)。「稀疏(正则度固定)却高度连通(无瓶颈)」的矛盾统一体。
任务一:證明谱 ⇒ 组合(Cheeger 不等式的图版)。μ2/(2d) ≤ 边扩张率 ≤ √(2dμ2)?——方向与常数自核(图中常用形式:(μ2/2) ≤ φ(G) ≤ √(2dμ2))。下界:对 Fiedler 向量按符号/阈值切分,能量账 Σ(x_u−x_v)2 ≥ μ2·方差——把「最小能量比」翻译成「任何割的边界」;上界:取指示向量测试瑞利商。
任务二:组合 ⇒ 混合。证明扩张图中从任意点出发 t 步后到达任意点的概率 ≥ 1 − (1−ε′)t 的量级——即 O(log n) 步「铺满」。每步波前至少按 (1+c) 膨胀(边界 ≥ c|S| 保证新点不断涌入)——dk 波前账的扩张图严格版。
任务三:构造一个扩张图族。随机 d-正则图 a.a.s. 是扩张图(概率法再次上岗——「随机地好」远比「显式地好」容易);显式构造的历史:LPS 图(Ramanujan 图,1988,Lubotzky–Phillips–Sarnak,谱最优!)——扩张图是「数论 × 图论 × 计算机科学」的三界杂交:Paley 图、群生成元、编码理论。
为什么扩张图是「完美的网络」?通信网络(低直径 = 快路由)、去中心化抽样(MCMC 加速)、密码学(随机性提取器)、纠错码——「稀疏而健壮」是工程对网络的最高赞美,谱隙是它的数学证书。
★★★ 把本章两大算法真跑一遍:Matrix–Tree 数生成树(K4 对拍 Cayley);PageRank 幂法迭代(5 页小网)。
def det(mat):
a = [row[:] for row in mat]
n = len(a); d = 1.0
for i in range(n):
p = max(range(i, n), key=lambda r: abs(a[r][i]))
if abs(a[p][i]) < 1e-12: return 0.0
if p != i: a[i], a[p] = a[p], a[i]; d = -d
d *= a[i][i]
for r in range(i + 1, n):
f = a[r][i] / a[i][i]
for c in range(i, n):
a[r][c] -= f * a[i][c]
return d
def num_spanning(n, edges):
L = [[0.0] * n for _ in range(n)]
for u, v in edges:
L[u][v] -= 1; L[v][u] -= 1
L[u][u] += 1; L[v][v] += 1
minor = [row[1:] for row in L[1:]]
return round(det(minor))
E4 = [(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)]
print("K4 生成树数 =", num_spanning(4, E4), "(Cayley: 42=16)")
E5 = [(0,1),(1,2),(2,3),(3,4),(4,0)]
print("C5 生成树数 =", num_spanning(5, E5), "(圈:5)")
def pagerank(n, edges, d=0.85, iters=60):
out = [0] * n
for u, v in edges: out[u] += 1
r = [1.0 / n] * n
for _ in range(iters):
nr = [(1 - d) / n] * n
for u, v in edges:
nr[v] += d * r[u] / out[u]
r = nr
return r
E = [(0,1),(0,2),(1,2),(2,0),(3,2),(3,0),(4,0),
(4,2),(4,3),(3,4)]
r = pagerank(5, E)
print("PageRank:", " ".join("%.3f" % x for x in r))
print("排序:", " > ".join("P%d" % (i + 1)
for i in sorted(range(5), key=lambda k: -r[k])))
实跑输出:
K4 生成树数 = 16 (Cayley: 42=16) C5 生成树数 = 5 (圈:5) PageRank: 0.365 0.185 0.366 0.042 0.042 排序: P3 > P1 > P2 > P4 > P5
★★ 格物札记:从 Kirchhoff 到 Google。
1847:大学生的论文。Gustav Kirchhoff 23 岁发表电路定律,附带证明了 Matrix–Tree 定理——为了算电阻网络的等效电阻,他顺手续了图论最老的悬案(生成树计数)。物理学向数学「借笔」的第一批战果。
百年接力。1890s Poincaré 把电路方程写成矩阵;1920s–30s 谱图论成形(Collatz 之「图的特征值」);1959–60 Erdős–Rényi 让随机图给网络立基线;1973 Fiedler 命名「代数连通度」;1996–98 Spielman–Teng 的谱稀疏化与近线性算法让「电阻」可大规模计算。一条从电路到算法的笔迹,画了一百五十年。
1998:两次落地。Brin 与 Page 的论文只有十几页,把「链接即投票」写成主特征向量——Google 的初始引擎;同年 Kleinberg 发明 HITS(双特征向量:hub 与 authority)——特征向量从教科书走进每个人的搜索框。今天任何一次检索、推荐、社交排序背后,都站着 1847 年那个 23 岁青年写下的矩阵方程。
「无用之用」的三段式。纯数学的矩阵谱理论(19 世纪)→ 物理与化学的图形谱(20 世纪中)→ 产业与机器学习的主战场(20 世纪末至今)。每一次落地都发生在理论「沉睡」几十年之后——Kirchhoff 没有预见到 Google,Erdős 没有预见到社交网络测量。理论的价值不以落地时刻的掌声计价,以「到时它在」的确定性的计价。
札记的结论。本册以柯尼斯堡七桥开场(一个城市的散步问题),以 Google 收尾(一个星球的信息组织)——两端之间是同一个数学对象「图」的两百年变形记。「连接」的数学,恰好也是「连接」的历史。
★★ 速查:第六章概念与公式。考前一页纸,逐条过。
| 对象/定理 | 陈述(速记) | 备注 |
|---|---|---|
| 途径计数 | (Ak)[i][j] = 长 k 途径数 | 矩阵乘法 = 走一步 |
| 谱读数 | Σλ2=2m;迹 A3/6=三角数 | 谱是必要指纹(同谱≠同构) |
| 二部性 | A 谱关于 0 对称 | 奇圈是病灶 |
| Laplacian | L = D − A;xTLx = Σ(x_u−x_v)2 | 能量语言 |
| 代数连通度 | μ2 > 0 ⟺ 连通;重数0 = 分支数 | Fiedler 1973 |
| Matrix–Tree | τ = L 余子式 = μ2⋯μ_n / n | Kirchhoff 1847;K_n: nn−2 |
| 随机游走 | π(v) = d(v)/2m;收敛 ⟺ 连通+非二部 | 速率 |λ2(P)| |
| 有效电阻 | H(u,u) = 2m·R_eff;Σ R_eff = n−1 | Foster;电网络 = 谱显微镜 |
| 相变 | c < 1 碎 / c > 1 巨分支 θ=1−e−cθ | 临界 c = 1 |
| 小世界 | 距离 ~ log n / log d | 波前膨胀的算术 |
| 幂律 | P(k) ∝ k−γ;增长+优先连接 | 鲁棒且脆弱 |
| PageRank | r = (1−d)/n + d·Σ r_u/out_u | 主特征向量;幂法 |
| 动力学判据 | 传染 ~1/μ_max;同步 K·μ2;收敛 非二部 | 结构定命运 |
易忘三则。谱只给必要方向;传送项管死胡同与周期;G(n,p) 是基线不是模型。
小谱九九表。K_n:{n−1, −1×(n−1)};Km,n:{±√(mn), 0×(m+n−2)};C_n:2cos(2πk/n);P_n:2cos(kπ/(n+1));星 K1,n:{±√n, 0×(n−1)}。
★★★ 讲义 6.16:全册回望——正文收官。
六章的合账。第一章把连接变成对象(度、握手、搜索);第二章找最小骨架(树、Cayley、MST);第三章问拆与走(割、Menger、Euler、Hamilton、最短路);第四章看画与涂(平面、四色、着色);第五章配对与必然(匹配、Hall、稳定婚姻、Ramsey);第六章写进矩阵(谱、随机图、PageRank、GNN)。六块拼图合起来是一句话:图论是「关系」的形式科学。
贯穿全书的三条暗线(最后一次点名)。① 对偶:Menger、最大流最小割、König、面点对偶——「一侧的最大 = 另一侧的最小」;② 双计数:握手、3F = 2E、Hall 的账、正则推论——「每物两侧」的会计学;③ 换笔:度换地图、面换透视、矩阵换画稿、概率换确定性——「笔迹决定问题库」。
五次「容器决定性格」变奏的终审。权性定搜索(1/单步/累计)、平面性定上限、奇偶定着色与对偶、二部定匹配与收敛、谱性定动态。结构不是描述,是命运。
走向综合站(p185–198)。接下来的十四页:年表与人物(1736–2016)、概念全景关系图、误读总清算、三组终局挑战(真跑实验、开放问题远眺)、评讲与速查。综合站不为考试,为告别——把六年的朋友一个个叫到台前,看清他们的脸。
★★★ 正文六章到此合龙。综合站不再引入新定理,做三件事:回望、动手、合账。
回望(p186–p190)。年表把 1736–2016 的图论大事与人物排成一条河;两篇札记提炼「抽象的三次跃迁」与「算法-结构-计算」的三角;概念总图把全书概念画成一张网,方法决策树回答「拿到图问题先问什么」。
动手(p191–p194)。两个综合实验(谱方法、随机图相变)把第六章的两台发动机真跑起来;终极挑战冲一次 Ramsey 数的边界;六道跨章大题要求把多个章节的工具拼装到同一道题上——单章通了不算通,跨章通才算通。
合账(p195–p198)。二十四问评讲自查(每章四问),全册小结与余韵(图论的地平线),全书速查总表——考前一页纸的终极版。
读法建议。若时间紧:p190 决策树 + p191–192 实验 + p198 速查是「最小闭环」;若时间足:按顺序走完,在 p197 的余韵处稍作停留——那里有本书真正想说的话。
★★★ 全景回望:图论的年表与人物(1736–2016)。
| 年代 | 事件与人物 | 本册坐标 |
|---|---|---|
| 1736 | Euler 解七桥(柯尼斯堡) | 绪论 · p2 |
| 1847 | Kirchhoff:电路定律 + Matrix–Tree | 六章 · p159 |
| 1852–1890 | 四色猜想 → Kempe 错证 → Heawood 证伪 | 四章 · p105 |
| 1930s | Kuratowski(1930)、Ramsey(1930)、Hall(1935) | 四、五章 |
| 1941–1959 | Brooks 定理;Erdős–Rényi 随机图;Kuhn 匈牙利算法 | 四、五、六章 |
| 1957–1965 | Berge 匹配理论;Gale–Shapley;Edmonds Blossom 与「好算法」宣言 | 五章 · p130 |
| 1962–1976 | 管梅谷中国邮路;四色定理(Appel–Haken 机器证明) | 三、四章 |
| 1973–1988 | Hopcroft–Karp;Fiedler 代数连通度;Ramanujan 图(LPS) | 五、六章 |
| 1998 | PageRank(Brin–Page);Watts–Strogatz 小世界 | 六章 · p166 |
| 2012 | 诺贝尔经济学奖(Roth:市场设计) | 五章 · p152 |
| 2016–今 | Facebook 六度实测 3.57;GNN 兴起;R(5,5) 仍悬 | 五、六章 |
人物侧写三帧。Euler——失明后仍以心算完成论文,七桥判决是「位置几何」的第一声啼哭;Erdős——无居所、无职位的「游牧院士」,概率方法的布道者,与五百余人合著(Erdős 数成为学术界的亲缘单位);管梅谷——曲阜师范的青年教师,一篇论文让「中国邮路」成为唯一以中国学者工作命名的基础问题。
年表的一句话读法。图论的两百年是「一个散步问题 → 一门结构科学 → 一层文明基础设施」的三级跳——而每一级的台阶,都由上一级最朴素的结论铺成。
★★ 札记一:抽象图论的三次跃迁。
第一次:从桥到图(1736)。七桥问题的答案不在桥的长短宽窄里,Euler 把陆地缩成点、桥缩成线——抽象的代价是丢掉几何,回报是看见「度」。这次跃迁确立图论的方法论底色:先问「哪些细节与本问题无关」,再把无关者果断丢弃。
第二次:从图到空间(1930s)。Kuratowski 说非平面性只有两个病根,Whitney 说 2-连通图的嵌入唯一,Euler 公式把图与多面体焊在一起——图论发现自己竟是拓扑学的离散祖先。这次跃迁的回报是「嵌入」「对偶」「曲面」的整套语言:图的命运不只写在邻接表里,也写在它能住进什么空间里。
第三次:从结构到计算(1950s–1970s)。Edmonds 发出「好算法」宣言(多项式时间 = 数学上的「可行」),Gale–Shapley 把配对变成程序,四色定理把「证明」部分外包给机器。这次跃迁的回报是图论与计算机科学的合流——P/NP、复杂度、近似算法从此成为图论的日常语法。
三次跃迁的公共结构。每次都是「丢掉一些东西,得到一个更大的世界」:丢几何得度数、丢画稿得空间、丢手算得算法。抽象从来不是逃离现实,而是换一个能看见更多现实的观察点——第一章思想卡的承诺,至此三次兑现。
下一次跃迁在哪里?GNN 让机器自己「读图」;量子计算重新定义「可行」;高维与动态网络挑战静态理论。第四次跃迁的胚芽已经埋下——它的抽象原则,仍将是「问什么无关、什么要紧」。
★★ 札记二:算法、结构与计算的三角。
三角的第一边:结构 ⇄ 算法。本册反复见证「结构定理变现为算法」:Menger 的对偶变现为增广路的停机证词、块割树变现为平面性检测的骨架、Euler 判据变现为 Hierholzer 的缝合程序、Matrix–Tree 变现为一个行列式。结构不是算法的装饰,是算法的正确性来源——没有定理背书的循环只是祈祷。
第二边:算法 ⇄ 计算。好算法宣言(多项式 = 可行)之后,图论与计算复杂性结婚:Euler 易而 Hamilton 难、2-SAT 易而 3-SAT 难、χ′ 候选二值而判定 NP 完全——「容易」与「极难」的悬崖成为图论版图的一部分。Ramsey 数 R(5,5) 与四色定理是这面悬崖的两个纪念塔:一个人类仍算不动,一个人类已经交给机器。
第三边:计算 ⇄ 结构。计算结果反过来重塑结构认知:随机图相变的模拟让我们「看见」临界点、PageRank 的迭代让「重要性」成为可测量、Facebook 的 7.2 亿人实验让六度变成 3.57。大规模计算是新型望远镜——它不证明定理,但指出该证什么。
三角的圆心。三边互动的圆心是「问题」:七桥是问题、婚配是问题、检索是问题。图论两百年最稳的立场:从真实问题出发,经抽象获得结构,用结构成就算法,让算法回到问题。本册的结构(每章问题先行)正是这个三角的教具化。
★★★ 概念总图:把全册收成一张网。
六环的因果链(沿箭头读)。度与搜索(一)给出树(二);树给出遍历的秩序(Hierholzer、最短路树)(三);遍历之外的约束「画得出」给平面与着色(四);着色的「划分」语言引出匹配的「配对」语言(五);全部结构在矩阵里获得第二语言(六)。环之所以成环:第六章的谱把第一章的度重新定价(π = d/2m),尾首相接。
三个枢纽概念(全网的高铁站)。① 二部性:连通着色(χ=2)、匹配舞台(Hall)、游走收敛(非二部)、谱对称——四章共用;② 度:握手引理、平面平均度 < 6、Euler 判据、平稳分布——五章共用;③ 对偶:割-路、匹配-覆盖、面-点、primal-dual——贯穿到底。抓住枢纽,六章就不再是一串孤立故事。
使用建议。复习时把本图当「地图」用:从任意一环出发,先复述该环三概念,再沿箭头问「它如何喂给下一环」——六环走完,全书即成体系。
★★★ 方法决策树:把六章压缩成三问。
Q1(问题类型)。存在性(「有没有」):先查判据库——Euler 判据(度数账)、Hall 条件(邻居账)、Kuratowski(禁手)、二部判据(奇圈);判据在则证存在,判据败则构造反例。最优化(「最多/最少」):先找对偶——最大流最小割、匹配-覆盖、MST 的切定理——对偶给出「上界即下界」的夹逼。动态(「会怎样」):先看谱——μ2 定同步、μ_max 定传染、|λ2(P)| 定混合。
Q2(容器特性)。同一问题在不同容器里难度天差地别:匹配在二部图多项式、一般图要 Blossom;着色在平面图 ≤ 4、一般图 NP 完全;最短路非负权贪心、负权 Bellman。先问容器的特性(权?平面?二部?稠密?),再选定理与算法——「容器决定性格」的操作化。
Q3(证词需求)。答案之外要不要证据?对偶结构(König、最大流)天然附赠证书;Hall 违反子集指出「卡在谁身上」;Kuratowski 细分给出「为什么画不出」。工程里「失败证词」常比成功更值钱——它说明下一步修哪里。
三问的元教训。图论的工具从不按章节排队,只按问题排队。拿到问题的第一分钟,问类型、问容器、问证词——三问之后,已经站在了正确的章节门口。
★★★★ 综合实验一:谱方法真跑——生成树计数与谱隙。把第六章两件谱武器(Matrix–Tree、代数连通度)在一页里真跑对拍。
import numpy as np
def lap_spec(n, edges):
L = np.zeros((n, n))
for u, v in edges:
L[u][v] -= 1; L[v][u] -= 1
L[u][u] += 1; L[v][v] += 1
ev = np.sort(np.linalg.eigvalsh(L))
return [round(x, 3) for x in ev]
K4 = [(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)]
C6 = [(0,1),(1,2),(2,3),(3,4),(4,5),(5,0)]
star = [(0,1),(0,2),(0,3),(0,4)]
print("K4 L 谱:", lap_spec(4, K4))
print("C6 L 谱:", lap_spec(6, C6))
print("星K1,4 L 谱:", lap_spec(5, star))
实跑输出:
K4 L 谱: [-0.0, 4.0, 4.0, 4.0] C6 L 谱: [-0.0, 1.0, 1.0, 3.0, 3.0, 4.0] 星K1,4 L 谱: [0.0, 1.0, 1.0, 1.0, 5.0]
★★★★ 综合实验二:随机图真跑——相变与巨型分支。并查集建图 + 多组模拟,把 Erdős–Rényi 的临界现象跑展示。
import random
def giant_frac(n, c, trials=20):
fs = []
for t in range(trials):
random.seed(t)
p = c / (n - 1)
parent = list(range(n))
def find(x):
while parent[x] != x:
parent[x] = parent[parent[x]]; x = parent[x]
return x
for u in range(n):
for v in range(u + 1, n):
if random.random() < p:
ru, rv = find(u), find(v)
if ru != rv: parent[ru] = rv
from collections import Counter
fs.append(max(Counter(find(i)
for i in range(n)).values()) / n)
return sum(fs) / len(fs)
for c in [0.5, 0.9, 1.0, 1.2, 2.0, 4.0]:
f = giant_frac(1000, c)
x = c
for _ in range(50):
x = 1 - pow(2.718281828, -c * x)
th = x if x > 0.01 else 0.0
print(f"c={c}: 模拟={f:.3f} 理论={th:.3f}")
实跑输出(n = 1000,20 组平均):
c=0.5: 模拟=0.011 理论=0.000 c=0.9: 模拟=0.043 理论=0.000 c=1.0: 模拟=0.069 理论=0.038 c=1.2: 模拟=0.267 理论=0.314 c=2.0: 模拟=0.790 理论=0.797 c=4.0: 模拟=0.981 理论=0.980
★★★★ 终极挑战:Ramsey 数的边界冲刺。把 p138 的已知版图推进一小步——亲手把 R(3,5) 的界压到 14。
任务一:下界 R(3,5) ≥ 14(构造 13 点染色:无红三角、无蓝 K5)。构造语言:点集 ℤ13,红边 = 差为二次剩余集的倍数?——具体提示:红边取差 ±1, ±5(13 阶循环图 C13(1,5)),蓝边为其余差(±2, ±3, ±4, ±6)。验证义务:红图无三角(差集 {1,5} 内任意两元素之差不在集合中?——差 5−1 = 4 ∉ {±1, ±5},差 −1−5 = −6 ∉,差 1−(−1) = 2 ∉——三个差逐一验完);蓝图无 K5(任 5 点中必有红边——等价于红图的独立数 ≤ 4,用「13 点、红度 4、无三角 ⇒ α ≤ ?」的 Hoffman 式估计或手工分类验证)。
任务二:上界 R(3,5) ≤ 14(递推 + 岔路)。由 Ramsey 递推:R(3,5) ≤ R(2,5) + R(3,4) = 5 + 9 = 14 ✓(R(2,5) = 5 平凡——红邻数与蓝邻数的两岔论证完整写出,注意「红邻 ≥ 5 时内部红 K3?不——红邻 5 点中若红边即红三角、若全蓝即蓝 K5——一条岔路直接出结果;蓝邻 ≥ 9 时用 R(3,4) = 9)。
任务三(开卷远眺)。查证 R(3,5) = 14 的现代定谳(Grinstead–Roberts?——实为 Grinstead & Roberts 1982 或更早的 Kalbfleisch):14 与 14 相遇,精确值落定——对比 R(5,5)(43–48)的深渊,体会「非对角 Ramsey 比对角 Ramsey 温和」的规律。
★★★★ 综合习题:六道跨章大题。每题需两个以上章节的工具联合作战。
T1(一×三×六).证明:连通图 G 的邻接谱满足 λ1 > 0 且对应特征向量可取全正;若 G 非连通则重数 0 的情形如何?与 Laplacian 的 0 重数对照。Perron–Frobenius 连通版;L 的 0 重数 = 分支数,A 无此性质——两谱的「分工」。
T2(二×三).Kruskal 用并查集实现时,若把「按秩合并」去掉(只做路径压缩),最坏复杂度变成什么?构造一个退化序列说明。O(log n) 的保障来自秩;退化成链时 find 退化——并查集的复杂度证明是「树高度」的账(第二章的结构 + 第一章的 DFS 高度)。
T3(三×四).证明:任何平面图都有 6-着色(用第三章的「贪心锁定」语言重写五色证明的前半,并用第四章的边数上限供弹)。δ ≤ 5 ⇒ 归纳删点 → 逆序贪心上色:6 色恒有余——「删除-恢复」与 Kempe 无关的更弱版本。
T4(四×五).轮图 W6(C5 加中心)的匹配数与色数各是多少?二部吗?它的点覆盖是哪些点?ν = 2(5 个奇数点……?算);χ = 4;非二部(奇圈);König 不适用(非二部)——τ 与 ν 是否相等(对偶失效现场)。
T5(五×六).随机图 G(n, c/n) 在 c > 1 时巨分支内的诱导子图平均度约多少?由此说明「巨分支像一棵超大树(第二相 c = 1 处趋于树状)」。巨分支内边 ≈ 点 − 圈亏格 → 平均度 → 2;「临界树上相变」是随机图理论最深一章。
T6(全书).从「七桥」到「PageRank」,列举三个「同一数学结构服务两个时代」的例子,并说明两个时代各自问的问题是什么。度(一笔画/枢纽影响力)、生成树(电路冗余/网络可靠性)、谱(分子振动/网页排序)——答案开放,论证要紧。
★★★ 评讲与自查:二十四问。每章四问,遮住答案自测——答不出的回本章速查页。
第一章。① 握手引理的直接推论(奇点偶数个)怎么用?② 途径 ⊃ 迹 ⊃ 路的「提炼」依据?③ κ ≤ λ ≤ δ 的每步不等号来源?④ BFS 与 DFS 的「性格差异」各一句?(奇点记账 / 首次重复必成圈 / Menger 的影子 / 层进 vs 探底)
第二章。① 树的六刻画背得出几条?② Kruskal 的切定理依据?③ Prüfer 序列与 Cayley 的关系?④ 并查集复杂度中的 α(n) 是什么?(5 条以上合格 / 任何跨切的最小边必属某 MST / nn−2 的双射证明 / 反阿克曼——近常数)
第三章。① Menger 定理的两个版本与一句对偶读法?② Euler 回路与途径的判据各一句?③ Dijkstra 为什么要求非负权?④ Hamilton 难在哪一句行话里?(分离 = 不相交 / 全偶 / 恰 2 奇 / 锁定翻案 / 局部不可核销)
第四章。① Euler 公式与两个边数上限?② K5、K3,3 各死于哪条上限?③ 五色证明的三个关键零件?④ χ′ 的二分与判定难度?(3V−6 / 2V−4 / 9 > 8 / δ≤5 + Kempe 链 + 平面隔开 / {Δ, Δ+1} 但 NP 完全)
第五章。① Berge 判据与增广路翻转?② Hall 条件的准确形态(每个子集!)?③ GS 的最优性不对称?④ R(3,3) = 6 的两侧证明各一句?(无增广即最大 / |N(S)| ≥ |S| / 男优女劣 / 鸽笼 + C5 反例)
第六章。① 途径计数公式?② μ2 的两个名字与两个读法?③ 相变临界与巨分支方程?④ PageRank 的传送项双使命?(Ak / 代数连通度-第二声部 / c=1,θ=1−e−cθ / 数学兜底+用户跳走)
★★★ 全册小结:连接的语法。
一本词典的收尾。197 页走过的路,可以压缩成一部小词典:名词——点、边、度、树、圈、面、匹配、团;动词——搜索、增广、着色、嵌入、游走;语法——判据、对偶、双计数、归纳、贪心;修辞——反例、换笔、抽象。「连接」从此不再只是日常词,而是一整套可推理的语法。
六句话带走六章。① 连接有账目(度与握手,一切从计数开始);② 骨架有价格(MST 与贪心的合法性);③ 遍历有判决(Euler 易、Hamilton 难的悬崖);④ 画法有约束(平面性与四色);⑤ 配对有判据(Hall 与增广的构造性);⑥ 结构有声音(谱把一切翻译成代数)。
三条暗线的最后重申。对偶(一个数的两副面孔)、双计数(每物两侧的会计学)、换笔(笔迹决定问题库)——它们不属于任何一章,因为它们属于每一章;下一次在别的数学分支遇到它们(LP 对偶、傅里叶对偶、同调对偶),相认。
与相邻领域的接口。本册是「九章格」大学段图论分册;抽象代数分册的同调思想(第三章札记的伏笔)、群论分册的对称性(Ramanujan 图的群构造)、分析分册的算子(Laplacian 的无穷维化)都是它的下游。图论是离散与连续的翻译官——在本册学到的每一件工具,都将在邻册换装再登场。
★★ 余韵:图论的地平线。
地平线一:纯粹侧。Ramsey 数的深渊仍在(R(5,5) 的 43–48 已沉睡三十年);Hadwiger 猜想(团细分的着色理论大一统)仍开放;图同构问题的真实复杂度仍悬而未决(Babai 2016 的准多项式是近年最大进展)。「简单问题 + 艰难证明」的图论版图还在扩张。
地平线二:计算侧。近乎线性的最大流(2022 年后的 algorithmic 突破,谱技术唱主角)、图同构的准多项式、GNN 的表达能力理论——谱方法是这一侧的公共语言:本册 p158–p166 的每一个量都在当代文献里活跃。
地平线三:物理与生命侧。量子网络的纠缠图、蛋白质相互作用网络的社区结构、神经网络的连接组(connectome)、生态系统食物网的鲁棒性——凡是「相互关系」构成的世界,图论是母语法;相变、渗流、同步的判据已在实验数据里反复出庭。
地平线四:自己的侧。本册的每个实验(BFS 六度、Kruskal、Hierholzer、Welch–Powell、匈牙利、Matrix–Tree、相变模拟)都只有几十行代码——图论是「随手可验」的数学:装一个 Python,就能复现两百年;改一个参数,就能撞见未知。地平线不在远方,在下一次运行里。
最后的最后。1736 年,Euler 在柯尼斯堡的桥上没有找到答案——他找到了问题的新形状。愿合上本册之后,遇到任何纠缠的关系网络时,第一反应不再是「好乱」,而是:「先把它画成图,再问对的问题。」
★★ 全书速查:公式与定理总表。终极一页纸,六章浓缩。
| 章 | 核心定理/公式 | 速记 |
|---|---|---|
| 一 | Σd = 2m;κ ≤ λ ≤ δ;二部 ⟺ 无奇圈 | 握手 / Whitney / König |
| 一 | BFS/DFS O(V+E);波前定理;括号定理 | 线性搜索双雄 |
| 二 | 树六刻画;Cayley nn−2;MST 切定理 | 骨架三件套 |
| 二 | Kruskal O(m log n);并查集 α(n) | 贪心 + 纤维 |
| 三 | Menger:分离 = 不相交;最大流 = 最小割 | 对偶双塔 |
| 三 | Euler 全偶度;Dirac δ ≥ n/2;Dijkstra 非负权 | 遍历与短路 |
| 四 | V−E+F=2;E ≤ 3V−6(2V−4);Kuratowski | 平面三连 |
| 四 | χ ≤ Δ+1;五色可手证、四色机证;χ′∈{Δ,Δ+1} | 着色四件 |
| 五 | Berge 增广;Hall 逐子集;König ν=τ | 匹配三定理 |
| 五 | GS 男优女劣;R(3,3)=6;R(5,5)∈[43,48] | 配对与必然 |
| 六 | Ak 数途径;μ2>0 连通;τ=μ2⋯μ_n/n | 谱三件 |
| 六 | c=1 相变;距离~log n/log d;PageRank=主特征向量 | 网络三件 |
三次提醒(全书最易忘)。对偶只在合适容器成立(二部/平面/单边权);谱结论只走必要方向;基线模型不是现实模型。
全书终。感谢同行 197 页。愿「连接」从此对而言是一门语言——有名词、有语法、有修辞,而且,永远可以真跑。