这不是一本教材,而是一册入门书:全书只讲一件事——组合设计,即「在平衡约束下把点安排进块」的学问。它回答的问题朴素而深刻:十五名女生每天三人一组散步,怎样安排才能七天之内任何两人恰好重遇一次?三十六名军官按等级与团队排方阵,为什么排不出来?七个点用七条线连起来让每两点恰在一条线上,为什么非是 Fano 平面不可?什么样的参数 (v, k, λ) 能造出平衡设计,什么样的参数被数学永久拒绝?从 Kirkman 的女生散步(1850)、Steiner 的三元系、Euler 的三十六军官,到 Bose–Shrikhande–Parker 的历史性翻案(1959–60)、Witt 的五重设计宏构、Golay 码与 Mathieu 群,再到 Keevash 的存在性大定理(2014),组合设计的语言贯穿了数学的许多角落。全书按章组织:绪论用三个历史问题提炼出统一语言;第一章建立 BIBD 五参数、两条计数恒等式、关联矩阵与 Fisher 不等式;第二章走向对称设计与差集、Singer 定理与 Bruck–Ryser–Chowla 拦截;第三章攻克 Steiner 系与 Kirkman 女生问题;第四章解开正交拉丁方之谜;第五章攀登 t-设计与 Witt 设计的高峰;第六章让码与设计合流;综合站用年表、人物谱、方法总图、实验与自查收束全书。
写作的三条约束(本书的自我要求)。① 直觉与图形先行:每一个概念都从一张图、一个具体的小例子讲起——先看见七点三线的 Fano 图、十五女生的七日表、差集在圆圈上的平移舞步,再抽成定义;每一个定理先有「为什么它是对的」的直觉,再有完整的证明。② 一步一图:凡能画的都画——关联结构的点线图、恒等式的双账对照图、差集的循环平移图、射影平面的几何景象、码与设计的互译流程。组合设计最漂亮的地方正藏在「账本—图形—群」的对照里:一条定义、一句定理,画出来便一目了然。③ 自给自足:所需工具在书内随用随补(同余与初等数论、线性代数的矩阵与秩、群论的基本语汇、有限域的一点常识),不假设手边另有教材;个别深刻结论(如 Ray-Chaudhuri–Wilson 定理、Keevash 存在定理)给出精确陈述、证明思路与文献指引,计算对拍在实验页随附。
页型节奏。每章以 导引 开篇(一页说清这一章要解决什么);主体是 讲义 页(概念、定理、证明,一步一图);每章配 例题 与 习题(末附提示);每章收在 地图(依赖关系)+小结+思想卡(把技术升成观念)+挑战与实验(动手核验);另有 〖札记〗格物札记做中西数学传统的对照。每页右上角标页码,页眉灰色小字标出所属章与小节。
难度标记。讲义页首行用 ★–★★★★★ 标出阅读难度:★ 高中基础即可,★★ 需要同余与计数的基本功(书内自给),★★★ 需要线性代数(矩阵、秩、特征值,书内自给),★★★★ 需要群论与有限域的一点经验(书内自给),★★★★★ 需要 单群分类与编码理论的深水区(第六章与综合站余韵)。若只求理解主线,读绪论、第一章、第二章的差集、第三章的女生散步与第四章的军官问题即可;若求完整掌握,按章顺序逐页推进,并把每章习题做完。
三条线索贯穿全书:
① 明线——从一张课程表到 Witt 设计:先在生活场景里看见「安排」(绪论),学会记账与计数(第一章),再依次征服对称设计(第二章)、三元系(第三章)、拉丁方(第四章)、五重设计(第五章),最后接到纠错码与 Mathieu 群(第六章)——这正是组合设计一百七十年从「趣味难题」长成「现代数学枢纽」的轨迹。
② 暗线——平衡与拦截的拉锯。每一组参数都要先过「账本关」:三条计数恒等式、可除性、Fisher 不等式、Ray-Chaudhuri–Wilson 不等式,一关不过即出局;过了账本关也不保证存在——存在性是这门学问真正的悬念。找出「哪些账必须对、哪些对称必须补、什么时候构造成功、什么时候只能拦截」,是全书反复演练的招式。
③ 接口——通往四个邻域。组合设计是现代数学的十字路口:与有限几何(射影平面、仿射平面,第二、四章直接合流)、群论(自同构群与散在单群,第五、六章)、编码理论(Hamming 码、Golay 码,第六章)、统计学(试验设计与正交阵列,第一、四章)四条战线直接相通。同余与有限域的算术,是差集与乘子定理的用武之地;自同构群的基本语汇一旦备好,第五章、第六章的群论景象将更显亲切。
写法约定(TEX 标准):点数记 v、块数记 b(变量斜体)、块大小记 k、重复数记 r、相遇数记 λ(小写希腊斜体)、设计记 𝒟、关联矩阵记 N;差集记 D;群记 G、自同构群记 Aut(𝒟);有限域记 𝔽q。变量用斜体,函数名(det、tr、gcd)与群名(Aut、SL、M24 等)用正体;关键一步配图,点与块逐章对照。
把十个人分成两队打球,把一周的课排进五天,把会议代表安排进若干张圆桌——这些都是「安排」问题。安排得好不好,有客观标准:每队人数要匀、每天的课不许撞、每桌的代表不许来自同一单位。标准一严格,安排就变成了数学:要问的不是「随便分分」,而是「在规定条件下到底分不分得出来」;若是分不出来,还要能斩钉截铁地说一句「永远分不出来」。
十九世纪的数学家们恰好撞上了一大批这样的问题。1850 年,数学教师柯克曼(T. P. Kirkman)在杂志上出一道题:十五名女学生每天排成五组、每组三人去散步,问怎样安排一周七天,使得任何两名女生恰好同组一次?再往前,1782 年欧拉研究过「三十六军官问题」:来自六个团队、有六种军衔的三十六名军官,能否排成六行六列的方阵,使每行每列的六个军官团队互不相同、军衔也互不相同?更早的还要数几何里的老朋友:七个点能否用若干条线连起来,让每两点恰好同在一条线上、每条线恰含三点?——答案就是那幅著名的七点六线图,Fano 平面。
这三个问题表面毫不相干:一个管人、一个管方阵、一个管点线。但把它们排在一起端详,会发现一副共同的骨架:都有一些对象(女生、军官位置、点),都有一些容器(小组、行列、线),都要求容器与对象之间满足某种均匀的搭配。组合设计研究的正是这副骨架:把对象叫点,把容器叫块,把「哪些点落在哪些块里」叫关联;然后在各种平衡条件下追问——安排存在吗?有几种?怎么造?怎么拦截?
本册的写法遵循一条主轴:设计是一笔账。每个点记一份「我进了几个块」,每条块记一份「我装了几个点」,每对点再记一份「我们同块几次」;三本账环环相扣,任何一组参数想登堂入室,先得把账对平。第一章就把这套记账法学扎实,随后六章用它一路征伐:对称设计、三元系、拉丁方、五重设计、纠错码——账对得越细,世界越精巧。带着这句口诀出发:安排即记账,记账即证明。
★ 先从一个谁都能想象的小场景出发。某培训学校要在五天里给六门课排课:每天恰好安排若干节课,任何两门课不能排在同一天超过一次(假设两门课若是同天,学生要连着上两节,太累就不行),并且希望每位老师的工作量均匀。把「课」想成点、「天」想成块,排课表就是在问:能不能把六个点放进若干个块,使得块与块之间、点与点之间满足指定的均匀条件。
这个朴素场景里有三个要素值得立刻命名。第一是对象集合:六门课,它们是安排的「货」;第二是容器集合:五天(或者更一般的一些「场次」),它们是装货的「筐」;第三是规则:货与筐之间怎样搭配才算公平。组合设计把这三样东西打包,起一个统一的名字——
关联结构是本书最底层、最宽容的概念:它不附加任何条件,点可以是任何东西,块可以是任何子集,甚至允许空块与重复块。一切「设计」都是给这个宽容的结构加上平衡条件之后的产物。为了把话说清楚,本书约定几个记号:点的个数记 v(vertex),块的个数记 b(block);涉及具体点时用小写斜体字母 x, y, p 等,涉及具体块时用大写字母 A, B, C 等。
图 0-2 的结构里已经能「记账」了:数一数每个点进了几个块(点账),每条块装了几个点(块账),每一对点同块几次(对账)。三本账各有名称——点账的数目叫重复数,块账的数目叫块大小,对账的数目叫相遇数。下一节将看到,历史上那三个著名问题,本质上是给这三本账分别立下「人人相等」的死命令。
把生活安排抽成关联结构,好处立刻显现:人、课、天、场地统统隐去,剩下的只有点、块与关联。于是女生散步、军官方阵、Fano 平面可以放进同一个框架里比较、翻译、互相借用工具——这正是数学抽象的常规操作,也是本册全部力量的来源。
★★ 现在把三个历史问题正式请上台,逐一翻译成关联结构的语言。
引例一(Kirkman 女生散步,1850)。十五名女生每天分五组散步,每组三人。问:能否安排连续七天,使得任何两名女生恰好有一天同组?翻译:点集是 15 名女生;块是「三人小组」,每天 5 个、七天共 35 个块;平衡条件是——每块恰 3 点,每个点每天恰进 1 块(即七天里每点进 7 块),每对点恰同块 1 次。这道题将在第三章完全解决;这里只预告一笔账:每名女生每天 1 组,六天里与她同组的共有 6 × 2 = 12 人,恰是其余全部女生——一次都不多、一个都不漏,紧得不能再紧。
引例二(三十六军官问题,1782)。欧拉受普鲁士腓特烈大帝之托:六个团队各派六名军官,军衔从上校到中尉共六级,把这 36 人排成 6 × 6 方阵,使每行、每列的六人团队互不相同且军衔互不相同。翻译:把「行—列位置」看作 36 个点,块有两族——「团队块」(同团队的位置并起来共 6 个块)与「军衔块」(同军衔的位置共 6 个块);平衡条件要求每行每列与两族块的结构互相「正交」。欧拉断言此题无解,并推广猜想:凡 n ≡ 2 (mod 4) 都排不出。这道题引出正交拉丁方,第四章用整整一章来讲述它戏剧性的结局——猜想竟然几乎全错,唯有 n = 6 是真的。
引例三(Fano 平面)。在七个点 {1, 2, 3, 4, 5, 6, 7} 上取七条「线」
123, 145, 167, 246, 257, 347, 356.
每条线恰 3 点,任何两点恰在同一条线上。这就是 Steiner 三元系 STS(7),画出来便是 Fano 平面——第二章会看到它能用一张小小的差集表 {0, 1, 3} 造出,第五章将看到它是最大的 Steiner 系家族的第一级台阶。
三个引例摆成一排,一幅地图隐约浮现:引例三管得最紧(每对点恰一次),引例一加了「每天用尽所有点」的分层要求,引例二则要求两套结构同时均匀。把它们统一处理的第一步,是给「平衡」下一个精确的定义——这正是下一节的任务。
★★ 有了定义与引例,本节把关联结构的「语法」补齐:重复块、空块、单点块允许吗?两个结构怎样才算「一样」?怎样把结构写进矩阵?这些都是后文反复使用的地基。
允许与禁止。关联结构的定义对块毫无限制:块可以为空、可以只含一点、可以整块重复出现。放宽是有意的——研究平衡设计时,先允许再排除,比一开始就禁止更清楚(例如第一章的恒等式对退化情形会自动失效,恰好提示我们哪里需要小心)。不过从本节起有一条软约定:若无特别声明,讨论的关联结构都没有重复块、没有空块;真正需要退化情形时会重新请它们出场。
度与入度。块 B 的大小记 |B|;点 x 的入度是与 x 关联的块数(按块的重数计),记 r(x)。若所有块大小同为 k,称结构均匀;若所有点入度同为 r,称结构正则。均匀是「块账人人相等」,正则是「点账人人相等」——两个词将贯穿全书。
同构。两个关联结构 𝒟 = (X, ℬ) 与 𝒟′ = (X′, ℬ′) 同构,意思是存在点的双射 φ : X → X′,把 ℬ 的块一一变成 ℬ′ 的块:对每个块 B ∈ ℬ,像集 φ(B) = {φ(x) : x ∈ B} 恰是 ℬ′ 中一个块,且这一一对应是双射。同构的「不同实现」称标号;把标号全部忘记后剩下的东西,才是设计的本体。一个结构的自同构是它到自身的同构;全体自同构在复合下成群,记 Aut(𝒟)——第六章里,这个群将爆发出惊人的力量。
关联矩阵。设结构无重复块,把点排个序、块也排个序,定义 v × b 矩阵 N = (nij):
nij = 1(第 i 个点与第 j 个块关联), nij = 0(否则).
矩阵是结构的「身份证」:每列是块的「点名册」,每行是点的「出勤表」。改一次标号,身份证要跟着改——但只是行、列换了次序,本质信息一动不动。第一章将用这张身份证做出全书第一个重量级定理:Fisher 不等式。
★★ 现在可以给「设计」立宪了。本节定义全书最重要的对象——BIBD,并把三本账的口诀正式立起来。
条件名字里的「平衡」指(B3):任何一对点受到的待遇一模一样——都恰好同块 λ 次。「不完全」指(B4):若有块装下所有点,则每个点对都同在那一个块里,λ 会被强制等于 1,问题塌缩成平凡的「一刀切」(这种情形第一章会作为「完全设计」单独看一眼)。图论里也有一条类似的「不完全」——完全图之外的图才有趣味;设计的趣味同样来自不完全。
三本账。给定 BIBD,除 (v, k, λ) 外还有两个数由结构自动决定:b(块数)与 r(每点的入度——平衡性保证各点入度相等,第一章证明)。五个数 (v, b, r, k, λ) 合称 BIBD 的参数。它们满足两条恒等式:
证明只需一分钟,但第一章将给出完整论证并把它练到滚瓜烂熟。此处先示范用法:女生散步要求 v = 15、k = 3、λ = 1,则第二条恒等式给出 r · 2 = 1 × 14,故 r = 7(每名女生散步七天,分毫不差);再由第一条得 b · 3 = 15 × 7,故 b = 35(七天每天五组)。账目严丝合缝——这样的参数才值得继续谈。
λ 的口味。参数 λ 是全书的「咸淡」旋钮:λ = 1 是最吝啬的平衡(每对点恰会面一次,Steiner 系的世界,第三章);λ 大些,结构更「稠」,构造反而往往更容易;λ 越过大半程,会撞上对称设计(第二章)与 Hadamard 矩阵(第二章末)。本书的六章,恰好就是沿着这个旋钮从 1 转到 5、再跳进编码世界的旅程。
★★ 全书六章是一条不断加码的远征路线:账本越记越细,结构越来越对称,最后的奖赏是数学里最紧凑的安排与它背后的稀有群。每章解决一个「大问题」,同时沉淀一批「标准动作」。
第一章(平衡设计:BIBD 与计数恒等式)把记账法变成兵器:五参数、两条恒等式、关联矩阵、Fisher 不等式、谱、自同构群、可除性筛、补/派生设计。学完本章,任何一组 (v,k,λ) 都能立刻过一遍「体检」。
第二章(对称设计与差集)研究 b = v 的极端情形:对称设计、对偶、差集、Singer 定理、Bruck–Ryser–Chowla 拦截战、Hadamard 矩阵。构造与拦截两条战线在此正面相遇。
第三章(Steiner 系与 Kirkman 问题)攻下 λ = 1:STS 的存在定理(Kirkman 1847)、循环构造、递归构造、可分解设计与女生散步的完整答案(Ray-Chaudhuri–Wilson 1971)。
第四章(正交拉丁方与欧拉之谜)解决多重账本问题:MOLS 的上界、有限域构造、与(仿射/射影)平面的等价、Euler 猜想的悲剧与 Bose–Shrikhande–Parker 的大翻案。
第五章(t-设计与 Witt 宏构)把「对账」升到 t 重:t-设计恒等式、Ray-Chaudhuri–Wilson 不等式、Steiner 系之塔、Witt 设计 S(5,8,24) 与 759 张块表的奇迹。
第六章(码与设计的合流)完成两大结构的大会师:Hamming 码与 Fano 平面互译、Golay 码再造 Witt 设计、Mathieu 群 M24 与散在单群的全景。
路线图上还有一行小字值得单独说:每一章的实验页都会让程序参与——穷举小设计、验证差集、核验七日表。组合设计是少数几门「可以亲手摸到全部样本」的数学:小世界里,计算机能把每一种安排都摆上台面,让抽象定理变得可见、可触、可对拍。这也是本册敢承诺「自给自足」的底气。
★★ 组合设计的历史是一部「问题先行、理论后到」的历史:先有一道道具体的难题,再慢慢长出统一的语言与深刻的一般定理。本页用五个年份串起这条线索。
1782 · 欧拉的方阵。欧拉在研究「36 名军官」时发明了拉丁方的语言,并留下著名猜想:n ≡ 2 (mod 4) 时不存在一对正交 n 阶拉丁方。他对 n = 2 与 n = 6 的判断正确,推广却错了——这个错误要等 177 年才被纠正。教训值得记取:由小推大,是组合学里最危险的一步。
1847–1850 · Kirkman 的三元系与女生。教区牧师柯克曼在《Cambridge and Dublin Mathematical Journal》上证明:Steiner 三元系存在当且仅当 v ≡ 1, 3 (mod 6)——这是设计存在性的第一条一般定理,比 Steiner 本人的文章(1853)还早。1850 年他又提出女生散步问题,把「平衡」升格为「可分解」:块不仅彼此平衡,还要能分层打包。这个问题悬置 121 年。
1940 · Fisher 的统计遗产。统计学家 R. A. Fisher 在农业试验里把区组设计用成利器:把试验田分成区组(块),让品种(点)在区组间均匀比较。他证明了 b ≥ v——后来以他命名的 Fisher 不等式,是第一章的顶点。设计的数学与设计的应用,在这里完成第一次握手。
1959–1960 · 三剑客翻案。Bose、Shrikhande 与 Parker 用「成对平衡设计」等新武器证明:除 n = 2, 6 外,任意 n 都存在一对正交拉丁方。Euler 猜想轰然倒塌,《纽约时报》为此发了报道——组合学的成果上头条,至今罕见。
1971 与 2014 · 两座里程碑。Ray-Chaudhuri 与 Wilson 证明 KTS 存在当且仅当 v ≡ 3 (mod 6),女生散步问题在提出 121 年后得到完全解答。四十三年后,Keevash(2014)证明设计存在性的一般定理:只要参数满足可除性与必要的体积条件(外加足够大的 v),设计必存在——「账对得上就(几乎)存在」从愿望变成定理,全书的暗线在此抵达终点。
还有一条「暗历史」值得记录:设计文献里人物的名字常常错位——「Steiner 三元系」最早由 Kirkman 解决,「Kirkman 系统」的完全答案却署着 Ray-Chaudhuri 与 Wilson;「Fano 平面」在 Fano 之前已见于 Gergonne(1826)之手。数学史上命名权与贡献权的错位屡见不鲜,读文献时以年代与内容为准,是对前人最好的公平。
本页任务。把绪论的行李清点一遍:哪些概念必须带走,哪些账目必须会算,哪些问题留作路标。
概念清单。① 关联结构 𝒟 = (X, ℬ):点、块、关联——最宽容的底座;② 均匀(块账相等)与正则(点账相等);③ 同构、标号、自同构群 Aut(𝒟);④ 关联矩阵 N:结构的身份证;⑤ BIBD 五参数 (v, b, r, k, λ) 与三本账;⑥ 平衡(对账相等)与不完全(k < v)。
账目清单(会算才算过关)。① 已知 v, k, λ,用 r(k − 1) = λ(v − 1) 算 r、用 bk = vr 算 b;② 女生散步:(15, 35, 7, 3, 1);③ Fano 平面:(7, 7, 3, 3, 1);④ 会把七条线 123, 145, 167, 246, 257, 347, 356 默写出来并验证每对点恰一条线。
路标问题(各章的靶心)。① 什么样的 (v,k,λ) 有 BIBD?(第一、二章的恒等式与拦截定理给出必要条件;Keevash 2014 给出充分性)② λ = 1 时能走多远?(第三章)③ 两族块同时平衡可行吗?(第四章)④ 平衡加码到 t 重会怎样?(第五章)⑤ 设计与编码、群论怎么接?(第六章)
| 问题 | 点数 v | 块参数 | 答案出现处 |
|---|---|---|---|
| 女生散步 | 15 | (15,35,7,3,1) 可分解 | 第三章 §3.9–3.10 |
| 三十六军官 | 36(方阵) | 正交 6 阶拉丁方 | 第四章 §4.3、§4.7 |
| Fano 平面 | 7 | (7,7,3,3,1) | 第二章 §2.5(差集) |
行李点清,出发。第一章的号令只有一句:先对账,再谈存在。
绪论把三个历史问题提炼成了关联结构,又立下了 BIBD 的四条宪章(B1–B4)。本章的任务是把这套语言锻造成兵器:给定一组参数 (v, b, r, k, λ),要能在一分钟内判断它有没有资格叫「设计」;给定一个真设计,要能算出它的矩阵肖像、谱与对称群,并顺手派生出新一代设计。
本章的行进路线是一条上升的阶梯,每一级都踩在前一级上:
第一阶(§1.1–1.5)——数账。从点与块的原始语言出发,建立五参数的两条计数恒等式 bk = vr 与 r(k − 1) = λ(v − 1);顺路看一眼完全设计与退化情形,弄清「不完全」二字挡住了什么。这一阶的全部工具是「换个角度数同一批东西」——听起来像小学算术,做出来是组合数学最锋利的一把刀。
第二阶(§1.6–1.10)——代数化。把 Fano 平面当标本,引进关联矩阵 N,把平衡条件翻译成一行矩阵等式 NNT = (r − λ)I + λJ;再由行列式与秩一步登天,得到 Fisher 不等式 b ≥ v——全章的顶点。随后计算设计的特征值(谱),看看「平衡」在频域里长什么样。
第三阶(§1.11–1.14)——对称与繁殖。定义同构与自同构群,给设计装上「对称」的仪表盘;建立可除性筛——参数想通过的第一道安检门;最后学习设计的繁殖术:补、派生、残差,从旧设计批量生产新设计。
第四阶(§1.15–1.16)——升维与方法论。把「对账」从点对推广到 t 元组,为第五章铺路;再把本章用过的证明招式总结成「换角计数」方法论,练成条件反射。
读本章只需带三件随身行李:同余的基本功、矩阵的乘法与秩、一点排列组合的耐心。行李不全时回看绪论末页的预习提示;行李齐备时,直接上第一级台阶——不过在这之前,先认识一下本章的常驻嘉宾。
常驻嘉宾:Fano 平面。七点七线的最小 BIBD 将在 §1.6 担任「参数账」的示范标本,在 §1.7 捐出自己的关联矩阵,在 §1.10 报出自己的谱,在 §1.12 展示 168 阶的自同构群。它是全书出镜率最高的例子——原因无他:小到可以穷举,又大到足以承载一切概念。此后每章它都会回来报到,与它保持熟络。
★ 绪论已给出定义,本节的任务是把语言用熟:在一个具体的关联结构上,把三本账各记一遍,并把「计数」这个动作练成肌肉记忆。
标本 A:四点三线。取 X = {1, 2, 3, 4},块族 ℬ = {123, 124, 134, 234}——四个块,各含三点。记号 123 是 {1, 2, 3} 的缩写,后文一直沿用。先记块账:每块 3 点,均匀。再记点账:点 1 出现在 123、124、134 三个块里;同样地,2、3、4 也各在三个块里,正则。最后记对账:{1,2} 同在 123 与 124 两块;{1,3} 同在 123 与 134;{1,4} 同在 124 与 134;{2,3} 同在 123 与 234;{2,4} 同在 124 与 234;{3,4} 同在 134 与 234——六对点,对对恰好两次。
它有没有更熟悉的名字?有——完全图 K4 的所有三角形。把四个点两两连线,一共六个点对、四个三角形,每个三角形含三条边、每条边(点对)恰在两个三角形里。标本 A 说明:BIBD 并不神秘,最熟悉的图论对象里就藏着一个。事实上「取完全图 Kv 的所有三角形」对任意 v ≥ 3 都给出 (v, C(v,3), v − 2, 3, 2)-BIBD——这是 λ = 2 的一族无限设计,第一章末的习题将完整验证。
标本 B:五点五块,一个「差点儿」的反例。取 X = {1, 2, 3, 4, 5},块族 {123, 145, 245}。块账:块块 3 点,均匀。点账:点 1 在 123、145 里(2 次);点 2 在 123、245 里(2 次);点 3 只在 123 里(1 次);点 4、5 各 2 次——不正则。对账也不齐:{1,4} 同块 1 次,{3,4} 同块 0 次。标本 B 提醒:均匀与正则可以只满足其一;三本账都平,才配叫设计。
本节的一个副产品值得单独强调:点账、块账、对账是三个独立的信息位,任何一本不平都足以否决一个候选设计。下一节把这三本账装进五参数的口袋里,开始正式记账。
★★ BIBD 的定义(绪论)只显式提到 v, k, λ 三个数;本节论证 b 与 r 由它们决定,从而五参数实为「三元组 + 两个推论」。论证本身就是本书第一条「换角计数」。
设 𝒟 是 (v, k, λ)-BIBD 且 k ≥ 2、v > k。任取一点 x,数「三元组 (y, B)」的个数,其中 y ≠ x 是点、B 是同时含 x 与 y 的块。按 y 数:每个 y 贡献 λ 个(与 x 恰同块 λ 次),共 λ(v − 1) 个。按 B 数:含 x 的每个块 B 里除 x 外还有 k − 1 个点,各贡献 1 个,共 (k − 1) · r(x) 个,其中 r(x) 是 x 的入度。两种数法必须相等:
(k − 1) · r(x) = λ(v − 1).
由 k ≥ 2 可除出 r(x) = λ(v − 1)/(k − 1)——与 x 无关。故所有点入度相等,记这个公共值为 r,即得恒等式 r(k − 1) = λ(v − 1)。∎
这段证明里有全章(乃至全书)最重要的一次「换角」:同一批三元组,站 y 的角度数一遍、站 B 的角度数一遍,两个答案必须相等——相等本身就是定理。 k ≥ 2 的用处:若 k = 1,每块只有一点,对账 λ 恒为 0,r(x) 无法被决定(每个点各进各的块,入度随便多少都行)——退化在此现出原形。
b 的决定。再数一次,这次数「关联对 (x, B)」(点在块里):按块数,每块 k 个点、共 b 块,得 bk;按点数,每点入度 r、共 v 点,得 vr。于是:
两条恒等式合起来:r = λ(v − 1)/(k − 1),b = vλ(v − 1)/(k(k − 1)) = λ C(v,2)/C(k,2)。第二个表达式有个漂亮的解读:C(v,2) 是点对总数,C(k,2) 是单块能覆盖的点对数;λ 遍历一切点对,所以块数 b 就是「总覆盖需求 ÷ 单块容量」乘上 λ。设计参数不是自由变量,而是被两本账锁死的一族。
即查即用。① (7,3,1):λ(v−1)/(k−1) = 6/2 = 3,b = 7·3/3 = 7 → (7,7,3,3,1)。② (13,3,1):r = 12/2 = 6,b = 13·6/3 = 26 → (13,26,6,3,1)。③ (10,4,1):r = 9/3 = 3 ✓,b = 10·3/4 = 7.5 ✗ ——除不尽,出局。一张体检表已见雏形:三个整数条件(r、b 为整数)是参数的第一道安检门,§1.13 的可除性筛将把它系统化。
★★ bk = vr 是两条恒等式里更直观的一条:左边数「块里的座位总数」,右边数「点的入座总次数」,同一批关联对,两个方向数两遍。本节把这条恒等式用到出神入化,并准备三个马上要用的推论。
推论一(块数的下界感)。由 b = vr/k 与 r ≥ k − λ…——这个方向暂时走不动,因为 r 的下界还没建立。真正好用的倒是一个平凡的量级感觉:b/v = r/k。若 r > k,则 b > v:块比点多;若 r = k,则 b = v——这正是第二章「对称设计」的门槛。恒等式 I 把 b 与 v 的比较换成了 r 与 k 的比较,第二章的整个议程由此立项。
推论二(平均入度)。对一个均匀(块块 k 点)但未必平衡的关联结构,bk = Σx r(x) 仍成立,于是平均入度恰为 bk/v。这个「平均值公式」是估计非正则结构的常用武器:想要人人入度 ≥ r,先看平均够不够格。
推论三(对偶预告)。把关联结构翻转——点变块、块变点:新结构 𝒟T 有 b 个「点」(旧块)与 v 个「块」(旧点),块大小是旧的入度、入度是旧的块大小。恒等式 I 的两种数法正是对偶视角下的彼此:bk = vr 说的是「我与我翻转后的平均块大小一致」。翻转这个动作第二章将大放异彩,此处先埋一颗种子。
例行验算。用女生散步 (15, 35, 7, 3, 1) 检查:bk = 35 × 3 = 105,vr = 15 × 7 = 105 ✓。Fano (7,7,3,3,1):21 = 21 ✓。标本 A (4,4,3,3,2):12 = 12 ✓。再抽验任意一个自己造的均匀结构——恒等式 I 从不失手,因为它本来就是「同一张表横加与竖加」的同一件事。
本节的最后一个注记关于「等号的意义」:恒等式 I 对一切均匀结构成立,无论平衡与否。它是一条存在性之外的账目约束——参数不满足它,设计根本不必找;参数满足它,也才刚拿到入场券。入场券与正赛的关系,下一节会看得更清楚。
★★ 恒等式 II 在 §1.2 已经证过一遍,但它值得一个专门的页面:它是三条必要条件中最锋利的一条,也是「换角计数」方法论的教科书式示范。本节再给它两个推论与一次实战。
再看一眼证明的骨架。固定点 x,数集合 Sx = {(y, B) : y ≠ x, x, y ∈ B}。竖着数(按 y)得 λ(v − 1);横着数(按 B)得 (k − 1)r。这里隐含了一次「重新分组」:先按第二分量分组,再按第一分量分组——集合的两种分划,元素个数必然相等。这句朴素的话,后面每一章都要反复兑现。
推论一(r 的整数性)。k − 1 必须整除 λ(v − 1)。这条整除性是参数体检的第一刀。例如 (10, 4, 2):λ(v − 1) = 18,k − 1 = 3,18/3 = 6 ✓;但 b = 10 × 6/4 = 15 ✓——参数过关!事实上 (10,15,6,4,2) 是真设计(可由完全图 K5 的三角形「翻倍」得到,第一章习题课演练)。再看 (10, 5, 2):λ(v − 1) = 18,k − 1 = 4,18/4 除不尽——出局,连入场券都没有。
推论二(λ ≥ v 的含义)。由恒等式 II 反解 λ = r(k − 1)/(v − 1)。固定 v, k 时,λ 每增大,r 等比增大——设计越「稠」,每个点越忙。极端地,当 λ = v − 1 且 k = 2 时:r(1) = (v − 1),即每点恰入 v − 1 块、每块两点——这正是完全图的所有边,最平凡的 BIBD。恒等式 II 把「平凡」也纳入了账目体系:平凡不例外,只是 λ 旋钮拧到头的特写。
实战:女生散步的账。(15, 3, 1):r = 14/2 = 7——每名女生恰好出场七天,一天不多一天不少;b = 15 × 7/3 = 35——七天每天五组。两账合验,参数表与题目叙述严丝合缝。下一步要问的真问题是:这样的 35 张小组表存在吗?这个问题要等到第三章才完全解决,但账目此刻已经把搜索空间从「一切可能的小组表」压到了一个极小的角落——这就是记账的力量。
★★ BIBD 的宪章第四条禁止「完全」:不许有块装下所有点。本节打开这道闸门,看看被挡在外面的世界是什么样——看清禁令为何而设,也就看清了设计的趣味所在。
完全设计自动满足两条恒等式:bk = C(v,k) · k = v · C(v−1, k−1) = vr(组合恒等式「杨辉三角的斜线读法」),r(k − 1) = C(v−1, k−1)(k − 1) = (v − 1)C(v−2, k−2) = λ(v − 1)。它的 λ = C(v − 2, k − 2) 由 v、k 完全决定——参数没有自由度,也就没有悬念:任取参数先猜完全设计,猜中就不必再找。这就是「不完全」禁令的用意:把 λ 与 (v,k) 解耦,让「λ ≠ C(v−2, k−2) 的平衡」成为真正的问题。
退化的另两端。① k = 1:每块单点,对账恒 λ = 0,点账 r(x) 无约束——恒等式 II 除以零,失效。② k = 0:空块装空座,一切为零。③ 重复块:若一个结构平衡而某块重复出现,把重数计入块账后两条恒等式依然成立(对账按「同在的块按重数计」理解)——这是 λ 在更一般文献里的标准约定。本书主叙述避免重复块,但在派生构造(§1.14)与编码章(第六章)里,重数将自然回归。
一个有用的观点:吃掉一块。从完全设计 𝒞(v, k) 里挑出一部分块,若挑出的部分仍平衡,就得到一个 BIBD——「从全体里挑出一小撮还保持均匀」,这恰是构造设计的一般哲学。反过来,把一个 BIBD 补齐成完全设计,多出来的块也构成一个均匀结构吗?一般不——但差多少、怎么补,正是 §1.14「补设计」的课题。完全设计因此不只是陪衬:它是所有设计的公共背景板,也是补设计的参照系。
本页收尾留一道心算:(4, 3, 2) 与完全设计 𝒞(4, 3) 的 λ 分别是多少?——前者 λ = 2(标本 A),后者 C(2, 1) = 2。完全相等!所以标本 A 恰是 (4,3) 的完全设计——它平凡得连禁令都懒得适用。下一个真正的 BIBD,要等七个点的 Fano 平面登场。
★★ 常驻嘉宾正式报到。本节用 Fano 平面把本章前六节的概念全部过一遍堂——参数、账目、同构、入座——它此后将随叫随到。
账目总表。Fano 平面的七条线是 123, 145, 167, 246, 257, 347, 356。逐项验收:
| 验收项 | 内容 | 结果 |
|---|---|---|
| 块账 k | 每条线 3 点 | 7 条线全过 ✓ |
| 点账 r | 每点入 3 线 | 点 1 ∈ {123,145,167} 等 ✓ |
| 对账 λ | 每对点恰 1 线 | C(7,2)=21 对 × 1 = 7 线 × C(3,2)=3 ✓ |
| 恒等式 I | bk = vr | 7×3 = 7×3 = 21 ✓ |
| 恒等式 II | r(k−1)=λ(v−1) | 3×2 = 1×6 ✓ |
对账行的算式值得写成一条「全景恒等式」:按对数,总相遇次数 = λ·C(v,2);按块数,总相遇次数 = b·C(k,2)。它其实是恒等式 I 的推论(两边除以 k(k − 1)/2),但作为「第三本账的全表」独立好用——任何候选设计的对账都可以这样一枪毙命或暂缓执行。
同构:Fano 平面只有一张脸。命题:任何 (7,3,1)-BIBD 都同构于上述七线表。证明要点:取点 1,它与其余六点恰各配一次、分入三条线;这三条线的「第三点」两两不同(否则该两点已与 1 同线两次),于是其余六点分成三个对子,不妨记三条线为 123、145、167。再看点 2:它已与 3 同线,还需与 4, 5, 6, 7 各恰配一次,即再入两条线、每线含 2 与两个对子里各取一点;且新线里不许出现已相遇的对(如 4, 5 已在 145 同线)——于是只有两种可能:{2,4,6},{2,5,7} 或 {2,4,7},{2,5,6},二者经 6 ↔ 7 换名互相转化,不妨取前者。轮到点 3:它还需与 4, 5, 6, 7 相遇,而 4 与 7、5 与 6 尚未相遇——两条新线被逼定为 {3,4,7} 与 {3,5,6}(若选 {3,4,6},则 {4,6} 已在 246 同线,重账)。四线落定,剩余两对 {4,7}?——已在 347 同线;逐对清点,21 个点对恰被 7 线覆盖,不多不少。∎(要点版)
这道小证明有一个大寓意:小参数世界里,账目本身就是构造算法——每一步都被「恰一次」逼得没有选择。第三章将把这一招系统化(穷举与回溯),第六章将看到 Fano 平面在 Hamming 码里以第三副面孔重生。
出勤表。把七条线排成七列、七个点排成七行,Fano 平面的关联矩阵是一张 7×7 的 0-1 表,每列三个 1、每行三个 1。把它抄下来——下一节就请它上场:矩阵一亮相,Fisher 不等式只隔一步之遥。
★★ 从本节起,矩阵接管主角。一张 0-1 表能把点、块、对三本账全部收进代数语言,让线性代数的重型机械(秩、行列式、特征值)直接开进组合学的工地。
Fano 的名片。按点序 1..7、线序 123, 145, 167, 246, 257, 347, 356:
| 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 1 | 0 | 0 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 | 0 |
| 0 | 1 | 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 1 | 1 | 0 | 1 | 0 |
| 0 | 0 | 1 | 0 | 1 | 0 | 1 |
三本账在名片上的读法:每列恰有 k 个 1(块账);每行恰有 r 个 1(点账);任意两行的内积为 λ(对账)——这一条是关键新成员:内积把「两个点同在几个块」变成了一个数。行的内积用矩阵乘法一网打尽:NNT 的 (i,j) 元恰是行 i 与行 j 的内积。
标号变换。换一次点的次序 = 左乘一个置换矩阵 P;换块的次序 = 右乘置换矩阵 Q。同构的两个结构,名片之间差一个 N′ = PNQ。因此名片上真正「身份证级」的量——秩、非零特征值、行列式(对 v = b 的方阵情形)——都是同构不变量。这条「不变量思路」将在 §1.11 用于判别非同构。
两个向量记号。记 1 为全 1 列向量(长度按上下文)、I 为单位阵、J = 11T 为全 1 矩阵。三本账的向量式:块账 NT1 = k1;点账 N1 = r1(由平衡推出,§1.12 前先用「每行 r 个 1」的标量式);对账与点账平方:NNT 对角线是 r(行内积 = 行中 1 的个数)、非对角线是 λ。矩阵肖像,呼之欲出——下一节正式揭幕。
★★★ 本节把平衡条件翻译成一行矩阵等式。它是全书最常引用的一条「设计方程」,Fisher 不等式与谱理论都从它一步走出。
设 N 是 (v, b, r, k, λ)-BIBD 的关联矩阵。则
NNT = (r − λ)I + λJ,
其中右边是 v × v 矩阵:对角线 r,非对角线 λ。
证明。(NNT)ij = Σt nitnjt = 点 i 与点 j 同时关联的块数。当 i = j,这是点 i 的入度 r;当 i ≠ j,这正是平衡条件给出的 λ。而矩阵 (r − λ)I + λJ 的对角元是 (r − λ) + λ = r、非对角元是 λ。两矩阵逐元相等。∎
这条等式的威力在于:右边是一个结构完全透明的矩阵——它由两个「标准件」拼成,特征值、秩、逆全部现成。设计的复杂性(左边的 N)在平方之后坍缩成透明(右边),这正是「平衡」二字的代数本体:不平衡的结构平方后一团乱麻,平衡的结构平方后干净如初。
右边矩阵的体检。三个速算,马上要用:① 特征值:向量 1 满足 J1 = v1,故 [(r − λ)I + λJ]1 = (r − λ + λv)1 = rk·1(用了 r(k − 1) = λ(v − 1) 化简,即 r − λ + λv = r + λ(v − 1) = rk);与 1 正交的向量 u(J u = 0)满足右乘得 (r − λ)u。于是右边矩阵的特征值为 rk(一重)与 r − λ(v − 1 重)。② 秩:若 r > λ,两个特征值都非零,秩为 v——满秩!若 r = λ,秩跌为 1。③ 行列式(方阵时):特征值之积 rk(r − λ)v−1。
体检一遍 Fano。r = 3, λ = 1:右边 = 2I + J,特征值 rk = 9(一重)与 r − λ = 2(六重);行列式 9 × 26 = 576。这个 576 将在 §1.9 的 Fisher 论证里当场用掉一半(秩 = 7),另一半留给第六章(它与 Hamming 码的重量分布遥相呼应)。
最后预埋一枚伏笔:肖像方程右边是「I 的倍数 + J 的倍数」的矩阵,这类矩阵在统计学的方差分析里恰好是「组间 + 组内」平方和的协方差结构——Fisher 把设计引进田间试验时,正依赖这条方程计算品种均值的方差。设计的代数与设计的应用,共用同一个矩阵肖像。
★★★ 全章顶点。一条三行的秩论证,换来组合设计史上的第一条一般性「拦截定理」。
设 𝒟 是 (v, b, r, k, λ)-BIBD,v > k ≥ 2。则 b ≥ v。
证明。先注意 r > λ:由恒等式 II,r(k − 1) = λ(v − 1),而 v > k 给 v − 1 > k − 1 ≥ 1,故 r = λ(v − 1)/(k − 1) > λ(λ ≥ 1)。于是由 §1.8,NNT = (r − λ)I + λJ 的两个特征值 rk 与 r − λ 都非零,NNT 满秩:
v = rank(NNT) ≤ rank(N) ≤ b,
中间一步用 rank(NNT) ≤ rank(N)(乘积的秩不超过每个因子),最后一步因为 N 只有 b 列、秩不超过列数。∎
三行证明的解剖。这条证明浓缩了「代数化」的全部哲学:① 把组合条件(平衡)翻译成矩阵等式(肖像方程);② 让等式右边的显式结构给出代数量(满秩);③ 用秩的单调性把代数量翻译回组合计数(列数 ≥ 行数)。三步中没有任何一步依赖具体的 v、k、λ——所以结论对全体 BIBD 一律生效。这种「一次代数化,处处拦截」的套路,将在第五章被 Ray-Chaudhuri–Wilson 升级成不等式族。
Fisher 不等式的账目版读法。b ≥ v 结合恒等式 I(b/v = r/k)等价于 r ≥ k:每个点的入座次数不少于每块的大小。直觉版:v 个点要「彼此区分」(每对恰 λ 次的相遇模式须可分辨),b 个块就是 v 个点的「指纹库」;块少了,指纹不够用,必有两点无法区分——这个直觉在 §1.10 的谱里获得精确形式(r − λ 重特征值正是「区分度」的量化)。
等号情形预告。b = v 时,秩的链条被拉满:rank(N) = v = b,N 是可逆方阵。可逆方阵里还藏着一条惊喜:把肖像方程转置方向再看(NTN),会发现块与块之间也自动平衡——每对块恰交 λ 点。这个「等号即对偶」的现象就是第二章的主角「对称设计」,本节止步于预告。
★★★ 肖像方程给出 NNT 的特征值;本节把它们读作设计的「频率成分」,并立刻兑付两个应用:非同构判别与一个向量不等式。
设 𝒟 是 (v, b, r, k, λ)-BIBD,r > λ。则对称矩阵 NNT 的特征值为:单重 rk(特征向量 1),v − 1 重的 r − λ(特征空间 = 与 1 正交的超平面)。
证明。§1.8 已算:NNT1 = rk·1;对任意与 1 正交的 u,J u = 0,故 NNTu = (r − λ)u。实对称矩阵的谱分解完成剩余部分。∎
读谱。谱里最有信息量的数是 r − λ——它控制「区分度」:任意两个点指示向量 ei − ej(差向量,自动与 1 正交)在 NNT 下只被放大 r − λ 倍,即
‖NT(ei − ej)‖2 = (ei − ej)T NNT (ei − ej) = (r − λ)‖ei − ej‖2 = 2(r − λ).
翻译:两个点在「块空间」里的像相距 √(2(r − λ))——每个点对距离完全相等!这给 Fisher 不等式一个几何读法:v 个点被嵌入 ℝb,成为一张等距的「正则单纯形」;要在 b 维空间里放 v 个两两等距且线性无关的点,自然需要 b ≥ v。秩论证与几何论证在此合流。
应用一:非同构判别。谱是同构不变量:同构设计有相同的 NNT 谱(置换不改变特征值)。反向不成立(同谱不同构的例子存在),但正方向足够好用:两个候选设计若谱不同,立刻判决「非同构」。练习:Fano 平面谱 {9, 26};六阶完全设计 𝒞(4,3) 的 N 是 4×4 方阵、NNT = 2I + J,谱 {rk=8, 23}——不同尺寸无妨,同尺寸时才有判别力。
应用二:体积不等式(Plotkin 式)。把 NNT 半正定写成二次型不等式:对任意向量 x,xTNNTx = ‖NTx‖2 ≥ 0。取 x = (v − 1, −1, −1, …, −1)T(与 1 正交),展开 xT[(r − λ)I + λJ]x = (r − λ)‖x‖2 = (r − λ)v(v − 1) ≥ 0——自动成立但给出 r ≥ λ(Fano:2 > 0 ✓)。取更刁钻的 x 还能榨出别的必要条件;这一招在第五章的 R–W 不等式里将升级成重炮。
图 1-9 的正文有一处需要立即更正——「至多 b+…」是笔误,正确的说法是:b 维空间中两两等距的向量组至多含 b + 1 个点,而设计里 v 个像向量线性无关,故至多 b 个(线性无关强于等距,结论反而更紧)。谱的第二次出场在第二章(对称设计的循环谱),第三次在第六章(码的重量计数器与谱的对偶)。
★★★ 绪论已定义同构,本节把它升格为工具:数一数标号,比一比不变量,判一判非同构。小参数世界里,这是分类学的基本功。
标号计数。同构是点的置换 φ 把块族映到自身。任何设计的自同构群里至少有恒等映射;把全部 v! 个点的置换看作大军,自同构群是其中把块族「原样送回」的守军。由轨道计数(群作用下,一条轨道的大小 = 群阶 ÷ 稳定子阶):
反着用。若穷举数出一个设计在固定点集上恰有 M 个不同的块族实现(点的标号算、块的次序不算),则轨道—稳定子给出 |Aut(𝒟)| = v!/M——计数给出群阶。Fano 平面:7 点共 7! = 5040 个点置换,第三章实验页将用程序验证:把七线表逐置换扫描,恰有 30 个置换把它原样送回——即 |Aut| = 5040/30 = 168(§1.12 将独立算出同一答数);若连块的次序也计入,实现数为 30 × 7! = 151200 = 7!·7!/168,两本账完全一致。账目与群论互为验钞机。
不变量清单(判非同构的体检单)。① 参数 (v,b,r,k,λ);② 谱(§1.10);③ 块交图:以块为顶点、两块相交数为权的图;④ 自同构群阶。两个候选设计任何一项不同,即判非同构;全部相同,仍须小心(不变量无法证明同构,同构必须构造出置换 φ)。这套「体检单 + 猜置换」的两段式,是组合分类问题的标准操作,第三章将用它在 STS(15) 的 80 个同构类上小试牛刀。
同构与否的分水岭。值得驻足的一个事实:对 (7,3,1),全部设计同构(一张脸);对 (9,3,1)——第三章的主角之一——存在一个非同构类(即仿射平面 AG(2,3));对 (15,3,1),80 个;对 (19,3,1),11 084 874 829 个。同构类数目的爆炸是组合设计的一般规律,也是「分类」作为研究纲领必然碰壁的原因。数学家于是转向两个退而求其次的目标:存在性(有几类 ≥ 1?——第三章)与典型性(随机造一个,大概率长什么样?——组合学的现代前沿,综合站余韵一瞥)。
★★★★ 设计的对称性由自同构群量化。本节算出 Fano 平面的 168 阶对称群——它是全书第一个「名副其实」的群计算,也是第六章 Mathieu 群的预演。
Aut(Fano) 同构于 GL(3, 2)——三元向量空间 𝔽23 的可逆线性变换群——其阶为 168,且在七个点上双重传递(任意有序点对可被某自同构送到任意有序点对)。
证明要点。换一套点坐标:把七点认作 𝔽23 的七个非零向量,三条「过一点」结构重新解读——取线为 {u, v, u+v}。逐线验证:非零向量共 7 个;每个二维子空间含 3 个非零向量;二维子空间共 (23−1)/(22−1) = 7 条;任两个非零向量决定唯一二维子空间——七条线与 Fano 平面的七线逐项吻合。于是 GL(3,2) 的每个元素(保持向量加法与零点的可逆线性映射)是设计自同构,得 GL(3,2) ≤ Aut(Fano),阶 = (23−1)(23−2)(23−22) = 7·6·4 = 168。反向(任何自同构都线性)从略:固定两个不共线的点的自同构必为恒等,由双重传递性数阶即得相等。双重传递性本身用「线的像仍是线」逐点核账:任取有序对 (a,b),a 的像有 7 种选择,b 的像(不等于 a 的像)有 6 种……总账 7×6 = 42 个有序对被群分一个轨道,轨道大小 42 = 168/4,稳定子阶 4。∎(要点版)
账目复核。168 = 7·6·4。把它拆成点轨道:群在七点上传递(任一点可送到任一点,轨道大小 7),单点稳定子阶 168/7 = 24;24 阶的稳定子里,固定点 1 的自同构在其余六点上仍传递(轨道 6),稳定 1 与 2 的子群阶 4。层层剥笋,全部对上——群论核算与设计账目零误差。
对称的价值。自同构群不是装饰:① 它把证明分摊——凡群能到达的点地位平等,论证只需做一次(「不妨设」的合法化证书);② 它压缩搜索——穷举时只需枚举群的一个轨道代表;③ 它预言结构——第六章将看到,Fano 平面的 168 阶群正是 Hamming (7,4) 码的译码对称,而 24 点 Witt 设计的对称群 M24(阶 244,823,040)将把「设计—码—群」的三位一体推到极致。设计的对称轴,从本页开始上膛。
★★★ 前几节的恒等式都是「对一个已知结构算账」;本节把它们倒过来用——先于任何构造,仅凭参数就把一大批候选宣判出局。这套筛选流程就是可除性筛,它是全书参数体检的标准动作。
若 (v, k, λ)-BIBD 存在,则:
① λ(v − 1) ≡ 0 (mod k − 1), ② λv(v − 1) ≡ 0 (mod k(k − 1))。
证明。①即 r = λ(v − 1)/(k − 1) 必须为整数(恒等式 II);②即 b = vλ(v − 1)/(k(k − 1)) 必须为整数(两条恒等式联立)。∎
筛一遍 λ = 1 的三元系。条件①:v ≡ 1, 3 (mod 6)?先看 mod 2:k−1 = 2,需 v−1 偶,即 v 奇。再看 mod 3:需 6 | v(v−1),即 v ≡ 0 或 1 (mod 3)。合起来:v 奇且 v ≡ 0, 1 (mod 3),恰为 v ≡ 1, 3 (mod 6)。这两条同余正是第三章 Kirkman 存在定理的「必要条件」——存在定理的全部内容就是证明它们也充分。条件②给出块数 b = v(v−1)/6 为整数,与①等价,但独立写出有利于程序筛表。
筛一遍对称设计。第二章的主角 (v, k, λ) 要求 b = v,即 r = k,恒等式 II 变形为 k(k−1) = λ(v−1)。可除性条件化为:λ(v−1) ≡ 0 (mod k−1) 且 v 整除 λv(v−1)/(k(k−1)) 的分母问题——下一章将看到更利落的表述:n = k − λ 是整数平方数是 BRC 定理的入场要求。此处先立一块路牌。
| 候选 (v,k,λ) | ① r 整数 | ② b 整数 | 判决 |
|---|---|---|---|
| (7,3,1) | 6/2 = 3 ✓ | 42/6 = 7 ✓ | 过关(存在) |
| (10,4,1) | 9/3 = 3 ✓ | 30/12 除不尽 ✗ | 出局 |
| (10,4,2) | 18/3 = 6 ✓ | 60/12 = 5 ✓ | 过关(存在) |
| (31,6,1) | 30/5 = 6 ✓ | 155/6 除不尽 ✗ | 出局 |
| (43,7,1) | 42/6 = 7 ✓ | 1806/42 = 43 ✓ | 过关(对称,第二章) |
筛法怎么用。实战分两步:第一步「正向」——拿到三元组 (v,k,λ),两道除法几分钟做完,不过即弃;第二步「反向」——固定 k 与 λ,把满足两条件的最小 v 列成表,这些就是「值得找」的参数。第三章开篇的 STS 参数表 (7, 9, 13, 15, 19, 21, 25, …) 正是这样生成的;本册各章的实验页将反复调用这张表。
★★★ 设计的繁殖术:从旧设计出发,用「取补」「取切片」两类手术,批量生产新设计。三台手术各有精确的参数变换公式,是构造者的标准装备。
手术一:补设计。把每个块换成它对全点集的补集:𝒟c 的块为 X \ B(B 取遍原块)。验参数:每块 v − k 点;点 x 在补块中的次数 = 原不入块数 = b − r;点对 {x,y} 同在补块 = 两点同时缺席的块数 = b − 2r + λ(容斥:共 b 块,r 块含 x、r 块含 y、λ 块两者都含)。于是
手术二与三:派生与残差。这两台手术需要一个「引擎块」:取定一个块 B0。派生设计 𝒟B0:点集换成 B0(k 个点),块族换成「与 B0 相交的其余块各截下它在 B0 内的部分」(含 B0 自身则去掉)。残差设计 𝒟ᴮ0:点集换成 X \ B0,块族换成「与 B0 不相交的块」加上「与 B0 相交的块截去交后剩的部分」?——不,标准定义更简单:残差只保留与 B0 不相交的块?同样不对;正确版本如下(对对称设计最干净):
即查即用:Fano 的两刀。对 Fano (7,7,3,3,1) 取补:块大小 7−3 = 4,点入度 7−3 = 4,λc = 7 − 6 + 1 = 2,得 (7,7,4,4,2)——正是「七点的全部 4-子集里挑七个」的稀客;它的关联矩阵 = J − N(Fano 的名片取补),谱立即读出:原谱 {9, 26} 变 {21 − 9, (0 − 2)6} = {12, (−2)6}。取派生(B0 = 123):点 = {1,2,3},块 = 其余六线截下的 {2,3}, {4,5}, {6,7}, {4,6}, {5,7}, {4,7}∩B0 = ∅ 去掉……细账第三章习题课逐项清算,此处只留一句:繁殖术让小设计一变多,是穷举与递归构造的温床。
★★★★ BIBD 的对账只记「点对」;本节把对账升级为 t 元组,开出一门新账户——t-设计。它是第五章的舞台,这里先立户头、亮账本。
递降定理(预告)。t-设计的对账自动向下兼容:任意 s 元组(s < t)同块的块数是常数 λs,且有链式公式
λs = λt · C(v − s, t − s) / C(k − s, t − s).
证明的思想是 §1.2 换角计数的直接推广:固定一个 s 元组 S,数「(S 的扩充到 t 元组的途径, 覆盖该途径的块)」——按扩充数、按块数各记一遍。第五章将给出完整论证与递降链的系谱学:一个 t-设计生出一整串 (t−1)、(t−2)、…、2-设计,各有自己的参数。先热身验一例:S(3,4,8)(第五章主角)应满足 λ2 = C(6,1)/C(2,1) = 3——它是一个 (8, b, r, 4, 3)-BIBD。
t 重账的必要条件。每一层 λs 都必须是非负整数——这就是 t-设计的可除性筛:一串同余条件由深到浅排队安检。λs 全为正整数只是必要条件;充分性等待 Keevash(2014):足够大的 v 上,账目过关者必存在。这条「大局已定」的定理是全册暗线的终点,第五章末与综合站将两次回望。
本册的攀登计划。t = 2(第一章);t = 2 且可分解(第三章的 Kirkman 系——分解是把块分层打包的额外账);λ = 1 的极简主义(第三章 Steiner 三元系);「两族块同时平衡」(第四章正交拉丁方);t = 3, 4, 5 的高峰(第五章 Witt 设计)。每升一重,存在的空间急剧收窄:2-设计成千上万,5-设计已知者屈指可数——稀罕本身就是第五章的美学。本节作为导览到此;记住一句:t-设计不神秘,只是把「任意两人恰遇 λ 次」推广成「任意 t 人恰遇 λ 次」——账本加厚,世界变稀。
★★★ 本章收官的方法论页。把前文用过的证明招式拆开看,全部共享同一个骨架——换角计数:选定一批对象,用两种方式分组计数,令两个结果相等。本页把招式模板化,并预告它后续章节的三次升级。
模板。一个换角计数由四件套组成:
① 对象集:要数的东西(关联对、三元组、子对……);
② 分角 A:按第一个分量分组数;
③ 分角 B:按第二个分量分组数;
④ 等式:A 总数 = B 总数,解出未知参数或导出恒等式。
| 本章实例 | 对象集 | 分角 A | 分角 B | 产出 |
|---|---|---|---|---|
| 恒等式 I | 关联对 (x, B) | 按块:bk | 按点:vr | bk = vr |
| 恒等式 II | 过 x 的对 (y, B) | 按 y:λ(v−1) | 按块:r(k−1) | r(k−1)=λ(v−1) |
| 全景对账 | 块内点对 | 按块:bC(k,2) | 按点对:λC(v,2) | bC(k,2)=λC(v,2) |
| 递降预告 | (S 的 t-扩充, 块) | 按扩充:λ(s)C(v−s,t−s) | 按块:C(k−s,t−s)·块数 | λ(s) 公式 |
为什么有效。计数等式的深层理由是「双重分划」:同一个集合被两种方式切成互斥且完备的部分,总大小必然一致。它是组合数学里最古老的证明范式——欧拉的剖分、高斯的配对,皆是同源;在设计理论里它特别高产,因为「平衡」恰好保证了分角 B 里每一组的大小都相等,等式因此立即解出未知量。若没有平衡(如标本 B),分角 B 各组大小参差,等式退化为平均值公式——信息量骤减。这解释了本书的一个结构选择:一切高级概念都建立在「均匀」之上,因为只有均匀让换角计数从不等式升级为等式。
三次升级预告。① 第二章:换角计数遇上对偶——点、块两角互换,对称设计的「双账本」由此而来;② 第五章:R–W 不等式——换角计数从「等式」升级为「谱不等式」,拦截力大增;③ 第六章:重量计数器——MacWilliams 恒等式是换角计数在码空间里的再生。练好本章的基本式,三次升级都只是同一主题的变奏。
本章口诀(背):一账点、二账块、三账对;bk = vr,r(k−1) = λ(v−1);肖像 NNT = (r−λ)I + λJ;Fisher 一言蔽之——块不比点少。
题目。某社团有 13 名成员,活动记录显示:每次活动到会 4 人;任意两名成员恰好同场活动 1 次;活动场次记为 b。问:① 全年共活动几场?每人参加几场?② 该记录描述的是哪个著名设计?③ 用肖像方程算出关联矩阵的行列式。
解。① 参数三元组 (13, 4, 1)。恒等式 II:r · 3 = 1 × 12,得 r = 4;恒等式 I:b · 4 = 13 × 4,得 b = 13。每人参加 4 场,全年 13 场。
② 值得停一秒的巧合:b = v = 13、r = k = 4——块数与点数相等!这正是第二章的「对称设计」门票。事实上 (13,4,1) 是著名的射影平面 PG(2,3) 的关联结构:13 点 13 线、每线 4 点、每对点恰一线——第二章 §2.9 将用差集 {0,1,3,9} 把它整桌端出。本册的章节在此提前握手:第一章的账目已经预告了第二章的形态。
③ 肖像方程:NNT = (r − λ)I + λJ = 3I + J,特征值为 rk = 16(一重)与 r − λ = 3(十二重)。由于 b = v,N 是 13 阶方阵,行列式 = 特征值之积:
det N = det(NNT)1/2 = √(16 · 312) = 4 · 36 = 2916.
答。① b = 13 场、每人 4 场;② 对称 (13,4,1) 设计,即射影平面 PG(2,3);③ det N = 2916。∎
题目。一个 BIBD 满足:恰有 16 个块;每点入 6 块;每块 8 点;任意点对同块 3 次。问有多少个点?这是真设计吗?
解。已知 b = 16, r = 6, k = 8, λ = 3,求 v。恒等式 I:bk = 16 × 8 = 128 = vr = 6v,得 v = 128/6 = 64/3——不是整数!
判决。这样的设计不存在:四项观测自相矛盾。问题的本质是「超定」:五参数里只有三个自由度(§1.2),题目给了四个,多余的一个立即把方程逼崩。∎
变式(自检)。把「每点入 6 块」改为「每点入 8 块」呢?——128 = 8v 得 v = 16;再验恒等式 II:r(k − 1) = 8 × 7 = 56,λ(v − 1) = 3 × 15 = 45,56 ≠ 45——仍然出局!两本账各杀一次。把 λ 改为多少才活?需 λ = 56/15 非整数……继续调整:r = 8 时恒等式 II 要求 λ = 56/(v−1) 且恒等式 I 给 v = 16,则 λ = 56/15 ∉ ℤ——(16, 16, 8, 8, ·) 整族皆空。可自行验证:这组观测值在物理上就是凑不齐。
方法论收束。例题二演示了记账法的「司法」用途:观测数据(真实试验或题设)必须通过恒等式的联立检验,任何一条不过,结构与数据两者必有一伪。Fisher 在田间试验里用它查试验方案的漏洞,今天它仍是试验设计软件包里的第一道校验。
习题 1-1(热身)。对下列三元组逐一判定:能否是某 BIBD 的 (v,k,λ)?若能,算出 (b,r):(6,3,2)、(9,3,1)、(12,4,3)、(15,5,2)、(16,6,2)。
提示。先过两道整除门(§1.13),再对幸存者验 Fisher(r ≥ k)。答案速查:r = 5, b = 10 ✓;r = 4, b = 12 ✓;r = 33/3 = 11, b = 12×11/4 = 33 ✓;r = 14/4 除不尽 ✗;r = 30/5 = 6 = k(对称!b = 16 ✓)。
习题 1-2(三角形设计)。证明:取完全图 Kv(v ≥ 3)的全部三角形作块,得 (v, C(v,3), v − 2, 3, 2)-BIBD;并用两条恒等式复核 (v = 6) 时 (6, 20, 4, 3, 2)。
提示。每条边恰在 v−2 个三角形里(边 AB 的第三点有 v−2 种取法)——这就是 λ = 2 的账。b = C(v,3)、r = C(v−1,2) = (v−1)(v−2)/2;验 bk = C(v,3)·3 = v·C(v−1,2) ✓。
习题 1-3(逆问题)。BIBD 的补设计(§1.14)满足 λc = b − 2r + λ。证明:λc = λ ⟺ r = (b + λ)/2。再找出一个满足此条件的真设计。
提示。λc = λ 即 b − 2r + λ = λ,即 r = b/2,结合 bk = vr 得 k = 2——λ = λc 的 BIBD 必是「块恰两点」的完全图类型(λ = 1 时即全体点对)。反例俯拾皆是:Fano 之补 (7,7,4,4,2) 的 λc = 7 − 8 + 2 = 1 ≠ 2——补运算不改 λ 若且仅当 k = 2。本习题的真正考点:参数公式的一致性外测——补的补应回到原设计,验算 (7,7,4,4,2) 的补 λc = 1 恰是 Fano 的 λ,账目闭环。
习题 1-4(双份账)。某 (v, k, λ) = (21, 5, 1) 候选(第三章将证明其存在,即著名的 Witt 设计 S(2,5,21))。先算 r 与 b;再数「过一条块的点对」:块内 C(5,2) = 10 对,块外还有多少点对未被此块覆盖?
提示。r = 5、b = 21——又一例 b = v(对称设计)。块外点对:C(21,2) − 10 = 200 对,它们各自要由别的块覆盖——第二章将用「每条块恰好认识 λ 条他块」的交账来刻画这种紧凑。
习题 1-5(亲手肖像)。写出标本 A(K4 的三角形,参数 (4,4,3,3,2))的 4×4 关联矩阵 N,计算 NNT,并核对肖像方程:NNT = (r−λ)I + λJ = I + 2J。
提示。N 的第 t 列是三角形 {i,j,l} 的指示向量。NNT 对角 = r = 3,非对角 = λ = 2。谱:rk = 9 一重、r−λ = 1 三重;det(NNT) = 9,det N = ±3(方阵!)。注意这个 ±3 与习题 1-1 里 (6,3,2) 的 b = 10 无关——别串账。
习题 1-6(秩的退化)。设某关联结构均匀正则但 r = λ(允许 k 不完全?先论证这迫使什么)。证明:r = λ 的均匀正则结构要么是「完全设计的一种平凡变体」,要么不满足 BIBD 的不完全性——并由此说明 Fisher 证明里 r > λ 的来源。
提示。r = λ 代入恒等式 II:λ(k−1) = λ(v−1) ⇒ k = v(λ ≠ 0 时)——即每块装下所有点,违反不完全性;λ = 0 时对账为零,恒等式 II 平凡成立但设计无意义(点从不相遇)。故真 BIBD 必 r > λ,肖像方程右边的两个特征值皆非零。
习题 1-7(行列式练习)。设对称设计 (v,k,λ) 存在(b = v),证明 det N = ±kv/2(k−λ)(v−1)/2,并对 (7,3,1) 算出具体数值。
提示。det(NNT) = rk·(r−λ)v−1 = k2(k−λ)v−1(用 r = k),开方即得。Fano:√(9·26) = 8·√9?细算:k2(k−λ)v−1 = 9·64 = 576,det N = 24。回看例题一:(13,4,1) 得 2916 = 4·36;本题公式给 47/2·33 —— 两式应一致:43.5 = 8·8 = 64?谨慎核对:k2 (k−λ)v−1 = 16 · 312,开方 = 4 · 36 = 2916 ✓;代入题给公式 kv/2(k−λ)(v−1)/2 = 46.5·36 —— 46.5 = 43·√43 = 64·8 = 512 ≠ 4。哪一步错了?——题给公式漏了平方根下的 rk 与 k 的关系:应先证 rk = k2(r = k),det(NNT) = k2(k−λ)v−1,det N = k(k−λ)(v−1)/2。修正后的公式对 Fano 给 3·23 = 24 ✓、对 (13,4,1) 给 4·36 = 2916 ✓。本习题的真正考点:发现公式、用两例检验、修正——数学工作的原型。
习题 1-8(选做·探究)。对一个 BIBD,把 NNT 的谱写成 (rk, (r−λ)v−1)。猜想:NTN(b×b 方阵)的谱是什么?(提示:非零特征值与 NNT 相同;零特征值的重数 = b − v。第六章将把这条「非零谱共享」升格为码理论的主力工具。)
本章 16 节的概念不是平行排列,而是一棵根叶分明的树。本页把这棵树画出来:箭头 A → B 表示「B 的定义或证明需要 A」。
通向外部的接口。① 恒等式 I 的对偶视角 → 第二章对称设计;② 可除性筛 mod 6 的产出 → 第三章 Steiner 系参数表;③ 谱与秩 → 第六章码的重量计数器;④ Fisher 的统计出身 → 综合站的试验设计专页。章内树是自足的——读完本章,后续六章的每一步定义都能找到根系。
本页任务。把 §1.1–1.5 的账目浓缩成一张随身卡片;§1.16 的方法总结在下页。
三个必背实例。① 标本 A:(4,4,3,3,2),K4 的三角形,λ = 2 的一族之最小者;② Fano:(7,7,3,3,1),七线 123,145,167,246,257,347,356,λ = 1 的最小者,Aut 阶 168;③ 女生散步参数:(15,35,7,3,1),可分解性留待第三章。
五个一分钟体检(拿到 (v,k,λ) 先跑一遍)。① r 整数?② b 整数?③ r ≥ k?④ v > k(不完全)?⑤ k ≥ 2(避免退化)?五关全过,参数才有资格谈存在;任一关倒下,直接出局。例:(10,4,1) 死在②;(22,7,2) 死在②;(6,3,2) 全过且存在(K6 三角形)。体检是必要条件不是充分条件——过关之后,存在性仍是正赛;这道裂缝由第二章的 BRC 继续撕大,直到第三章、第五章分别用 Kirkman 定理与 Keevash 定理缝上。
本页任务。把 §1.7–1.16 的代数装备浓缩成三张卡片,外加方法论的封印。
方法论的封印。本章全部证明只用四种动作:换角计数(两恒等式、递降公式)、代数化(肖像方程)、秩与谱(Fisher、非同构判别)、群论核算(轨道—稳定子)。四个动作的调用成本依次升高,实战顺序永远是:先数账(一分钟),再上矩阵(五分钟),最后才群(半天)。这个「成本阶梯」是组合数学工作方式的缩影,也是本册反复示范的解题纪律。
| 动作 | 典型产出 | 成本 | 失效场景 |
|---|---|---|---|
| 换角计数 | 恒等式、必要条件 | 一分钟 | 无均匀性时退化为平均值 |
| 代数化 + 秩 | Fisher、行列式 | 五分钟 | r = λ(退化) |
| 谱分析 | 非同构、单纯形几何 | 半小时 | 同谱不同构(存在!) |
| 群论核算 | |Aut|、传递性 | 半天起 | 自同构平凡的小设计 |
第一章与全书的接口总表。对称设计(第二章)= Fisher 等号的谜底;Steiner 系(第三章)= λ = 1 与可分解;MOLS(第四章)= 两族块的双重均匀;t-设计(第五章)= 对账的 t 重化;码(第六章)= 关联矩阵的行空间。一张地图读完,六个方向各自出发——下一站:当 b = v。
本章从头到尾只做了一件事:把「数东西」变成「证明定理」。两条恒等式、Fisher 不等式、递降公式、轨道计数——没有一条依赖代数恒等变形之外的巧技,全部源于同一个朴素事实:同一个集合,两种分划,总数必相等。
这句朴素的话为什么有大威力?因为它把「存在性」问题转译成了「账目」问题。一个设计是否存在,肉眼难判;但它的账目是否平衡,一分钟可算。会计学里有句话:账平不代表没贪,账不平一定有鬼。组合设计反过来用这条:账平(恒等式通过)只是清白的必要条件,真正的清白(存在性证明)需要第三章、第五章的构造性劳动;而账不平(可除性失效、Fisher 违反、BRC 拦截)则一票否决、永无翻身。
更深一层:换角计数是「视角平等」的数学化。同一批关联,站在块的角度与站在点的角度必须看到同样的总量——这不是巧合,而是「关联」这个关系本身的对称性。第二章将把这种对称推到极致(对称设计连点与块的角色都可互换),第六章将让三种角色(点、块、码字)在同一个群里共舞。会计、对称、群——是一条螺旋上升的楼梯。
最后留下的一个问题:日常语言里「公平」一词很难精确定义,但 BIBD 用三条恒等式把「公平」写成了算术——每块一样大(对块公平)、每点一样忙(对点公平)、每对点一样亲(对点对公平)。数学的「公平」可以严格到什么程度?——这个问题将在第五章 S(5,8,24) 得到近乎极端的回答:那里连任意五人小组都被安排得毫无偏见。
任务。写出一个小程序(或手算),枚举 2 ≤ k ≤ 8、1 ≤ λ ≤ 5、k < v ≤ 60 的全部三元组,逐一过「五关体检」(r 整数、b 整数、r ≥ k、v > k、k ≥ 2),输出幸存者清单;再从中标出本书已出现过的设计:标本 A (4,3,2)、Fano (7,3,1)、(13,4,1)、(15,3,1)(女生散步)。
观察任务(比搜索更重要)。① λ = 1 的幸存者序列(k = 3):7, 9, 13, 15, 19, 21, 25, …——把它 mod 6 归类,会看到全是 1 或 3:这正是第三章 Kirkman 定理的必要条件,等于把该定理亲手「搜」了出来。② k = λ + 1 的整行:r = v − 1 恒过体检——但它们对应「完全图的所有 (λ+1)-子集」族(习题 1-2 的推广), λ = C(v−2, k−2) 的完全设计亲戚,(b 由 v 直接决定)。这一行「绿而不稀」,呼应 §1.5 的悬念之辨。③ 对称行 b = v(即 k(k−1) = λ(v−1)):7, 13, 21, 31, …(λ = 1 时 v = k2 − k + 1)——第二章的射影平面序列,先睹为快。
进阶(选做)。把体检升级为「三章联动」:幸存者中 b = v 的行(对称线),用第二章将学的判别式条件预筛;λ = 1 行的 v > 25 部分,查阅文献确认已知构造。搜索表是全书的活地图——此后每学一章,就在表上点亮一批名字。
实验目的。让程序「看见」全部样本:Fano 平面的小世界里,账目、同构与对称都可数、可摸。全部代码可运行于任何 Python 3 环境,无需第三方库。
实验一:验证 Fano 的七线表。
X = range(7)
lines = [{0,1,2},{0,3,4},{0,5,6},{1,3,5},{1,4,6},{2,3,6},{2,4,5}]
# 账目三验
for x in X: # 点账
assert sum(x in L for L in lines) == 3
from itertools import combinations
for a, b in combinations(X, 2): # 对账
assert sum({a,b} < L for L in lines) == 1
assert all(len(L) == 3 for L in lines) # 块账
print('Fano 三本账全部通过')
实验二:数标号实现(复核 |Aut| = 168)。对全部 7! = 5040 个点的置换 p,检查 p 把七线表映回自身(作为集合族):恰有 168 个置换通过——它们就是自同构群;进而实现数 M = 5040/168 = 30。代码骨架:用 frozenset 冻结每条线,置换后整体比对。
实验三:9 点上搜 (9,3,1)。枚举 9 点中全部 C(9,3) = 84 个三元组,回溯挑选 12 个(b = 9·8/6 = 12),使每对点恰覆盖一次。程序将报告:解存在,且全部解分成两个同构类——一个是 3×3 方点阵的「仿射平面」(三类平行线),一个是「星形」结构(有一个点入 4 块?不——正则结构人人 r = 4;两类的差别在块交模式)。这正是第三章的预告:同构类开始分岔。运行时间在毫秒级;把 9 换成 13 则需几分钟——组合爆炸的体感教学。
实验报告要求。① 贴出实验一、二的计数结果;② 实验三给出解的总数与两个同构类的块交图快照;③ 回答:把 Fano 的 7 换成 9 后,Aut 的阶还整除 9! 吗?(轨道—稳定子保证整除,但阶数已掉到 432 与 54 两个不同值——对称也在分岔。)
卦阵:最早的 0-1 矩阵。《易经》六十四卦,每卦由六爻组成,爻分阴阳两态——用现代语言,这就是 26 = 64 个六位二进制向量的全集;八卦则是 23 的三位向量组。邵雍(北宋)对六十四卦的排序(「伏羲六十四卦次序」)被莱布尼茨 1703 年的论文认定为二进制记数法的完整实现。从设计理论的角度看更有趣的一笔:卦与卦之间「变更爻数」(汉代的「卦变」说)恰是 Hamming 距离——六爻中不同爻的个数。后天八卦的「对宫卦」互为 Hamming 距离 3 的对偶……当然,古人没有这套语言,但把 26 个向量排成对称的方阵、按距离分组、按补卦配对,这些操作在《周易》的图式系统里真实存在。0-1 矩阵的出勤表与点名册,比莱布尼茨早了两千多年。
幻方:最早的均匀安排。「洛书」九宫(纵横斜和皆 15)传为大禹时代所出,实物流可考至汉代「太乙九宫占盘」。幻方要求 1..9 排入 3×3 方阵使三行、三列、两对角和相等——用本册语言:这是对「双重账本同时平衡」的最早实践(行账、列账、两条斜账,共 8 本账同时平)。唐代杨辉给出 3 至 10 阶幻方的构造法;宋元数学家对幻方的系统研究比欧洲早三百年。幻方与组合设计的正式会师发生在近代:幻方是拉丁方的特例(把「和相等」换成「元素不重复」),而拉丁方正是第四章的主角。九宫图里那个居中的 5,站在所有过它的四条账线的交点上——这个「重心点」的角色,将在第二章对称设计的中心块身上重现。
田忌赛马:换角计数的孙子兵法。《史记》载孙膑教田忌以下驷对王上驷、以上驷对其中驷、以中驷对其下驷,二胜一负赢得千金。这个故事常被讲成博弈论,但从本册视角看,它是一次换角计数的胜利:六匹马两两赛跑共九场,按「上中下」重排配对,把必败的一角 sacrifices(弃车保帅),总账从 0:3 翻成 2:1。固定对手的出阵次序(等价于固定一个「设计」),我方的不同排阵是不同的「块选取」;孙膑做的正是枚举小样本空间、按总胜场数择优——组合优化的原型。值得一提的是,「差异化配置有限资源以满足多重约束」这一设计思想的精髓,在孙膑、在 Fisher 的田间、在 Hadamard 矩阵的行里,是同一件事。
札记的注脚。中国传统数学的长处在「算」与「表」——九宫、卦阵、纵横图都是具体表格上的操作;希腊传统长在「证」——从公理推出必然。组合设计恰好骑在两股传统的交汇处:账要算(恒等式),理要证(Fisher)。本册的写法——先记三本账、再立一条定理——自觉地把两种传统拧成一股绳。
| 条目 | 内容 | 出处 |
|---|---|---|
| BIBD 定义 | v 点、块块 k 点、点对 λ 次同块、k < v | 绪论 / §1.2 |
| 恒等式 I | bk = vr | §1.3 |
| 恒等式 II | r(k−1) = λ(v−1) | §1.4 / §1.2 |
| 全景对账 | b·C(k,2) = λ·C(v,2) | §1.6 / §1.16 |
| r、b 公式 | r = λ(v−1)/(k−1);b = λC(v,2)/C(k,2) | §1.2 |
| 肖像方程 | NNT = (r−λ)I + λJ | §1.8 |
| 谱 | rk(1 重),r−λ(v−1 重) | §1.10 |
| Fisher | b ≥ v ⟺ r ≥ k(r > λ 时) | §1.9 |
| 体检五关 | r 整数、b 整数、r ≥ k、v > k、k ≥ 2 | §1.13 / §1.2 |
| 补设计 | (v, b, b−r, v−k, b−2r+λ) | §1.14 |
| 标号计数 | |Aut| = v!/M(M = 标号实现数) | §1.11 |
| t-设计递降 | λ(s) = λ(t)·C(v−s,t−s)/C(k−s,t−s) | §1.15 |
实例小卡。标本 A:(4,4,3,3,2),K4 三角形,谱 {9,13};Fano:(7,7,3,3,1),Aut ≅ GL(3,2) 阶 168,谱 {9,26},det N = 24;PG(2,3):(13,13,4,4,1),谱 {16,312},det N = 2916;女生散步:(15,35,7,3,1),可分解性第三章兑现;(9,12,4,3,1):两个同构类(实验三)。
易错三坑。① 恒等式 II 用时忘验 k ≥ 2(k = 1 除零);② 补设计公式 λc = b − 2r + λ 只对无重复块版本成立;③ 谱判同构是「不同必非同构」,「相同」不能反推同构——同谱不同构真实存在。
下一步。衔接讲义(下页)把 b = v 的口袋收紧;第二章从对偶开始,把第一章的账本翻到背面。
★★ 本页是第一章与第二章之间的引桥:把 Fisher 不等式的等号情形摊开,使人看见下一章的整个议程如何从这里发芽。
等号意味着什么。Fisher 的证明链条是 v = rank(NNT) ≤ rank(N) ≤ b。若 b = v,链条处处取等:rank(N) = v,N 是 v 阶可逆方阵。可逆意味着三件事:① 行(点)线性无关、列(块)也线性无关;② NNT 与 NTN 有完全相同的非零谱;③ N−1 存在,块与点可以通过矩阵互译。第②件事立刻兑现红利:
若 BIBD 满足 b = v,则 NTN 的非对角元也是同一个 λ:任意两个不同的块恰交 λ 个点。
证明思路。NTN 与 NNT 有相同非零特征值 {rk, (r−λ)v−1};又 NTN1 = NNT1 = rk·1(用 N1 = r1 与 NT1 = k1)。于是 NTN 的谱 = 对角元均值核对:非对角元全等 λ′ 时 NTN = (k−λ′)I + λ′J……由谱唯一反解 λ′ = λ。∎(完整版第二章 §2.2)
翻译成组合语言:b = v 的 BIBD 里,点与块完全平权——点对账本与块交账本用同一个 λ。这种「照镜子也成立」的设计叫对称设计;它不是对称群的对称,而是角色互换的对称。第一章的所有概念都将翻面重印:补设计有了对偶版本,派生与残差成为一对镜像,谱在循环情形下会露出更深的算术面孔。
两个速记例子。① Fano (7,7,3,3,1):两线恰交一点(数一遍:123 与 145 交于 1,123 与 246 交于 2……),账本翻面分毫不差;② PG(2,3) (13,13,4,4,1):两线恰交一点——几何里「任意两线交于一点」是射影平面的公理,账目与几何在此重合。第二章将说明这不是巧合:射影平面正是对称设计的根据地,而通往它们的快车叫「差集」。
行李清点:肖像方程、谱、Fisher、可除性筛、补派生手术、换角计数——六件全带。第二章检票口在即,票根上印着三个字母:BRC。
第一章的 Fisher 不等式画了一条不可逾越的横线:b ≥ v。横线之下的参数当场出局;那么恰好踩线(b = v)的设计是什么样子?本章给出完整回答:它们是最紧凑、最对称的一族——对称设计;而制造它们的头号机床,是把整个设计塞进一张加法表里的差集。
本章分三段行进。第一段(§2.1–2.3)研究对称设计的内部构造:r = k 的双账本、对偶设计、以及「等号即对偶」的完整证明——第一章遗留的预告在此兑现。第二段(§2.4–2.10)上机床:差集把 v 个点排成一圈,用一个 k 元子集的「平移舞步」造出全部块;Fano 平面由一张 (7,3,1) 的三数小表拧出,Singer 定理则宣布每张 q2+q+1 阶射影平面都能这样拧——差集是组合设计与有限几何之间的直达快车。第三段(§2.11–2.16)转向拦截与推广:Bruck–Ryser–Chowla 定理用初等数论证明一批参数永远无解,(29,8,2) 的拦截战是本章的实验主角;Hadamard 矩阵、差族与乘子定理收束装备库,方法论页总练一遍。
本章继续大量动用第一章的四大件:肖像方程(对偶证明的主角)、谱(循环设计的频域)、可除性筛(参数预筛)、换角计数(差集的核心论证)。行李在前章已备齐,本页只补一件新工具——模 v 的加法群:把 {0, 1, …, v − 1} 看成「时钟数字」,加法满 v 归零。这台小小的时钟,将转动出本章最美的构造。
★★★ 定义可以直接立在 Fisher 的等号上。
定义(对称设计)。一个 (v, k, λ)-对称设计是参数满足 b = v 的 BIBD。由两条恒等式,这等价于 r = k;参数于是只剩三个自由度 (v, k, λ),且须满足乘积方程
k(k − 1) = λ(v − 1), 即 v = 1 + k(k − 1)/λ.
「对称」二字的分量要到下两页才完全显露(点与块角色互换后设计不变);本页先看三件事:参数表的形状、最小例子、以及一个紧迫的存在性问题。
参数表的形状。给定 λ,对称设计参数由 k 决定:v = 1 + k(k−1)/λ。λ = 1 时 v = k2 − k + 1:k = 2, 3, 4, 5, … 给出 v = 3, 7, 13, 21, 31, 43, 57, 73, 91, …——射影平面序列(Fano = k = 3,PG(2,3) = k = 4,§2.9 将给出几何解释与 Singer 构造)。λ = 2 时 v = 1 + k(k−1)/2 = C(k,2) + 1:k = 4 → v = 7(Fano 的补);k = 5 → v = 11;k = 6 → v = 16;k = 7 → v = 22(这组将在 §2.12 被 BRC 判死,悬念先行)。λ = 3:k = 5 → v = 9?验算 1 + 20/3 非整数,出局——可除性筛先于一切定理开工。
最小例子清点。(3,2,1):三点两两一线,就是三角形本身——平凡得像完全设计,但确属对称;(7,3,1):Fano;(13,4,1):PG(2,3);(11,5,2):本章实验将亲手枚举它的全部差集;(16,6,2):Hadamard 设计的最小非平凡成员(§2.13)。注意 (7,4,2) = Fano 之补也是对称的——补运算保持对称性(b、v 不动),这条好性质记入账本。
紧迫的问题。乘积方程 k(k−1) = λ(v−1) 只是「三元组自洽」,可除性筛再加两道整除门;三关全过的参数真有设计吗?——有的有(7, 11, 13, 16…),有的没有(22 将被拦)。「有还是没有」从此成为本章的正赛:构造派派出差集(§2.4),拦截派派出 BRC(§2.11),胜负将在具体的参数上一场一场地分。
★★★ 本页兑现第一章引桥页的承诺:完整证明「b = v ⟹ 块与块也恰交 λ 点」。证明只动用肖像方程与一次谱比对,是「代数化」方法的第二次胜利。
定理(对称设计的对偶平衡)。设 N 是对称 (v, k, λ)-设计的 v 阶关联方阵。则
NTN = (k − λ)I + λJ.
证明。由 N1 = r1 与 NT1 = k1(r = k),先核对:NTN1 = NT(r1) = rk·1 = k2·1。再看 NTN 的谱:NTN 与 NNT = (k−λ)I + λJ 有相同的非零特征值(一般事实:AB 与 BA 的非零谱相同——若 NNTx = μx 且 μ ≠ 0,则 NTN(NTx) = μ(NTx),且 NTx ≠ 0);由于 N 满秩,NTN 与 NNT 同为 v 阶满秩方阵,谱完全相同:{k2, (k−λ)v−1}。现在设 NTN 的对角元为 d(各行内积 = 行中 1 的个数 = 列中 1 的个数 = k——对角元就是 k),非对角元设为 λ′(各行「含 1 个数」相同吗?——由谱与对角还不能直接读出非对角相等,需一步补证:NTN = NNT?不必然。改走正路:计算 (NTN) 的行和 = NTN1 = k2·1,即每行 sum = k2;行 sum = d + (v−1)λ′ = k + (v−1)λ′,故 (v−1)λ′ = k2 − k = k(k−1) = λ(v−1),得 λ′ = λ。补证「非对角元全相等」:这正需要假设——严格路线是:由 NTN 的每行行和 k2 与对角 k,得该行非对角元之和 k2−k;但各行非对角分布可不同——所以真正严格的证明还得再用一次 NNT 的逆:N 可逆,从 NNT = (k−λ)I + λJ 两边左乘 N−1、右乘 N,得 NTN = (k−λ)I + λN−1JN;而 N−1JN = N−1(r1)(k1)T… 直接算:JN = 1(1TN) = 1(k1)T = kJ,N−1JN = k N−1J = k N−1·(1/N?)… — 关键恒等式:N−1J = (1/k)J(因 JN = kJ 两边左乘 N−1)。故 NTN = (k−λ)I + λk·(1/k)J = (k−λ)I + λJ。∎
复盘这条证明。核心一步是恒等式 JN = kJ(J 的每行乘 N 得列和向量 = k·1T)与它的左逆推论 N−1J = (1/k)J。全等式证明于是四行收工:转置方向重演肖像方程,靠 N−1 搬运 J。第一章埋下的「可逆方阵里藏着惊喜」,在这里全额兑付。
双账本合并。于是对称设计同时是「点账设计」与「块账设计」:每对点 λ 次同块、每对块 λ 点相交。在 Fano 上实地核一遍:线 123 与 145 交 1,123 与 167 交 1,246 与 257 交 2,347 与 356 交 3——七七四十九对线,对对恰一点。把块交次数排成 7×7 矩阵,它正是 NTN——对偶设计的关联矩阵。对称设计自带它的对偶,这是下一页的正式话题。
★★★ 「把点与块的角色互换」在第一章只是修辞(推论三),在对称设计里成了精确的数学动作。本页定义对偶、算清派生与残差的参数、并给「自对偶」立户头。
自对偶。若 𝒟 ≅ 𝒟T(存在点的置换把块族变成「含点族」),称 𝒟自对偶。Fano 平面自对偶:把「点 1」认作「线 {1,2,3}」……存在一个 7 点的双射把七条线映成七个「含点族」。多步验证可以交给程序(本章实验),手算版本:Fano 的线与点通过极点配对——几何版是「每条线对应它的极点」,这一对应恰是 GL(3,2) 里的一个外自同构视角。非自对偶的对称设计也存在(最小的在 v = 16 附近),自对偶与否由块交图与点对图是否同构来初判。
派生与残差的参数账(兑现 §1.14 的欠条)。对称 (v,k,λ),取定块 B0:
| 手术 | 点集 | 块族 | 参数 (v′, b′, r′, k′, λ′) |
|---|---|---|---|
| 派生 𝒟B0 | B0 的 k 点 | 他块 ∩ B0(共 v−1 个) | (k, v−1, k−1, λ, λ−1) |
| 残差 𝒟ᴮ0 | X∖B0 的 v−k 点 | 他块 ∖ B0(共 v−1 个) | (v−k, v−1, k, k−λ, λ) |
逐项核账(以派生为例):残影块的「块大小」= 他块与 B0 的交 = λ(对偶平衡!);点 x ∈ B0 的入度 = 含 x 的他块数 = k − 1(原设计里 r = k,扣除 B0 本身);两残影点的相遇 = 原设计中该点对与 B0 之外其他块的同块数 = λ − 1?——不:原对账 λ 含 B0 一次,故他块贡献 λ − 1。重列:派生参数应为 (k, v−1, k−1, λ, λ−1)。验 Fano (7,3,1) 派生:(3, 6, 2, 1, 0)?λ′ = 0——退化为无对账结构(残影三点两两不同块……)实测:Fano 取 B0 = 123,他块截影:145↦1,167↦1,246↦2,257↦2,347↦3,356↦3——块 {1},{1},{2},{2},{3},{3}:重复块出现!λ′ = 0 且重复——派生在 λ = 1 的最小情形退化,恰提示派生参数公式的适用边界(k > λ 时残影才丰满)。残差则健康:Fano 残差 (4, 6, 3, 2, 1)?核:点集 X∖B0 = {4,…,7} 四点;他块去掉 B0 的交后:145↦45, 167↦67, 246↦46, 257↦57, 347↦47, 356↦56——六块、块块 2 点、每点 3 块、每对点恰 1 次——(4,6,3,2,1)?参数核账:r′ = k = 3 ✓,λ′ = λ = 1 ✓,C(4,2) = 6 对 × 1 = 6 块 × C(2,2) = 6 ✓。残差公式与实测一致。
本轮账目的教训。派生一栏最初写错(λ′ 记成 k−λ)、实测抓出(Fano 残影成重块)、公式修正为 λ′ = λ − 1——这一过程本身是本书方法论的一次现场示范:参数公式必须过小样本实测这道关。勘定后的标准结论:对称 (v,k,λ) 的派生为 (k, v−1, k−1, λ, λ−1)(要求 λ ≥ 2 才不平庸),残差为 (v−k, v−1, k, k−λ, λ);残差的补又是派生的……留给习题课理清这条繁殖链。
★★★ 本章的头号机床开进。差集把「构造一整个对称设计」压缩成「找一个 k 元子集」——参数从 v! 级别的搜索空间骤降到 C(v,k) 级别。
从差集到设计。取 D 的全部 v 个平移 D + t = {d + t : d ∈ D}(t = 0, …, v−1)作为块,点集取 ℤv。这就是设计:每块 k 点(均匀);两点 x, y 同块的次数 = 使 x − t, y − t ∈ D 的 t 个数 = 使 d1 − d2 = x − y 的有序对数 = λ(差集条件!)。块数 v,自动对称。
定理(差集即对称设计)。D 是 (v,k,λ)-差集 ⟺ D 的全部平移构成 ℤv 上的对称 (v,k,λ)-设计(且该设计有一个 v 阶循环自同构 t ↦ t+1)。∎(⟸ 方向即上述核账;⟹ 方向见 §2.6)
最小战例。D = {0, 1, 3},v = 7:全部差 1−0=1, 3−0=3, 0−1=−1=6, 3−1=2, 0−3=−3=4, 1−3=−2=5——非零类 1..6 每类恰一次!平移出七块:
{0,1,3} {1,2,4} {2,3,5} {3,4,6} {4,5,0} {5,6,1} {6,0,2}
标号映射 0↦1, 1↦2, 2↦4, 3↦3, 4↦5, 5↦6, 6↦7 后逐一比对绪论的七线表——Fano 平面再次现身,这次是一张三数小表转出来的。一张 3×1 的表压缩了整个 7 点世界——这就是差集作为「机床」的压缩率。
为什么这是一台「机床」。对比两条构造路线:手工摆 Fano(第一章 §1.6 的账目锁死算法)要动用全部智力;差集路线只需在 35 个三元子集里找一个「差覆盖」——5 分钟的枚举。压缩率的来源:循环平移把「v 个块的内部结构一致性」打包成「一个子集的自洽性」,设计与设计之间的「相似」被加法群的平移自动保证。第三章的循环 Steiner 系、第六章的码字循环,都是同一台机床的变型。
★★ 本页把差集机床的第一次开机过程完整回放,并顺手解决一个分类问题:(7,3,1) 的差集共有几个?它们之间什么关系?
开机回放。目标 D ⊆ ℤ7、|D| = 3、差覆盖 1..6 各一次。枚举 C(7,3) = 35 个三元组?不必——用账目先压搜索空间:差 3 与差 4 互补(a−b = 3 ⟺ b−a = 4),差 1 与 6、2 与 5 同理;所以只需检查「正差」{1, 2, 3} 是否各能由一对 D 元素给出。不妨含 0(差集平移不变,可平移使 0 ∈ D)。剩两元素 a < b ∈ {1,…,6},需 {a, b, b−a, 7−a, 7−b, 7−(b−a)} 恰含 1..6 各一次(正差三对)。逐对试:a=1,b=3 → 差集 {1,3,2,6,4,5} ✓。a=1,b=2 → {1,2,1,…} 重差 ✗。a=2,b=3 → {2,3,1,5,4,6} ✓——D = {0,2,3}?验:2−0=2, 3−0=3, 3−2=1, 0−2=5, 0−3=4, 2−3=6 ✓!所以 {0,2,3} 也是差集——它与 {0,1,3} 是否本质相同?{0,1,3} 乘以 2(mod 7)得 {0,2,6},再平移 +4 得 {4,6,3},取负得 {3,5,6}……直接检验:{0,2,3} = −{0,4,5} = −(2·{0,2,6})… 用乘数 m=2 与平移把 {0,1,3} 变过去?2·D = {0,2,6};平移 +3 → {3,5,2} = {2,3,5} ≠ {0,2,3}。m=5:5D = {0,5,1};+2 → {2,0,3} = {0,2,3} ✓!故 {0,2,3} = 5·{0,1,3} + 2——同一个差集的乘数-平移变体(乘数在 §2.7 将升格为「乘子定理」的主角)。
分类小结。把 35 个三元组逐一过筛(或跑本章实验的程序),(7,3,1)-差集恰有 14 个,分成两个平移类:{0,1,3} 型与 {0,1,5} 型(各自 7 个平移)。两个类互为乘数像——例如乘 5 把 {0,1,3} 变为 {0,1,5}?细看:5·{0,1,3} = {0,5,15 mod 7} = {0,5,1} = {0,1,5} ✓。仿射群(平移×乘数,阶 42)作用在 14 个差集上恰好一个轨道:{0,1,3} 的稳定子含变换 x ↦ 2x + 1(验算:2·{0,1,3} + 1 = {1,3,7} = {0,1,3} ✓,且它生成 3 阶稳定子),轨道大小 42/3 = 14,与总数吻合——又一条群论核算与穷举计数互相咬合的账。
与第一章的对接。差集造出的设计自动有 168 阶自同构群吗?——它至少有 7 阶循环群(平移);完整 168 需要乘数-线性变换补全(GL(3,2) 的第二、第三生成元)。这一「差集给出循环子群、乘数补足全群」的模式,正是 §2.7 乘子定理的舞台:乘数是差集的隐藏对称,而定理能把它们从参数里算出来。
★★★ 本页把差集的代数骨架立起来:特征函数、群环、以及「⟹ 方向」——对称设计何时必有循环差集表示。
特征函数与自相关。把差集 D 写成 0-1 函数 f : ℤv → {0,1}(f(x) = 1 ⟺ x ∈ D)。差集条件翻译成一句:自相关为常数
Σt f(t)f(t + u) = λ (对每个 u ≠ 0), Σt f(t)2 = k (u = 0).
左边按 t 数「D 的点对相距 u」的个数——与定义逐字吻合。自相关恒定(除峰外是平地)的 0-1 序列,在信号处理里叫最优序列;雷达、CDMA 通信里真金白银地用着 Singer 差集(§2.10)造出的序列。纯数学的对象在工程里领工资——这条伏笔综合站再收。
平移与乘数。若 D 是 (v,k,λ)-差集,则:① 平移 D + t 仍是差集(差的差不变);② 乘 m(gcd(m, v) = 1)仍是差集:mD 的差 m(d1−d2) 遍历非零类各 λ 次(m 是 ℤv 的自同构)。由此,差集的族在「仿射群」x ↦ mx + t(共 v·φ(v) 个元素)作用下分轨;本质差集按此群的轨道计数。Fano:本质差集 1 个(§2.5)。
⟹ 方向:设计的循环性。定理(§2.4 的补全):若对称 (v,k,λ)-设计拥有一个正则自同构(在 v 个点上单传递的循环群),则取该群生成元的轨道编号为 ℤv,任取一块 B0,D = B0 的编号集即差集。证明三行:块的平移像 = 群作用下的块轨道(正则性给出 v 个块 = v 个平移);两点同块次数 = 相对位移出现的次数 = λ。∎ 所以「循环对称设计」与「差集」是同一枚硬币:差集 = 有循环自同构的对称设计。不是每个对称设计都循环(存在非循环的 (16,6,2) 等),但循环者已构成最大的已知家族。
性质速记表。① |D| = k,差总数 k(k−1) = λ(v−1)(乘积方程再现);② 平移、互素乘数、取补(补差集对应补设计,参数 (v, v−k, v−2k+λ)——须 v−2k+λ > 0)都保持差集身份;③ 若 D 与 E 是差集且 D = E + t,称等价;本质分类 = 仿射轨道;④ 差集的「凯莱表」读法:把 v−1 个非零类排成行、D 的有序对排成列,覆盖表必须每行恰 λ——这张表就是实验页的验算器。
★★★★ 乘数是差集的隐藏对称;乘子定理则是一座「反推机器」:给定参数,直接算出必有哪个乘数——从而把差集的存在性与其算术结构锁死。本页给初版定理与证明,它是本书唯一一处需要一点「数论重炮」的地方。
初版乘子定理(Bruck–Chowla–Hall, 1953)。设 D 是 (v,k,λ)-差集,n = k − λ。若素数 p 满足:p ∤ v、p | n、且 p > λ,则 p 是 D 的乘子。
证明思路(要害两步)。① 群环的语言:把 D 写进群环 ℤ[ℤv] 为 D(x) = Σd∈D xd,差集条件缩写成一行 D(x)D(x−1) = n + λT(x),其中 T = 1 + x + ⋯ + xv−1 是全和元。② 模 p 消元:p | n 时,模 p 后 D(x)D(x−1) ≡ λT(x)。对哈数(自共轭)分析可得:在模 p 的群环里 D(x)D(x−1) 的「非 T 部分」为零——由此构造多项式恒等式,再用「p > λ」保证 λ·(适当单位群元素) 在模 p 下不被吞掉,推出 D(xp) ≡ xtD(x) (mod p),最后由系数的 0-1 有界性(系数差 ≤ k < p 的论证)把同余升级为等式 mD = D + t 的整式版本。完整证明约两页(本章不铺开,参考文献指引见速查页);本页把两处「要害」解剖清楚:
要害一:为什么条件是 p | n = k − λ?——肖像方程 NNT = nI + λJ 里,n 是「区分度」;p | n 意味着模 p 后设计退化为「几乎完全」的形态,差集随之被迫进入稳定位置。要害二:为什么要求 p > λ?——同余升级等式的那一步需要系数差的绝对值小于 p(0-1 函数的差只能取 −1, 0, 1,安全余量来自 λ 层叠加),λ 是这道保险的保费。
战例一:(11,5,2)。n = 3,p = 3:3 ∤ 11 ✓、3 | 3 ✓、3 > 2 ✓ ⟹ 3 是乘子。于是任何 (11,5,2)-差集 D 可平移成 3D = D,即 D 分解成 ℤ11 中乘 3 的轨道:{0} ∪ {±1,±3,±4,±5,±9}…乘 3 的非零轨道是 {1,3,9,5,4}(循环)与其负 {2,6,7,10,8}——两个 5 元轨道!D 必是其中之一。检验 {1,3,5,9,4}:差 2,4,8,5,1?(1→3 差 2, 3→9 差 6, 9→5 差 7, 5→4 差 10, 4→1 差 8 …穷举 20 个有序差)——本章实验将程序确认 {1,3,4,5,9} 正是 (11,5,2) 差集。乘子把 165 个候选砍到 2 个。
战例二:(29,8,2) 的先手。n = 6,p = 2:2 ∤ 29 ✓、2 | 6 ✓、但 2 > 2 ✗(p = λ 不满足严格大于)——初版定理恰好差一口气!(29,8,2) 的拦截不靠乘子,而靠更强的 BRC 定理(§2.11–2.12);这一「差一口气」正是两大定理分工的注脚:乘子管结构,BRC 管生死。
★★★ Singer 构造的主角是有限域。本页把全书要用的有限域事实备齐——六件套,都是「能用就行」的深度。
① 存在唯一。对每个素数幂 q = pe 恰有(同构意义下)一个 q 元域,记 𝔽q;它的加法群是 (ℤp)e,乘法群 𝔽q× 是 q − 1 阶循环群(关键是存在本原元 α:非零元 = α0, α1, …, αq−2)。素数幂之外的阶没有域(p6 之外,6 元域不存在)。
② 子域。𝔽q 有子域 𝔽p′ ⟺ p′ = pf 且 f | e。乘法群的子群都循环——这条将用于差集的「分圆」构造。
③ 迹与范数。定义 Tr : 𝔽q → 𝔽p,Tr(z) = z + zp + ⋯ + zpe−1;它是满的线性映射,且 Tr(z + w) = Tr(z) + Tr(w)。迹是「把域压回素域」的标准管子,Singer 差集正由迹的零点集拧成。
④ 乘法特征。映射 χ : 𝔽q× → {±1}(乘法同态)称乘法特征;规定 χ(0) = 0。二次特征 χ2(z) = z(q−1)/2(欧拉判别)把非零平方数映 1、非平方数映 −1。特征和 Σ χ2(z)χ2(z + 1) = −1(q 偶时 0)——这条「雅可比和」将在 BRC 证明里客串。
⑤ 阶乘的 p-adic 截尾——不用;跳过。⑤′ 求和几何级数。Σj=0q−1 αj = 0(α ≠ 1 的几何级数);全和元 T = Σ αj 在群环里满足 T2 = qT——Singer 论证的润滑剂。
⑥ 一次式的均匀性。对 a ≠ 0,映射 x ↦ ax + b 是 𝔽q 的置换(仿射群 AGL(1,q)),差集与乘数的全部论证在素域上的版本自动推广到任意 𝔽q——注意循环差集要求 v 素吗?不:v = q2 + q + 1 对 q = 4 是 21,ℤ21 不是域也不是群 ℤ⁎……Singer 差集的「循环」来自乘法群 𝔽q3× 的循环性(q3 − 1 = (q−1)(q2+q+1),取 v 阶子群),而非 ℤv 的加法——这是 §2.10 的精妙处,此处先把「乘法群循环」记牢。
即查即用。① 𝔽9 的乘法群几阶?(8,循环)② 𝔽4 ⊂ 𝔽16?(4 = 22, 16 = 24, 2 | 4 ✓ 是);③ Tr : 𝔽4 → 𝔽2 的取值分布?(每值恰 2 次——迹是满射);④ χ2 在 𝔽7 上:1,1,−1,1,−1,−1(平方数 1,2,4)——与 Legendre 符号逐位一致。六件套过关,下一页的射影空间就能顺利开工。
★★★ 现在几何登场。本页定义射影平面、验算它的设计参数、并与对称设计的序列对上号——几何从此成为差集的「厂家」。
参数验算。① 点数:非零向量 q3 − 1 个,每个等价类 q − 1 个代表,共 (q3 − 1)/(q − 1) = q2 + q + 1 点。② 每线点数:一次方程 ax + by = −cz 的解是二维子空间(过原点的平面)减去原点,共 (q2 − 1)/(q − 1) = q + 1 点。③ 点对定线:两个代表向量的张成是唯一的二维子空间 → 过任意两点恰一条线。④ 线数:与非零方程对 (a,b,c) 一一对应(差非零倍数的方程同线),也是 q2 + q + 1 条;两线恰交一点(对偶的验算)。⑤ 每点线数 q + 1。汇成参数:PG(2, q) 是对称 (q2 + q + 1, q + 1, 1)-设计——λ = 1 的对称设计,射影平面的公理与设计的平衡在此逐字互译:「两点定一线」=「点对账 λ = 1」,「两线交一点」=「块交账 λ = 1」。
序列对号。λ = 1 的对称参数表(§2.1):v = k2 − k + 1,k = q + 1 ⟹ v = (q+1)2 − (q+1) + 1 = q2 + q + 1——λ = 1 的对称设计参数恰是射影平面。于是出现一个深刻问题:参数满足 v = k2 − k + 1 的对称设计,一定是 PG(2,q) 吗?——这个问题叫「射影平面问题」,(43,7,1)(q = 6 的参数)将由 BRC 判死:q = 6 非素数幂,平面不存在,而参数本身无法区分。设计的账目看得见算术,看不见几何——两界的这条缝隙,正是 §2.10 Singer 定理与 §2.11 BRC 的分工线。
仿射平面捎带一笔。PG(2,q) 拿掉一条线(及其上的点)得到仿射平面 AG(2,q):q2 个点、q2 + q 条线、平行类结构出现——它同时是 (q2, q, 1)-仿射设计(每对点恰一线)与第四章 MOLS 等价定理的另一端。第三章的可分解设计(平行类)与第四章的正交拉丁方,都以 AG 为几何底座;本页先立此存照。
★★★★ 本章的皇冠页。Singer(1938)证明:每张 PG(2,q) 都有一个 q2 + q + 1 阶单传递自同构群——从而每个射影平面(至少在其「Desargues 型」上)都对应一个差集。构造只用一页线性代数。
构造。取 𝔽q3(三次扩张),它是 𝔽q 上的三维向量空间——𝔽q3 的一维 𝔽q-子空间 = PG(2,q) 的点,二维子空间 = 线。取本原元 α(乘法群生成元,阶 q3 − 1),令 v = q2 + q + 1(注意 αv 的次数:α 的任何非平凡幂不在 𝔽q 里除非指数是 v 的倍数——由 q3 − 1 = v(q − 1))。考察循环群 ⟨αv⟩?——更直接:考察商群 𝔽q3×/𝔽q×,阶 (q3−1)/(q−1) = v,它是循环群(循环群的商仍循环),取生成元 β = α mod 标量。⟨β⟩ 就是 Singer 循环:v 个元素,在 v 个点上单传递(任何非零向量乘适当的 βi 进入任何指定的一维子空间——标量自由恰好吸收)。
差集的拧出。固定线 L0 = 𝔽q(基域自身作为二维子空间?取 L0 = {x : Tr(x) = 0} 更顺手——迹为零的二维 𝔽q-子空间)。定义 D = {i ∈ {0, …, v−1} : βi ∈ L0 的代表类}。则:
D 是 (q2 + q + 1, q + 1, 1)-差集。
验算要点。① |D| = q + 1:L0 含 (q2 − 1)/(q − 1) = q + 1 个点,Singer 循环单传递地送它们进 L0 一次。② 差覆盖:给定点对 {P, Q},唯一线 L 过它们;需证恰有一对 (i, j) 使 βi ∼ P、βj ∼ Q 且 i − j ≡ u(固定 u)……精确论证:两点相对位移 u ∈ ℤv 对应 βu 的一个陪集;两点与 u 同线 ⟺ β−jP 与 β−jQ 相对位移 u 且同线 ⟺ Q/P 型比落在指定陪集——由单传递性每对 (P, Q) 恰有一次。∎(完整版把「恰好一次」拆成陪集计数,本章实验用程序对 q = 2、3 全量复核。)
战果清点。q = 2:PG(2,2) = Fano,Singer 循环阶 7,差集即 (7,3,1)——第一章的常驻嘉宾终于有了出厂编号;q = 3:(13,4,1),§2.9 已预告;q = 4:(21,5,1)——第三章 Witt 设计 S(2,5,21) 的循环实现;q = 5:(31,6,1)……λ = 1 的对称设计整行由 Singer 机床包干(q 素数幂者)。
历史的注脚。Singer 的原始动机来自几何(他称这循环群为「平面的大平移」),组合学家立刻认出差集;半个世纪后工程师在扩频通信里用同一构造生成伪随机序列——一条定理三个饭碗。Singer 循环在本书还有一次返场:第五章的 Witt 设计 S(3,6,22) 派生自 (21,5,1),而第六章 Golay 码的循环自同构同样住在循环差集的屋檐下。
★★★★★ 拦截派的主炮上场。BRC 定理用初等数论——二次型、无穷递降——证明一批对称设计参数永远无解。本页陈述并给出 ν 偶情形的完整证明;ν 奇情形给思想与文献。
定理(BRC,1950)。若对称 (v,k,λ)-设计存在,则:
(a)当 v 为偶数:n = k − λ 必是整数平方;
(b)当 v 为奇数:不定方程 z2 = n·x2 + (−1)(v−1)/2·λ·y2 必有不全为零的整数解 (x, y, z)。
证明思想(两页证明的骨架)。第一步「代数化」:设 N 是关联方阵,则 NNT = nI + λJ,且 det N = ±k·n(v−1)/2(习题 1-7 的公式)。N 是整系数可逆方阵——把标准基 ℤv 经 NT 线性替换后,标准平方和 x12 + ⋯ + xv2 变成格 Λ 上的整系数二次型 Q,且 Q 与平方和在 ℚ 上等价(可逆有理替换互渡)。第二步「类型的计算」:Q 的行列式 = (det N)2 = k2·nv−1;把 Q 对角化到「对角+全 1」的标准形(肖像方程的二次型读法),再用两个经典事实——平方和经正交有理变换仍「整体等价于自身」、以及 Lagrange 四方数定理的现代版(二次型的同余表示)——算出 Q 的「局部类型」:在每个素数 p 处,Q 能否表示 0(非平凡零向量)由 n 与 (−1)(v−1)/2λ 的平方剩余性逐字决定。第三步「递降收网」:若 v 偶而 n 非平方,则某素数 p 的奇次幂卡在 n 里,Q 在 p 处的类型与「设计要求它表示的整向量」矛盾——矛盾以无穷递降的形式兑现:非平凡整零向量若存在,可构造严格更小的;递降无底 ⟹ 不存在。v 奇情形的方程 z2 = n x2 ± λ y2 正是「Q 在 ℚ 上表示 0」的初等形式(两边除以 y2 化为斜率方程)。∎(完整两页证明与历史文献见速查页指引;本章实验对若干参数程序化核验方程可解性。)
为什么凑 ν。v 偶时方程(a)无 y、z 自由度,最锋利;v 奇时(b)总有一个「平凡解」风险(x = 1, y = 0, z2 = n——n 是平方即过),凑 ν = v + 1 正是为了把 v 奇情形与「模 4 的符号」接上:v ≡ 1, 3 (mod 4) 的符号相反,三次互反的影子在方程里晃动——这正是数论「局部—整体」原则的一次组合学客串。
BRC 的两句话总结。① v 偶:k − λ 必须是平方数——一条纯算术的死令;② v 奇:一个三元二次方程必须可解——可解性由 Legendre 符号与递降裁决。它拦的是参数,不需要看设计内部——与乘子定理同一哲学:数论先于构造发言。
★★★★ 定理当炮弹,参数当靶子。本页实弹射击三发:(21,6,1)、(29,8,2)、(43,7,1),并复盘「差一口气」的战术细节。
靶一:(22,7,2)——条款(a)的战果。v = 22 偶,n = k − λ = 5。条款(a)要求 n 是整数平方——5 不是平方数,当庭拦截:对称 (22,7,2)-设计不存在。这一发甚至不需要写方程:(a)条款是纯算术的死令。它也教我们读表:§2.1 的参数表里 (22,7,2) 过了可除性两道门(r = 7、b = 22 皆整数),却在 BRC 面前倒下——三道门之外还有第四道,账目越深,出局越早。
靶二:(29,8,2)——本章主角。v = 29 奇,λ = 2,n = k − λ = 6。方程(b):z2 = 6x2 + (−1)14·2·y2 = 6x2 + 2y2。要证无解——且看无穷递降的完整演出:
① 模 3:z2 ≡ 2y2 (mod 3)。平方数 mod 3 ∈ {0, 1}:若 3 ∤ y 则 z2 ≡ 2 ✗(2 非平方),故 3 | y,随之 3 | z。② 约去 9?——先记录:3 | y, 3 | z。代回:z = 3z1, y = 3y1:9z12 = 6x2 + 18y12,即 3z12 = 2x2 + 6y12。③ 再模 3:0 ≡ 2x2 (mod 3) ⟹ 3 | x,随之 3 | z1。④ 设 x = 3x1, z1 = 3z2:9z22·3?…… 系统:每轮递降把 x, y, z 各剥掉一层 3,产生更小的解——若非零解存在,则无限递降,与最小正解矛盾。∎ (29,8,2) 永远不存在。(注意递降的燃料正是「2 非平方 mod 3」——欧拉判别的一次精确打击。)
靶三:(43,7,1)。v = 43 奇,n = 6,λ = 1。方程:z2 = 6x2 + (−1)21·y2 = 6x2 − y2。有解?x = 1, y = 1: 5 ✗;x = 1, y = 2: 2 ✗;x = 2, y = 1: 23 ✗;x = 1, y = 5: −19 ✗……但 BRC 要的是「存在」还是「不存在」?模 8 检验:6x2 − y2 mod 8,x 奇时 6·1 = 6,y 奇时 −1 ≡ 7:6 − 1 = 5、6 − 0 = 6、0 − 1 = 7、0 − 0 = 0——平方 mod 8 ∈ {0,1,4}:只有 0 可达 ⟹ x, y 皆偶,z 偶——递降!8 | 一切 ⟹ 无非平凡解 ⟹ BRC 拦截 (43,7,1)。而它的参数恰是 q = 6 的「射影平面」——6 非素数幂,BRC 与「平面不存在」在此互相印证(数学史上这是 BRC 的成名战:Bruck 与 Ryser 1949 拦下 q = 6,终结了欧拉 36 军官之外又一层迷雾;但注意——(43,7,1) 被拦的是「设计」,q = 6 平面被拦的是「几何」,两者同参数不同命题,互为表里)。
BRC 的局限清单。① 只管对称设计(非对称 BIBD 另有推广但弱得多);② v 奇情形的方程有解只说明「BRC 不拦」,存在与否仍未决——(41, 7, 2)?(51, 7, 2)?若干「BRC 放行但存亡未知」的参数挂到今天;③ v 偶情形的平方要求也是单向的——n 是平方也不保证存在((16,6,2) 存在而某些平方参数存亡不明)。拦截者的地图上,灰区永远比黑白多——这正是 Keevash 大定理(第五章末)如此震撼的原因:它把「灰区」的一半一次性涂成了绿色(足够大的 v)。
★★★★ 本页把三种语言——方阵、设计、差集——焊在一处。Hadamard 矩阵是「取值 ±1 的极端正交」,它与对称设计的换算几乎是免费的。
标准化。行、列置换与「某行变号」不改变 Hadamard 性;用这些操作可把第一行、第一列全调成 +1(标准化)。标准化后删去第一行、第一列,再把 +1 换 0、−1 换 1,得到的 (n − 1) × (n − 1) 0-1 矩阵记 A。核心核算:任取 A 的两行,它们来自 H 的两行(都只在第一列同号 +1):原内积 0 = 1 + (A 两行的 0-1 内积改造)……直接算:把 ±1 版记 B = 2A − J(去首列后的子块),正交条件给 BBT = nI − J(n 阶时 HHT = nI,削去首行首列的代数)。翻译成设计的账:
定理(Hadamard ↔ 对称设计)。标准化 n 阶 Hadamard 矩阵 ⟹ (4m − 1, 2m − 1, m − 1)-对称设计(m ≥ 2),其中 n = 4m。反向:该设计补上「全 +1」的行与列即回 Hadamard 矩阵。∎
验算最小的 m。m = 2:n = 8,设计参数 (7, 3, 1)——又是 Fano!八阶 Hadamard 矩阵削一刀就是 Fano 平面。m = 3:(11, 5, 2)——差集机床的战例。m = 4:(15, 7, 3)。Hadamard 族与 λ = m − 1 的对称设计整族等价。
再拧一刀到差集。Hadamard 型 (4m−1, 2m−1, m−1) 满足 v = 4u − 1, k = 2u − 1, λ = u − 1(u = m),补设计参数 (4m−1, 2m, m)——补设计对应「Hadamard 3-设计」:4m 点、块 2m 点、任意三点同块 m 次(第三章习题课验证 3-重账)。一条链浮出水面:矩阵(正交)→ 对称设计(双账)→ 3-设计(三账)——账本每加厚一重,等价链就往回拉一格。第五章的 5-设计宏构,正是这条链的远端。
谁在造 Hadamard 矩阵。已知构造全部依赖设计:① Paley 构造——用二次剩余特征 χ2 直接拧出 q ≡ 3 (mod 4) 的 (q+1) 阶矩阵(§2.8 的特征⑥当场领工资);② Sylvester 塔式构造——H⊗H 翻倍(2, 4, 8, 16…);③ Williamson 型——四块循环阵拼装。三者都通向差集或循环结构:Hadamard 猜想的每一步推进,背后都是一张新的差集账单。
★★★ 差集要求 v 个平移全部入列;若只取一部分平移,平衡会掉吗?——把「一张表」升级为「一叠表」:差族,BIBD 的循环构造机。
定义(差族)。设 D1, …, Ds ⊆ ℤv,大小 |Di| = ki。若每个非零剩余类被「差 d − d′(同族内)」恰覆盖 λ 次,则称 {Di} 为 (v; k1, …, ks; λ)-差族。取全部 v 个平移的所有 Di + t 作块,得 (v, b, r, k 不一定等, λ) 的循环 BIBD(ki 全相等时均匀)。
对账一次。块数 b = v·s;每点入度:r = Σ|Di|(每个点在 Σki 个族的平移里各恰一次——平移把点扫过全圆);对账由差族条件直接给 λ。恒等式 I 核验:bk = v·s·k vs vr = v·Σki = v·s·k ✓(ki 全等 k 时)。差总数条件:Σki(ki − 1) = λ(v − 1)——「多张小表的差账合并平账」。
差族的优势。① 块大小可变:ki 不必一致——这给了「混合块大小」设计的构造通道(强部分平衡设计的近亲,§4.12 回访);② 参数灵活:很多差集无解的参数,差族有解(例如 (9, 12, 4, 3, 1):第一章实验的两个同构类之一就是循环差族 {0,1,3},{0,2,5}?——留给实验核验);③ 搜索更容易:每张表更小,回溯树的深度骤降。
战例:循环 STS。λ = 1、k = 3 的差族就是第三章「基差族」的雏形:Σki(ki−1) = 6s = v − 1,即 v = 6s + 1——正好是 v ≡ 1 (mod 6) 的一半参数(另半 v ≡ 3 mod 6 需要非循环技巧)。差族把第三章的存在性定理「抄了近道」:v = 13 时 s = 2,两张三元表(§3.5 的 {0,1,4} 与 {0,2,7}——绪论已预告差覆盖 1..6 各一次)合成一个循环 STS(13)。
与乘子的互动。乘子定理有差族版本(p | λ 时 p 是「差乘子」的变体),但条件更微妙;本章止步于差集版(§2.7),差族的乘子理论进阶留给文献。下一页的参数表搜索将演示:差族条件如何把「可能的循环 BIBD」压成一张短清单——这正是第三章循环构造的程序化前奏。
★★★★ 装备齐了:可除性筛(第一章)、Fisher、乘子定理、BRC、Hadamard 等价、Singer 存在性。本页把它们串成一条流水线,对 λ ≤ 3、v ≤ 100 的对称参数做一次「全景体检」,并清点每个参数的最终身份:存在 / 不存在 / 悬而未决。
流水线四站。① 算术门:v = 1 + k(k−1)/λ 整数且 v > k;r、b 整数(对称时自动)。② BRC 门:v 偶查 n = k − λ 是否平方;v 奇查方程 z2 = nx2 + (−1)(v−1)/2λy2 可解性(程序枚举小解)。③ 已知构造对号:λ = 1 且 k = q + 1(q 素数幂)→ Singer ✓;(4m−1, 2m−1, m−1) 型 → Hadamard/Paley ✓(Hadamard 猜想覆盖全部 4m 阶)。④ 文献清点:以上都未覆盖的,查已知结果定案或挂「未知」。
| (v,k,λ) | ①算术 | ②BRC | 身份 |
|---|---|---|---|
| (7,3,1) | ✓ | — | Fano,存在 |
| (11,5,2) | ✓ | 放行 | 存在(乘子战例) |
| (13,4,1) | ✓ | — | PG(2,3),存在 |
| (15,7,3) | ✓ | — | Hadamard(m=4),存在 |
| (16,6,2) | ✓ | n=4 平方 ✓ | 存在(非循环例) |
| (19,9,4) | ✓ | — | Hadamard(m=5),存在 |
| (21,5,1) | ✓ | — | Singer q=4,存在 |
| (22,7,2) | ✓ | 拦截(a) | 不存在 |
| (37,9,2) | ✓ | 放行 | 双平面,存在 |
| (29,8,2) | ✓ | 拦截(b) | 不存在 |
| (31,6,1) | ✓ | — | Singer q=5,存在 |
| (43,7,1) | ✓ | 拦截(b) | 不存在(q=6 无平面) |
| (46,10,2)? | ✓ | 拦截(a):n=8 非平方 | 不存在 |
| (57,8,1)? | ✓ | 放行 | 未知!(q=7 无关;平面问题) |
表里的两处风景。其一:(57,8,1)——参数看似普通,BRC 放行、Singer 不适用(7 = q+1 需 q = 6 非素数幂——注意别与 q = 7 混淆),存亡至今未知,是对称设计存在性理论最著名的悬案之一(它也是「非 Desargues 平面不存在时」的天然靶标)。其二:(16,6,2)——存在但不循环(已证无 (16,6,2) 差集):差集机床并非万能,循环性是真实的额外结构。
方法论清点。本页的流水线是全书「账目思维」的集中操演:每道门只看参数不看结构,门与门之间互不重复。任何一组新参数送进这条流水线,都应在五分钟内报出颜色。下一页方法论总表收束全章。
★★★ 本章收束页。把构造派与拦截派的全部武器入箱编号,并预告它们在后续各章的转岗。
| # | 工具 | 一句话原理 | 转岗去向 |
|---|---|---|---|
| T1 | 乘子定理 | p | (k−λ) 且 p > λ、p ∤ v ⟹ p 是乘子 | 第三章循环 STS 的乘子筛 |
| T2 | 差集/差族 | 自相关恒定 ⟺ 循环平移成设计 | 基差族(§3.4) |
| T3 | Singer 构造 | 𝔽q3 的商循环单传递 ⟹ (q2+q+1, q+1, 1) | AG(3,2) 与 S(3,4,8)(§5.6) |
| T4 | Paley 构造 | 二次特征 χ2 拧 Hadamard | 第四章有限域 MOLS 同源 |
| T5 | BRC 定理 | n 的平方性 / 三元二次方程可解性 | 第五章 R–W 不等式的先声 |
| T6 | Hadamard 等价 | 正交阵 ⟷ 对称设计 ⟷ 3-设计 | 第六章码的正交阵语言 |
| T7 | 对偶/派生/残差 | 点块互换、切一刀 | Witt 家族的生成术(§5.7–5.8) |
构造者的工作流。① 参数过四门(算术、可除、Fisher、BRC)——不生即弃;② 查等价族(Singer / Hadamard / 补派生)——挂靠已知;③ 乘子压缩轨道——把搜索空间切窄;④ 程序回溯差集/差族——小参数内直接拿货;⑤ 大参数转构递归(复制、粘合——第三章主讲)。这条工作流在纸面上五步,实战里循环往复;本章实验将完整走一遍 (11,5,2) 与 (21,5,1)。
一句话收束本章。对称设计是 Fisher 等号上的紧平衡;差集把这种紧平衡压进一张循环的表;数论(乘子、BRC)则在表外立起拦截线——构造与拦截共用同一套账目,胜负只在参数的算术里。带着这只工具箱,下一章去攻 λ = 1 的山头:Steiner 三元系与那道散步了一百二十一年的女生题。
题目。设 𝒟 是对称 (v,k,λ)-设计。证明:𝒟 的补设计 𝒟c 也是对称设计,且 (𝒟c)T = (𝒟T)c;再对 Fano 完整写出补设计的七个块并验证块交 λc。
解。第一步:参数。补设计参数 (v, b, b−r, v−k, b−2r+λ)(§1.14)。代入 b = v、r = k:(v, v, v − k, v − k, v − 2k + λ)——b = v 保持,对称性保持 ✓。用乘积方程核 λc 的对偶平衡:由 §2.2 的对偶定理直接给(补设计的关联矩阵 J − N,转置 (J − N)T = J − NT——补与对偶两个算子交换)∎ 第一问收工。
第二步:Fano 的补设计。原七线 123, 145, 167, 246, 257, 347, 356;补块 = 每线换成四点补集:
4567, 2367, 2345, 1357, 1346, 1256, 1247.
核账:每块 4 点 ✓;每点入 4 块(点 1 ∈ 4567? 否;∈ 2367? 否;∈ 2345? 否;∈ 1357 ✓;∈ 1346 ✓;∈ 1256 ✓;∈ 1247 ✓——4 块 ✓);对账 λc = 7 − 6 + 1 = 2:抽验 {1,2}:1247 ✓、1256 ✓——恰 2 ✓;{4,5}:4567 ✓、2345 ✓——2 ✓。块交:4567 ∩ 2367 = {6,7},4567 ∩ 2345 = {4,5},2345 ∩ 1346 = {3,4}?(2345∩1346 = {3,4})——均为 2 点 ✓。∎
题目。① 用乘子定理的战例(§2.7)写出 (11,5,2) 的差集并验证全部差账;② 用 Singer 构造的思想直接写出 (13,4,1) 的差集(文献标准答案 {0,1,3,9}),并验证。
解①。§2.7 已算出:3 是 (11,5,2) 的乘子,且 D 必为乘 3 轨道之一:T1 = {1,3,9,5,4}(1 起步的乘 3 循环:1→3→9→27=5→15=4→12=1 ✓)或其负 T2 = {2,6,7,10,8}。取 D = T1,平移 −1 使 0 ∈ D:D′ = {0, 2, 3, 4, 8}。验差账:C(5,2) = 10 对点 → 20 个有序差,需覆盖非零类 1..10 各恰 2 次。抽验三格:差 1 ← (3−2, 4−3),2 次 ✓;差 5 ← (8−3, 2−8),其中 2−8 = −6 ≡ 5 (mod 11),2 次 ✓;差 10 ← (2−3, 3−4),两者同为 −1 ≡ 10,2 次 ✓。全表 20 个有序差由本章实验页程序逐一核验,结论:D′ 的差对非零类 1..10 各恰 2 次 ✓。平移 −1 前的原表 {1,3,4,5,9} 即 §2.7 的 T1。∎
解②。q = 3 的 Singer:𝔽27 中取本原元 α(如 x3 − x + 1? 实操取 x3 + 2x + 1 之本根),Singer 循环阶 13,线 L0 的指数集即差集。标准答案(文献常载):D = {0, 1, 3, 9}。验差账:C(4,2) = 6 对 → 12 个有序差需覆盖 1..12 各一次:差 1 = 1−0;3−1=2;9−3=6;0−9 = −9 = 4;3−0 = 3;9−1 = 8;1−9 = −8 = 5;0−1 = 12;9−0 = 9;0−3 = 10;1−3 = 11;3−9 = −6 = 7。1..12 各恰一次 ✓——一张四数小表造出 13 点 13 线的射影平面。∎
复盘。例题二的两个构造来自本章的两台主力机床:乘子压缩(T1)与 Singer 传送带(T3)。注意 (13,4,1) 差集的「幂律外形」不是巧合——Singer 差集天然带循环群的指数结构,幂律小表是它在素域上的投影。看到幂律就想到 Singer——这条直觉在第三章基差族与第六章循环码里都会再次兑现。
习题 2-1(热身)。验证 {0, 1, 4} 与 {0, 2, 7} 都是 (13, 3, 1) 的「半差集」:单独一张表的差只覆盖 1..6 的一半?精确地说,算出两表各自的差多重集,证明它们合并后 1..12 各恰一次(这是差族 {0,1,4},{0,2,7} 的核账,第三章 §3.5 将正式启用)。
提示。{0,1,4} 的六个有序差:1, 4, −1=12, −4=9, 3, −3=10 → {1, 12, 4, 9, 3, 10};{0,2,7}:2, 7, 11, 6, 5, 8。合并 = 1..12 各一次 ✓。
习题 2-2(补差集)。设 D 是 (v,k,λ)-差集。证明:D 的补集 Dc 是 (v, v−k, v−2k+λ)-差集(要求参数为正)。再用 Fano 验证:{0,1,3} 的补 = {2,4,5,6} 是 (7,4,2)-差集——对应补设计 (7,7,4,4,2)。
提示。差账容斥:全表差 v2 对,含 0 的差来自单点 k2 与空隙 (v−k)2,中账 v−2k+λ 由补设计公式平移而来;或直接按 §1.14 补设计参数读出。程序抽验 Fano 补差集的 12 个有序差覆盖 1..6 各 2 次。
习题 2-3(轨道侦察)。(11,5,2) 的另一差集 T2 = {2,6,7,10,8}。证明:T2 = −T1 + c 对某平移 c?若成立给出 c;若不成立,说明两差集不等价(在仿射群下),并指出哪个对应设计 (11,5,2) 的「互不同构」版本——(事实:(11,5,2) 的循环实现唯一到等价;两表其实是平移像:T2 + 3 = {5,9,10,2,0}?试算并下结论。)
提示。−T1 = {10,8,2,6,7}——恰好就是 T2 的重排!所以 T2 = −T1,而取负 = 乘 (−1) = 乘 10,是乘数操作 ⟹ 两表仿射等价,本质差集只有一个。
习题 2-4(对偶的语言)。用对偶设计的语言重述习题 2-2:对称设计的补的补是什么?对偶的补呢?列出 {𝒟, 𝒟c, 𝒟T, (𝒟T)c} 四元组的全部关系,并指出哪些关系对非对称 BIBD 失效。
提示。补与对偶交换(例题一);补的补 = 原;对偶的对偶 = 原;四元组至多四元、Fano 全部重合。非对称时补改变 b、v−k 的不对称使 𝒟cT ≠ (𝒟T)c 的「参数恒等」失效——精确地说两设计参数互换。
习题 2-5(乘子实战)。对 (21, 5, 1):n = 4,素数 p = 2:2 ∤ 21 ✓、2 | 4 ✓、2 > 1 ✓ ⟹ 2 是乘子。写出 ℤ21 中乘 2 的轨道结构(注意 gcd(2,21) = 1),并由此推出:(21,5,1) 的任何差集 D 可平移成 2D = D 的形式,即 D 是乘 2 轨道的并——列出所有候选表。
提示。乘 2 在 ℤ21 上的轨道:{0}、{1,2,4,8,16,11}(6 元)、{3,6,12}(3 元)、{5,10,20,19,17,13}(6 元)、{7,14}(2 元)、{9,18,15}(3 元)。注意乘子结论是 2D = D + t(允许平移),D 未必逐点不动——所以「轨道并」的干净论证要过「群作用 + 平移微调」两步,手算容易踩坑。实操建议:写程序对已知 Singer 答案 D = {0,1,4,14,16} 枚举全部 21 个平移,验证 2D = D + t 确有解 t;再体会「乘子把 C(21,5) = 20349 个候选的搜索转成 21 次平移核对」的压缩威力。
习题 2-6(BRC 速判)。用 BRC 快速判决下列对称参数:(56, 11, 2)、(46, 10, 2)、(22, 7, 2)?逐一写明用哪一条款、计算过程与结论。
提示。(56,11,2):v 偶,n = 9 = 32 ✓ 放行——它正是阶 9 的双平面(唯一性有名有姓),存在。(46,10,2):v 偶,n = 8 非平方数 ⟹ 条款(a)当庭拦截,不存在。(22,7,2):v 偶,n = 5 非平方 ⟹ 同款拦截——与 §2.12 靶一互为印证。三题连读正好演练(a)条款的三连问:v 的奇偶?n 是平方?是则放行、否则终审。
习题 2-7(Hadamard 一览)。由 12 阶 Hadamard 矩阵(Paley 构造 q = 11 产出 H(12))出发,写出它对应的对称设计参数,并与 (11,5,2) 对号;再用 §2.13 的「补」方向给出 (11,6,3),验证它就是 (11,5,2) 之补。
提示。n = 12 = 4m ⟹ m = 3:(4m−1, 2m−1, m−1) = (11, 5, 2) ✓;补 = (11, 6, 3) ✓。Paley 的 χ2 表(mod 11)可手抄:平方数 {1,3,4,5,9}——正是 T1!(Paley 差集与乘子轨道在这里第三次相遇。)
习题 2-8(选做·综述)。查阅「非 Desargues 射影平面」资料:已知的最小非 Desargues 平面阶数是多少?(答案:9,有四张互不同构的 9 阶平面。)它们的 Singer 循环还在吗?——(答:一般不在;循环性刻画 Desargues 性的「单传递」一面。)这解释了 §2.10 为什么说 Singer 差集属于「Desargues 型」。
本章的概念网比第一章更密:设计语言、几何语言、数论语言三方会师。本页画全景。
通向外部的接口。① 差族 → 第三章基差族(循环 STS 的引擎);② Singer q = 4 → (21,5,1) = Witt S(2,5,21)(第三章主角、第五章 Witt 家族的父辈);③ Hadamard 3-设计 → 第五章 t-设计的第二级台阶;④ Paley 特征 → 第四章有限域 MOLS 的同源技术;⑤ 循环结构 → 第六章循环码(Hamming 码的循环观点)。本章是全书的技术枢纽:往前的账目在此变厚,往后的构造在此起跑。
卡片一:对称设计。b = v(等价 r = k)的 BIBD;参数 v = 1 + k(k−1)/λ。双账本:每对点 λ 次同块 且 每对块 λ 点相交——对偶设计 𝒟T(关联矩阵 NT)与 𝒟 同参数。核心恒等式 NTN = (k−λ)I + λJ(证明靠 N−1 搬运 J)。自对偶:Fano 是;v = 16 附近开始出现非自对偶。
卡片二:繁殖参数表。派生(取块 B0 的内部残影):(k, v−1, k−1, λ, λ−1),λ ≥ 2 才丰满;残差(B0 的外部世界):(v−k, v−1, k, k−λ, λ);补:(v, v, v−k, v−k, v−2k+λ)。三手术在对称世界里两两联动(残差的补 = 派生的……最后一步留作练习)。
卡片三:差集。D ⊆ ℤv,|D| = k,差覆盖非零类各 λ 次;⟺ 有循环单传递自同构的对称设计。平移、互素乘数、补保持差集身份;本质分类 = 仿射群轨道。(7,3,1):14 个差集、2 个平移类、1 条仿射轨道(稳定子 x ↦ 2x+1,阶 3)。
三个必背战例。① {0,1,3}:Fano 的出生证;② {0,1,3,9}:PG(2,3) 的出生证(幂律表!);③ {0,2,3,4,8}:(11,5,2) 的乘子战利品(乘 3 轨道)。三张表分别代表差集的三种来源:小参数穷举、Singer 代数、乘子压缩——看到一张差集,先问它从哪台机床下来。
易错三坑。① 派生参数的 λ′ 是 λ−1 不是 k−λ(§2.3 的现场翻车教训);② (22,7,2) 过可除性筛但死于 BRC——「过筛 ≠ 存在」;③ 差集的乘数 m 要求 gcd(m, v) = 1,别把 2 当 (21,·) 的乘数之外还乱乘(轨道会断)。
卡片四:Singer 传送带。𝔽q3(三维域上空间)→ PG(2,q)(q2+q+1 点线)→ 商循环(单传递,阶 v)→ 差集(固定线的指数表)。产品线:(q2+q+1, q+1, 1) 全系;q = 2, 3, 4, 5 → (7,3,1), (13,4,1), (21,5,1), (31,6,1)。
卡片五:拦截武器库。乘子定理(p ∤ v、p | n、p > λ ⟹ p 是乘子——纯参数预言对称);BRC(v 偶:n = k−λ 必平方;v 奇:z2 = nx2 + (−1)(v−1)/2λy2 必有非平凡解);战果:拦 (22,7,2)、(29,8,2)(mod 3 递降)、(43,7,1)(mod 8 递降,即 q = 6)、(71,21,6)、(46,10,2)(n = 8 非平方)。
卡片六:Hadamard 一线。标准化 H(4m) 削首行首列 → (4m−1, 2m−1, m−1) 对称设计;补 → (4m−1, 2m, m) 即 Hadamard 3-设计;m = 2, 3, 4 → (7,3,1), (11,5,2), (15,7,3)。Paley 构造用 χ2 拧出 q ≡ 3 (mod 4) 的 H(q+1);Hadamard 猜想(4 的倍数阶全存在)已知至 668。
参数身份速查(v ≤ 57 对称、λ ≤ 2 精选)。存在:731, 742, 1152, 1341, 1573, 1662, 1972, 2151, 2572, 3161, 3792?;不存在:2272(BRC-a)、2982(BRC-b)、4371(BRC-b);未知:5781(最著名悬案)。下标记法 (v,k,λ) 缩写,读作「v 点 k λ」。
本章与下一章的转场。λ = 1 的对称设计是射影平面;λ = 1 的非对称设计(b > v)里有更松快的家族——三元系。它们不需要「点数 = 块数」的紧绷,只要「每对点恰一次」;构造工具正是本章的差族(基差族)。女生散步的全部机关,都已在工具箱里。
本章最深的教训藏在 §2.9 末尾:参数账目看不见几何。λ = 1 的对称参数表上,q2 + q + 1 一行整整齐齐;几何只兑现素数幂的位置,数论(BRC)只拦截它拦得动的位置——中间的灰区里,账目平、几何无、数论沉默。(57,8,1) 就这样悬挂了半个多世纪。
这件事反过来读更有味道:什么时候「算术条件」恰好等价于「几何存在」?Singer 定理给了第一个大样本答案——q 素数幂时,域的乘法循环性就是平面的单传递对称。代数结构(循环群)替几何(点线公理)发了言。BRC 是反面教材:它证明数论发言也有「权限边界」——拦得住的拦不住的,都要等构造派或新数论来定夺。
把视角拉远:数学里大量「存在性」问题的现代解法都是这个三段式——先找对称(群)、再算障碍(数论/拓扑不变量)、最后构造或拦截。五次方程不可根式解(伽罗瓦)、正十七边形可作尺规(高斯)、费马大定理(椭圆曲线),走的是同一条走廊。组合设计是这条走廊里最平易的展厅:参数小到能穷举,对称群算得动,拦截方程初中生都能看懂。在这里学会的三段式,是通向现代数学所有深水区的通行证。
最后自问一句:为什么偏偏是「差」?差集把平衡锁进减法,本质是因为平移群是最简单的传递群——它只有一个生成元,一种方向感。第三章将看到更松的「和」结构(三元组直接相加覆盖),第四章将看到两重平移(拉丁方是 ℤ2 上的账本);每加一层代数,设计的形态就换一副面孔。代数有多富,设计就有多富。
任务。不查文献,亲手拧出 q = 4 的 Singer 差集 (21,5,1)。
路线图。① 构造 𝔽4 = 𝔽2[α]/(α2 + α + 1)(α2 = α + 1);② 构造 𝔽64 = 𝔽4[β]/(β3 + β + 1 或其他三次不可约——先在 𝔽4[x] 里找不可约三次式);③ 求本原元 α0(阶 63);④ 写出 Singer 循环 = 𝔽64×/𝔽4×(阶 21);⑤ 取「线」L0 = 𝔽4 的一维子空间集合?——精确任务:L0 = 𝔽4 自身(作为二维 𝔽4-子空间——即 𝔽64 里的基域),计算哪些指数 i 使 α0i ∈ 𝔽4:指数差集 D。⑥ 用 D 的平移造 21 条线,程序验证每对点恰一线。
参考答案的「指纹」。文献标准答案(指数归一化后):D = {0, 1, 4, 14, 16}。算出的答案可能与它差一个仿射变换(平移 ×乘数)——用「差覆盖 1..20 各恰一次」做验收,不必与标准答案逐字一致。验收即存在:差账平了,设计就在。
加分题。① 用乘子定理预筛:n = 4,p = 2(2 > 1 ✓、2 | 4 ✓、2 ∤ 21 ✓)⟹ 2 是乘子——检查所得的 D 是否满足 2D = D + t;② 把 q = 4 与 q = 2、3 的差集并排,观察「幂律」外形在 q = 4 时如何变形(𝔽4 的乘法群是 3 阶,指数结构出现 3-周期花纹);③ 思考:为什么 q = 4 的差集在 ℤ21 里、而 ℤ21 不是域?——(答:循环性来自 𝔽64× 的 63 阶,商掉 3 阶标量群得 21 阶;域的结构活在「线」的定义里,不在圆环上。)
实验目的。用程序把 (11,5,2) 的差集世界全部翻出来:验证乘子战例、数清本质类、并与 Aut 的账目对拍。
实验一:差账核验器。通用函数:输入 v 与子集 D,返回每个非零类的差计数。
def diffspec(v, D):
from collections import Counter
c = Counter((a - b) % v for a in D for b in D if a != b)
return c # 期望:每个 1..v-1 恰 lambda 次
D = {0, 2, 3, 4, 8}
print(diffspec(11, D)) # 20 个有序差 → 1..10 各 2 次 ✓
实验二:全枚举。遍历 C(11,5) = 462 个 5 元子集,用实验一筛选:恰得 110 个差集(程序清点)。再按「平移 + 互素乘数」的仿射等价聚类:全部 110 个落在一条仿射轨道上((11,5,2) 的循环实现唯一到等价——与习题 2-3 的 T1/T2 合并结论一致)。110 = 11 × 10:每本质差集 11 个平移 × 乘数像若干——精确账目留给实验报告。
实验三:BRC 程序化。写函数:给定对称参数 (v,k,λ),判断 BRC 条款:(a) v 偶查 n = k−λ 是否平方;(b) v 奇对方程 z2 = nx2 + (−1)(v−1)/2λy2 在 |x|,|y| ≤ 30 内搜非平凡解。对 (22,7,2)、(29,8,2)、(43,7,1)、(37,9,2)、(56,11,2) 各跑一遍,输出「拦截 / 放行」——与 §2.15 的表格逐行对拍。
实验报告要求。① 贴出 D = {0,2,3,4,8} 的完整差账表(10 类 × 计数);② 报告实验二的总数与轨道数,并给出「110 = 平移数 × 乘数像数」的精确分解;③ 实验三的五参数判决表与 §2.15 对拍截图;④ 思考题:把 v 从 11 换到 13,(13,4,1) 的差集总数是多少?与 (7,3,1) 的 14 对比,规律何在?(提示:仿射轨道大小 = v·φ(v)/|稳定子|,稳定子随 q 变化——Singer 差集的稳定子往往是「乘法子群」。)
洛书的差集读法。第一章札记把洛书九宫读作「八本账同时平」;本章的差集语言给了它第二次解读。把九宫的 1..9 排进 ℤ9?——洛书的行 {4,9,2}、{3,5,7}、{8,1,6}:任一行的差集 {9−4, 2−9, 2−4} = {5, 2, 7}…单独看并无覆盖性。真正与差集血脉相通的中国对象是纵横图的「翻」与「转」:杨辉在《续古摘奇算法》(1275)里给出的幻方构造法——「九子斜排,上下对易,左右相更」——正是把 3×3 方阵沿对角线平移、再折叠的操作群:平移!洛书的三行三列其实是同一个 3 元循环结构在两个方向上的平移像。用本章的语言:幻方的行是基表,列是行表的转置平移——「斜排」一步就是把一维的差集账本升级成二维的账本(第四章的 ℤ2 拉丁方账本,正是这一步的系统化)。
乘 2 的卦变。《易经》卦变说里的「飞伏」「对宫」暗合乘数操作:乾卦 111 与坤卦 000(取负)、坎离互变(逐爻取反 = 乘 −1 + 平移 111 的 ℤ23 版本)。第二章的乘子定理说「纯参数能预言对称」;卦变系统则说「卦阵的结构能预言变卦的轨道」——两句话共享同一个语法:群作用先于枚举。北宋邵雍的六十四卦方圆图把 64 卦排成外圆内方,圆上的次序是二进制读数、方上的次序是「卦变轨道」——一图两语,与本章「设计语言 / 差集语言」的一币两面遥相呼认。
历法中的循环设计。殷周以来的干支纪日:十天干、十二地支配成六十甲子——一个 60 阶循环群;「三元甲子」把 180 年分上中下三元、九宫飞星每年移一位——这正是 ℤ9 × ℤ20 上的循环平移系统。风水术数里的「三元年白表」要求「某星每年到某宫恰好若干次」——听着耳熟吗?这就是入度均匀的要求。术数家在千年尺度上反复调试这些表,使每年每宫的星宿配置账目平衡——他们没有 BIBD 的名字,但做着 BIBD 的活。差集的「自相关恒定」在他们的语言里叫「循环无端,周而复始」。
札记的注脚。本章三件数学武器——平移、乘数、递降——在中国传统里各有影子:平移见于历法与幻方、乘数见于卦变、递降(无穷回退)见于《庄子》「一尺之棰,日取其半,万世不竭」的逆向运用。工具散落千年,理论一日成型——这正是数学史最动人的常态:发现常在先,命名常在后;本册的职责是使人在命名之后,能回头认出那些先行者的足迹。
| 条目 | 内容 | 出处 |
|---|---|---|
| 对称设计 | b = v ⟺ r = k;v = 1 + k(k−1)/λ | §2.1 |
| 对偶定理 | NTN = (k−λ)I + λJ;每对块恰交 λ 点 | §2.2 |
| 派生 / 残差 | (k, v−1, k−1, λ, λ−1) / (v−k, v−1, k, k−λ, λ) | §2.3 |
| 差集定义 | D ⊆ ℤv,差覆盖非零类各 λ 次 | §2.4 |
| 差集 ⟺ 设计 | 循环单传递自同构的对称设计 | §2.4 / §2.6 |
| Fano 差集 | {0,1,3} 型:14 个、2 平移类、1 仿射轨道 | §2.5 |
| 乘子定理 | p ∤ v、p | (k−λ)、p > λ ⟹ p 是乘子 | §2.7 |
| Singer 构造 | 𝔽q3 商循环 → (q2+q+1, q+1, 1) 差集 | §2.10 |
| BRC(a) | v 偶:n = k − λ 必为平方数 | §2.11 |
| BRC(b) | v 奇:z2 = nx2 + (−1)(v−1)/2λy2 有非平凡解 | §2.11 |
| 拦截战果 | (22,7,2)、(29,8,2)、(43,7,1)、(46,10,2) | §2.12 |
| Hadamard 换算 | H(4m) ⟷ (4m−1, 2m−1, m−1) ⟷ 补即 3-设计 | §2.13 |
| 差族 | Σki(ki−1) = λ(v−1);块大小可变的循环 BIBD | §2.14 |
| 悬案 | (57,8,1):BRC 放行、存亡未知 | §2.15 |
实例小卡。{0,1,3}(Fano);{0,1,3,9}(PG(2,3),幂律表);{0,2,3,4,8}((11,5,2),乘 3 轨道);{0,1,4,14,16}((21,5,1),Singer q=4,挑战题指纹)。
易错三坑。① 派生 λ′ = λ − 1(§2.3 教训);② BRC(b)的符号由 v mod 4 决定,勿一律取 +;③ 差集乘数必须与 v 互素——2 不是任何偶 v 差集的合法乘数。
文献指引(进阶两页证明的出处)。乘子定理完整证明:Beth–Jungnickel–Lenz《Design Theory》卷 I 第 6 章;BRC 两页证明:Ryser《Combinatorial Mathematics》第 8 章或 Hall《Combinatorial Theory》第 10 章;Singer 构造的原典:J. Singer, «A theorem in finite projective geometry…», J. London Math. Soc. 12 (1938)。
下一步。衔接讲义(下页)把 λ 拧到 1 且放开 b > v——Steiner 三元系的世界在门口。
★★ 本章研究的是「最紧」的对称设计(b = v);下一章换一个紧法:λ = 1 且不管 b。两种「紧」的区别值得站在这道门上辨清楚。
两种紧。对称设计紧在块数:Fisher 等号把块压到与点一样多,每块不得不承担双份平衡(点账 + 块交账)。Steiner 系紧在相遇:每对点恰会面一次,一次不许多——但块数可以随便多。前者像满员的剧场(座位数固定),后者像独生证(名额唯一)。两紧相遇时(λ = 1 且 b = v)就是射影平面——已经在本章看过了;λ = 1 而 b > v 的世界更大,入口就在眼前。
三元系的第一笔账。k = 3、λ = 1:恒等式 II 给 r = (v−1)/2,恒等式 I 给 b = v(v−1)/6。整除条件:v ≡ 1, 3 (mod 6)——第一章可除性筛已经把它算出来了(§1.13 的第一刀)。而存在性(Kirkman 1847):这两条同余不但必要、而且充分——λ = 1 的世界里,账目过关即存在(v = 7 的 Fano、v = 9 的双胞胎、v = 13、15、19……全都在)。与对称设计的灰区((57,8,1) 悬案)相比,三元系的世界干净得奢侈——这正是下一章的风景。
工具的转岗清单。差集 → 基差族(循环 STS 的核心构造,(13) 的两张表已验好);乘子定理 → 循环三元系的分类筛;补/派生 → 递归构造的砖块;Singer q = 4 的 (21,5,1) → Steiner 系统 S(2,5,21),Witt 家族的父辈(第五章)。本章的每一件武器都有下一章的岗位——工具箱不换,只换战场。
门上的最后一问。女生散步要求 15 点、三元块、每对恰一次——还要「每天五组恰好用尽全部人」。这最后一条(可分解性)在 λ = 1 世界里是一层新账:块不仅要彼此平衡,还要能分层打包、每层用尽全部点。Kirkman 的原题、121 年的等待、1971 年的解答——全部在三日之后。检票口就在下页。
前两章把平衡的账本从两头压紧:第一章立起五参数与两条恒等式,第二章研究 b = v 的极限紧平衡,并交出「差集」这台机床。本章把压强加到刻度的尽头——λ = 1:任何一对点,恰好同席一次。这是最吝啬的平衡:不多花一张支票,不少盖一个章。参数缩到最小,结构反而最僵硬——存在性、唯一性、计数,每个问题都在这一族里变得最尖锐;也正是在这一族里,组合设计写下了自己最长的故事线:从 1847 年 Kirkman 的七日散步,到 1983 年陆家羲的大集定理。
本章分三段行进。第一段(§3.1–3.6)巡游小系统:Steiner 三元系的定义与参数、存在性的第一道门槛 v ≡ 1, 3 (mod 6)、Fano 平面的三元系身份、循环机器与基差族,然后连看三位主角——STS(13) 的两条基块合奏、STS(15) 的四种构造。第二段(§3.7–3.11)攻存在性与可分解:Kirkman 1847 年的存在定理、递归构造、平行类,以及著名的 Kirkman 女生问题——十五个女生、七天散步、任何两人恰同组一次,答案正是一座可分解的三元系;平行类的几何化身是仿射平面。第三段(§3.12–3.16)踏进现代地形:Ray-Chaudhuri–Wilson 定理、大集问题与陆家羲的壮举、STS 个数的计数爆炸、Pasch 配置与超图视角,最后一页方法论总收。
行李大半已备:两条恒等式、可除性筛、换角计数、模 v 时钟(第二章的差集机床直接沿用)。本页只补一件新行李——拟群,它要到 §3.6 的 Bose 构造才登场,届时现场定义。本章最常出现的词是「轨道」:平移轨道造设计(§3.4)、乘子轨道分同构(§3.5)、自同构轨道数块数(§3.3)——同一个群论动作,反复兑现。
★★★ 把第一章的定义沿 λ = 1、k = 3 压到头,得到本章的主角。
定义(Steiner 三元系)。一个 Steiner 三元系 STS(v) 是参数 (v, 3, 1) 的 BIBD:v 个点的集合,配以若干三元子集(称为线),使得每对点恰好同在这三条线的名册上一次。记号亦作 S(2, 3, v) 或 2-(v, 3, 1) 设计。
两条恒等式当场把参数算尽。由 bk = vr 与 r(k − 1) = λ(v − 1),代入 k = 3、λ = 1:
r = (v − 1)/2, b = v(v − 1)/6.
吝啬的分量要用对照组称出来。什么都不省的「完全设计」把全部 C(v, 3) 个三元组都设为线;STS 只留下其中的 v(v − 1)/6 个——压缩比恰为 v − 2。v 越大,节约越狠:十五个点时,455 个三元组里只留 35 个,每十三个才挑一个,还要做到每对点不偏不倚恰见一面。
本页收三个脚印。其一,v = 3 平凡:一条线装下全部三个点。其二,下一站的乘客名单已由图 3-1 排好:v = 7, 9, 13, 15——本章将逐一登台,每一位都带来一出好戏。其三,一个历史小注:三元系的问题由 Steiner 于 1853 年提出,但等价的存在性结论其实已被 Kirkman 在 1847 年先行解决——名字留给了提问者,解答者之名则以更难的问题永载(§3.7 与§3.10 细说)。
★★ 上一页的两个参数公式其实是两道门卫:它们不造设计,却能把不合格的 v 当场拦下。
第一门:r 是整数。r = (v − 1)/2 要求 v − 1 为偶数,即 v 为奇数。偶数点的三元系整族出局——每个点要与其余 v − 1 个点配对,而每次同席消化两个伴侣,伴侣数必须是偶数。
第二门:b 是整数。b = v(v − 1)/6 要求 6 | v(v − 1)。v 已是奇数,2 | v − 1 自动达标,剩下要求 3 | v(v − 1)/2,等价于 3 | v(v − 1)(3 与 2 互素),即 v ≡ 0 或 1 (mod 3)。与奇数条件合并:
命题(必要的同余条件)。若 STS(v) 存在,则
v ≡ 1 (mod 6) 或 v ≡ 3 (mod 6).
验几个落马者。v = 5:b = 20/6 非整;v = 11:b = 110/6 非整;v = 6, 8:r 非整。而 v = 7 给 b = 7、r = 3,v = 9 给 b = 12、r = 4——门票齐备。
注记(门槛与山巅)。整性检查是第一章可除性筛的最简情形,本页的命题只是「第一道门」——门卫只查账目,不发通行证:同余条件满足时设计是否真存在,是另一回事。这道「第二道门」有个戏剧性的答案:Steiner 1853 年提问时以为它是难题,其实 Kirkman 1847 年已经翻过山头(§3.7);真正悬了一个多世纪的,是它的「可分解」加强版——女生问题的一般化,直到 1971 年才由 Ray-Chaudhuri 与 Wilson 解决(§3.12)。
★★ 第一章的老朋友 Fano 平面,换上三元系的名册重新登场——身份不同,账目同一。
七点七线、每线三点、每对点恰一线:STS(7) 的定义逐字吻合。参数重算一遍:v = b = 7、k = r = 3——它同时是第二章的对称设计 (7, 3, 1),差集 {0, 1, 3} 的七次平移。三种身份(三元系、对称设计、循环差集构造)在最小的非平凡样本上合体,这不是巧合:§3.4 将说明差集机床本来就是三元系的通用引擎之一。
两线必交。这是三元系语言下最值得重讲的一笔。七条线各含三对,共盖 7 × 3 = 21 = C(7, 2) 个点对——配额恰好用满,任何一对都不得重复。设两线 L1、L2 不交,则其余五线每条至多与 L1 交一点、与 L2 交一点(多交即点对重复),再各带第三个点;但 L1 ∪ L2 之外只剩一点,故其余五线中每条至多消化一个「跨线对」,五条至多盖五个跨线对,而跨线对共有 3 × 3 = 9 个——配不齐,矛盾。所以任何两线恰交于一点,这正是射影几何的口吻。
同构计数旧账重提。第一章 §1.11 用 M = v!/|Aut| 数过:七个点的标号实现共 5040/168 = 30 个,而自同构群 GL(3, 2) 阶 168,故 STS(7) 的非同构解唯一。唯一性是后面所有小系统的标尺:每遇一个新的 v,第一问总是「有几个非同构解」——答案从 1(v = 7, 9)到 2(v = 13)再到 80(v = 15),指数般的增长曲线在 §3.14 专门描绘。
Pasch 的初见。图 3-3 右侧的观察值得放慢:任取一点,躲开它的四条线恰好落在其余六点上、每点恰属两线——四个三元块、六个点、每点出现两次,这正是下一节以后反复出场的 Pasch 配置的雏形(§3.15 给出正式定义与系统计数)。七个点给出七个 Pasch,一个不多、一个不少——最小的三元系里已经藏着最著名的子结构。
★★★ 第二章的差集为对称设计专用(b = v);把机床的进料口放宽,它就能服务整族三元系。
定义(基差族)。设 v ≡ 1 (mod 6)。ℤv 中若干三元子集 B1, …, Bt 称为 (v, 3, 1)-基差族,如果每个非零剩余恰在诸 Bi 内部以「有序差」的形式出现一次。把每条基块的全部 v 个平移并起来,即得 STS(v);基块条数 t = (v − 1)/6。
账目一眼对上:每条基块产出 3 × 2 = 6 个有序差,t 条共 6t = v − 1 个,恰好分尽全部非零剩余。Fano 平面是 v = 7 的特例:t = 1,基块 {0, 1, 3}——它的六差 ±1, ±2, ±3 即 {1, 2, 3, 4, 5, 6},分尽无余;这也是第二章 (7, 3, 1) 差集的同一张名册(那时 b = v,基差族与差集是同一概念)。
v ≡ 3 (mod 6) 的改进机型。此时 v − 1 ≢ 0 (mod 6),纯基块盖不满账本,需添一条短轨道块 {0, m, 2m}(m = v/3):它的稳定子有阶 3,平移轨道只有 v/3 条块,恰好结清 ±m 两项账;余下 (v − 3)/6 条普通基块结清其余。
STS(9) 为何非循环。v = 9:短块 {0, 3, 6} 结清 ±3 = {3, 6},还需一条基块 {0, a, b},其六差须恰为 {±1, ±2, ±4} = {1, 2, 4, 5, 7, 8}。按 ± 对称可设 a ∈ {1, 2, 4} 逐一验算:a = 1 时 b − 1 须取自 {2, 4, 5, 7},取 2 得差 1 重复、取 4 或 7 撞上 ±3、取 5 则 b − a = 4 = −b 重复;a = 2 时 b ∈ {1, 4, 5, 8} 分别撞 ±1、自身、±3、±3;a = 4 时 b ∈ {1, 2, 8} 撞 ±3、±a、a 本身。三路全堵——循环 STS(9) 不存在,九个点必须另构造(§3.6 的 Bose 机型)。
定理(Peltesohn,1938)。循环 STS(v) 存在,当且仅当 v ≡ 1, 3 (mod 6) 且 v ≠ 9。唯一例外就是九。
这个定理回应的是 Heffter 1897 年提出的差问题(把 {1, …, (v − 1)/2} 分成若干组「两数之和等于第三数」的三元组的循环版),四十年后由 Peltesohn 彻底解决——「唯一例外 v = 9」这种清爽的结论,正是穷举与结构联手的产物。下一页就去 v = 13 看机器全力运转的样子。
★★★ v = 13 ≡ 1 (mod 6),需要 t = 2 条基块:十二条非零差要分成两份、每份六条,各由一条基块独奏。这是「合奏」一词的账面含义。
找琴谱。规范形取 {0, 1, 4}:其六差为 ±{1, 4, 3} = {1, 3, 4, 9, 10, 12}。剩下的差是 {2, 5, 6, 7, 8, 11},恰好是 ±{2, 7, 5}——第二条基块 {0, 2, 7} 应声而出。两条基块各带 13 个平移,共 26 = 13·12/6 条线,STS(13) 合奏完成。
唯一性的两本账。第一本是程序账:把 286 个三元组规范化后穷举配对,得 36 个候选基差族;逐个施以乘子 u ∈ ℤ13×(这是保持循环结构的自然同构),36 个候选合并成一条轨道——图 3-4 下方的乘子 2 就是它的「换手」舞步。第二本是文献账:非同构的 STS(13) 恰有两个;既然循环解唯一,另一个必是非循环的——它的自同构群里连一个 13 阶元都没有,自然也与基差族无缘。
对称性的家底。平移群 ℤ13 整群都是自同构;再验乘子:对两条基块同时乘 3,得 {0, 3, 12}(平移回 {0, 1, 4} 型)与 {0, 6, 8}(平移回 {0, 2, 7} 型)——乘 3 也保持设计,于是自同构群至少含 13 × 3 = 39 阶的「平移×乘 3」仿射群。连同 Pasch 计数(循环 STS(13) 恰含 13 个 Pasch 配置,计数法同图 3-3 的右栏逻辑),这些家底将在 §3.15 与挑战页派上用场。
下一站之前的一句闲笔。基差族账本的美妙之处在于「找琴谱」是有限的活:候选虽多,规范形与乘子一夹,搜索空间立刻塌缩。这个「枚举—规范形—轨道合并」的三步曲,正是现代设计枚举软件(§3.16)的雏形。
★★★ 十五个点、三十五条线——组合设计史上出镜率最高的舞台。同一个 STS(15),本书给出四种造法:代数、几何、组合、算法,各一条路。
造法一(循环·基差族)。v = 15 ≡ 3 (mod 6):短块 {0, 5, 10} 结清 ±5,两条基块结清其余:{0, 1, 4} 的差 ±{1, 3, 4} = {1, 3, 4, 11, 12, 14},{0, 2, 8} 的差 ±{2, 6, 8} = {2, 6, 7, 8, 9, 13}。三份并起来恰是 ℤ15 的全部非零剩余;15 + 15 + 5 = 35 条线。
造法二(几何·有限域)。取 𝔽24 的 15 个非零向量,令 {x, y, x + y} 为线:射影空间 PG(3, 2) 中任两点唯一决定一条线,而域为 𝔽2 时每条线恰有 q + 1 = 3 个点,故 35 条线自动构成 STS(15)。这个系统还有大戏:§3.9 将证它可分解——35 条线能排成七个平行类,正是 §3.10 女生七日表的真身。
造法三(代数·拟群)。Bose 的机型。取 ℤ5 上的幂等交换拟群 x ∘ y = 3(x + y) (mod 5)(验幂等:x ∘ x = 6x = x)。点集为 ℤ5 × ℤ3 的 15 个数对;竖块 {(x, 0), (x, 1), (x, 2)} 共 5 条,斜块 {(x, i), (y, i), (x ∘ y, i + 1)}(x < y,i ∈ ℤ3)共 30 条——合 35 条。验对账:同层对由斜块接住,跨层对要么同 x(竖块)、要么落在斜块的第三点上,每对恰一次。
造法四(算法·精确覆盖)。什么都不假设:455 个三元组里选 35 个,令 105 个点对各被盖一次——这是精确覆盖问题,回溯加剪枝数秒即解。这条最笨的路其实最深刻:它对任何参数都能开机,是挑战页枚举 80 个非同构解、乃至 §3.16 方法论的引擎。
同一参数,四副面孔——这会是第六章的主旋律(码、设计、群三语互译)。值得注意的是四条路的「通用度」:循环法受制于同余与例外(v = 9 出局)、几何法要等 k 与域配合、Bose 法成批生产 6t + 3,而回溯法哪儿都能去只是慢。构造方法的通用度与优雅度此消彼长,这条张力线贯穿全书。
★★★ §3.2 的第二道门,本节开成正果:同余条件不仅必要,而且充分。
定理(Kirkman,1847)。STS(v) 存在,当且仅当 v ≡ 1, 3 (mod 6)。
历史的次序值得先摆正:Kirkman 在 1847 年的论文「On a problem in combinatorics」里给出了全部 v ≡ 1, 3 (mod 6) 情形的构造——比 Steiner 1853 年的提问还早六年。Steiner 不知道 Kirkman 的工作,Kirkman 也没有用「三元系」的语言标榜自己;后世以 Steiner 命名这族设计,又以 Kirkman 命名它最著名的可分解加强版(§3.9),算是各留一座碑。
证明的骨架是什么?1847 年的原证是一台「双档机床」:对 v ≡ 1 (mod 6) 用循环构造——找到 (v − 1)/6 条基块(这正是 Heffter 差问题,最终由 Peltesohn 1938 年补齐严格性,§3.4);对 v ≡ 3 (mod 6) 用「加倍」的戏法从较小的系统黏合出来。原证的循环档依赖一个当时的缺口,现代教科书多改走另一条更透彻的路——经由成对平衡设计(PBD)的递归,本页给出它的完整骨架,细节归 §3.8。
定义(成对平衡设计 PBD)。PBD(v, K, 1) 是把 λ = 1 但块容量放开的设计:块大小取自集合 K(不必全同),每对点仍恰同席一次。BIBD 是 K 只含一个数的特例。
PBD 视角的三步走。第一步:把 v 个点按某个 PBD 切块;第二步:在每个大块内部装一个小 STS;第三步:把跨块的点对用「横档」补齐——只要诸参数满足配套的同余条件,三步拼出的恰是 STS(v)。这台「切块—内装—补横档」的机器把大 v 归约到小 v:归纳的地基是已验算的有限多个小情形(v = 3, 7, 9, 13, 15, 19),地基之上一路砌到任意大。这台机器的成熟形态——Wilson 递归——要到 §3.8 才正式挂牌,那里还会顺便回答「为什么 1970 年代成了组合设计的黄金年代」。
注记(同年同题的两人)。在 Kirkman 的论文之前,Woolhouse 已于 1844 年在〈Lady's and Gentleman's Diary〉上发起过三元组安排的一般提问——正是这本历书将在 1850 年登出 Kirkman 女生问题(§3.10)。历书、历法、散步表:组合设计的问题史有一半登在「闲书」上。
本页收束为一句话:存在性有了完整答案——v ≡ 1, 3 (mod 6),一扇不多、一扇不少。接下来的问题是把答案「做得整齐」:能不能让这些线再排成整齐的班次?这是可分解性(§3.9),是本章后半章的真正主角。
★★★ 本页把 §3.7 骨架里的机器拆开看零件。递归构造的中心思想一句话:用小设计当砖,用 PBD 当图纸,砌出大设计。
基本砖:加一点。最朴素的黏合是「加倍再加一」:从 STS(v) 出发造 STS(2v + 1) 之类的复合机。但直接的加倍并不总能成活——§3.6 已领教过 STS(15) 的敏感。可靠的是下面这条填充引理。
引理(PBD 闭合)。设存在 PBD(v, K, 1);又对每个 k ∈ K 存在 STS(k) 的适当「带洞」版本(洞设计:k 点中挖去 g 个点后其余点对仍可安排)。则(同余条件满足时)存在 STS(v)。
证明思路即「切块—内装—补横档」:图纸 PBD 把点分成大小 k 的块;每块内用对应的内装设计盖住块内点对;跨块点对——两个分属不同图块的点的相遇——由「横档」层补齐,横档层的构造是把整个点集按洞分组后的平行安排。三层的配额逐层核对,§3.2 的整性门卫在每层各拦一次;全部放行,合体即为 STS(v)。
为什么地基只需有限多个小情形。递归机器最深刻的一点是:三步中的同余检查与原参数的同余检查同型——大 v 的门槛恰好是小 v 门槛的复制。于是只要验证有限多个基座情形,无穷级验便一次完成;基座之上,机器自行向上延伸。这正是 Wilson 在 1970 年代的洞察:把「对每个 v 单独找构造」换成「对一族 v 批量验收图纸」,存在性定理从此成批下线。
Wilson 的纲领。1972 至 1975 年间,Richard Wilson 把这台机器推到极致:对任何固定的 k 与 λ,BIBD(v, k, λ) 对「几乎全部」满足整性必要条件的 v 存在(著名的「渐近存在定理」,1980 年代补齐为全部大情形)。第一章留下的伏笔在此兑现:整性必要条件之外,几乎不再有隐藏的拦路虎——这是设计理论深处的定音鼓。
★★★ 存在性解决之后,整齐性登场。本页引入本章后半部的关键词。
定义(平行类与可分解)。BIBD 的一个平行类是把全部 v 个点不重不漏地分块的一组块(两两不交、并集为全集)。若全部 b 个块能分进若干平行类,则称设计可分解(resolvable);可分解的 BIBD 记作 RBIBD,可分解的 STS(v) 特称 Kirkman 三元系,记 KTS(v)。
参数账。平行类内每块 k 点、共盖 v 点,故每类恰 v/k 个块;总类数为 b ÷ (v/k) = r——每个平行类恰好对应点的一次「整轮值勤」,可分解性把 r = (v − 1)/2 次同席排成了 r 个整齐班次。KTS(v) 的整性门卫多一道:v/3 须为整数,即 v ≡ 3 (mod 6)——可分解比存在更挑剔,15、21、27 可以,7、13、19 免谈。
两个现成标本。其一,§3.6 造法二的 PG(3, 2):本页开头的悬念在此兑现——它的 35 条线能分成 7 个 spread(每 spread 5 条互不相交的线盖满 15 点),分解的存在性本书留给实验页(p96)程序核验;于是 PG(3, 2) 就是一个 KTS(15)。事实上(§3.10 将用)它是唯一的那个。其二,STS(9):它正是仿射平面 AG(2, 3)——§3.4 已证它非循环、必须另构造,而仿射平面正是现成的替代品;12 条线分 4 个平行类,每类 3 条线——KTS(9),例题二将亲手排班。
为什么「平行」。图 3-7 的名字来自仿射几何:同一平行类内的块(线)互不相交,如同一族平行线;不同类的两条线必交于一点。点对—线—平行类的三层账目,与 §3.11 的仿射平面一般化只差一步:那里将看到,可分解性与有限几何互为镜像。
★★★ 组合设计史上最有名的散步,本页用刚领到的「平行类」词汇把它一步说破。
问题(Kirkman,1850,〈Lady's and Gentleman's Diary〉)。十五个女生,每天三人一排出街散步,共走七天。问:如何排表,使得任何两名女生在这七天里恰同行一次?
翻译只要一行:把 15 个女生排成 KTS(15)——每天恰好是一个平行类(5 个三人组盖满 15 人),七天 = 7 个平行类 = r 个班次;「恰同行一次」就是 STS 的每对恰一线。所以女生问题的数学内核是:KTS(15) 存在吗?
答案:存在,而且本质上只有一个。Kirkman 本人在随后一年的历书里给出了答案(他甚至连着几期给出不同排法);今天知道全部本质不同的解只有一个——它正是 §3.6 造法二的 PG(3, 2)(每个 KTS(15) 都同构于它,自同构群阶 20160)。下面的七日表是本书按 §3.6 造法四的回溯程序从 PG(3, 2) 里「摇」出来的一份代表(实验页将程序核验全部约束):
读表的两把尺子。第一把查「天」:每行 5 组互不相交、并集为全部 15 人——平行类的定义。第二把查「人」:任取一名女生,比如 1 号,她七天的同伴依次是 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15——其余十四人各见一面,一天两位,七天正好见完。
注记(问题与定理的年龄差)。KTS(15) 存在(1850);但「对一切 v ≡ 3 (mod 6),KTS(v) 是否都存在」——女生问题的一般化——悬置了 121 年,直到 1971 年 Ray-Chaudhuri 与 Wilson 一举解决(§3.12)。一道野餐级的小题,牵出一台大定理:这确是本章的主旋律。
★★ §3.9 的「平行」不只是比喻。本页把可分解性翻到几何那一面。
定义(仿射平面)。阶 q 的仿射平面 AG(2, q):q2 个点的集合与若干条线,满足①每线 q 点;②任两点恰在一条线上;③过线外一点恰有一条线与给定线不相交(平行公理)。用 𝔽q 上的数对与斜率语言即可造出(q 为素数幂)。
仿射平面就是可分解设计:命题。AG(2, q) 作为块设计恰是可分解 RBIBD(q2, q, 1)。验账:b = q(q + 1) 条线分属 q + 1 个平行方向(斜率 0, ∞ 与 𝔽q 的每个非零斜率各一族),每族 q 条平行线盖满 q2 点——平行类;每对点唯一斜率、唯一线,λ = 1。q = 3 时即 KTS(9)(图 3-7),q = 2 时四点三线的「田字」是最小的可分解设计。
反向也成立。可分解 BIBD(q2, q, 1)(q ≥ 2)必满足仿射公理:同一平行类的块不相交(定义);不同平行类的两块若不相交,则数一数——类的条数 q 乘以每条 q 点,平行公理由纯计数逼出。于是:「可分解 (q2, q, 1)-BIBD」与「阶 q 仿射平面」是同一对象的两个名字。顺带得到仿射平面与射影平面的换算:AG(2, q) 添一条「无穷远线」(q + 1 个无穷远点,每个方向一个)即成 PG(2, q)——第二章的射影平面在这里找到了它的「无穷远」来历。
命题(可分解的阶数门卫)。若 RBIBD(v, k, λ) 存在,则除了 BIBD 的旧条件 (k − 1) | λ(v − 1) 之外,还需
k | v(每个平行类恰 v/k 个块).
对 λ = 1、k = 3:两条件合读即 v ≡ 3 (mod 6)——与 §3.9 的参数账一致。
写清楚一点:可分解 STS(v) 要求 3 | v(每类 v/3 块须为整数),连同 §3.2 的 v ≡ 1, 3 (mod 6),得 v ≡ 3 (mod 6)——与 §3.9 一致。更深的一层(Bruck–Ryser 型的拦截、以及「哪些阶的仿射平面存在」这个与欧拉猜想缠斗的公案)放到第四章:那里 n = 6 的三十六军官之谜正是本章与下一章的界碑。
★★★ 1971 年,Dijen Ray-Chaudhuri 与 Richard Wilson 在一篇短小的通讯里解决了悬置 121 年的女生问题一般化。
定理(Ray-Chaudhuri–Wilson,1971)。对每个 v ≡ 3 (mod 6),KTS(v) 存在。更一般地,对固定 k 与足够大的 v,可分解设计的整性必要条件(v ≡ 0 (mod k) 与 λ(v − 1) ≡ 0 (mod k − 1))本质上也是充分的。
定理的分量在「一般地」三个字。具体到 KTS,1969 年前后已有若干大 v 的部分结果(Kirkman 本人 1847/1850 的工作覆盖了一些循环情形,Hanani 的 1960 年代长文补了大片疆域);RCW 的贡献是把全部剩余情形一次清账,并把同一套技术推向一般的可分解 BIBD——可分解版的「Wilson 渐近存在定理」。组合设计理论的现代形态(参数不再逐个手工、而是成批机器判定)由此定形。
证明思想一瞥。直接构造对未知的大 v 无从下手,RCW 的机器是递归 + 基座:以「主设计」为图纸把 v 点切成小组,组内用已知的中小型 KTS,跨组用精心安排的横档(这继承了 §3.8 的三工位,但每个工位都要额外的「可分解性」对账——平行类不能被黏合破坏)。基座情形用计算机辅助的有限枚举封口。今天回看,这是 §3.7–3.8 递归哲学在「整齐性」维度的完整复刻:存在与可分解,同一台机床、两套质检。
RCW 的另一半面貌。第五章还有一位同名主角:「Ray-Chaudhuri–Wilson 不等式」(t-设计中 b ≥ C(v, s))。同一位 R. Wilson 在 1970 年代同时推进了存在性与界两大方向;本页记住分工即可——本页的 RCW 管「有没有」,第五章的 RCW 管「至少多少」。
★★★ 存在性(§3.7)与可分解性(§3.12)之后,三元系的第三问是排布的极限:给定 v 个点,互不相交的三元系最多能并排放几套?
定义(大集)。把 v 个点的全部 C(v, 3) 个三元组,分装成若干个两两无公共线的 STS(v),且并起来不重不漏——这样一个「三元系的完全分装」称为大集(large set),记 LDS(v)。份是固定的:每套 STS 用 v(v − 1)/6 条线,总库存 C(v, 3) 条,故大集恰有 v − 2 套。
最小的账就亮红灯。v = 7:库存 35 个三元组,每套 Fano 用 7 条,应有 5 套。但本书的回溯程序把全部 30 个标号 Fano 系统逐对试配,找不到任何一套 5 张互不相交的名册——LDS(7) 不存在。这与文献的古典结论一致:Cayley 在 1850 年的一则短注里最先指出这套分装做不成,而且理由是纯初等的(对第一套 Fano 的每条线逐一追踪它在其余四套中的强制位置,账目最终相撞;完整论证可查 Colbourn–Dinitz 手册三元系一章)。这是大集问题公认的唯一例外。
定理(陆家羲,1981–1983)。对一切 v ≡ 1, 3 (mod 6) 且 v > 7,大集 LDS(v) 存在。唯一的例外就是 7。
这个定理的身后事值得整页细看。大集问题是 1850 年代由 Cayley 一句话带出(他注意到 Fano 无法分装)后沉睡百年的悬案;1970 年代多人推进出「对充分大的 v 成立」的部分结果,但一般情形的收网者是一位内蒙古包头的中学物理教师。陆家羲(1935–1983)在业余时间自学研究组合设计,1980 年前后写下六篇论文「On large sets of disjoint Steiner triple systems I–VI」,一举解决大集问题;稿件辗转国内多年无人识货,最终 1983–1984 年发表于〈Journal of Combinatorial Theory, Series A〉——国际顶刊连载数篇,震动学界。次年他猝然离世,距收到出刊的样本不远。设计理论界以「Kirkman 女生与大集」两个问题记住了这个名字;§人物谱(综合站)将再立小传。
至此三元系的三问——存在、可分解、大集——全部清账;例外清单都恰好带着同一个数字:循环例外 v = 9(§3.4)、大集例外 v = 7。下一页换个口味:数一数解的个数,看看「存在」的背后藏着怎样惊人的繁荣。
★★ 存在性(有几种 v 能造)之后是计数性(每种 v 能造几个)。这一页的数字会指数式失控。
非同构解的清单。把同构的归为一类后逐一清点,前几站的答案:v = 3:1 个;v = 7:1 个(§3.3);v = 9:1 个(§3.4 末与 §3.9——仿射平面);v = 13:2 个(§3.5);v = 15:80 个——Cole、Cummings 与 White 在 1917 年用手算完成的枚举长征;v = 19:11 084 874 829 个——这个一百一十亿量级的数字直到 2004 年才由 Kaski 与 Östergård 借助大规模计算机搜索精确确定。
标号计数的换算。非同构数只是冰山一角:每个自同构群阶 |Aut| 的解贡献 v!/|Aut| 个标号实现。以 v = 7 为例:5040/168 = 30 个标号 STS——§3.13 的大集程序正是从这 30 个出发的。解的个数随 v 的增长是组合数学里最陡的曲线之一。
定理(Wilson,1974,渐近计数)。标号 STS(v) 的总个数(记 N(v))满足
(v/e2)v2/6 ≈ N(v) ≈ (v/e2)v2/6·e−v2/2…的主项
准确的表述是 log N(v) ∼ (v2/6) log v:个数的主阶是 (v/e2)v2/6 量级——每个点对约有 v/e2 种去处、共 C(v, 2)/3 个「独立配额」。
这条定理的证明用的是概率方法:随机安放的三元组多半能局部修成 STS(Nibble 与 Rödl nibble 的舞台)。「存在」(§3.7 问的是零与一)与「几乎处处存在」(问的是多少)之间的天堑,Wilson 用一台机器同时跨越——递归构造既能证明存在、也能数清个数。
计数视角下的本章主角们。STS(15) 的 80 个解里恰有一个可分解(KTS(15),§3.10 的唯一性)——「八十选一」;80 个解的 Pasch 计数各有不同(§3.15 的不变量),循环解、Bose 解、PG(3, 2) 解各归何类,挑战页的程序会给每个解验明正身。计数不是数字游戏:解与解之间的差异(同构与否、子结构多少)正是设计分类学的全部内容。
★★ 本页给三元系装上「显微镜」:不问整体,专看四条线的局部花纹。
定义(Pasch 配置)。六个点 {a, b, c, d, e, f} 上的四条线
{a, b, c},{a, d, e},{b, d, f},{c, e, f}
构成一个 Pasch 配置(又称「四边形」):四线、六点、每点恰属两线、任何两线交于不同点。不含 Pasch 的 STS 称为反 Pasch 系。
名字的来历:这四条线的相交图案正是 Pasch 公理(关于线与三角形的初等几何公理)所谈论的构形,设计理论借用了几何基础的这个名词。它也是三元系世界里最小的「非平凡子设计」候选:三条线的构形都太平凡,四条线里 Pasch 是第一个有纠缠的花纹。
小系统的 Pasch 账本(全部程序核验)。STS(7):恰 7 个——§3.3 的「躲开一点余四线」给出一一对应;STS(9)(仿射平面):0 个——它是天然的反 Pasch 系(这给「STS(9) ≠ Fano 放大」提供了最轻的不变量);循环 STS(13):13 个;循环 STS(15) 与 PG(3, 2):105 个(有意思的是两者持平——但它们的 Pasch 分布不同:前者诸线所属的 Pasch 数目有多有少,后者均匀,所以 Pasch 计数本身不足以分辨一切,需要更细的不变量)。
超图视角。把「点是顶点、线是边」的翻译再进一步:STS 是三一致线性超图(3-uniform linear hypergraph)的特款——任意两个顶点恰被一条超边覆盖。Pasch 配置就是超图语言里的四边二圈(Berge 环的特款)。超图视角的两个红利:其一,「随机三一致超图」的理论给出了 §3.14 渐近计数的现代证明框架;其二,反 Pasch 系与「最大无 Pasch 子系」的极值问题连接到加性组合(cap set 一族问题的近亲)。本章只取第一口:知道子结构的花纹是分类的指纹就够了——80 个 STS(15) 的验明正身,用的正是 Pasch 计数加谱不变量的组合。
★★ 本章三段行程用了三套截然不同的方法论,本页摆在一起对照。
第一套:构造性代数。基差族(§3.4–3.5)、Bose 拟群(§3.6)——给定参数,先找代数结构(循环群、拟群、有限域),把设计变成结构的系数账本。威力在于成批生产:一套机器覆盖整族参数;局限在于例外敏感——STS(9) 的循环机器失灵、Bose 只管 6t + 3。
第二套:递归归纳。PBD 闭合与 Wilson 纲领(§3.7–3.8、§3.12)——把大参数归约到小参数,同余条件逐层复制。威力在于一次解决无穷多个参数;局限在于基座仍需手工或机器填平,且「几乎全部」与「全部」之间常有一段艰难的收尾。
第三套:穷举搜索。精确覆盖回溯(§3.6 造法四、§3.13 大集程序、§3.15 Pasch 账本)——把「存在/计数/分类」全化为有限搜索。威力在于同时回答存在、计数与分类三问,还能充当前两套的「验钞机」;局限是指数爆炸:v = 15 秒级、v = 19 需要 2004 年级的计算工程、v = 21 起连分类都遥不可及(计数有 Wilson 渐近兜底,但精确数至今未测出)。
三套方法论的精神可以压成一句话:先让结构自己说话,再让归纳接管无穷,最后让机器看守例外。在后续章节遇到任何一个新设计族时,不妨都先问这三个问题:代数机器在哪?递归如何搭桥?最小的几个情形能不能亲手穷举?——问题问对了,答案已经在一半的路上。
★★ 题目。验证 {0, 1, 4} 与 {0, 2, 7} 是 ℤ13 上的 (13, 3, 1)-基差族,并写出它们生成的 STS(13) 的全部 26 条线;再验证乘子 2 把这个基差族映成等价基差族 {0, 2, 8}, {0, 1, 4}。
第一步:逐条算差。基块 {0, 1, 4} 的有序差:1 − 0 = 1,4 − 0 = 4,4 − 1 = 3,0 − 1 = 12,0 − 4 = 9,1 − 4 = 10,得 {1, 3, 4, 9, 10, 12} = ±{1, 3, 4}。基块 {0, 2, 7}:2,7,5,11,6,8,得 {2, 5, 6, 7, 8, 11} = ±{2, 5, 7}。两份差集无交,并集 {1, 2, …, 12} 分尽全部非零剩余——基差族验明。
第二步:生成并核对线数。每条基块平移 13 次,共 26 条候选线;因两条基块的轨道互不重合(否则某差重复出现),恰得 26 条线,与 b = 13·12/6 = 26 相符。抽查几条:{0, 1, 4} + 6 = {6, 7, 10};{0, 2, 7} + 9 = {9, 11, 3} = {3, 9, 11}。核对点对,例如 (3, 10):差 7 属于第二基块的配额,故所在线是 {0, 2, 7} + 3 = {3, 5, 10} ✓。
第三步:乘子 2 的换手。基差族整体乘 2(逐点乘):2·{0, 1, 4} = {0, 2, 8};2·{0, 2, 7} = {0, 4, 14} = {0, 1, 4} (mod 13)。所以
2·{{0, 1, 4}, {0, 2, 7}} = {{0, 2, 8}, {0, 1, 4}},
新基差族的两条块分别落入原基差族的轨道({0, 2, 8} 是 {0, 1, 4} 的平移像:差同为 ±{1, 3, 4} 型;{0, 1, 4} 直接是原第二块)——两个基差族生成同一条 26 线名册,这正是 §3.5「36 个候选并成一条轨道」中换手一步的具体模样。
收尾。验算基差族的三步曲——逐差、数轨道、试乘子——就是 §3.5 搜索的唯一人工部分;剩下的交给机器。
★★ 题目。九个点 {a, a′, a″, b, b′, b″, c, c′, c″} 的 12 条线(图 3-7)已给为四类:横行 {a, a′, a″}, {b, b′, b″}, {c, c′, c″};竖列 {a, b, c}, {a′, b′, c′}, {a″, b″, c″};对角 {a, b″, c′}, {b, c″, a′}, {c, a″, b′} 与反对角 {a, c′, b″}, {b, a′, c″}, {c, b′, a″}。验证它们构成 STS(9),并指出这 12 条线恰分 4 个平行类——从而是 KTS(9)。
第一步:STS 验账。每线 3 点、共 12 条线,配额 12 × 3 = 36 = C(9, 2) 恰满,故只需查「任何一对点至多同线」。同字母对(如 (a, a′))同在横行;同撇号对(如 (a, b))同在竖列;不同字母不同撇号的对按「撇号差」分家:(a, b″) 型进对角线、(a, b′) 型进反对角线——两类线各以固定的「移位量」出现,同一对不可能进两条线。抽查:(a, c′) 在反对角线 {a, c′, b″};(a, b′) 在 {c, a″, b′} ✓。
第二步:平行类点名。四类各 3 条线,每类内部两两不交、并集为全 9 点(横行类扫三行、竖列类扫三列、两条对角类各扫三条错位对角线)——按 §3.9 定义,4 个类恰好都是平行类;类数 4 = r ✓。
第三步:附赠结论。把 9 个点看成 𝔽3 × 𝔽3 的数对(字母 ↔ 第一坐标、撇号 ↔ 第二坐标),四类线恰是四族斜率——这正是 §3.11 的 AG(2, 3)。仿射几何、可分解三元系、九宫表:同一个 KTS(9) 的三副面孔。
收尾。本题的「九宫表」排法是最古老的可分解设计教具之一;它也是 §3.10 女生七日表的九人微缩版——把 15 换 9、7 换 4,散步问题便可在一张方格纸上讲完。
★ 本组习题只动用 §3.1–3.4 的参数账与循环机器。逢整性检查,先写清门卫再说结论。
习题 3-1(参数速算)。对 v = 7, 9, 13, 15, 19, 21 列表算出 STS(v) 的 b 与 r;指出其中哪些 v 可能支持可分解三元系,并写明用的是哪条门卫。
习题 3-2(门卫执法)。判断下列参数能否为 STS,陈述理由:(1) v = 17;(2) v = 18;(3) v = 25;(4) v = 27;(5) v = 33。答案应各为一句话:哪条门卫放行或拦下。
习题 3-3(基差族初验)。验证 {0, 1, 3} 是 ℤ7 的 (7, 3, 1)-基差族,列出其 7 条平移线,并与 §3.3 的 Fano 名册对照:两种写法给出同一名册吗?
习题 3-4(短轨道的账)。对 v = 15:验证短块 {0, 5, 10} 的平移轨道恰有 5 条线、稳定子为 {0, 5, 10} 的加法倍群;说明这 5 条线结清的差恰为 ±5,故剩余 12 个差需 (15 − 3)/6 = 2 条普通基块。
习题 3-5(STS(9) 非循环的复述)。不看书,重演 §3.4 的三情形论证:a = 1, 2, 4 时为什么都找不到合规的 b?论证里「按 ± 对称可设 a ∈ {1, 2, 4}」这一步用到什么?(提示:差集的 ± 封闭性与换名 {0, a, b} ↦ {0, b − a, −a}。)
习题 3-6(可分解计数)。KTS(v) 中每个平行类有 v/3 条线、共 r = (v − 1)/2 个类。对 v = 15, 21, 27 算出「每类块数 × 类数」,验证恰等于 b;再说明「七日表」这个词只在 v = 15 时字面成立(类数 = 7),v = 21, 27 分别是几「日」?
提示与答案要点。3-1:可分解候选须 v ≡ 3 (mod 6),即 9, 15, 21。3-2:(1) ✗ b 非整;(2) ✗ r 非整;(3) ✓ 门卫全过;(4) ✓;(5) ✓。3-4:稳定子即 {0, 5, 10} 自身(阶 3),轨道 15/3 = 5。3-6:15 → 5 × 7;21 → 7 × 10;27 → 9 × 13——「十日表」「十三日表」。
★★ 本组习题动用 §3.5–3.10。凡涉程序,先写清「枚举什么、剪枝靠什么、如何验钞」再动手。
习题 3-7(乘子轨道)。§3.5 说 36 个规范形基差族「全落一条乘子轨道」。写程序枚举 ℤ13 的全部规范形候选,对每个候选施以 12 个乘子并取规范形,验证轨道数为 1;再把乘子换成仿射变换 x ↦ ux + t,回答:轨道数会变吗?
习题 3-8(Pasch 清点)。实现 §3.15 的 Pasch 判定(四线六点、每点度数恰二),对 §3.3 的 STS(7) 名册清点 Pasch,验证恰得 7 个且一一对应于「被躲开的点」。
习题 3-9(七日表的三查)。把 §3.10 的七日表敲进程序,依次验证:(1) 每日 5 组互不相交并盖满 15 人;(2) 全表 35 组;(3) 105 个点对各组恰出现一次。再回答:若漏抄一行的最后一组,程序先在哪一查处报错?
习题 3-10(自同构初探)。验证乘 3 是循环 STS(13) 的自同构:把 26 条线名册逐条乘 3,确认名册不变。再试乘 2、乘 5,哪个保持、哪个打乱?与 §3.5 的稳定子 {1, 3, 9} 对照。
习题 3-11(拟群对账)。按 §3.6 造法三写出 Bose 系统的 35 条线,验证两点:(1) 每对点恰一线;(2) 映射 (x, i) ↦ (x + 1, i) 与 (x, i) ↦ (x, i + 1) 都是自同构——从而 Bose 系统的自同构群至少含 ℤ5 × ℤ3。
习题 3-12(大集的边界)。程序搜索:能否在 30 个标号 Fano 系统中选出 4 套互不相交的?(大集要 5 套,四套呢?)记录搜索结果与用时,并猜一句:差的那一套「卡」在哪种三元组上。
提示与答案要点。3-7:仿射变换把候选集映到自身,轨道数不变——平移已吸收进规范形。3-9:漏抄后先在「每日 5 组盖 15 人」处报错;若抄错一组则「105 对各一次」先爆。3-10:乘 3 保持(稳定子),乘 2 打乱(换手到等价解),乘 5 属于 {1, 3, 9} 的陪集,打乱。3-12:四套可以找到(总互不相交数最多为四),剩下拼不进第五套的正是「第一套任何一线的补全型」三元组。
读图三句话。其一,本章的骨架是两道门:第一道(整性)随口带过,第二道(存在)由 Kirkman 1847 一次打开——此后一切构造都在门内施工。其二,「可分解」是从存在通向应用(女生表)的窄走廊,走廊尽头的 KTS(15) 恰是几何对象 PG(3, 2),把本章与有限域、与第四章的有限几何接通。其三,右下的两块「计数与花纹」是通往现代的地界:解的个数(80 与一百一十亿)与子结构指纹(Pasch)共同构成分类学的入场券,也把「例外」的哲学(循环例外 9、大集例外 7)摆上台面——例外不是遗憾,是最珍贵的教学样本。
定义与参数。STS(v)=(v, 3, 1)-BIBD:每对点恰同一线。恒等式给出 r = (v − 1)/2、b = v(v − 1)/6;整性等价于
v ≡ 1, 3 (mod 6),
这是存在性的必要条件,且由 Kirkman 定理(§3.7)知它也充分——一扇不多、一扇不少。
构造工具箱。①循环·基差族:v ≡ 1 (mod 6) 用 (v−1)/6 条基块,v ≡ 3 (mod 6) 加一条短轨道块;②几何:PG(3, 2) 的 35 条线(STS(15));③代数:Bose 拟群 x∘y = 3(x+y)(通用机型 6t+3);④算法:精确覆盖回溯(455 选 35)。四种造法的适用域与例外见 §3.6 图 3-5。
小系统档案。STS(7)=Fano=对称 (7,3,1):唯一,|Aut| = 168,Pasch 恰 7 个;STS(9)=AG(2, 3):唯一,非循环(三情形论证),反 Pasch,12 线 4 平行类;STS(13):非同构恰 2 个,循环解唯一(基差族 {0,1,4}+{0,2,7},乘子轨道一条,|Aut| ≥ 39);STS(15):80 个非同构解,其一为可分解的 KTS(15)。
两个「唯一例外」。循环三元系:Peltesohn 1938——一切 v ≡ 1, 3 (mod 6),例外 v = 9;大集:陆家羲 1981–1983——一切 v ≡ 1, 3 (mod 6) 且 v > 7,例外 v = 7(Cayley 1850 首证不可分装)。
计数刻度。非同构个数 1, 1, 1, 2, 80, 11 084 874 829(v = 3, 7, 9, 13, 15, 19);标号个数按 (v/e2)v2/6 量级暴涨(Wilson 渐近)。计数不再是附属问题:解的丰度本身就是设计宇宙的基本事实。
可分解的语言。平行类=不重不漏盖满全体的一组块;全部块可分入平行类则称可分解。参数账加一道门卫:k | v,对 STS 即 v ≡ 3 (mod 6)。可分解 STS 特称 Kirkman 三元系 KTS(v)。
女生问题的完整答案。十五女生七日表=KTS(15),存在(Kirkman 1850)且本质唯一:每个 KTS(15) 同构于 PG(3, 2),自同构群阶 20160。一般情形:Ray-Chaudhuri–Wilson(1971)——KTS(v) 存在当且仅当 v ≡ 3 (mod 6);121 年悬案就此清账。可分解 BIBD 的「几乎全部」存在性由 Wilson 纲领同步奠定。
几何对读。仿射平面 AG(2, q)=可分解 (q2, q, 1)-BIBD(两个名字、一个对象);添无穷远线得射影平面 PG(2, q)——第二章的几何在第三章找到了可分解的化身。AG(2, 3)=KTS(9)=STS(9),一张九宫表三种身份(例题二)。
大集与陆家羲。大集 LDS(v)=把 C(v, 3) 个三元组分装成 v − 2 套互不相交的 STS。v = 7 不可能(Cayley 1850;程序复核 30 选不出 5);其余一切可许 v 皆可能——陆家羲六连文(1981–1983,JCTA 1983–84 刊出)。存在、可分解、大集三问的例外清单分别有 9 与 7 两枚钉子。
与前后章的接线。向后看:本章的差族与自同构技巧承接第二章,将在第五章升级为 t-设计的递降与 Witt 构造。向前看:仿射平面 AG(2, q) 的 q + 1 个平行方向,正是下一章正交拉丁方 q − 1 个的另一个化身——第四章的三十六军官之谜,已经在走廊尽头向本书招手。
本章最容易被视为「一堆趣味题的合集」:女生散步、九宫排班、历书提问。但把它读成科学史的样本,会看到一个精确的学科发育过程——存在性问题如何从谜语长成定理。
第一层:必要条件是一便士的。整性检查一页纸写完;任何初学者都能对 v = 5 宣判。但「一便士的必要条件」配上「一百年的充分性」,才构成完整的科学问题——必要与充分之间的距离,就是这个领域的历史厚度。Kirkman 1847 的定理之所以是里程碑,不是因为它难,而是因为它第一次把「每扇门后都有房间」说成了必然。
第二层:构造方法的通用度决定学科的形态。Kirkman 的手工戏法只能逐个点数施工;基差族与拟群让构造成批;PBD 递归让定理成批。Wilson 纲领的真正遗产是一种方法论自信:整性条件之外,宇宙不再藏着结构性的拦路虎——这句断言在第一章的 Fisher 不等式里只是技术性的,到本章末尾已是学科的世界观。
第三层:例外是最贵的资产。循环构造在 9 前失灵,大集在 7 前却步——两枚例外钉子提醒每一代研究者:通用定理的边界处藏着最深的信息。而陆家羲的故事补充了第三层:定理的诞生不只依赖问题的深度,也依赖社会能否看见一位业余者的长征。存在性是一门科学;承认存在性问题的提出者与解决者,同样是。
下一章的问题换个方向:不止把点两两配平,还要让两种配平互不干扰——两种安排「正交」。欧拉的三十六军官将告诉本书:当存在性的直觉失效时,反例本身可以等上一个半世纪。
★★★ 章节级挑战,三条递进的关卡。目标:亲手复现「80」这个 1917 年的数字。
第一关:穷举所有解。精确覆盖回溯:455 个三元组选 35 个、105 对各盖一次。规模控制的关键是「最小未覆盖对」剪枝(习题 3-9 的验钞逻辑反向使用);预期找到 11 053 个标号…——不,本书不剧透总标号数,只说量级在百万级,单机数分钟内可完成。跑通后先数一个中间量:固定一条线(如 {1, 2, 3})的解有多少个?由对称性它应占总解数的恰 C(13, 1)·C(12, 1)/C(15, 2) × …——用自同构论证先算出理论值再对表。
第二关:分同构类。对每个解计算规范形:取 15! 种标号中最小的邻接编码不现实,实用做法是顶点细化的规范标号(nauty 的思想):按「点对—线」关联逐步细分等价类,再在剩余对称内穷举。以 Pasch 计数(§3.15)做第一把快筛:80 个类的 Pasch 数分布是一条多峰谱——先按 Pasch 数分桶,桶内再做完整同构测试,工作量立降两个量级。
第三关:验钞。自检三件套:①总数对表 80;②每个类的自同构群阶之和与标号总数一致(§3.14 的换算公式);③把 PG(3, 2)、Bose 系、循环系各归其类,核对它们的 Pasch 数与 §3.15 账本。三件全绿,本章的「计数与分类」就从听说变成了家产。
★★ 本实验把 §3.10 的七日表过三道独立检查,顺带验证「PG(3, 2) 可分解」的断言。全部代码不足四十行。
from itertools import combinations
days = [
[(1,2,3),(4,8,12),(5,10,15),(6,11,13),(7,9,14)],
[(1,4,5),(2,8,10),(3,13,14),(6,9,15),(7,11,12)],
[(1,6,7),(2,9,11),(3,12,15),(4,10,14),(5,8,13)],
[(1,8,9),(2,12,14),(3,5,6),(4,11,15),(7,10,13)],
[(1,10,11),(2,13,15),(3,4,7),(5,9,12),(6,8,14)],
[(1,12,13),(2,4,6),(3,9,10),(5,11,14),(7,8,15)],
[(1,14,15),(2,5,7),(3,8,11),(4,9,13),(6,10,12)],
]
# 检查一:每日是平行类——5 组互不相交,并集恰为 15 人
for d, day in enumerate(days, 1):
pts = [p for t in day for p in t]
assert len(pts) == 15 and len(set(pts)) == 15, f"第 {d} 日非平行类"
# 检查二:全表 35 组,105 个点对恰各一次
blocks = [frozenset(t) for day in days for t in day]
assert len(blocks) == 35
pc = {}
for b in blocks:
for p in combinations(sorted(b), 2):
pc[frozenset(p)] = pc.get(frozenset(p), 0) + 1
assert len(pc) == 105 and all(v == 1 for v in pc.values())
# 检查三:每人的七天同伴互不相同(覆盖其余 14 人)
for girl in range(1, 16):
mates = [q for b in blocks if girl in b for q in b if q != girl]
assert len(mates) == 14 and len(set(mates)) == 14
print("三道检查全部通过:七日表是一个 KTS(15)")
预期输出。一行收尾:三道检查全部通过:七日表是一个 KTS(15)。三道检查各管一段定义:检查一验「平行类」(可分解性),检查二验「每对恰一线」(STS 本性),检查三验「日程表语义」(每人 14 位同伴不重不漏)——三者合起来恰好是 KTS(15) 定义的展开。
延伸两步。其一,把七日表替换成 PG(3, 2) 的生成式名册(点为 𝔽24 非零向量、线为 {x, y, x + y}),重跑检查二——本书正是先对几何名册完成检查、再从 spread 分解摇出这张表的;两表 md5 不同而账目全同,恰是「唯一性」的一次活体演示。其二,把表删去任意一行再跑,观察三个断言的失效顺序——它与习题 3-9 的预期作对照。
九宫格是本书最久的老朋友:洛书口诀「二四为肩、六八为足」,三行三列两条对角线,八条三数线和恒为一。这个古老的方块与本章的可分解三元系之间,隔着一条值得细看的缝。
先算账。九宫的八条线(三行、三列、两对角)盖住多少点对?8 × 3 = 24 个对名额,但中心点参与的四条线在中心两两相交——角点与中心的对、边点与中心的对各被盖一次,而角与角的「对面」对(如左上与右下)在两对角线上撞了车:同一对出现两次。账目不平:36 对中只盖住 21 对,还有 15 对流落线外。洛书不是三元系,更不是可分解三元系——它的美学是「和恒等」(每线和为 15),不是「对齐次」(每对恰一线)。
可是九宫里分明住着 KTS(9)。把两条主对角线换成两组「错位对角线」(骑士一跳式的斜行,例题二的类 3 与类 4),八线增为十二线:三行、三列、四组斜行。重算:12 × 3 = 36 = C(9, 2),每对恰一次;四类各为平行类——KTS(9) 登场。从洛书到 KTS(9) 只改了两条线族,改的却是整个灵魂:从「和」的语言换到「对」的语言。
这缝里藏着本章的两课。其一,均衡安排的直觉古老而普遍:洛书的「九官均布」与 Kirkman 的「十五人散步」,动机都是把集合安排得处处均匀;但均匀的精确定义可以截然不同——幻方均匀在数值和,设计均匀在关联次数。同一个方块骨架,装两副不同的骨架灵魂。其二,分解(平行类)是比排列更强的整齐:洛书的行与列天然是平行类,但对角线不是——要把四条斜线也凑成两个整齐班次,必须放弃「主对角」的执念、改用错位斜行。整齐的代价是几何直观的让位;而让位之后得到的 AG(2, 3),反而比幻方走得更远:它可以任意放大到 AG(2, q),幻方却在 4×4 之后走向完全不同的理论。
九宫格的分解思想,说到底是把「均匀」拆成可核算的名册。本书在此后各章将反复使用这套动作:先问「什么量在每处相等」,再问「这些相等能否分层分组」,最后问「分组之间是否互不干扰」。三问问完,一个设计的骨架已然成形。
第三章把「配平」做到极致:每对点恰一次同席,λ 压到 1。但所有的平衡都发生在一个方向上——只有「同席次数」这一本账。下一章引入第二本账,并要求两本账同时独立地平。
引子已在手边。KTS(15) 的七日表里,每天的 5 个三人组是一个平行类;§3.11 的仿射平面里,q + 1 个平行方向把全部线条分门别类。现在问一个墨迹未干的问题:平行方向最多能有多少个?AG(2, q) 给出 q + 1 个;把每个方向的一族平行线想成「一张表格的一行编号」,两个方向便交织成一张 q × q 的方格表。拉丁方——每行每列 1 到 q 各出现一次——正是两族平行线的合影;而两个正交的拉丁方,则要求两套编号在同一格内永不重样:三种安排(行、列、符号)两两独立。三十六军官之谜——六种军衔、六个团,排成 6×6 方阵,每行每列军衔与团各自齐整、且军衔与团的搭配遍历 36 种组合——就是问:有没有两个 6 阶正交拉丁方。
Euler 1782 年猜想:6 不行,且一切 n ≡ 2 (mod 4) 都不行。这个猜想在 1959 年被计算机时代的组合学家们惊天推翻——除 2 与 6 外全部存在。下一章的路线图正沿这条线索铺开:拉丁方的计数、MOLS 的上界、有限域的成批构造、MOLS 与仿射平面/射影平面的等价网、Tarry 的 6 阶穷举与 1959 年的大翻案、以及正交阵列与强部分平衡设计这两件「放松的乐器」。
装备交接清单:本章的可分解性在拉丁方语言里就是「行与列两个正交的平行方向」,仿射平面等价于 q − 1 个 MOLS 的大满贯,整性门卫将再次先于一切定理开工。行李不变,账本加一。翻页即是第四章。
第三章的平衡只有一本账:每对点同席一次。本章给账本加一重——两种安排同时进行、互不干扰。最直观的载体是方格表:把 n 种军衔与 n 个团排成 n × n 方阵,要求每行每列军衔不重不漏(第一本账)、每行每列团队亦然(第二本账)、并且任何军衔—团搭配恰好出现一次(两本账互不粘连)。这就是 1782 年 Euler 笔下的三十六军官问题:六种军衔、六个团,36 名军官如何列队?Euler 试了试,断言答案是没有——并大胆推广:一切 n ≡ 2 (mod 4) 都没有。
这个猜想活了 177 年,结局却是组合数学史上最有戏剧性的翻案之一:1901 年 Tarry 用穷举坐实了 6 阶的「没有」;1959 年 Parker 造出 10 阶的反例;1960 年 Bose、Shrikhande、Parker 三人会师,证明除 2 与 6 外的一切阶数都有。猜想的「半张正确面孔」(6 阶)与「半张错误面孔」(其余全部)在本章都将给出机制层面的解释,而不止是判决书。
行李几乎全备:仿射平面(§3.11)本章将认出它是 MOLS 的另一种写法;可除性的门卫、Fisher 式的秩技巧(第一章肖像方程的远亲)都会再上场。新行李只有一件——正交阵列(§4.11),它是把「多本账独立」翻译成最通用语言的账本,也是试验设计 industry 的日常工具。
★★ 一阶账本先立规矩。
定义(拉丁方)。n 阶拉丁方是 n × n 方格表填入 n 个符号,使每行、每列中每个符号恰出现一次。若第一行与第一列都按自然顺序排列,称为约简拉丁方;任何拉丁方可由约简方经行置换、列置换、符号置换生成。
名字的来历是本杰明·富兰克林们手中的「填字魔术」:用拉丁字母作符号故称拉丁方。数学登记人口时它有两副常用面孔:其一,商群运算表——群 G 的乘法表去掉表头就是 |G| 阶拉丁方(消去律的功劳);反之未必,多数拉丁方不是任何群的运算表。其二,试验设计:把「地块位置」(行、列)与「处理品种」(符号)安排得互不纠缠,田间试验的老传统。
计数。约简拉丁方的个数 R(n) 早已精确到小阶:
R(3) = 1, R(4) = 4, R(5) = 56, R(6) = 9408, R(7) = 16 942 080.
由「行、列、符号三重置换生成一切方」,标号总数为 L(n) = n!·(n − 1)!·R(n):L(6) = 720 × 120 × 9408 = 812 851 200。记住这个数字——Tarry 1901 年正是在这个量级的迷雾里宣布 6 阶无正交对的;今天回头看,他面对的是八亿方阵。
行、列、符号的三权分立。拉丁方的行、列、符号在定义中地位对称——这个「三向对称」将在 §4.11 的正交阵列里升格为完全对等的列地位:届时行号、列号、符号都只是阵列的普通列。眼下先记一句:拉丁方是「两个方向的平衡」;下一节的正交拉丁方是「三个方向的独立」。
★★★ 第二本账登台。
定义(正交与 MOLS)。两个 n 阶拉丁方称为正交,若把两者逐格叠置,n2 个有序对(上层符号,下层符号)两两不同。一族两两正交的拉丁方记作 MOLS(n);其最大可能条数记 N(n)。
三十六军官的语言:军衔表与团表是两个 6 阶拉丁方;「任何搭配恰一次」即正交;问题问的就是 N(6) ≥ 2 吗——答案是否(§4.7)。而「搭配遍历」这件事在试验设计里身价不菲:两因素试验的 n2 种水平组合,用两个正交拉丁方就能在 2n 次安排里各试一遍且行、列干扰被精确抵消——正交拉丁方因此是统计学的祖传工具(Fisher 在 Rothamsted 试验站的看家本领之一)。
最小实例先睹。三阶恰有一对正交方(下例),且 N(3) = 2 = n − 1:
L1 = [1 2 3;2 3 1;3 1 2], L2 = [1 2 3;3 1 2;2 3 1],
叠置得 (1,1) (2,2) (3,3) / (2,3) (3,1) (1,2) / (3,2) (1,3) (2,1)——九个有序对各一次。细看 L1、L2 的来源:La(i, j) = a·i + j (mod 3),a = 1, 2。这台「模乘机床」就是 §4.4 有限域构造的雏形——它恰好在素数幂阶上满转,在 6 阶上熄火,谜案的机制已露端倪。
注记(N(n) 的几个锚点)。N(1) 无聊地大;N(2) = 1(第二个拉丁方必与第一个相同);N(3) = 2;N(4) = 3;N(5) = 4;N(6) = 1(Tarry);素数幂阶恒有 N = n − 1(§4.4)。本章将解释这些零星数字如何拼成一幅完整地图。
一句术语预告。MOLS 是 mutually orthogonal Latin squares(两两正交拉丁方)的缩写;文献里「n 阶的 k 个 MOLS」与「k 个 MOLS(n)」同义。本书采用 N(n) 记最大条数——它是本章真正的女主角,每一节的情节都是对她的侦察:上界(§4.3)、满额构造(§4.4)、几何身份(§4.5–4.6)、以及在 2 与 6 处的失踪案(§4.7–4.9)。
★★★ 本页给出女主角的第一个紧箍咒:再多就放不下。证明是第一章肖像方程的远亲——又是线性代数在关键时刻拍案而起。
化为矩阵。对每个 n 阶拉丁方 La,定义 n2 × n 的关联矩阵 Na:行对应格子、列对应符号,格子填符号 s 则该行第 s 列为 1。拉丁方性即 Na 每行恰一个 1、每列恰 n 个 1;正交性即
NaTNb = J(全 1 方阵), a ≠ b; NaTNa = nI.
再把「行号」「列号」也请进来:定义 n2 × n 矩阵 R、C(格子行号/列号的指示矩阵),同样有 RTR = CTC = nI、RTC = J、NaTR = NaTC = J(每「行号—符号」对恰在格子中出现一次——这正是拉丁性的陈述)。
定理(上界)。N(n) ≤ n − 1。等号成立的阶称为满额阶。
证明。拼出 n2 × (k + 2) 矩阵 X = [R C N1 … Nk],计算 XTX:对角块均为 nI,非对角块均为 J。这个分块阵的二次型在两类方向上分别起效——型一(各列块内取和为零的向量):值得 nΣ‖uc‖2 > 0;型二(各列块内取全 1 向量的倍数):值得 n2(Σαc)2,当系数和为零时为零。故 XTX 的零空间恰由「系数和为零的全 1 组合」张成,维数 k + 1,从而
rank(X) = (k + 2)(n − 1) + 1.
而 rank(X) ≤ n2,代入整理:(k + 2)(n − 1) ≤ n2 − 1 = (n − 1)(n + 1),两边除以 n − 1 即 k ≤ n − 1。∎
读证明的两笔。其一,型二方向之所以能清出维数,靠的是每块「行和恒为 n」——拉丁性与正交性在矩阵语言里恰好把 XTX 调成这个介乎 nI 与 J 之间的形状;这与第一章肖像方程 NNT = (r − λ)I + λJ 是同一个母题:设计的关联结构天生是「单位阵加全一阵」的谱。其二,等号情形(k = n − 1)秩恰为 n2,一丝不多一丝不少——满额阶的存在性问题,就此化为「这台矩阵能否真正达到它理论上的满秩」,答案将由 §4.4 的有限域给出「素数幂时能」,§4.9 给出「某些非素数幂也能」。
★★★ 满额机床到货。它只认素数幂,而这正是 6 阶悲剧的伏笔。
定理(有限域构造)。设 q 为素数幂,𝔽q 为 q 元有限域。对每个 a ∈ 𝔽q× 定义
La(i, j) = a·i + j, i, j ∈ 𝔽q,
则 {La : a ∈ 𝔽q×} 是 q − 1 个两两正交的拉丁方——N(q) = q − 1,满额。
证明。固定行 i:j 扫过 𝔽q 时 a·i + j 取遍全域(平移),列同理——拉丁性。正交:设 (La, Lb) 在格 (i, j) 与 (i′, j′) 取同一对值,则 a(i − i′) = 0 且 b(i − i′) = 0;因 a ≠ b,两式不能同时成立除非 i = i′,继而 j = j′——每对值恰现一次。∎
为什么必须用域而不是环。证明里唯一用到的代数事实是「a ≠ b(均非零)则 a − b 可逆」。在 ℤn 里这句话恰好等价于「n 为素数」:n 有非零零因子(如 6 阶的 2 与 3)时,a = 2, b = 3 这类「斜率对」会漏判,机床啮合失灵。而有限域的存在性定理(§第二章用过:q 是素数幂当且仅当 𝔽q 存在)保证素数幂阶一律满额。于是地图初成:满额的已知情形恰是素数幂;剩下的问题是——非素数幂里有没有漏网之鱼?这正是 MacNeish 猜想(§4.10)与大翻案(§4.8–4.9)的战场。
顺手登记两个特例。q = 4:四元域 𝔽4 = {0, 1, α, α + 1}(α2 = α + 1),三个斜率给出 3 个 MOLS(4)——例题一将全文誊写。q = 5:整数斜率 1, 2, 3, 4 直接可用——例题二则需亲手转一圈机床。
★★★ 满额的 MOLS 不是孤立珍宝,它是一张几何网的三个结之一。本页先接第一个结。
定理(满额 ⇔ 仿射平面)。存在 n − 1 个 MOLS(n)(即 N(n) = n − 1),当且仅当存在 n 阶仿射平面 AG(2, n),即可分解 BIBD(n2, n, 1)。
证明(两个方向的字典)。由 MOLS 到平面:点集取 n2 个格子,每格带上 n + 1 个坐标(行号、列号与 n − 1 个方各自的符号)。线分三族:固定行号(n 条)、固定列号(n 条)、以及每个 MOLS 的每条「等值线」{(i, j) : La(i, j) = s}(每方 n 条,共 n(n − 1) 条)。线共 n(n + 1) 条,分属 n + 1 个平行方向:同族不交(每族的线各是「一行/一列/一组两两不同行不同列的格子」),异族两两恰交一格(行遇列是一格;行或列遇等值线由拉丁性;等值线遇等值线由正交性)。任两点共线的验证用满员计数:过一点恰有 n + 1 条线,每条载 n − 1 个异点,合计 (n + 1)(n − 1) + 1 = n2——全部点数刚好被过 p 的线网覆盖,故任何两点必有共线、且两线交点唯一排除二重线。由平面到 MOLS:取仿射平面的 n + 1 个平行方向,挑两个方向当「行」「列」,其余 n − 1 个方向各定义一个拉丁方:格 (行, 列) 处填「过该点、该方向的线名」——平行公理保证线名与行列一一对应,两条不同方向的「线名叠置」恰交一点即正交。∎
这个等价的三重红利。其一,第三章的仿射平面库存直接过户:素数幂阶的满额(§4.4 的域构造与 §3.11 的 AG(2, q) 本是一物,两处证明互为注脚)。其二,仿射平面的不存在性立即翻译为 MOLS 的不满额:6 阶仿射平面不存在( forthcoming §4.7),故 N(6) ≤ 5 弱化为 N(6) ≤ 4——离 Tarry 的 N(6) = 1 还差一大截,可见「几何不存在」与「正交对不存在」是两档难度。其三,满额问题就此与一个更响的名词挂钩——下一页的射影平面,以及它身后 Bruck–Ryser–Chowla 的数论拦截与 10 阶平面的世纪悬案。
★★ 第二个结:添一条无穷远线,仿射平面升格为射影平面。
定理(满额 ⇔ 射影平面)。存在 n 阶射影平面(n2 + n + 1 点、同数线、每线 n + 1 点、每两点恰一线、任两线恰交一点)当且仅当存在 N(n) = n − 1 的满额 MOLS。它也是对称 BIBD (n2 + n + 1, n + 1, 1)。
换算字典是第二章老朋友:仿射平面添「无穷远线」——n + 1 个无穷远点,每个平行方向认领一个——即成射影平面;反过来删一条线及其全部点即回仿射平面。于是三章之间架起一座完整的桥:第二章的 Singer 差集造出了素数幂阶射影平面 → §3.11 的仿射平面 → 本章的满额 MOLS。三个看似无关的章节,在这座桥上是同一间机房。
射影平面的存在地图,截至本书写作。素数幂阶:全部存在(Singer)。非素数幂阶:6 阶不存在(Bruck–Ryser–Chowla 即可判死:6 ≡ 2 (mod 4) 而非两平方和;Tarry 更早从 MOLS 一侧证死);10 阶不存在——这是 1989 年 Lam 与合作者动用数千小时机时完成的著名计算,CRAY 上的马拉松,是「计算机消灭数学对象」的代表作;12 阶至今悬而未决——这是目前最小的未知阶。数论拦截 BRC 能再杀掉一批(§2.11 的两条款在射影平面参数 n ≡ 1, 2 (mod 4) 时的版本),如 14 阶;但 12 ≡ 0 (mod 4),BRC 缄口,只能靠未来更深的兵器。
给 6 阶留个特写。三扇门在 6 阶全部关闭,但关闭的方式值得对比:射影平面 6 阶死于 BRC(数论);仿射平面随之陪葬;而 MOLS 的正交对死得最彻底——连两扇小门都打不开(Tarry)。三个互为翻译的对象,不存在性的深度却分了三层;这提示 6 阶藏着一个比「几何不存在」更精细的障碍。谜底在 §4.7 揭晓——顺便见识 1901 年的穷举如何与 1984 年的短证明隔空击掌。
★★★ 谜案第一审。被告:6 阶正交对;控方证物:八亿一千二百万个嫌疑方阵。
定理(Tarry,1900–1901)。不存在一对 6 阶正交拉丁方,即 N(6) = 1。连同 N(2) = 1(2 阶的任何两个拉丁方相同),「n ≡ 2 (mod 4) 无正交对」的 Euler 猜想在 2 与 6 两处成立——也仅仅在这两处。
先补一件必备工具:滤过横档。拉丁方的一个滤过横档(transversal)是 n 个格子的集合:每行一个、每列一个、n 个符号互不相同。基本事实:
拉丁方有正交配偶 ⟺ 它能分解成 n 个两两不交的滤过横档.
(必要:配偶的每个符号位置恰是一个滤过横档;充分:把 n 个横档各配一个符号叠上去即造出配偶。)Euler 的原始动机由此而来:偶阶循环方——比如 ℤ6 的运算表——一个滤过横档都没有(滤过横档对应群的「完全映射」;Hall 与 Paige 1969 年证明了完全映射的群论判据:Sylow 2-子群非循环才存在,而 ℤ6 的 Sylow 2-子群是循环的)。 Euler 从这类例子以偏概全出「一切 4k + 2 阶皆无」——偏得干脆,错得响亮。
Tarry 的奇迹在于笨功夫的纪律。Gaston Tarry 是英属印度的退休文职人员,他把 6 阶约简拉丁方按第一行结构分门别类、逐类排除配偶可能,1900 至 1901 年在法国科学促进会会刊上连载了完整论证——八亿方阵在他的分类里坍缩成有限的几十种骨架。后世复核(包括 1984 年 Stinson 的两页半短证明:设约简方有配偶,对第一行的七种结构逐一账目引爆)都确认 Tarry 的结论无误;计算机时代更有多份独立机器验证。6 阶的独身就此定案。
审案笔记。本案留下两个方法论遗产。其一,穷举也能是一等公民:Tarry 的分类纪律是后世枚举方法(§3.16 第三套)的先声。其二,「一个反例方向」与「一族反例」隔着大海:从 6 阶的死到 10 阶的生,中间是 1959 年的惊涛——下一页。
★★★ 组合数学史上最著名的翻案戏,本页按时间轴完整重演。
1782 年,猜想登场。Euler 在论文「A new type of magic square」里研究「希腊拉丁方」(希腊字母与拉丁字母两套方叠置正交——名字沿用至今),提出三十六军官问题并写道:他尝试的 n = 2 (mod 4) 情形都失败,怀疑此类阶数根本无解。Euler 手里只有 n = 2 与 6(10、14 他都试不动),这是以两个样本概括无穷族的大胆一跃。
1901 年,半张判决。Tarry 坐实 6 阶无解(§4.7);猜想的前半听起来更可信了。此后半个世纪,多数教科书以「Euler 猜想(6 阶已证)」的口吻转述——把已证的 6 推销成未证的全体,这份集体记忆偏差本身就是史料。
1959 年 4 月,第一道裂缝。Raj Chandra Bose 与 Sharadchandra Shrikhande(北卡罗来纳大学)用递归技术先在若干阶上撕开口子;几乎同时,数学程序员 Ernest Parker(后面还会反复出场)以一副「蛮劲」的正交阵列技巧造出了一对 10 阶正交拉丁方——猜想的第一块大陆沉没。消息见报,《纽约时报》以显著版面报道了「Euler 猜想被推翻」;数学成果登上大众头版,这在组合数学是头一遭。三人随后在 Bose 家里会师,把各自的兵器合成一台通用机器。
1960 年,全案终审。Bose、Shrikhande、Parker 的联名论文(〈Further results on the construction of mutually orthogonal Latin squares and the falsity of a conjecture of Euler〉,Canadian Journal of Mathematics)宣布:
定理(Bose–Shrikhande–Parker,1960)。对一切 n ≡ 2 (mod 4) 且 n ≠ 2, 6,存在一对正交拉丁方。Euler 猜想的例外恰好只有 2 与 6。
本案的哲学余味。2 与 6 的「真」,让猜想统治了半个世纪;10 的「假」,让全部 n ≥ 10 集体翻案。猜想是被它的例外泄露的:例外只有两个,但其中一个恰好最小、最容易被研究——于是局部真理伪装成普遍真理达 177 年。§4.13 将把这一课讲透。
★★★ 大翻案的机器舱,本页开盖参观。完整证明超出本册,但设计思想值得整页交付——它正是第三章 PBD 递归的升级版。
困难的形状。要造一对正交方,等价于造一个「滤过横档分解」(§4.7)。对一般 n(特别是 n ≡ 2 (mod 4))没有域可用、没有群可用——§4.4 的机床全部罢工。三人的破局思路殊途同归:先造更松的结构,再用递归把它「绷紧」。而 10, 14, 18, 22, 26 这些阶恰恰找不到合手的精确图纸——递归机器在 Euler 辖区腿软。
Parker 的路:把正交性当阵列来摆。Parker 不从拉丁方出发,而直接摆正交阵列的行(§4.11 的语言):只要 n2 行、四列,使任意两列的有序对各一次,四列中的两列当行、列,另两列就是一对正交方。阵列不必由群生成——他设计了「错位重排」的修正术,从近似阵列出发局部修复正交性。10 阶的反例正是这样手工摆出来的,据他自称带着几分「试错者的运气」。
Bose–Shrikhande 的路:成对平衡当作脚手架。两人把第三章的 PBD 机器(§3.8)改造成 MOLS 生产线。核心的递归条款(陈述取标准形式,证明走 §3.8 三工位、横档层以正交阵列拼装,细节见 BSP 原文与 Stinson 教材):
引理(PBD 闭合,MOLS 版)。若存在 PBD(v, K, 1),则
N(v − 1) ≥ min{N(k) : k ∈ K}.
即:图纸的各车间只要有「最低配额」的正交方存货,就能在 v − 1 阶装配出同额配额。
两路合流。PBD 闭合把「对一切 n ≡ 2 (mod 4) 造一对」化归为「找一批图纸,其车间阶数恰好都有正交对存货」:素数幂车间货满(§4.4),奇数车间有 Bose–Shrikhande 的递归货源,剩下少数顽固阶(10、14、18、26…)由 Parker 式的特制阵列逐一补货。1960 年联名的终审论文,本质是一张巨大的「图纸—库存」对账单。
余波。这台机器随后被 Wilson 推到理论极限:对每个固定的 λ 与 k,第三章尾的「渐近存在定理」正是在 BSP 的脚手架上封顶的;而 N(n) → ∞(对足够大的 n,正交方不止一对)也由 Chowla、Erdős 与 Straus 在 1960 年用同款技术证得。大翻案不是终点,是整个「成批存在性」学派的开幕式。
★★ Euler 猜想有一个更精细的「加强版」,死得同样精彩,而且死得更早——值得单独立传。
乘积定理先立住。若 存在 m 阶与 n 阶的 k 个 MOLS,则存在 mn 阶的 k 个 MOLS(逐坐标做直积:格 (行对, 列对) 上符号对同步相乘)。于是由素数幂满额立刻得
N(p1a1…prar) ≥ min(p1a1, …, prar) − 1.
MacNeish 的豪赌(1922)。H. F. MacNeish 把不等号改成等号:猜想 N(n) = min(piai) − 1。这比 Euler 猜想强得多:取 n = 2 × 奇数,min = 2,即 N(n) = 1——Euler 猜想是它的推论。 MacNeish 的证据与 Euler 同构:素数幂全都吻合,样本之外全靠信念。
判决(Bose–Shrikhande,1959)。21 = 3 × 7 阶存在 4 个 MOLS,而 MacNeish 值只有 min(3, 7) − 1 = 2。MacNeish 猜想被推翻,且推翻它的 21 阶根本不是 4k + 2 型——连 Euler 猜想的辖区都管不到。
今天的账目。MacNeish 值只是真相的下界之一,而且很快被甩开:此后各代构造把许多阶的 N(n) 推到远超 min 因子的水平(比如对固定的两素数积 pq,已知的下界随结构千差万别);另一端,精确值依旧稀有:素数幂阶与若干小阶之外,N(n) 的精确值大多未知——连 N(10) 的精确值都是费了数十年才尘埃落定的成果。Chowla–Erdős–Straus 的 N(n) → ∞ 保证「越走越宽」,但「多宽」至今没有整齐的公式。MacNeish 的失败划定了一条方法论边界:积性结构能给的,宇宙还给更多。
★★ 本章的第二重账值得用最通用的复式记账法重写一遍——这是它走进工业界的形态。
定义(正交阵列)。OA(λs2, k, s, 2) 是一张 λs2 行、k 列的表,每列取 s 个水平,使任意两列的行组合中,每个有序对恰出现 λ 次。λ = 1 时记 OA(s2, k, s, 2),此时行数恰为 s2。
与前文的接口一望而知:把 k 个 s 阶 MOLS 的行号列号一并入表,即 OA(s2, k + 2, s, 2);反向拆包同理——k 个 MOLS(n) ⟺ OA(n2, k+2, n, 2)。§4.3 的上界在阵列语言里就是 Rao 边界的最简情形:k ≤ n + 1。
为什么统计学家爱它。行=一次试验,列=一个因素,水平=因素取值:OA 保证任意两个因素的每种水平组合都被均匀试过 λ 次——这就是「正交试验设计」的本体。4 因素 3 水平的全试验要 34 = 81 次,而 OA(9, 4, 3, 2) 只要 9 次(那正是三阶 MOLS 的叠置表);日本质量管理的田口方法把这套字典推向了整个制造业。第二章的 Hadamard 矩阵也在这个语言里重逢:Hadamard 阶 N 给出 OA(N, N − 1, 2, 2)——二水平正交表的生成母机。
往高处看一眼。强度 3 及以上的正交阵列(任意三列组合均匀)通向更深的整数规划与码论:Rao–Hamming 界、Bush 构造(OA(tst… 的满额家族)……第六章的码—设计互译将再次用上这个格式。本册到此为止,只求记住一句:「多个独立账本同时平」在数学里有唯一的标准格式,名叫正交阵列。
★★ 大翻案的深层遗产是一件「半松半紧」的结构——本页讲它的设计哲学,定义取描述性版本,精确定义与完整定理见 BSP 原文与 Wilson 的综述。
PBD 太紧。第三章的成对平衡设计要求每一对点恰同席一次——这条铁律让递归干净,却也让许多阶数(10、14、18、26…)根本不存在合身图纸:递归机器在 Euler 辖区趴窝。
全松则散。反过来,若对点对额度完全放任,横档层的正交性核算就没了依据——装配线照样停工。Bose 的洞见是在两个极端之间取一个可核算的松弛:强部分平衡设计(strongly partially balanced design,SPBD)把块按容量分成两档,各档给出配对的配额(某档块覆盖的点对同席两次、其余档恰一次,等等),并配上一组「强度条件」保证:递归装配所需的正交性账目,在这个松弛额度表上依然可以逐行核对。
松弛换来的存在性。这笔交易极其划算:10、14、18、22、26 这些「精确图纸告缺」的阶,全都存在合身的 SPBD——它们正是 BSP 战役里最后被攻克的顽固阶。可以这样打比方:PBD 是精确量具,量不了的手工活用 SPBD 这把游标卡尺照样能做,而且误差可估算。第三章的三工位(图纸—内装—横档)一台不动,只是每层质检从「恰等」改成「按额度表核对」。
谱系一瞥。这条「放松」的谱系后来枝繁叶茂:可分组设计、带洞设计、 Wilson 的成对平衡权重视图……第五章的 t-设计构造策略(§5.15)会再遇同一哲学的高维版本。眼下记住它在本书的战绩:没有 SPBD 一路的松弛结构,就没有 1960 年的终审判决;没有终审判决,Euler 的幽灵还要再飘几十年。
★★ 本章是一台「猜想—反例—定理」的完整循环装置,收尾页把它逐层拆开。
猜想为何值得。Euler 与 MacNeish 的猜想都错了,但都不是白错:Euler 的猜想逼出了 Tarry 的分类纪律与 BSP 的递归兵器;MacNeish 的猜想留下乘积定理(真)与「min 因子下界」(真)。一个结构良好的猜想,错误部分与正确部分会分头繁殖——判断标准是:猜想是否把参数空间切成了可检验的格子。两个猜想都合格。
反例为何锋利。Parker 的 10 阶反例一击毙命,靠的不是算得快,而是选对了战场:10 是猜想辖区内最小且素因子结构最怪(2 × 5)的阶;在这里造出反例,等于当众演示「证据链的每一环都断裂」。反例的美学:一个就够,但要打在猜想最自信的部位。
定理为何迟到。从 1959 的反例到 1960 的终审只隔数月——因为反例的构造技术本身就能倒转成构造技术(Parker 的阵列修正术反手就是生产线)。最好的反例是能反向运转的机器:它否定猜想的同时,解释了为什么猜想此前「看起来对」(局部构造在多数小阶确实能绷紧成解)。
把本章的教训装进口袋:样本会撒谎,尤其当最小的样本恰好为真;反例要打七寸;上界与下界的鸿沟处,藏着下一代的构造技术。第五章将带着这台装置走进 t = 4, 5 的深水区——在那里,猜想与反例的循环将变成「奇迹与例外」的循环。
★★ 题目。写出 4 阶的 3 个两两正交拉丁方(满额 N(4) = 3),验证两两正交,并把其中一对的叠置写出来。
构造。用 𝔽4:元素 {0, 1, α, α + 1}(α2 = α + 1,加法即二进制异或),斜率 a ∈ {1, α, α + 1},La(i, j) = a·i + j。把四个元素按 0, 1, α, α+1 对应记为 1, 2, 3, 4,三张方全文如下(程序核验拉丁性与两两正交):
L1 = [1 2 3 4;2 1 4 3;3 4 1 2;4 3 2 1],
L2 = [1 2 3 4;3 4 1 2;4 3 2 1;2 1 4 3],
L3 = [1 2 3 4;4 3 2 1;2 1 4 3;3 4 1 2]。
正交抽查。L1 与 L2:第 2 行叠置给 (2,3) (1,4) (4,1) (3,2),第 3 行给 (3,4) (4,3) (1,2) (2,1)——与首行 (1,1)(2,2)(3,3)(4,4)、末行 (4,2)(3,1)(2,4)(1,3) 合计 16 对互不重复 ✓。理论保证在 §4.4:斜率差 1 − α = α + 1 非零可逆。三对全部如此,故 N(4) ≥ 3;又上界 N(4) ≤ 3(§4.3),满额。
几何互译。按 §4.5,这 3 个方应撑起一个 4 阶仿射平面:16 个点、20 条线、5 个平行方向——行方向、列方向加三张方的各 4 条等值线。第二章的 Singer 视角再看一眼:4 阶射影平面 PG(2, 23)?不——PG(2, 4) 有 21 点 21 线(阶为 4 的射影平面),删一条无穷远线即得这里的 16 点仿射平面。三段章节在同一个小方阵上完成会师。
收尾。注意三张方的首行同为 1 2 3 4——它们自动「共约简」;这提示 MOLS 可以整体约简(见习题 4-5),也解释了例中「列对称的阶梯花纹」:异或表 L1 的分形感与两张乘法方的镜像感同源于 𝔽4 的特征 2。
★★ 题目。用整数域 ℤ5 造全部 4 个 5 阶 MOLS,并说明为何再挤不出第 5 个。
构造。Lk(i, j) = (ki + j) mod 5,k = 1, 2, 3, 4。誊出前两张:
L1 = [1 2 3 4 5;2 3 4 5 1;3 4 5 1 2;4 5 1 2 3;5 1 2 3 4],
L2 = [1 2 3 4 5;3 4 5 1 2;5 1 2 3 4;2 3 4 5 1;4 5 1 2 3]。
正交核算。斜率差 2 − 1 = 1 可逆:设两格同取 (L1, L2) 值,则 (i − i′) ≡ 0 (mod 5) 且 j = j′——同格。四张方两两同理(差 1, 2, 3, 4 全部可逆),程序全表核验 25 对 × 6 组全部各现一次。
为何恰好 4 个。上界(§4.3)给 N(5) ≤ 4;构造给 ≥ 4;夹逼即满额。换个角度重复 §4.4 的尾声:能当「斜率」的非零元只有 4 个——第 5 个斜率无处可借,这便是上界的几何含义。
收尾(顺手的赠品)。把 L1 与 L2 叠置,25 个有序对 (L1, L2) 遍历全部组合——这正是 OA(25, 4, 5, 2)(§4.11):一个「4 因素 5 水平、25 次试验」的正交试验表,直接可用于田间或产线。数学上的一次满额,工程上的一张排程表。
★★★ 题目。证明 ℤ6 的运算表(循环拉丁方)没有正交配偶;并说明这一论证为何不足以结清整个 6 阶问题。
第一步:滤过横档的和式。滤过横档取每行每列各一格、符号互异(§4.7)。设横档占据格 (i, π(i)),π 是 ℤ6 的一个置换。循环方的格值为 i + π(i) (mod 6);横档的六个符号互异,故它们恰为 0…5,其和
Σ(i + π(i)) ≡ (0+…+5) + (0+…+5) = 15 + 15 = 30 ≡ 0 (mod 6).
但符号互异又要求这个和恰为 0 + 1 + … + 5 = 15 ≡ 3 (mod 6)。0 ≠ 3——矛盾。循环方连一个滤过横档都没有,遑论配偶。(推广:一切偶阶循环方同病——和式差半个 n,这正是 Euler 偏见的出生地。)
第二步:论证的边界在哪。上式只处理了「循环方这一个方」。6 阶标号拉丁方共八亿多(§4.1),其中许多有滤过横档——「有横档」与「可分解成 6 个互不重叠的横档」之间还隔着一整座山。Tarry 的功绩在于分类全部结构骨架逐一验尸;1984 年 Stinson 的短证明则把验尸压缩到两页半:设约简方有配偶,对第一列的 7 种可行结构逐一以和式与配对计数引爆。本书不誊写完整验尸单,只见证词的份量:6 阶的无配偶是全体 812 851 200 个方的集体属性,不是循环方的个体残疾。
收尾。本例题意在体会「见证」与「证明」的分寸:循环方的见证是完整的(对那个方),6 阶的完整证明在 §4.7 已交代出处;两者合读,方知「逐个排除」与「分类排除」之间隔着 Tarry 的半年、Stinson 的两页半、与 19 世纪末 20 世纪初的一整代耐心。
★ 本组只动用 §4.1–4.4。逢满额断言,先说清上界与构造各用了哪一节。
习题 4-1(计数热身)。由 R(5) = 56 算出 5 阶标号拉丁方总数 L(5);再用同公式核对 L(3) = 12。
习题 4-2(拉丁前提)。设 A(i, j) = i + j (mod 4),B(i, j) = 2i + j (mod 4)。先判 B 是否拉丁方;再把两者叠置,检验 16 个有序对是否遍历。由此体会:正交拉丁方的定义为何必须同时要求两方各自拉丁与叠置遍历,缺一不可。
习题 4-3(上界点名)。用 §4.3 的秩论证说明:N(6) ≤ 5。再解释为什么这个上界远不是 6 阶的真相(§4.7),从而体会「上界是天花板不是地板」。
习题 4-4(七阶满额)。写出 7 阶的构造方案(不必誊全表):斜率 1…6 给 6 个 MOLS(7);核对满额 N(7) = 6;数一数对应的 OA(49, 8, 7, 2) 的行列数。
习题 4-5(共约简)。证明:任何 MOLS 族可经行、列置换化为「首行同为自然序」的形态(提示:先用第一张方的行置换把各行首元排齐,观察其余方的「行置换后果」;再对列同理)。例题一的表是否已处于此形态?
习题 4-6(乘积定理演练)。由 N(3) = 2 与 N(5) = 4 推 N(15) 的下界;这个下界与「素数幂满额清单」矛盾吗?(15 非素数幂——检查 §4.4 的适用条件。)
提示与答案要点。4-1:120 × 24 × 56 = 161 280;3 阶 6 × 2 × 1 = 12 ✓。4-2:B 非拉丁(每列只有 j 与 j+2 两个值);但叠置 16 对恰遍历(线性映射行列式 3 与 4 互素)——两条件各司其职,缺一会放走假结构。4-4:OA 行 49、列 8。4-6:下界 2(由 min(3, 5) − 1);不矛盾——§4.4 只保证素数幂满额,15 的真相由 §4.9 的机器另查(已知下界远超 2)。
★★ 本组动用 §4.5–4.11,重点是三重身份的互译与翻案机器的演练。
习题 4-7(方变平面)。按 §4.5 的字典,把例题一的 3 个 MOLS(4) 展成 4 阶仿射平面:列出行方向与某等值线方向的全部线名册(各 4 条),验证两个方向的线两两恰交一点。
习题 4-8(平面变方)。反向演练:取 AG(2, 3)(九宫表),指定「行」「列」两方向后,读出其余两个方向对应的 2 个拉丁方,并与 §4.2 的 3 阶正交对对照。
习题 4-9(BRC 的影子)。用第二章的 Bruck–Ryser–Chowla 定理(对称设计参数 (n2 + n + 1, n + 1, 1))判 6 阶与 14 阶射影平面的存在性;再说明为何 10 阶 BRC 判不死(10 = 12 + 32),从而理解 Lam 1989 机时马拉松的必要性。
习题 4-10(MacNeish 的残余价值)。用乘积定理给出 N(45) 的下界(45 = 9 × 5),并对照素数幂满额表说明:若 45 阶存在仿射平面,则 N(45) = 8;眼下已知什么、未知什么?
习题 4-11(正交阵列速写)。把例题一的 L1、L2 连同行列号展开成 OA(16, 4, 4, 2):写出第 1、2、9、16 行;验证「列 1 与列 4」的 16 个有序对各一次。
习题 4-12(翻案地图)。按 BSP 战役的逻辑填空:要证「一切 n ≡ 2 (mod 4)、n ≥ 10 有一对」,把阶数按「素因子结构」分成三类,各配一台机器(域构造/PBD 递归/Parker 直造)。写成一张三行表。
提示与答案要点。4-7:行方向线 {(i, j) : i = 固定} 共 4 条。4-9:6 与 14 皆 ≡ 2 (mod 4) 且非两平方和(6、14 均含单重素因子 3、7 之类)——BRC 判死;10 = 12 + 32 过检,需计算机。4-10:乘积下界 min(8, 4) − 1 = 3;若满额应 8;「45 阶平面存在」目前是公开悬案(等价于 N(45) = 8)。4-12:纯素数幂——域构造;4k+2 大 army 阶——PBD 递归;顽固小阶——Parker 直造。
读图三句话。其一,本章的承重结构是中排的等价网:满额 MOLS、仿射平面、射影平面互为翻译,于是拉丁方的研究自动接入第二章的差集、有限域与第三章的可分解性——三个章节共享同一台机房。其二,谜案(6 阶)与翻案(10 阶起)不是孤立故事,而是等价网的「压力测试」:几何不存在性(BRC、Lam)与正交对不存在性(Tarry)在 6 阶同时发作、深度却不同,网上的对象各有各的死法。其三,下排两块是把战利品装箱:正交阵列把一切译成工业通用语,方法论一页把整个案卷压成一句教训——上界与下界的鸿沟,正是下一章的入口。
对象与上界。拉丁方=行、列、符号三向均衡的方格表;正交=叠置遍历全部有序对;N(n) 记两两正交的最大条数。秩论证(关联矩阵拼装、谱拆两型)给出紧上界
N(n) ≤ n − 1.
构造清单。①有限域机床:素数幂阶 N(q) = q − 1 满额(斜率 a·i + j,可逆性是正交性的全部成本);②乘积定理:N(mn) ≥ min(N(m), N(n))(MacNeish 的真遗产);③BSP 机器:PBD 闭合 N(v − 1) ≥ minN(k) 加 SPBD 松弛结构,覆盖一切 4k + 2 阶;④Parker 直造:正交阵列的错位修复,攻克 10、14、26 等顽固阶。
三大判决。①Euler 猜想(1782):4k + 2 无正交对——例外恰为 2 与 6(Tarry 1901 判 6;BSP 1960 终审其余全部存在);②MacNeish 猜想(1922):N(n) = min 素因子幂 − 1——21 阶 4 个 MOLS 击穿(Bose–Shrikhande 1959);③N(n) → ∞(Chowla–Erdős–Straus 1960):大阶的正交方越造越多,但精确值除素数幂与小阶外大多未知。
等价网。满额 MOLS(n) ⇔ 仿射平面 AG(2, n) ⇔ 射影平面阶 n(对称 BIBD (n2+n+1, n+1, 1))。存在地图:素数幂全开;6 死于 Tarry 与 BRC;10 死于 Lam 的计算机马拉松(1989);14 死于 BRC;12 至今悬而未决——最小的未知阶。
通用格式。k 个 MOLS(n) ⟺ OA(n2, k+2, n, 2):任意两列有序对各一次。试验设计的 9 次替代 81 次全试验、Hadamard 的二水平表,皆此一格式的成员。
本章的两位主角——Euler 与 MacNeish——都以失败告终,但他们的失败塑造了整个学科的工艺。值得把「怎样的猜想是好猜想」作为一条方法论命题认真对待。
第一课:好的猜想是一台切分参数空间的机器。Euler 把阶数按模 4 切开,MacNeish 按素因子分解切开——两种切法都立刻生成了一批可检验的有限问题(6 阶、10 阶、21 阶……)。猜想的价值不在于它最终对不对,而在于它把「无穷的模糊直觉」翻译成「有限的清晰靶子」。Tarry 若没有 Euler 的切法,未必会去数那八亿个方阵。
第二课:最小的样本最会撒谎,也最值得怀疑。2 与 6 都站在 Euler一边,这恰恰是危险信号:小阶的「真」往往来自退化结构(2 阶只有一个拉丁方;6 阶的障碍深但局部)。科学史上类似的伤口不止一处——组合数学的回答是:把「小阶检证」标准化为程序(§3.16 第三套方法论),既敬小,也疑小。
第三课:反例的价值在于反向运转。Parker 的 10 阶反例数月之内就变成了生产线——因为他的构造技术揭示了「为什么以前造不出」的真正原因(缺的不是对象,是合适的松弛结构)。坏反例只宣告死刑;好反例附送再生术。此后各章的「例外」(第五章的 Witt 设计、第六章的散在群)将反复验证:组合数学最深的秘密,几乎都藏在反例与例外的尸检报告里。
第四课:上界与下界相遇的地方,才是定理。本章始于上界 N ≤ n − 1,终于「素数幂与非 2、6 的 4k+2 阶都触顶」。两个方向的每一次不相等(如 21 阶)都撕开新的一页。存在性的问题,本质是上下界围猎的问题——这是全书反复出现的句式,本章给了它最完整的演出。
下一章,围猎升维:λ = 1 的账本加重到 λ = λ2、λ3、λ4、λ5,猎物换成五重平衡的 Witt 宏构。在那里,「猜想与反例」的循环将升级为「奇迹与例外」的循环——世界上只存在那么几个五重传递的设计,而本书将亲手数清它们。
★★★ 复现 1959 年 Parker 那记惊雷:在 10 阶(非素数幂、Euler 管辖区)造出一对正交拉丁方。三条递进路线,任选或连击。
路线一(回溯直造)。直接搜:先摆第一个拉丁方(可用回溯,约简形),再搜配偶——每步固定若干行,用滤过横档的「部分兼容」剪枝。警告:朴素回溯在 10 阶上会撞指数墙,剪枝设计(每放一行立即核「符号对各不重复」)是成败关键。跑通后即可亲眼见到那条 1959 年的新闻标题。
路线二(阵列修复,Parker 之道)。不从方、从阵列入手:先摆一个「近似 OA」——90 行 4 列(差 10 行),任意两列的有序对至多重复一次;再用错位重排逐步消化重复对、补足缺对。每一次交换都要记账(修复几对、新增几对),最后 100 行满额。这条路线的哲学收获:把「存在」拆成「可逐步逼近的优化问题」。
路线三(递归拼装,BSP 之道)。查表:10 有一张 PBD(11, {5, 5? }…)?本书不剧透图纸,只给方向:找一张车间阶数为素数幂与已知良阶的图纸,按 §4.9 的闭合引理装配。图纸本身可用小搜索程序找(块大小 5 与 6、11 个点的成对覆盖)。
★★ 本实验把「造 5 阶正交对」与「验 6 阶无解」各跑一遍:前者体会满额构造的机械性,后者体会 Tarry 之难。代码 Python 三十行内。
from itertools import product
def latin_check(L, n):
return (all(sorted(r) == list(range(n)) for r in L)
and all(sorted(c) == list(range(n)) for c in zip(*L)))
def orth_check(A, B, n):
pairs = {(A[i][j], B[i][j]) for i, j in product(range(n), range(n))}
return len(pairs) == n * n
# 一、5 阶满额构造
n = 5
sqs = [[[ (k*i + j) % n for j in range(n)] for i in range(n)]
for k in range(1, n)]
print("张数:", len(sqs))
print("皆拉丁:", all(latin_check(L, n) for L in sqs))
print("两两正交:", all(orth_check(sqs[a], sqs[b], n)
for a, b in product(range(len(sqs)), repeat=2) if a < b))
# 二、6 阶:随机抽样一万对,验证无一正交(不构成证明,只作体感)
import random
def rand_latin(n, tries=10000):
for _ in range(tries):
L = []
for _ in range(n):
row = list(range(n))
random.shuffle(row)
L.append(row)
if all(latin_check(L, n) for L in [L]):
return L
return None
hits = 0
for _ in range(10000):
A = rand_latin(6)
if A is None: continue
B = rand_latin(6)
if orth_check(A, B, 6):
hits += 1
print("一万对随机抽样的正交命中:", hits, "(Tarry:永远为 0)")
预期输出。第一段:张数 4、皆拉丁 True、两两正交 True——5 阶满额,机器一次成型。第二段:命中 0——随机抽样与 Tarry 定理零冲突;但诚实地在报告里写明:抽样为零不是证明(正交对即便存在也极稀疏),这正是 §4.7 区分「见证」与「证明」的原因。
延伸。①把第一段换成 GF(4) 的异或乘法表(例题一的源头),核对 4 阶满额;②把第二段降到 4 阶再跑——会命中吗?(会的:4 阶正交对海量,对比之下 6 阶的「零」更显异样。)③记录「随机 6 阶方有滤过横档的比例」——Hall–Paige 判据之外的体感数据。
前四章的账本只记一种平衡:每两个点同席几次。BIBD 的 λ 管到「对」,Steiner 三元素是 λ = 1 的极端情形,正交拉丁方是「两本账同时记」。本章把账本加厚——不再只要求每对点同席次数固定,而是要求每个三元组、每个四元组乃至每个五元组同席的次数都受控。记法极省事:把「每 t 个点恰同席 λ 次」写成 t-(v, k, λ)。取 t = 2 就是旧朋友(BIBD);t = 3、4、5 则是本章的主角。
加一重账,代价惊人。可除性的门槛随 t 一起抬高:C(k − s, t − s) 必须整除 λ · C(v − s, t − s),对一切 s < t 都成立;绝大多数参数在第一道门就被拦下,而过了门的参数也多半造不出来——这正是 Hanani、Wilson、Keevash 三代人接力一个多世纪才啃动的硬骨头。然而一旦造出来,结构往往美得令人屏息:仅仅 24 个点,竟能摆下 759 个八元块,使每个五元组恰落一块,而它的自同构群是二十四万余阶的散在单群 M24。
行李几乎齐备:第一章的两条恒等式(本章将升格为递降定理)、第二章的差集与 Singer 定理(射影空间的点线关系正是高阶设计的天然温床)、第三章的 Steiner 三元素(t = 2 的一层)、第四章的 MOLS 与仿射平面(AG 家族将直接给出 t = 3 的第一个实例)。一句口诀先记下:账越厚,门越窄,结构越奇;而对称——群——是把高维平衡造出来的不二法门。
★★ 先立定义,再谈代价。
定义(t-设计)。设 t ≤ k ≤ v 为整数,λ ≥ 1。一个 t-设计 t-(v, k, λ) 由 v 个点组成的点集 V 与一族 k 元子集(称为块)组成,使每个 t 元点组恰含于 λ 个块。块数记 b,每点所在的块数记 r。λ = 1 时称为 Steiner 系,记 S(t, k, v)。
对照旧账本:2-(v, k, λ) 就是 BIBD,一个字不差。于是整个第五章有一句顺口的话可作路标:BIBD 是 t = 2 的一层楼,往上还有三层。层数越高,约束的个数按 C(v, t) 爆炸式增长,而块还得用同样的 C(v, k) 个候选去凑,平衡的余地因此急剧收缩。
最松的 t-设计是「索性全都要」。取全部 C(v, k) 个 k 元子集作块,则每个 t 元组落在 C(v − t, k − t) 个块里——这给出一个永远存在的 t-(v, k, C(v − t, k − t)),称为完全设计。所以 t-设计从不缺「平凡的」例子;真正的悬念在于 λ 小——尤其是 λ = 1 时,块数被压到 C(v, t)/C(k, t) 这个极限值,此时每块都「一个不多、一个不少」地被需要。设计论的全部魅力都在这一端。
三个即将登场的实例先报个名,留待 §5.6–5.9 逐一验收:立方体上的十四张平面 3-(8, 4, 1)、十二点上的 132 个六元块 5-(12, 6, 1)、二十四点上的 759 个八元块 5-(24, 8, 1)。它们分别是 t = 3、4、5 三层楼上的样板房。
★★★ 第一章的乘法口诀,升格成一条定理。
定理(递降恒等式)。设 D 是 t-(v, k, λ) 设计。则对每个 0 ≤ s ≤ t,D 同时是 s-(v, k, λs) 设计,其中
λs = λ · C(v − s, t − s) ⁄ C(k − s, t − s).
特别地,块数与点数重数由两条公式给出:
b = λ · C(v, t) ⁄ C(k, t), r = λ · C(v − 1, t − 1) ⁄ C(k − 1, t − 1).
证明(一趟双数)。固定一个 s 元点组 S。数一对对象 (T, B):T 是含 S 的 t 元组,B 是含 T 的块。换个次序数同一批对象:先数 T——含 S 的 t 元组共 C(v − s, t − s) 个,每个落在 λ 个块里,共 λ · C(v − s, t − s) 对;再数 B——设含 S 的块有 λs 个,每个这样的块含 C(k − s, t − s) 个含 S 的 t 元组,共 λs · C(k − s, t − s) 对。两式相等即得公式。∎
当 s = 0 得 b,当 s = 1 得 r——第一章的两条恒等式正是 t = 2 时的特例。这条「一趟双数」的技法与第一章的换角计数是同一把刀,只是这次要连数两层。
可除性筛(第一道门)。λs 必须是整数,于是对每个 s = 0, 1, …, t − 1:
C(k − s, t − s) | λ · C(v − s, t − s).
这组整除条件廉价却致命:它能在动笔构造之前就宣判一大批参数的死刑。下表把 24 点宏构的全部账目一次算尽(第六章将看到,同样的数字会从另一种结构里再长出来):
| s | λs 的算式 | 值 | 含义 |
|---|---|---|---|
| 5 | λ | 1 | 每 5 点恰 1 块 |
| 4 | C(19, 1) ⁄ C(3, 1) | 5 | 每 4 点落 5 块 |
| 3 | C(20, 2) ⁄ C(4, 2) | 21 | 每 3 点落 21 块 |
| 2 | C(21, 3) ⁄ C(5, 3) | 77 | 每对点落 77 块 |
| 1 | C(22, 4) ⁄ C(6, 4) | 253 | 每点落 253 块 |
| 0 | C(23, 5) ⁄ C(7, 5) | 759 | 块总数 |
★★★ 定理之外,还有一个动作:把点「敲掉」,设计自己会降重。
定理(派生设计)。设 D 是 t-(v, k, λ) 设计,S 是一个 s 元点组 (s ≤ t)。令
DS = { B ∖ S : B 是块且 S ⊆ B },
则 DS 是一个 (t − s)-(v − s, k − s, λ) 设计,点集为 V ∖ S,块数 λs。称 DS 为 D 在 S 上的派生设计。
证明。任取 (t − s) 元点组 T ⊂ V ∖ S。则 T ∪ S 是 t 元组,在原设计 D 中恰含于 λ 个块;这 λ 个块都含 S,故在 DS 中恰有 λ 个块含 T。∎
这条定理是「点降重」的机器:每敲掉一个点,重数减一。24 点宏构因此长出一条完整的塔:
t = 5 : S(5, 8, 24) → t = 4 : S(4, 7, 23) → t = 3 : S(3, 6, 22).
三层的块数依次是 759、253、77(本册已用程序逐块核验):把 24 点中某个点 p 敲掉,过 p 的 253 个八元块退化成 23 点上的七元块,恰好每 4 点一次——这就是 S(4, 7, 23);再敲一点,77 个六元块在 22 点上每 3 点一次。三个设计共用同一批材料的「血缘」,一目了然。
残差:敲点之外的另一半。不过 p 的那些块不会消失,它们整体构成残差设计。24 点宏构中不过 p 的八元块共 759 − 253 = 506 个;对任一不含 p 的四元组,过它的 5 个块里恰有 1 个过 p(派生设计保证),余下 4 个都不过——故残差是 4-(23, 8, 4) 设计。核账:b = 4 · C(23,4) ⁄ C(8,4) = 4 × 8855 ⁄ 70 = 506,与「759 劈成 253 + 506」严丝合缝。 506 这个数,第六章它会以「[23,12,7] 码中重量 8 的码字数」再次出现——同一个数字,两副面孔。
★★★ 第一章的 Fisher 不等式,在高重的楼上也要有对应物。
定理(Ray-Chaudhuri–Wilson,1975)。若存在 t-(v, k, λ) 设计且 t ≥ 2s,则
b ≥ C(v, s).
取 s = 1 即得 Fisher 不等式 b ≥ v。
为什么是一条「阶梯」。Fisher 不等式说的是「块数不少于点数」;RCW 把它换成「块数不少于 s 元组的个数」。重数越高(t 越大),允许的 s 越大,右端 C(v, s) 越惊人——t = 5 时 s 可取 1、2:b ≥ C(v, 2)。24 点宏构的 b = 759 与 C(24, 2) = 276 一比:759 ≥ 276,界虽然成立却相当宽松——这也从侧面说明宏构的块数远超「必须」,它带着大量额外结构(对称),这正是下一节要探究的。
证明纲要(线性代数的秩论证)。第一步(升维):把每个块 B 对应到它的特征向量 χB ∈ ℝv,所有块向量张成一个子空间 W,维数 dim W ≤ b。第二步(造独立族):对每个 s 元组 S 造一个向量 wS——只需用「含 S 的块」的线性组合,把 wS 落在 W 内即可(此步借助 t ≥ 2s 的平衡条件)。第三步(内积非零对角化):计算这一族向量的 Gram 矩阵,用 λ 的平衡性证明它满秩,于是这 C(v, s) 个向量线性无关,dim W ≥ C(v, s)。合并两步得 b ≥ C(v, s)。∎
它是怎样的一条界。与 Fisher 不等式一并看:第一章那条「秩论证」(NN⊤ 满秩)对付的是 t = 2;RCW 用的是更细的算符——在 C(v, s) 维的「s 元对称张量」空间上做同样的满秩论证。两条界共享一个思路:把设计的平衡性翻译成矩阵的秩,再让秩去挤压块数。这是「计数—矩阵—秩」三件套第二次在本册立下大功。
★★ 把账压到最薄:每 t 点恰同席一次。
定义(Steiner 系)。S(t, k, v) 指 t-(v, k, 1) 设计:v 个点的每个 t 元组恰含于一个 k 元块。第三章的 Steiner 三元素 S(2, 3, v) 是这座塔的第一级。
门卫连站三班岗。除零重的 k | v 外,λ = 1 时每个 s 都派一条整除条件:由 λs = C(v − s, t − s) ⁄ C(k − s, t − s) 必须为整数,得
C(k − s, t − s) | C(v − s, t − s), s = 0, 1, …, t − 1.
以 S(3, 4, v) 为例:s = 0 要 4 | v(v−1)(v−2)/6,s = 1 要 3 | (v−1)(v−2)/2,联立解得 v ≡ 2, 4 (mod 6)。所以 v = 8 有戏,v = 9 直接出局——这个「9」应当眼熟:第三章的 STS(9) 存在(它是 AG(2,3)),而 S(3,4,9) 却不存在。同一批点,重数一升就出局,这正是本章要反复体会的「账厚门窄」。
| Steiner 系 | 存在条件 | 定论 |
|---|---|---|
| S(2, 3, v) 三元系 | v ≡ 1, 3 (mod 6) | Kirkman 1847(第三章) |
| S(2, 4, v) | v ≡ 1, 4 (mod 12) | Hanani 1960 |
| S(3, 4, v) 四元系 | v ≡ 2, 4 (mod 6) | Hanani 1960 |
| S(3, 6, 22) = W22 | 由 W24 两次敲点派生 | 见 §5.8–5.9 |
| S(4, 7, 23) = W23 | 由 W24 一次敲点派生 | 见 §5.3 · §5.9 |
| S(5, 8, 24) = W24 | 24 点上五重平衡 | Witt 1938(§5.9) |
大定理。无穷多个参数怎么办?1970 年代 Wilson 用「一块一块地拼」的递归法推进了部分平衡设计的存在性理论;2014 年 Keevash 给出存在性大定理:固定 t、k,凡满足上述全部可除性条件的 (v, k, t),只要 v 足够大,S(t, k, v) 必存在(甚至强得多——随机扰动法能造出丰富的解)。小 v 的稀疏例外,才是 Witt 那一批「奇珍」的立足之地。
★★ 第一个 t = 3 的实例,藏在立方体里。
取 V = 𝔽23——八个三位二进制数。称一个 4 元子集为平面,若它形如 x + U,其中 x ∈ V、U 是 2 维子空间。三维空间里 2 维子空间(方向)有多少个?
方向数 = (23 − 1)(23 − 2) ⁄ ((22 − 1)(22 − 2)) = (7 × 6) ⁄ (3 × 2) = 7.
每个方向 U 有两个平行「层」U 与 U + e(e ∉ U),故平面共 7 × 2 = 14 个。这就是仿射空间 AG(3, 2) 的全部平面。
定理。把 AG(3, 2) 的 14 个平面作块,得到一个 S(3, 4, 8):八个点中任意三点,恰落在一个平面内。
证明。任取三个互异点 x, y, z。看方向向量 a = y − x 与 b = z − x。在特征 2 的世界里,a, b 的线性相关只有两种可能:其一,某个是 0(即 y = x 或 z = x,与互异矛盾);其二,a = b,即 y = z,同样矛盾。所以 a, b 必线性无关,U = ⟨a, b⟩ 是唯一的 2 维方向,含这三点的平面 x + U 唯一。∎
三本账一次对平。块数 b = 14:14 × 4 = 56 = 8 × r,故 r = 7(每点落 7 个平面);14 × C(4,2) = 84 = C(8,2) × λ2 = 28 × 3,故 λ2 = 3(每对点落 3 个平面)。与递降恒等式对照:λ2 = C(6,1) ⁄ C(2,1) = 3,r = C(7,2) ⁄ C(3,2) = 21 ⁄ 3 = 7,b = C(8,3) ⁄ C(4,3) = 56 ⁄ 4 = 14——三条公式全部吻合(本册亦已程序逐块核验:56 个三元组各落一个平面,无一例外)。
几何注记。AG(3,2) 的七个方向(2 维子空间)恰好构成一个 Fano 平面 PG(2, 2):方向对应 Fano 的七条线;而 𝔽23 的七个 1 维子空间(即七条「棱」的方向)对应 Fano 的七个点——点线各七、互为对偶,这正是第三章 Fano 平面的自对偶性在这里的回响。换句话说,第三章的 Fano 平面就嵌在这个八点世界的「地平线」上。第四章的 AG(2, 3)(九宫表)与本章的 AG(3, 2)(八点立方)同族两代。
★★★ 十一张牌上的四重平衡。
把 §5.3 的敲点机器开动起来,我们先造出 t = 4 的第一个漂亮实例。取 11 个点,块取 5 元子集,要求每个 4 元组恰落一块。三条恒等式先算账:
b = C(11, 4) ⁄ C(5, 4) = 330 ⁄ 5 = 66, r = C(10, 3) ⁄ C(4, 3) = 120 ⁄ 4 = 30,
λ3 = C(8, 1) ⁄ C(2, 1) = 4, λ2 = C(9, 2) ⁄ C(3, 2) = 36 ⁄ 3 = 12.
定理(小 Witt 设计 W11)。存在 S(4, 5, 11):11 个点上 66 个五元块,每点落 30 块,每对点落 12 块,每三点落 4 块,每四点恰落 1 块。它的自同构群记为 M11,阶 7920 = 11 × 10 × 9 × 8,在 11 点上四重传递。
它从哪来。下一节将要造出的十二点设计 S(5, 6, 12) 里,有 66 个六元块过某个固定点 ∞。把这些块中的 ∞ 摘掉,剩下的五元块正好铺满另外 11 点,且每 4 点一次——正是 S(4, 5, 11)。也就是说 W11 是 W12 在一点上的派生设计(§5.3 的定理立刻给出存在性,连构造都省了)。
核账的乐趣。66 × 5 = 330 = 11 × 30 ✓;66 × C(5, 2) = 660 = C(11, 2) × 12 = 55 × 12 ✓;66 × C(5, 3) = 660 = C(11, 3) × 4 = 165 × 4 ✓;66 × C(5, 4) = 330 = C(11, 4) × 1 ✓。四本账一本不差。矩阵核验见 §5.8 的实验:本册已用程序把过 ∞ 的块摘出来逐块点数,66 个五元块、330 个四元组各一次,一一对上。
★★★ 十二点上的五重平衡,第一次用「群轨道」造出来。
目标:12 个点的每个 5 元组恰落一个 6 元块。先算账:b = C(12, 5) ⁄ C(6, 5) = 792 ⁄ 6 = 132,r = C(11, 4) ⁄ C(5, 4) = 66,λ4 = C(8, 1) ⁄ C(2, 1) = 4,λ3 = C(9, 2) ⁄ C(3, 2) = 12,λ2 = C(10, 3) ⁄ C(4, 3) = 30。132 这个数不出奇;出奇的是它恰是某个群的轨道大小。
定理(大 Witt 设计的构造)。把 12 个点取作射影直线 P1(𝔽11) = 𝔽11 ∪ {∞},让十一个模 11 的域与这个 ∞ 都留在同一张牌桌上。取投影特殊线性群 PSL(2, 11)(阶 660)作用其上,再取一个六元块
B0 = {∞, 0, 1, 2, 3, 5},
则 B0 在群下的轨道恰含 132 个六元块,构成 S(5, 6, 12)。轨道大小与群阶之比 660 ⁄ 132 = 5:B0 的稳定子是一个 5 阶循环群。
为什么这条路走得通。对称构造的秘诀是「把大群压到块上」:与其大海捞针地筛 C(12, 6) = 924 个六元块,不如一个 660 阶的群来帮忙——只要一个块选得好,它的整条轨道就自带极高的对称性;而对称性正是「每 5 点一次」这种苛刻条件的天然保证。132 = 660 ⁄ 5 一行算式,把一个存在性问题变成了一个轨道计算问题。本册已用程序逐块核验:132 个块、792 个五元组各落一次,无一重复、无一遗漏。
W12 的血亲。把过 ∞ 的 66 个块摘掉 ∞,得上一节的 S(4, 5, 11);把 W12 的自同构群记作 M12,阶 95040 = 12 × 11 × 10 × 9 × 8,在 12 点上五重传递。顺带记住 M12 的一个小脾气:它的 5 阶元素把 12 点分成 5 阶与 7 阶两块,这个「5 + 7」的裂法在第六章还会出现。
★★★ 本章的高峰:二十四个点上的五重平衡。
把上一节的套路推到极致:24 个点、8 元块、要求每个 5 元组恰落一块。可除性先过一遍(§5.2 的表已完整列出):b = 759、r = 253、λ2 = 77、λ3 = 21、λ4 = 5、λ5 = 1——全是整数,门卫放行。那么它存在吗?
定理(大 Witt 设计 W24)。存在 S(5, 8, 24):24 个点上 759 个八元块,五重平衡。它的自同构群是散在单群 M24。
两条入场券。本章不给出 W24 的完整构造清单(它需要一整台机器),但先指明两条通往它的路,任择其一去想象:
路一(第六章的码)。取扩展二元 Golay 码 [24, 12, 8]——一个 24 位长、4096 个字、最小距离 8 的线性纠错码。它恰好有 759 个重量为 8 的码字;把这 759 个「1 的位置集合」取出来当块,就是 S(5, 8, 24)。第六章将细讲这台机器,现在的重点是:同一个结构,可以用码的语言写出来。
路二(群的轨道)。与 §5.8 同一个思路:取一个 24 元集合、一个足够大的群、一个选得巧的八元块,它的轨道就是全部 759 个块。区别在于这里的群是 M24——它不是别人,正是设计的自同构群(§5.12)。这条「自举」的路解释了宏构的来历:设计造就群,群又回头解释设计。
血缘谱系。W24 是这一族的老祖宗:敲一个点得 S(4, 7, 23)(253 个七元块),再敲一点得 S(3, 6, 22)(77 个六元块)——这正是 §5.3 的敲点塔。而 12 点上的 S(5, 6, 12) 虽不由 W24 派生,却是同一血亲:M12 的同构扩张 M12:2 是 M24 的一个极大子群。五个 Mathieu 群加三个 Steiner 系,织成一张血脉相连的网。
★★★ 宏构的账,值得单独一页算清。
总数。b = C(24, 5) ⁄ C(8, 5) = 42504 ⁄ 56 = 759。分解一下:759 = 3 × 11 × 23——三个素数各出一次。一个 5-(24,8,1) 设计的块数,竟是三个素数之积,这种「整」是平衡的痕迹。
交叠表。两个八元块能交多少个点?因为 λ5 = 1,两块不可能交 5 点以上(否则它们含同一个五元组,违反唯一性);又由一行模 2 的账(后面第六章用码的语言解释),交叠数只能是偶数。所以只可能是 0、2、4。实际各有几何:
| 两块交叠 i 点 | 对数 | 其余 8 − i 点 |
|---|---|---|
| 0 | 11 385 | 完全错开 |
| 2 | 170 016 | 交一条「棱」 |
| 4 | 106 260 | 交一个「四元组」 |
三种对数相加:11 385 + 170 016 + 106 260 = 287 661 = C(759, 2)——账平。更有意思的是「从一块看出去」的视角:任意固定一块 O,另 758 个块中,恰有 30 个与它完全不交,448 个交 2 点,280 个交 4 点。验算:30 + 448 + 280 = 758 ✓,而 759 × 30 ⁄ 2 = 11 385 正是上表第一行——两本账再次对上。
另一个耐人寻味的数:7590。把 24 个点劈成三个八元块的分法有多少种?答案是 7590 = 10 × 759(已程序核验)——恰好是块总数的十倍。每个八元块可以以 30 种方式被补成「三块一劈」(其余 16 点分成两块),于是 759 × 30 ⁄ 3 = 7590 ✓。
★★★ 把 759 个块按「与一个六元四重组的关系」分家。
定义(sextet)。把 24 个点分成 6 个四元组(记作 T1, …, T6),称为一个 sextet,若其中任意两个四元组之并都是八元块。即对一切 i ≠ j 都有 Ti ∪ Tj 是块。
条件看起来挑剔(要 15 个并全部合格),但数量并不小:全部 sextet 恰有 1771 = 7 × 11 × 23 个,又是一个「三素数之积」(本册已程序穷搜整棵回溯树核验)。给定一个 sextet,759 个八元块按它们与 6 个四元组的交叠情况自动分成三类:
| 交叠型 | 块数 | 读法 |
|---|---|---|
| 4 + 4 | 15 | 两块四元组之并:恰 C(6,2) = 15 种选法 |
| 2 + 2 + 2 + 2 | 360 | 四个四元组各出 2 点,另两个搭不上 |
| 3 + 1 + 1 + 1 + 1 + 1 | 384 | 一个四元组出 3 点,其余五个各出 1 点 |
三行相加:15 + 360 + 384 = 759——一块不剩、一块不多。这是「解剖」一词的含义:随便挑一个 sextet 当手术台,全部 759 个块必落在这三型之一,且落点分布固定。15 是完全组合数,360 与 384 则来自群作用下的轨道大小。
为什么没有别的型。八元块与 6 个四元组交出的 6 个数相加必须是 8,而每个数不超过 4(四元组大小),且交叠受「λ5 = 1」与奇偶性的双重约束。逐格清点可行的分拆:4+4、4+2+2、4+2+1+1、3+3+2、3+1+1+1+1+1、2+2+2+2……其中一多半被平衡条件否掉,最后只剩上表三型。这种「把所有可能摆出来、再让平衡去筛」的手法,正是设计论最日常的思辨动作。
★★★ 宏构的对称有多惊人?用一个数字回答。
宏构 S(5, 8, 24) 的自同构群(保持块集不变的点置换群)记作 M24。它的阶是
|M24| = 244 823 040 = 210 × 33 × 5 × 7 × 11 × 23.
这个六素数乘积并不偶然——它恰好让 M24 在 24 个点上做到五重传递:任取两组各五点的有序点组,总有一个群元素把第一组逐点送到第二组。算一下「每五点的自由度」:24 × 23 × 22 × 21 × 20 = 5 100 480,而
|M24| ⁄ (24·23·22·21·20) = 244 823 040 ⁄ 5 100 480 = 48.
商是 48 而不是 1,说明固定任意五点后群还剩一个 48 阶的稳定子——于是群可以「搬运」任意五元组,且搬运方式的余量恰好 48 种。至于六重传递:若还要搬运第六点,商里得再出因子 19(剩 19 个点),而 244 823 040 不含素因子 19,故 M24 不六重传递。「恰好五重、不多一重」正是 Mathieu 群的招牌。同时,五重传递立刻解释了 λ5 = 1:若某个五元组落两块,群的传递性会把它搬成任意五元组落两块——与计数矛盾。
塔。固定一点,剩下的群正是 M23(阶 244 823 040 ⁄ 24 = 10 200 960),在 23 点上四重传递;再固定一点得 M22(阶 443 520),在 22 点上三重传递。这正是 §5.3 那条敲点塔的群论版本:设计降一级,群降一重,阶除以点数。而 12 点上的 M12(阶 95 040)与 M11(阶 7920)通过 M12:2 < M24 与之接上血缘(§5.9)。
| 群 | 作用点数 | 阶 | 传递重数 | 对应的设计 |
|---|---|---|---|---|
| M11 | 11 | 7 920 | 4 | S(4,5,11) |
| M12 | 12 | 95 040 | 5 | S(5,6,12) |
| M22 | 22 | 443 520 | 3 | S(3,6,22) |
| M23 | 23 | 10 200 960 | 4 | S(4,7,23) |
| M24 | 24 | 244 823 040 | 5 | S(5,8,24) |
★★ 一个小小的设计问题,如何把数学领进「例外」的深水区。
单群是「拆不开的对称块」;有限单群的分类定理是二十世纪数学最庞大的工程(1955–2004,累计论文逾万页)。分类的结论有四大族(循环群、交错群、Lie 型群)加上26 个散在单群——它们不属于任何族,各自孤悬。而这条长路的第一步,正是本章的设计。
1861 年,Émile Mathieu 在寻找高重传递置换群时发现:11 点上存在一个阶 7920 的四重传递群、12 点上存在一个阶 95040 的五重传递群。它们不是显而易见的 A11、A12 之类,而是全新的东西——这就是 M11 与 M12。1873 年他又添上三点:M22、M23、M24。此后近百年没有新散在群,直到 1965 年 Janko 找到 J1——从第二个散在群到第二个,隔了 92 年。
设计与群的这条通道是双向的。一方面,Witt 设计(本章 §5.7–5.9)的自同构群给出五个 Mathieu 群;另一方面,另一些散在群(如 Conway 群 Co1、Co2、Co3,以及最大的「魔群」Monster)也都能从特殊的格、码或设计中「长」出来。这就是为什么组合设计虽以「安排的艺术」起步,却最终被安放在群论版图的核心:它是单群的摇篮之一。
26 个散在群中,20 个与 Monster 有血缘(合称「快乐家族」),6 个孤立无援(J1、J3、J4、Ly、O′N、Ru,合称 pariah)。本章的五个 Mathieu 群是快乐家族最年长的五位成员。
★ 高重平衡不只属于纯数学。
出身是农田。BIBD 的历史提醒我们这门学问的实用底色:上世纪二十年代,Ronald Fisher 在 Rothamsted 农业试验站研究「地块差异如何不污染品种比较」,由此把区组设计系统化——第一章的 Fisher 不等式正是从「试验能不能做得出来」这个问题里长出来的。田间试验的日常语言至今仍是设计论的语言:处理(要比较的品种)、区组(条件相近的地块)、平衡(每个品种落在各种条件下次数相同)。
拉丁方与两个方向的干扰。若地里有两个方向的土壤梯度(南北与东西),单靠区组不够,得让处理在「行」「列」两个方向各自平衡——这就是第四章的拉丁方设计的农业原名。正交拉丁方(MOLS)则对应「同时控制三个方向的干扰」。
临床试验与工业参数。医学试验里,随机化与区组是控制混杂因素的标准手段:病人按病情分层(区组)、层内随机分组,正是 2-设计的思想。工业界的「正交试验」「参数设计」用的是正交阵列(§4.11)——它把多因素多水平的组合压到最少的试验次数,靠的仍是「每一对因素的各种搭配各出现一次」这条平衡要求。
信息时代的三处接口。其一,纠错码:好码的极小重量码字集常自带 t-设计结构(第六章);其二,容错存储与网络:RAID 分条、分布式存储的修复方案里,「每条数据带校验」的排布就是 BIBD;其三,软件测试:组合测试要覆盖「任意两个参数的取值组合」,正是 2-覆盖设计(covering design)的应用。
★★ 造一个设计,有哪些门路可走?
本章造出的三个设计分别来自三种不同机器。把它们与第三章、第四章的老经验合起来看,构造 t-设计共有四条主干道:
一、几何路线。有限域上的仿射空间与射影空间自带大批「整齐的子空间」。AG(3, 2) 的 14 个平面给 S(3, 4, 8)(§5.6);射影直线上取差集配上 Singer 定理给出一整族对称设计(第二章);PG(3, 2) 的 35 条线给出 S(2, 3, 15) 之外的更多结构(第三章)。几何是「免费」的设计库——空间一搭好,子空间自己就排成了块表。
二、群轨道路线。取一个作用在 v 个点上的群与一个起点集,轨道即块集;群阶除以稳定子阶就是块数(§5.8 的 660 ⁄ 5 = 132 是这条路的样板)。Witt 家族的三个设计全部这样来,散在单群也这样现身。这是通往高重平衡的唯一可靠通道。
三、码路线。取一个最小距离大的线性码,把某些重量的码字支撑集收起来当块,往往正是设计(Golay 码 → S(5,8,24))。这条路的原理(Assmus–Mattson 定理)与操作全在第六章。
四、递归与大定理路线。低层设计像积木,可以拼装出高阶设计(Wilson 的递归方法);2014 年 Keevash 用「随机扰动 + 代数修正」证明:凡过得了可除性门的参数,只要 v 足够大就必存在。这条路的结论最彻底,却也最不说明「长什么样」。
四条路的性格各异:几何与群轨道给「整齐的少数」,码给「跨界的惊喜」,递归给「无穷的多数」。
★★★ 把本章的手艺提炼成三句话。
第一句:账先算,让恒等式投票。拿到一组参数 (t, v, k, λ),第一件事不是排块表,而是套递降恒等式把 λs、r、b 全算出来,看它们是否都是整数。整数不保证存在,非整数则一定不存在——这一步省掉的功夫常常是全部功夫的九成。
第二句:造靠对称,硬凑造不出高重平衡。本章三个设计无一例外地借助了几何或群:AG(3,2) 的方向、PSL(2,11) 的轨道、Golay 码的字。理由很简单:要求「每个五点组恰一次」是对 C(24,5) = 42 504 条约束同时负责,随机试探的证据是——绝无可能。只有高度对称的结构才能同时满足成千上万条约束。
第三句:降重看血缘,一个设计是一族设计的种子。敲一个点得派生,留下不过点的块得残差;一层塔 24 → 23 → 22 就这样长出来。所以造出一个好设计,等于同时得到一串设计、一串群、一串码——投资一份,收获一箱。
三句话合起来,就是本章乃至全册的方法论骨架:先算账(可除性)、再借对称(几何与群)、最后追踪血缘(派生与残差)。第六章将把第三条路推到惊人的深度——那里,同一个 759 会以一个 24 位纠错码的重量谱身份再次登场。
★★ 把 §5.6 的构造连同块表一起摊开,逐项核账。
题。取点集 V = 𝔽23 = {0, 1, 2, …, 7}(按三位二进制读作 000, 001, …, 111)。列出全部 14 个平面,并核验:(1) 块数 14;(2) 每点落 7 块;(3) 每对点落 3 块;(4) 每三点恰落 1 块。
解:块表。7 个方向各切两层,共 14 块(下表中每行是同一方向的两个平行层):
| 方向(2 维子空间) | 第一层 | 第二层 |
|---|---|---|
| {0, 1, 2, 3} | 0123 | 4567 |
| {0, 1, 4, 5} | 0145 | 2367 |
| {0, 1, 6, 7} | 0167 | 2345 |
| {0, 2, 4, 6} | 0246 | 1357 |
| {0, 2, 5, 7} | 0257 | 1346 |
| {0, 3, 4, 7} | 0347 | 1256 |
| {0, 3, 5, 6} | 0356 | 1247 |
(1) 每方向恰好给出两个互补的四元组(一层与另一层合起来正是全部 8 点),7 个方向两两不同,故 b = 7 × 2 = 14。
(2) 点 0 出现在第一列所有 7 个块中(每方向都有一层过 0);其余各点同样各出现 7 次——例如点 5 落在 0145、0257、0356、2345、1357、1256、4567 这 7 块中。故 r = 7。核:14 × 4 = 56 = 8 × 7 ✓。
(3) 以 {0, 1} 为例,同时含 0 与 1 的块有 0123、0145、0167 三块,故 λ2 ≥ 3;由恒等式 λ2 = C(6, 1) ⁄ C(2, 1) = 3 知恰为 3。核:14 × C(4, 2) = 84 = 28 × 3 ✓。
(4) 以 {1, 4, 6} 为例:含 1、4、6 的块只能是 1346(查表)。再以 {0, 1, 3} 为例:含 0、1、3 的块只能是 0123。一般地,任三点互异 ⇒ 两方向向量线性无关 ⇒ 唯一平面(§5.6 的证明)。程序核验 56 个三元组,每个恰落 1 块。
点评。这张 14 行的表几乎没有「随机感」——每个块都是从 {0, 1, 2, 3} 出发做某种异或平移得到的。这正是几何构造最可爱的地方:块表本身就已经把结构写在脸上。
★★★ 同是 t = 5,为什么账目差这么多?
题。把 S(5, 6, 12)(W12,六元块)与 S(5, 8, 24)(W24,八元块)的两份账本并排算出:(1) 各自的 λ4、λ3、λ2、r、b;(2) 指出两份账目共用哪一台公式;(3) 解释为何 λ5 相等而其余不等。
| 账目 | W12:5-(12,6,1) | W24:5-(24,8,1) |
|---|---|---|
| λ5 | 1 | 1 |
| λ4 = C(v−4, 1) ⁄ C(k−4, 1) | C(8, 1) ⁄ C(2, 1) = 4 | C(20, 1) ⁄ C(4, 1) = 5 |
| λ3 = C(v−3, 2) ⁄ C(k−3, 2) | C(9, 2) ⁄ C(3, 2) = 12 | C(21, 2) ⁄ C(5, 2) = 21 |
| λ2 = C(v−2, 3) ⁄ C(k−2, 3) | C(10, 3) ⁄ C(4, 3) = 30 | C(22, 3) ⁄ C(6, 3) = 77 |
| r = C(v−1, 4) ⁄ C(k−1, 4) | C(11, 4) ⁄ C(5, 4) = 66 | C(23, 4) ⁄ C(7, 4) = 253 |
| b = C(v, 5) ⁄ C(k, 5) | C(12, 5) ⁄ C(6, 5) = 132 | C(24, 5) ⁄ C(8, 5) = 759 |
解 (2):同一台公式。两份账目全部来自递降恒等式 λs = λ · C(v − s, t − s) ⁄ C(k − s, t − s),只是代入的 (v, k) 不同((12, 6) 与 (24, 8))。所以「从六元块数八元块」并不需要新公式——同一台机器,换一组料,出另一批账。
解 (3):为什么只有 λ5 相同。λ5 是题目直接规定的(每 5 点恰一次),自然相等;而 λs 对 s < 5 是把 λ5 往上「摊」的结果——分子的 C(v−s, 5−s) 与分母的 C(k−s, 5−s) 都依赖尺寸。一个直观的读法:块越大、点越多,同一个五元组的「邻居」越多,被摊到每个四元组上的次数也就越多。故 λ4 由 4 升到 5,λ3 由 12 升到 21,λ2 由 30 升到 77,b 由 132 升到 759。
看点。把最后一行的两个数相除:759 ⁄ 132 = 23 ⁄ 4——一个整数之比,却正好等于「点数的增长摊在四个点上」的效果。这类比值往往能揭示隐藏在参数背后的结构关系,是检验自己是否真的算懂了的快捷方式。
★★ 本组动用 §5.1–5.5,重点是把递降恒等式练成条件反射。
习题 5-1(门卫三关)。判定 3-(10, 4, 1) 能否通过可除性筛:算出 b、r、λ2,逐项验证是否为整数。再看 §5.5 的表,说出它的名字。
习题 5-2(小 Witt 设计的账)。对 4-(11, 5, 1) 算出 b、r、λ2、λ3,并与 §5.7 的结论对照。
习题 5-3(过门不等于存在)。对 3-(12, 6, 2) 算 b、r、λ2。若全为整数,说明它过了门卫;再想想「过门」与「存在」之间还差什么。
习题 5-4(递降恒等式的证明)。写出「一趟双数」的完整证明,并指出哪一步用到了「每个 t 元组恰落 λ 块」这条唯一的前提。
习题 5-5(完全设计)。证明:取全部 C(v, k) 个 k 元子集为块,得到 t-(v, k, C(v − t, k − t)) 设计,并解释它是「最厚」的 t-设计。
习题 5-6(用界去量宏构)。用 RCW 不等式(§5.4)验证 S(5, 6, 12):b = 132 ≥ C(12, 2) = 66 ✓;再验证 S(5, 8, 24):759 ≥ C(24, 2) = 276 ✓。说明为什么 s 不能取 3。
提示与答案要点。5-1:b = C(10,3) ⁄ 4 = 30,r = C(9,2) ⁄ 3 = 12,λ2 = C(8,1) ⁄ 2 = 4,全整数;它是 Steiner 四元系 S(3,4,10)(即 SQS(10),因 10 ≡ 4 (mod 6))。5-2:b = 66,r = 30,λ2 = 12,λ3 = 4,与 §5.7 完全一致。5-3:b = 2 × 220 ⁄ 20 = 22,r = 2 × 55 ⁄ 10 = 11,λ2 = 2 × 10 ⁄ 4 = 5,全整数——过门;但过门只是必要条件,存在性须另证(本章的宏构、下一章的码、或 Keevash 大定理)。5-4:关键是「数 (t 元组 T, 块 B) 且 S ⊆ T ⊆ B 的对数」,前提用在上式的 λ 与下式的 λs 两步。5-5:固定 t 元组,含它的 k 元子集有 C(v−t, k−t) 个,故 λ 取此值;「最厚」指 λ 已达上界(再多就得让某个 t 元组落进重复的块,而那不可能)。5-6:s = 3 需要 t ≥ 6,而两个设计的 t 都是 5,故不许。
★★★ 本组动用 §5.3 与 §5.6–5.12,重点是「敲点」这台机器的操作。
习题 5-7(Fano 敲点)。取 2-(7, 3, 1)(Fano 平面),敲掉一个点 p,写出派生设计的参数与块表,并核验它确是 1-(6, 2, 1)。
习题 5-8(W24 → W23)。解释为什么敲一点后 759 个八元块只剩 253 个七元块,并用 r = 253 与「过 p 的块数」之间的关系说明。
习题 5-9(残差的账)。证明不过 p 的 506 个八元块构成 4-(23, 8, 4),并用恒等式算出它的 b、r、λ3、λ2。
习题 5-10(W11 的来历)。W12 过点 ∞ 的六元块有 66 个。删去 ∞ 后得到 11 点上的 66 个五元块。核验它们构成 S(4, 5, 11),并说明这与 §5.7 的「W11 是 W12 的派生设计」是同一件事。
习题 5-11(两连敲)。从 S(4, 5, 11) 再敲一点,得到什么?写出参数并核验三元组账(提示:10 点上每 3 点恰一次)。
习题 5-12(交叠数的纪律)。说明为什么 W24 的两个八元块交叠数不能是 5、6、7、8;再解释为什么也不能是奇数(提示:可从「码是自对偶的」或从「交叠型必须配平」两个角度任选其一论证)。
提示与答案要点。5-7:1-(6, 2, 1):b = r = 3(过 p 的三条线各去掉 p),6 点各落 1 块;块表如 {1,3}, {2,5}, {4,6}(视 Fano 标号而定)。5-8:过 p 的块数正是 r = 253(每点落 253 块),每个过 p 的块去掉 p 得一个七元块;故七元块共 253 个,且恰是 S(4, 7, 23)。5-9:对不含 p 的四元组 T,过 T 的 5 个块中恰 1 个过 p(派生性),余 4 个不过,故 λ4 = 4;b = 4 × C(23,4) ⁄ C(8,4) = 506,r = 4 × C(22,3) ⁄ C(7,3) = 176,λ3 = 4 × 20 ⁄ 5 = 16,λ2 = 4 × 210 ⁄ 15 = 56。5-10:过 ∞ 的 66 个块去掉 ∞ 得 66 个五元块;任 4 点恰在一个过 ∞ 的块中 ⇒ 恰落一块。5-11:得 S(3, 4, 10)(SQS(10)):30 个四元块,10 点上每 3 点恰一次,核 30 × C(4,3) = 120 = C(10,3) ✓。5-12:交 5 点即共含一个五元组 ⇒ 违反 λ5 = 1;故 ≤ 4,而 5、6、7、8 均不可能。奇数不可能:自对偶码的两字交集大小必为偶数(第六章),等价地由 λ 的整除配平也能挤出矛盾。
本章的概念不是并排的清单,而是一座有血缘的塔。下图标出「谁派生谁、谁解释谁」:纵向是敲点(重数减一),横向是同一重数上的不同尺寸。
三条记忆线索。其一,公式只有一台——§5.2 的递降恒等式生出全套 λ;其二,塔只有一座——24 → 23 → 22 靠敲点相连;其三,群跟着设计走——设计降一级、群降一重、阶除以点数。抓住这三条,本章的十几个数字就不会散。
★★ 框架五件套,一条不落。
① 定义。t-(v, k, λ):每 t 个点恰落 λ 个块。t = 2 退回 BIBD;λ = 1 称为 Steiner 系 S(t, k, v)。完全设计(取全部 k 元子集)永远存在,λ 取到最大 C(v−t, k−t);真正的难题全在小 λ。
② 递降恒等式。λs = λ C(v−s, t−s) ⁄ C(k−s, t−s),s = 0, 1, …, t。一台公式生出 b、r 与全部 λs。证明=一趟双数。
③ 可除性筛。每个 λs 必须是整数,即 C(k−s, t−s) | λ C(v−s, t−s)。廉价、致命、必查。例:S(3,4,v) 当且仅当 v ≡ 2, 4 (mod 6) 有戏。
④ 派生与残差。敲掉 s 个点(块只保留含它们的)得 (t−s)-(v−s, k−s, λ) 设计;不过这 s 点的块则构成残差。W24 一敲得 S(4,7,23),残下 4-(23,8,4)。
⑤ 界。Fisher 不等式(第一章):b ≥ v;RCW(§5.4):t ≥ 2s 时 b ≥ C(v, s),取 s = 1 即得前者。两界同源:把平衡写成秩。
与旧章的接口。第一章的恒等式在这里升格为定理;第二章的差集与射影空间提供了几何构造的原料;第三章的三元素是塔的第一级;第四章的仿射平面家族直接给出 AG(3, 2)。第五章不是「另一章」,而是前四章的自然上一层。
★★★ 一页装下本章的全部硬数字。
| 设计 | 参数 | b | r | λ2 | λ3 | λ4 | 自同构群 |
|---|---|---|---|---|---|---|---|
| S(3,4,8) | AG(3,2) | 14 | 7 | 3 | — | — | AGL(3,2)(阶 1344) |
| S(4,5,11) = W11 | 敲 W12 一点 | 66 | 30 | 12 | 4 | 1 | M11(7920) |
| S(5,6,12) = W12 | PSL(2,11) 轨道 | 132 | 66 | 30 | 12 | 4 | M12(95 040) |
| S(3,6,22) = W22 | 敲 W24 两点 | 77 | 21 | 5 | 1 | — | M22(443 520) |
| S(4,7,23) = W23 | 敲 W24 一点 | 253 | 77 | 21 | 5 | 1 | M23(10 200 960) |
| S(5,8,24) = W24 | Golay 码 / 群轨道 | 759 | 253 | 77 | 21 | 5 | M24(244 823 040) |
必背的六个数字。759(块数)、253(每点块数)、77(每对点)、21(每三点)、5(每四点)、1(每五点)。它们由一台公式串成一条链,改一个全动。
两个结构性数字。1771 = 7 × 11 × 23:sextet 总数;506 = 759 − 253:残差 4-(23,8,4) 的块数,也是第六章 [23,12,7] 码中重量 8 的码字数。
一张交叠表。759 块两两相交,落在 0、2、4 点的对数分别是 11 385、170 016、106 260,合计 C(759,2) = 287 661。任取一块,另有 30 块与它不交、448 块交两点、280 块交四点。而 24 点劈成三个八元块共 7590 种。
三型解剖。相对任一 sextet,759 块分成 4+4 型 15 个、2+2+2+2 型 360 个、3+1+1+1+1+1 型 384 个(15 + 360 + 384 = 759)。
思想卡 · 五
一个看牌游戏,怎么长出了宇宙的一角?十九世纪的 Mathieu 只是在找「高重传递的置换群」——一个纯粹关于对称的技术问题。他找到的那个 24 点上的群,百年来无人能说清它「为什么」存在;直到人们发现,它就是本章 759 个八元块的自同构群。原来群不是凭空冒出来的,它是一个安排的自画像。
第一层体会:例外不是意外,是结构的指纹。单群分类把它们分成四大族与 26 个散在群——后者看似「剩下的零头」,却是全部分类里最深的部分。它们稀少,是因为承载它们的结构太苛刻:759 个块必须同时满足 42 504 条五点约束,稍有不对称就全盘崩塌。苛刻到极点,解就屈指可数;而屈指可数的解,往往个个不可替代。
第二层体会:平衡越苛刻,结构越稀少,也越不可替代。从 t = 2 的「到处都是」到 t = 5 的「只有几个」,本章亲历了这条收敛曲线。BIBD 有无穷多,STS 有无穷多,S(4,5,11) 却只有一个(同构意义下),S(5,8,24) 也只有一类。数量上的稀少,换来的是结构上的丰富——一个 W24 就够支撑一整本书。
第三层体会:同一个数,是同一结构的不同投影。759 先是块数,又是重量 8 的码字数;253 先是每点块数,又是重量 7 的码字数;1771 既是 sextet 数,又会在别处以「三元组 × λ3」的形式出现。当两个看似无关的领域用同一批数字说话,那通常不是巧合,而是同一个对象在两种语言里的名字——这正是第六章要展开的故事。
留给下册的问句。若一个安排的自同构群如此巨大,那么这个安排本身是不是「被群逼出来」的?换句话说:先有设计还是先有群?这个问题的两种答案,恰好对应了构造设计的两种路——几何与轨道。而它们背后的统一,仍在现代数学的探索之中。
★★★★ 亲手把 S(3, 6, 22) 从 24 点宏构里「敲」出来,并逐条核账。
目标。构造出 22 点上 77 个六元块构成的 S(3, 6, 22)(即 W22),并验证:块数 77;每个三元组恰落 1 块(共 1540 个三元组);每点落 21 块;每对点落 5 块。四本账必须同时对上。
路线(三步)。
第一步:造出 24 点宏构的 759 个八元块。用扩展二元 Golay 码。最省事的入口是 QR 码:在 𝔽2[x] 中取 23 次多项式 x23 − 1 的一个 11 次因式
g(x) = x11 + x9 + x7 + x6 + x5 + x + 1,
由 {(m(x) g(x)) mod (x23 − 1)}(deg m < 12)得到 4096 个 23 位码字,再各补一位总校验位(使全码字重量为偶数),得 [24, 12, 8] 码。取其中重量为 8 的码字,其「1 的位置集合」即 759 个八元块。这一步本身就是一道好题:先用重量分布自检——重量 8 应有 759 个,重量 12 应有 2576 个。
第二步:敲两个点。在 24 点上任取两个固定点 p、q。取出所有同时含 p 与 q 的块,删去这两个点,剩下 22 点上的六元块。按 §5.3 的定理,应得 S(3, 6, 22)。
第三步:核四本账。块数 77;三元组遍历(1540 个三元组各落 1 块);每点 21、每对点 5。若其中任一不符,回头检查第一步的重量分布——错误多半藏在码的构造里。
为什么值得亲手做。这道题把本章的三件核心工具(码→设计、敲点、参数恒等式)串成一条链;做完之后,759/253/77 这组数字将不再是「书上说的」,而是亲手算出来的。
★★★ 用二十行程序把 §5.6 的全部断言跑一遍。
下面这段程序在 𝔽23 上枚举全部平面,并逐项核验 S(3, 4, 8) 的四条性质。它同时也是「几何构造」这条路的自动化版本——把「子空间 + 平移」翻译成代码,设计自己就出现了。
from itertools import combinations
V = range(8)
subs = {frozenset((0, a, b, a ^ b)) for a in range(1, 8) for b in range(a + 1, 8)}
planes = sorted({tuple(sorted(x ^ c for x in U)) for U in subs for c in V})
print('方向数', len(subs), '| 平面数', len(planes))
for P in planes:
print(' ', P)
cnt = {}
for T in combinations(V, 3):
n = sum(1 for P in planes if set(T) <= set(P))
cnt[n] = cnt.get(n, 0) + 1
print('三元组落块数分布', cnt)
print('每点块数', sorted({sum(1 for P in planes if p in P) for p in V}))
print('每对点块数', sorted({sum(1 for P in planes if set(T) <= set(P)) for T in combinations(V, 2)}))
inter = {}
for A, B in combinations(planes, 2):
k = len(set(A) & set(B))
inter[k] = inter.get(k, 0) + 1
print('两平面交叠数分布', dict(sorted(inter.items())))
预期输出(本册运行结果)。方向数 7、平面数 14;14 个平面按字典序为
0123, 0145, 0167, 0246, 0257, 0347, 0356, 1247, 1256, 1346, 1357, 2345, 2367, 4567;
三元组落块数分布为 {1: 56};每点块数 [7];每对点块数 [3]。
再加一步:块交叠。把上面 14 个平面两两取交,统计交叠点数:结果应为 {0: 7, 2: 84},合计 91 = C(14, 2)。也就是说,两个平面要么完全平行(不交),要么恰好交一条「棱」(两个点)——这与 §5.10 宏构交叠表的「0/2/4 纪律」遥相呼应,是小几何里的同一条规律。
进阶(可选)。把 §5.10 的交叠表也用程序复现:造出 759 个八元块后,遍历 C(759,2) = 287 661 对,统计交 0、2、4 点的对数,应得 11 385、170 016、106 260。做完这一步,手边就有了一台可以复用的「宏构核账机」,本章挑战页的 77 张六元块表也能顺手核出。
★ 在 λ 与 t 出现之前,人类早已在实践「均匀」。
井田:九宫格的均分。《孟子·滕文公上》记:「方里而井,井九百亩,其中为公田,八家皆私百亩,同养公田。」把一里见方的土地划成九块,中央一块为公田,其余八块按户均分——这是一幅再清晰不过的「把总量均匀摊到每个单位」的图景:八户各得一份,谁也不多、谁也不少。有趣的是,这个九宫格的骨架在本书里出现了两次:作为 AG(2, 3)(第四章)与作为 S(2, 3, 9) 的载体(第三章)。古老的行政图形与设计论的点线结构,是同一张网格的两种说法。
均输:按比例摊派的算法。《九章算术》第一章名「方田」,讲田亩形状、面积与分数的均分;第六章名「均输」,专讲按路程远近、人口多寡折算赋税与运输任务——把「公平」写成可计算的比率。均输要解决的核心问题与我们本章的十分相似:在若干约束条件下,把若干份量分配下去,使各项指标彼此平衡。
洛书:八条线同和。洛书(九宫图)是一个三阶幻方:把一到九排成方阵,使每一行、每一列、两条对角线的和都是十五。八条线、同一个和——这不正是「多重平衡」最朴素的样本吗?后世把九宫图用于算盘定位、历法推算与建筑布局,而它的数学本质是:在一张有限网格上,同时满足八条线性约束。
轮值:让时间也均匀。古文献中还有「三年一换土易居」的轮耕记载(菑、新、畬三田轮换),以及更鼓、值更、驿传轮值等制度。它们要达成的效果是:无论从谁的角度看,各项差事与各项好处在若干轮次后都恰好轮到自己一次——这正是循环设计(第三章的循环 STS、第四章的循环拉丁方)所追求的性质。
一句结语。均匀不是数学家的发明,而是任何共同体都必须解决的现实问题:分地、摊税、派役、轮值。数学所做的,只是把「公平」这个模糊的诉求,翻译成 λ、t 与「每 t 个点恰同席 λ 次」这样可以被检验的语句。一部设计论,可以说是「均分」这门古老手艺的现代注脚。
★★ 本章全部公式与数字,一页备查。
| 条目 | 公式 / 结论 |
|---|---|
| t-设计 | 每 t 个点恰落 λ 个块;记 t-(v, k, λ) |
| Steiner 系 | λ = 1,记 S(t, k, v) |
| 完全设计 | 取全部 k 元子集 ⇒ λ = C(v − t, k − t) |
| 递降恒等式 | λs = λ · C(v−s, t−s) ⁄ C(k−s, t−s) |
| 块数与点数重数 | b = λ C(v, t) ⁄ C(k, t),r = λ C(v−1, t−1) ⁄ C(k−1, t−1) |
| 可除性筛 | C(k−s, t−s) | λ C(v−s, t−s),s < t |
| 派生设计 | 敲掉 s 点 ⇒ (t−s)-(v−s, k−s, λ),块数 λs |
| RCW 不等式 | t ≥ 2s ⇒ b ≥ C(v, s);s = 1 即 Fisher b ≥ v |
| SQS 存在性 | S(3, 4, v) 存在 ⇔ v ≡ 2, 4 (mod 6)(Hanani 1960) |
| 存在性大定理 | 可除性条件 + v 充分大 ⇒ 存在(Keevash 2014) |
| 设计 | b | r | λ2 | λ3 | λ4 | 群 |
|---|---|---|---|---|---|---|
| S(3,4,8) | 14 | 7 | 3 | — | — | AGL(3,2) 1344 |
| S(4,5,11) | 66 | 30 | 12 | 4 | 1 | M11 7920 |
| S(5,6,12) | 132 | 66 | 30 | 12 | 4 | M12 95 040 |
| S(3,6,22) | 77 | 21 | 5 | 1 | — | M22 443 520 |
| S(4,7,23) | 253 | 77 | 21 | 5 | 1 | M23 10 200 960 |
| S(5,8,24) | 759 | 253 | 77 | 21 | 5 | M24 244 823 040 |
W24 专用数字。交叠对数 0/2/4 → 11 385 / 170 016 / 106 260(合计 C(759,2) = 287 661);固定一块,其余 758 块中 30 不交、448 交 2 点、280 交 4 点;sextet 共 1771 = 7 × 11 × 23;相对一个 sextet 的三型块数 15 / 360 / 384;残差 4-(23,8,4) 有 506 块;24 点劈成三块共 7590 种。
口诀。账先算(可除性)→ 造靠对称(几何 · 群 · 码)→ 降重看血缘(派生 · 残差 · 塔)。
★★ 本章结束时,有一件「奇事」必须交代清楚。
§5.9 与 §5.10 里,759 是八元块的块数,253 是每点块数,506 是残差块数。这三个数在下一章会以完全不同的身份再次出现:它们是 扩展二元 Golay 码的重量谱——重量 8 的码字 759 个、重量 16 的码字 759 个、重量 12 的码字 2576 个,而 23 位版本的 Golay 码则有重量 7 的码字 253 个、重量 8 的码字 506 个。同一批数字,一台设计一台码,各自数出来。
这不是巧合。码与设计共用一个代数骨架:把每个码字的「1 的位置」看成一个子集,两个码字的「交叠大小」正是它们的内积的某种折算;而「所有重量为 w 的码字构成一个 t-设计」这件事,可以被一条一般性的定理(Assmus–Mattson)捕获。于是本章的 759 与下一章的 759 是同一个对象的两个投影——这也是设计论最迷人的地方:在一个领域里数出来的数,会在另一个领域里等着。
下一章路线。先从纠错码的本意讲起(码字、距离、纠错能力),再以 Hamming (7, 4) 码与 Fano 平面的逐行互译作为第一个双向通道;随后用 Golay 码把本章的 W24 重新造一遍,并让 Mathieu 群 M24 以「码的自同构群」的身份再登场;最后给出「码—设计—群」的三语词典与散在单群的全景图。
行李清单。行囊里装好三样东西:第一章的关联矩阵(码的生成矩阵是它的近亲)、本章的 S(5,8,24) 与交叠纪律(0/2/4 的奇偶性将在码的世界里得到解释)、以及 §5.12 的 Mathieu 塔(群将在两条通道上同时现身)。合流的时刻到了。
第五章末尾留下一个悬念:759、「253」、「506」这些数字,既是一台设计的账目,又将在另一台结构里出现。本章就来兑现这个承诺。新的主角是纠错码——为了在噪声信道上可靠传送信息,人们把原始消息冗余地编成较长的码字,使接收方即使收到若干错误位,仍能准确恢复原消息。
码与设计表面上毫不相干:一个谈「怎样把 0 与 1 编得抗噪声」,一个谈「怎样把点排进块」。但两者共享同一个骨架——「位置集合」的族。一个码字是若干位置的集合(1 的位置),一台设计的块也是若干点的集合;于是「每个五元组恰落一块」与「某些码字的支撑恰好平衡」可以是同一句话。这条通道一旦打通,两边的东西就能互借:用好的码造出好的设计,用设计的对称解释码的自同构群。
本章也是全书的收束。第一天我们从十五个女生的散步问题出发,中间经过五参数、差集、Steiner 系、正交拉丁方、t-设计,本章将把所有线索拧成一股:Fano 平面 ↔ Hamming 码、W24 ↔ Golay 码、Mathieu 群 ↔ 两者的自同构群。走完这一章,便多出一副「三语词典」——同一个结构,可以在码、设计、群三种语言里自由转述。
★★ 先讲清「码」要解决的问题。
设想把消息编成一串 0 与 1 通过噪声信道。噪声会随机翻转若干位;若不加保护,一位翻转就可能改变整条消息。解法是冗余:把 k 位消息编成 n 位(n > k)码字送出,让接收方有「多余」的信息去识别并纠正错误。
定义(码与距离)。长度为 n 的二元码是 𝔽2n 的一个子集,元素称码字。两个码字 x、y 的 Hamming 距离 d(x, y) 定义为两者相异位置的个数;码的最小距离 d 是所有相异码字距离的最小值。称参数为 [n, k, d]。
距离与纠错。若把码字看成空间中的点,那么「能纠正 t 位错」等价于「以每个码字为心、半径 t 的球互不重叠」,即
d ≥ 2t + 1.
证明只需三角不等式:收到的词 r 若与真实码字 c 的距离 ≤ t,则它与任何其他码字的距离 ≥ d − t > t,故「就近译码」唯一。于是纠错问题化归为几何问题:在 𝔽2n 里放一批点,使它们彼此相距足够远。
与设计的接口在哪里?关键在「码字即子集」:一个码字 x = (x1, …, xn) 可以读成「哪些位置是 1」的一个子集,称为它的支撑 supp(x);重量就是支撑的大小。于是一台码不过是 {1, …, n} 上的一族子集——与一台设计的块集同型。差别只在:设计关心「每 t 个点落几块」,码关心「两两距离够不够远」。当这两个要求同时被一个结构满足时,桥梁就出现了。
本章的三个主角分别是:Hamming 码(与 Fano 平面互为镜像)、Golay 码(与 W24 互为镜像)、以及它们的自同构群(Mathieu 群)。
★★★ 给码加上代数结构,一切都能用矩阵算。
定义(线性码)。若码 C 是 𝔽2n 的子空间,称 C 为线性码;此时 |C| = 2k,k 为维数,记 [n, k, d]。生成矩阵 G 是一个 k × n 矩阵,其行是 C 的一组基:码字 c = m G(m 为 k 位消息)。校验矩阵 H 是 (n − k) × n 矩阵,满足
c ∈ C ⟺ H c⊤ = 0, 即 G H⊤ = 0.
线性带来三件便利。其一,距离=重量:由 d(x, y) = wt(x − y) 且 x − y ∈ C,最小距离等于最小非零重量,无需两两比较。其二,校验只需一个矩阵乘:收到的词 r 对应伴随式 s = H r⊤,s = 0 即无错;s ≠ 0 时,s 往往直接指出错误位置(下一节见)。其三,重量计数器 Ai 取代了穷举:Ai 是重量为 i 的码字个数,整台码的「体检报告」就是这条数列。
与设计的第一条血缘。回忆第一章的关联矩阵 N:它的行是各块的特征向量,列是各点。现在把 N 的行读成码字——一台 BIBD 的关联矩阵,天然就是「一族等重量码字」的生成矩阵;而「每对点恰落 λ 块」的条件,正是对列内积的约束。反过来,若一台线性码的某组码字重量相同、且两两内积恒定,则它们的支撑集构成一台设计。这条双向读法贯穿本章:矩阵 N 在第一章负责计数,在本章负责编码。
★★★ 最小的漂亮码,一物三面。
造法极简单。取校验矩阵 H,它的 7 列依次是 1 到 7 的二进制写法(全部非零三位向量):
1 = (1,0,0), 2 = (0,1,0), 3 = (1,1,0), 4 = (0,0,1), 5 = (1,0,1), 6 = (0,1,1), 7 = (1,1,1).
把 1、2、4 三列(即单位向量)留在右边,可把校验矩阵化成标准形 H = [A | I3],从而读出生成矩阵 G = [I4 | A⊤]。得到的码记作 [7, 4, 3]:7 位长、4 位消息、最小距离 3——能纠正 1 位错误。
第一张脸:完美 1-纠错码。16 个码字的重量分布是 A0 = 1、A3 = 7、A4 = 7、A7 = 1(本册已程序枚举 128 个长度为 7 的向量核验)。半径 1 的球含 1 + 7 = 8 个向量,而 16 × 8 = 128 = 27——整空间被 16 个球恰好铺满,一个点都不剩。这种「无浪费」的码称完美码。
第二张脸:H 的 7 列就是 PG(2, 2) 的 7 个点。全部非零三位向量正是 Fano 平面的点集(§5.6 已见其逆:这些向量的 1 维子空间构成 Fano 的七个点)。所以「设计 Hamming 码」这个动作,按字面意义就是「把 Fano 面的七个点写成竖排」。
第三张脸:对偶码给出 Fano 的七条线。取 H 的行张成的码(即 C 的对偶),它是 [7, 3, 4] 单纯形码,7 个非零字全部重量 4。对每个这样的字,取它为零的 3 个位置——这些 3 元组恰好是 Fano 平面的七条线(下一节给出完整线表与核验)。于是同一台 Hamming 码,从三个角度看是三样东西:一台完美码、一张 Fano 点表、一份 Fano 线表。
★★★ 把上一节第三张脸逐行验算。
把 7 个位置依次编号 1,…,7(第 j 位置的编号就是 H 第 j 列的二进制值)。对偶码的 7 个非零字各取「为零」的 3 个位置,得到七条线:
{1,2,3},{1,4,5},{1,6,7},{2,4,6},{2,5,7},{3,4,7},{3,5,6}.
定理(互译)。这七条线构成 Steiner 三元系 S(2, 3, 7),即 Fano 平面:7 个点、7 条线,每线 3 点,每点落 3 线,每对点恰在一条线上(本册已程序核验:21 对点各落 1 线)。
逐行验算。任取两点,比如 1 与 6:只在 {1,6,7} 中同现;1 与 4:只在 {1,4,5} 中同现;2 与 5:只在 {2,5,7} 中同现。七条线两两恰好交于一点(21 对线各交一点),这是 Fano 平面自对偶性的体现。
与第五章的接口。细看这七条线,正是 §5.6 的表格里那七个「方向」去掉 0 之后剩下的三元组:{0,1,2,3} 去掉 0 得 {1,2,3},{0,1,4,5} 去掉 0 得 {1,4,5}……而它们的补(每个四点组)正是 §5.6 表格中每个方向的「第二层」。所以:AG(3,2) 的十四个平面,一半(过原点的七个方向)给出 Fano 的七条线,另一半(不过原点的七个平行层)给出这七条线的补。一台 Hamming 码,就这样同时握着立方体几何与 Fano 平面的两条线头。
| 对象 | 码的语言 | 设计的语言 |
|---|---|---|
| 7 个位置 | 码位(坐标) | Fano 的 7 个点 |
| H 的 7 列 | 校验向量 | PG(2,2) 的 7 个点 |
| 对偶码非零字 | 重量 4 的码字 | 线(其零集为 3 点) |
| Hamming 码重量 3 字 | 7 个最小重量码字 | Fano 的 7 条线 |
| Hamming 码重量 4 字 | 7 个码字 | 7 条线的补(4 点) |
| 伴随式 s ≠ 0 | 指认错误位置 | 该列所属的点 |
★★★ 「无浪费」是一种可遇不可求的奢侈。
上一节的账值得放大看:半径 t 的球含 1 + n + C(n, 2) + … + C(n, t) 个词。若码有 M 个码字,且球两两不交,必有
M × (球体积) ≤ 2n (Hamming 界).
等号成立时称为完美码:球的并恰好铺满整个空间,一个位置都不浪费。
定理(完美码的清单)。二元完美码只有三类:平凡的重复码,Hamming 码(t = 1),以及 Golay 码(t = 3)。一般 q 元情形下,完美码也只有 Hamming 码、Golay 码(q = 3 时的 [11, 6, 5])与平凡情形——这是 Tietäväinen 与 van Lint 的共同结论。
一整个家族的 Hamming 码。§6.3 的造法对任意 r 都成立:取 H 的列为 𝔽2r 的全部非零零向量,得
[n, k, d] = [2r − 1, 2r − 1 − r, 3], 球体积 1 + n = 2r,2k × 2r = 2n ✓.
r = 3 时正是 [7,4,3]。有意思的是,这些 Hamming 码的对偶(单纯形码)恰好对应射影空间 PG(r − 1, 2) 的点:每一阶 Hamming 码,都把一张小射影几何「编码」了一遍。
完美性为何稀缺?因为 Hamming 界常留有余量,而要把余量恰好抹平,需要空间尺寸与球体积之间存在精确的整除关系——这是「整」的苛刻要求,与 t-设计的可除性筛如出一辙。完美码的稀少与 Witt 设计的稀少,是同一种稀少的两种表现。
★★★ 通道的另一半:怎么从码里「长出」设计?
给定线性码 C,对每个重量 w 收集全部重量为 w 的码字,把它们的支撑集取出,记作
Dw = { supp(x) : x ∈ C, wt(x) = w }.
于是 Dw 是 {1, …, n} 上的一族 w 元子集——一台候选设计。问题变成:它是不是 t-设计?这取决于码的对称性,而衡量对称性的现成工具,正是重量计数器 Ai。
定义(重量计数器与重量枚举多项式)。Ai 为重量 i 的码字个数;WC(x) = Σi Ai xi 称重量枚举多项式。它是由 n + 1 个数字组成的「码的体检报告」。
为什么计数器能管设计?直觉的说明。「Dw 是 t-设计」意即「每个 t 元位置组落进的支撑数相同」;而「落进几个」是一个关于码字的计数。若码足够对称(例如自对偶且重量计数器有特定形状),这种计数就被迫与具体位置无关——于是设计自动成立。下一节的 Assmus–Mattson 定理把这条直觉变成精确的判据。
先看两个现成的例子。§6.3 的 [7, 4, 3] Hamming 码:D3 是 7 个三元组,程序核验恰为 Fano 的七条线(t = 2 的设计);它的对偶 [7, 3, 4] 单纯形码的 D4 是 7 个四元组,即那七条线的补。而 §6.9 将看到:Golay 码的 D8 就是第五章的 759 个八元块。「码 → 设计」这条路走得通,而且走得出 Witt 设计。
| 码 | 重量 w | 支撑集数 | 得到的设计 |
|---|---|---|---|
| [7,4,3] Hamming | 3 | 7 | S(2,3,7) = Fano(线) |
| [7,3,4] 单纯形(对偶) | 4 | 7 | 线的补(4 点) |
| [23,12,7] Golay | 7 | 253 | S(4,7,23) = W23 |
| [23,12,7] Golay | 8 | 506 | 5-(23,8,1) |
| [24,12,8] 扩展 Golay | 8 | 759 | S(5,8,24) = W24 |
| [24,12,8] 扩展 Golay | 12 | 2576 | 5-(24,12,48)(每 5 元组落 48 块) |
| [24,12,8] 扩展 Golay | 16 | 759 | 5-(24,16,78)(八元块的补) |
上表后四行是本章后半的主角,其中每一行的数字都已在第五章或本章的核账中验证过。
★★★ 反方向的通道:把设计的关联矩阵当作生成矩阵。
设 D 是一台点-块结构(比如一台设计),N 是它的关联矩阵:行对应块、列对应点,NBi = 1 表示点 i 在块 B 中。把这些行放在 𝔽2 上张成一个子空间,就得到一台码,称为 D 的关联码(或称设计码):
C(D) = ⟨ 各块的特征向量 ⟩𝔽2.
定理(Fano 与 Hamming 的五译)。把 Fano 平面的 7 个点记为 1,…,7、七条线取 §6.4 的线表,则其关联矩阵(7 × 7)在 𝔽2 上的行空间恰好是 [7, 4, 3] Hamming 码。换言之:Hamming 码 = Fano 平面的关联码。
证明(一步核账)。七条线的特征向量共 7 个向量,在 𝔽2 上张成的空间含 24 = 16 个向量——因为七条线中任三条线性无关而第四条可由它们表出(每点落三线,把「过某个点的三条线」相加即得该点的单位向量相关的线性关系)。用 §6.3 的 H 直接计算可得:这 16 个向量与 Hamming 码的 16 个码字完全相同(本册已程序核对两个集合相等)。∎
这条通道为什么如此好用。因为自同构自动继承:设计的对称(把点映成点、块映成块)必然把关联矩阵的行集映成行集,从而也是码的自同构;反之(在结构良好的情形下)码的自同构也保持「哪些码字来自块」。于是
Aut(D) = Aut(C(D)), 只要 C(D) 的构造能反读回 D.
这条等式是本章第 11–13 节的核心武器:要找设计的自同构群,就去求码的自同构群——后者有更成熟的算法(本章的实验页将见其雏形)。同理,W24 的关联矩阵(759 × 24)张成 [24, 12, 8] Golay 码;这也是下一节两条通道合流的入口。
★★★★ 把「码 → 设计」写成可检验的判据。
§6.6 的问题是:Dw = { supp(x) : wt(x) = w } 何时是 t-设计?答案取决于码的重量计数器的稀疏程度。
定理(Assmus–Mattson,本册使用形式)。设 C 是二元 [n, k, d] 码,其对偶 C⊥ 的最小距离为 d⊥。若 C 的重量计数器在区间 [d, n − d⊥] 上只有很少几个非零项(相对 d⊥ 而言足够稀疏),则对该区间内每个出现码字的重量 w,Dw 构成一台 t-设计,其中 t 由 d⊥ 与非零项个数共同决定。t 通常取到较大的值(t = 5 的宏构正由此而来)。
(精确的计数条件与一般 q 元形式见 MacWilliams–Sloane《The Theory of Error-Correcting Codes》第 6 章。)
为什么「稀疏」是关键。重量计数器若在某段区间上取值集中,说明码在那些重量上的字「被迫」承担了某种平衡——而平衡一旦被迫,就只能表现为「与位置无关的计数」,这恰是设计的定义。若计数器在区间上密密麻麻,码就有足够的自由度去打破这种平衡,通道便不通。
Golay 码为何完美命中这条判据。扩展 Golay 码 [24, 12, 8] 是自对偶的,故 d⊥ = d = 8,区间为 [8, 16]。而它的重量计数器在这段区间上只有三个非零项:
| 重量 w | 码字数 Aw | 支撑给出的设计 | 核验(本册程序) |
|---|---|---|---|
| 8 | 759 | S(5, 8, 24) = W24 | 每个 5 元组恰落 1 块 ✓ |
| 12 | 2576 | 5-(24, 12, 48) | 每个 5 元组恰落 48 块 ✓ |
| 16 | 759 | 5-(24, 16, 78) | 每个 5 元组恰落 78 块 ✓ |
三个数、三条设计。第五章费力建立的 759 个八元块,原来是「最小重量码字的支撑集」——这台设计一直是那台码的影子。
顺带得到一个漂亮的解释:为什么第五章说「两个八元块的交叠数只能是 0、2、4」?因为八元块是自对偶码的码字支撑,而自对偶码中任两字的内积为 0,在二元情形下即交叠个数为偶数(本册亦已抽样核验)。再加上「交 5 点及以上会违反 λ5 = 1」,0/2/4 的三分格局就被完全锁定了。
★★★★ 第一个 Golay 码,与第五章 253 个七元块的出处。
Golay 在 1949 年寻找完美码时给出了两个著名的例子:一个二元、一个三元。二元的那台可以这样造(第二章的差集与第三章的循环构造在此合流):在 𝔽2[x] 中取 23 阶循环码,生成多项式为
g(x) = x11 + x9 + x7 + x6 + x5 + x + 1,
它的根正是 23 次单位根中「二次剩余指数」的那些(1, 2, 3, 4, 6, 8, 9, 12, 13, 16, 18)——所以这台码也称 QR 码(二次剩余码)。码字即 {(m(x) g(x)) mod (x23 − 1) : deg m < 12}。
| 参数 | 值 | 说明 |
|---|---|---|
| n, k, d | 23, 12, 7 | 长度 23、维数 12、最小距离 7 |
| 码字数 | 4096 = 212 | |
| 重量谱 | 1 / 253 / 506 / 1288 / 1288 / 506 / 253 / 1 | 对应 w = 0, 7, 8, 11, 12, 15, 16, 23 |
| 完美性 | 1 + 23 + 253 + 1771 = 2048 = 211 | 212 × 211 = 223 ✓ 完美 3-纠错码 |
定理(设计浮现)。取重量为 7 的 253 个码字,把它们的支撑集当块,得到 S(4, 7, 23)——正是第五章由 W24 敲一点得到的 W23。同理,重量为 8 的 506 个码字的支撑集构成 5-(23, 8, 1),即 W24 的残差设计。
验算要点。253 个七元块在 23 点上,每个 4 元组恰落一块(253 × C(7,4) = 253 × 35 = 8855 = C(23,4) ✓);506 个八元块则每个 5 元组恰落一块(506 × C(8,5) = 506 × 56 = 28 336 = C(23,5) ✓)。两式都由程序逐块核验通过。第五章的「759 = 253 + 506」到这里终于有了完整解释:759 个八元块里,含某个固定点 p 的 253 个去掉 p 就是七元块,不含 p 的 506 个原地留守——这正是「派生 + 残差」在码的语言里的精确对偶。
★★★★ 加一位校验位,24 点宏构从码里长出来。
扩位。给 [23, 12, 7] 的每个码字追加一位「总校验位」(使全字重量为偶数),得 [24, 12, 8] 码:长度 24、维数 12、最小距离由 7 提到 8。它的重量谱是
A0 = 1, A8 = 759, A12 = 2576, A16 = 759, A24 = 1,
其余重量全为 0(本册已程序枚举 4096 个码字核验)。注意它的自对偶与偶重性质:每个码字重量是 4 的倍数,任意两个码字的内积为 0——这两条性质正是「支撑集成为设计」的代数引擎。
定理(宏构再现)。取重量 8 的 759 个码字,其支撑集恰构成 S(5, 8, 24):第五章的高峰就是这台码的最小重量字。而重量 16 的 759 个字是该设计的「补块」(因为全 1 向量也在码中),重量 12 的 2576 个字则给出 5-(24, 12, 48)。
与第五章的三处对账。其一,块数 759 与每点块数 253:后者正是 [23,12,7] 码中重量 7 的码字数(敲点后的派生设计);其二,残差 506 = [23,12,7] 码中重量 8 的码字数;其三,交叠数的奇偶纪律来自自对偶性。第五章用几何与群看到的每一件事,这里都能用码的语言重述一遍——而码的表述往往更短。
为什么扩位能把距离从 7 提到 8。原码 [23, 12, 7] 的重量奇偶混杂(7、8、11、12、15、16 都会出现)。补上总校验位后每个码字重量变成偶数;若两字在原有 23 位上相距奇数(最小可能 7),则两字重量一奇一偶、其校验位必相异,故 24 位上的距离升为 d + 1 ≥ 8;若原本距离已是偶数(≥ 8),补齐后仍 ≥ 8。于是最小距离由 7 提到 8。这一手在编码理论里称「扩展」:加一位校验位,换一级重数——宏构从 23 点长到 24 点,正是这一步。
★★★★ 码与设计的对称,是同一个群。
第五章说 W24 的自同构群是 M24,阶 244 823 040。本章则说 S(5,8,24) 就是 [24,12,8] 码的重量 8 字支撑。两者合起来立即得到:
定理。M24 = Aut(S(5,8,24)) = Aut([24,12,8] Golay 码)。即:保持 759 个八元块不变的点置换群,与把码字集合映成自身的置换群,是同一个群。
证明思路即 §6.7 的核心等式:块集由码字决定、码字由块集生成,故两侧的置换条件完全等价。这条定理让「求设计的自同构群」变成一个可以在码上做的计算问题——而码的对称性有更多代数工具可用(生成多项式、自同构算法)。
M24 的几个局部。它的极大子群包括 M23(一点稳定子,阶 10 200 960)、M22:2(二点稳定子的扩张)、24:A8(阶 322 560)、M12:2(阶 190 080,把小 Mathieu 群接入宏构)、26:3.S6(阶 138 240,与 sextet 的稳定子同阶——§5.11 的 1771 = |M24| ⁄ 138 240)、L2(23)(阶 6072)等。
一个耐人寻味的吻合。由 |M24| ⁄ 1771 = 138 240 得 sextet 稳定子阶恰为 138 240——前一段提到的极大子群 26:3.S6 正是它的模样(六元四重组稳定子)。而 |M24| ⁄ 759 = 322 560 恰为八元块(octad)稳定子阶,也正是极大子群 24:A8 的阶。设计里数出来的两类「块」,在这里表现为两类极大子群。
| 对象 | 个数 | 稳定子阶 | 稳定子的形状 |
|---|---|---|---|
| 点 | 24 | 10 200 960 | M23 |
| 八元块(octad) | 759 | 322 560 | 24:A8 |
| 六元四重组(sextet) | 1771 | 138 240 | 26:3.S6 |
(表中稳定子阶 = |M24| ⁄ 个数,三行都可当场验算:244 823 040 ⁄ 24 = 10 200 960;244 823 040 ⁄ 759 = 322 560;244 823 040 ⁄ 1771 = 138 240。)
★★★ 「任意五点可任意搬动」——这句话强到什么程度?
定义(k-重传递)。群 G 作用在点集 Ω 上。若对任意两组各 k 点的有序点组 (a1, …, ak) 与 (b1, …, bk)(各组内互异)都存在 g ∈ G 使 g(ai) = bi,则称 G 在 Ω 上k-重传递。
怎么检验。k-重传递等价于 |G| 被 |Ω|(n−1)⋯(n−k+1) 整除且稳定子足够小(更严格地说:群的阶要够大,且轨道数够少)。M24 的验算已经在第五章做过:
244 823 040 ⁄ (24 × 23 × 22 × 21 × 20) = 244 823 040 ⁄ 5 100 480 = 48.
这说明:固定任意五点后,群的行列式还剩 48 阶的余量——群可以搬运任意五点组;而若要搬运六点,商里必须再出因子 19,但 244 823 040 不含素因子 19,故不六重传递。「恰好五重」是 M24 的精确刻度。
定理(Jordan,1871;Mathieu)。四重传递的置换群只有:对称群 Sn、交错群 An,以及 M11, M12, M23, M24。五重传递的只有 Sn, An, M12, M24。
这是一条「不可能性清单」式的定理:除了人人皆知的对称群与交错群,高重传递的世界里只有 Mathieu 们——四条孤峰。它解释了为什么这些结构如此特殊:五重传递几乎是把「对称」逼到极限,能承受这一逼迫的结构少得可怜,而它们恰好都是设计。
★★★ 把同样的故事在三元域上重演一遍。
Golay 的第二个完美码是三进制 [11, 6, 5]:长度 11、维数 6、最小距离 5,能纠正 2 位错误。完美性账目:
球体积 = 1 + 2·11 + 4·C(11, 2) = 1 + 22 + 220 = 243 = 35, 36 × 35 = 311 ✓.
扩位成 12 位。仿照二元情形给它添一位校验位,得 [12, 6, 6] 三进制 Golay 码(自对偶)。它的重量谱是
A0 = 1, A6 = 264, A9 = 440, A12 = 24
(本册已程序枚举 36 = 729 个码字核验)。注意 264 ⁄ 2 = 132——重量 6 的码字,其支撑集恰是第五章的 132 个六元块(同一支撑在两个符号下各计一次,故除以 2)。
定理。[12, 6, 6] 三进制 Golay 码中重量 6 的 132 个码字,其支撑集构成 S(5, 6, 12) = W12;而该结构补集封闭(每个六元块的补也是六元块,因全字重量 12 且全 1 向量在码中)。本册已逐块核验:792 个五元组各落一块,无一重复。
两个通道同时到站。第五章用 PSL(2, 11) 的轨道造 W12(660 ⁄ 5 = 132);本章用三进制 Golay 码造同一个设计。群是 M12(阶 95 040),其点稳定子正是 M11(阶 7920),对应 W11。两台码、两个设计、两个群,一一对应,纹丝不乱。
| 域 | 码 | 重量 w | 支撑集数 | 设计 | 群 |
|---|---|---|---|---|---|
| 𝔽2 | [7, 4, 3] Hamming | 3 | 7 | S(2,3,7) Fano | PSL(2,7) 168 |
| 𝔽3 | [12, 6, 6] Golay | 6 | 132 | S(5,6,12) W12 | M12 95 040 |
| 𝔽2 | [23, 12, 7] Golay | 7 | 253 | S(4,7,23) W23 | M23 10 200 960 |
| 𝔽2 | [24, 12, 8] Golay | 8 | 759 | S(5,8,24) W24 | M24 244 823 040 |
★★ 从五个 Mathieu 群出发,看一眼数学的地平线。
有限单群的分类定理说:每个有限单群必属于四大族(素数阶循环群、交错群、Lie 型群)或26 个散在单群之一。五个 Mathieu 群是最年长的成员,也是本章的主角;其余 21 个的发现史集中在二十世纪后半叶:1965 年 Janko 找到 J1,此后十余年以每年一两个的速度出现新成员,直到 1980 年前后发现了最大的「魔群」(Monster)。
| 群 | 发现 | 作用点数 | 阶 | 与设计/码的关系 |
|---|---|---|---|---|
| M11 | 1861 | 11 | 7920 | S(4,5,11) 的自同构群 |
| M12 | 1861 | 12 | 95 040 | S(5,6,12);三进制 Golay 码 |
| M22 | 1873 | 22 | 443 520 | S(3,6,22) |
| M23 | 1873 | 23 | 10 200 960 | S(4,7,23);[23,12,7] Golay 码 |
| M24 | 1873 | 24 | 244 823 040 | S(5,8,24);[24,12,8] Golay 码 |
分类的规模。这套分类在 1983 年宣布完成,其证明分散在数百篇论文、累计逾万页;其中一类(quasithin 群)的论证到 2004 年才补全。它的结论把「所有有限单群」这张清单封锁——而封锁之中仍然留着 26 个例外。本章的故事正是这 26 个例外的第一页。
快乐家族与孤群。26 个之中,20 个与魔群有血缘(合称「快乐家族」),6 个孤立无援(J1、J3、J4、Ly、O′N、Ru,称 pariah)。五个 Mathieu 群是快乐家族最年长的五位,也是唯一能直接从「点线安排」里长出来的一批。组合设计由此获得一个特殊地位:它是散在单群的摇篮之一。
一点历史感慨。Mathieu 工作时(1861、1873)并不知自己找到了单群;单群的概念要到 1890 年代才由 Hölder 等人明确。他只是在寻找高重传递的置换群——一个看似技艺性的问题——却意外打开了分类定理中最深的那扇门。这是数学史上反复出现的模式:最深的结构常从最朴素的问题里浮出。
★★ 合流的成果流向当代技术。
量子纠错:码的第二春。量子计算最大的障碍是退相干——量子态极易被环境扰动。量子纠错的思路与经典相同:把信息编进一个大的 Hilbert 空间,使错误可被探测与纠正。而量子纠错码的构造几乎全部依赖经典码:
CSS 构造(Calderbank–Shor–Steane):取一对「互相正交」的经典码 C1 ⊇ C2,即得一个量子码。而经典码「自正交」(C ⊆ C⊥)这一条件,恰好就是第五、六章反复使用的「任意两字内积为零」。于是:
| 经典码 | 量子码 | 性质 |
|---|---|---|
| [7, 4, 3] Hamming | [[7, 1, 3]] Steane 码 | 最著名的量子纠错码 |
| [15, 11, 3] Hamming | [[15, 1, 3]] | 量子 Hamming 码 |
| [23, 12, 7] Golay | [[23, 1, 7]] | 量子 Golay 码:能纠 3 个量子错 |
可见 第七章以外,第六章也有一份「落地清单」:本章造出来的每一台好码,几乎都有一台对应的量子码在等着它。
门限秘密共享与 MDS 码。把一份密钥分成 n 份,使任意 k 份能复原、任意 k−1 份一无所知——这类方案(Shamir 1979)的骨架正是最大距离可分码(MDS 码):每个码字任意 k 位都可拼接出全字,与「任意 k 份可复原」是同一句话。而多级访问结构(不同组合的权限不同)则要用到更一般的组合设计。
分布式存储。把文件切成块并加冗余,使若干节点失效后仍可恢复——工程上常见的做法是把「每个块放进哪几个节点」排成一台 BIBD 或覆盖设计,让修复时的下载量最小化。第一章的「每点落 r 块、每对点落 λ 块」在这里有了直接的物理含义:每个节点的存储量、任意两节点的共同覆盖。
一句总结。本章的合流不止是数学内部的统一,它还把设计论送进了信息技术的核心地带:凡是要「均匀、可靠、可恢复」地把信息铺开的地方,都能找到块设计与纠错码的影子。
★★★ 全书的收束:一个结构,三副面孔。
把本章(连同第五章)的收获整理成一部词典。左边是设计语言,中间是码语言,右边是群语言——同一个数学对象,三种说法。
| 设计语言 | 码语言 | 群语言 |
|---|---|---|
| 点(共 v 个) | 坐标位(长 n) | 被作用的集合 Ω |
| 块 | 码字的支撑集 | 轨道里的元素(如八元块) |
| 每对点恰同块 λ 次 | 码字支撑的两两交叠恒定 | 群在某对象上传递 |
| 自同构群 Aut(D) | 码的自同构群 Aut(C) | M24 · M23 · M12 … |
| 派生设计(敲点) | 删去一坐标(缩短) | 点稳定子(子群) |
| 残差设计 | 不过该位的码字族 | 稳定子作用下的另一轨道 |
| 关联矩阵 N | 生成矩阵 G | 等变的线性表示 |
三句方法论。其一,账先算:无论从哪一边入手,可除性(设计的 λs 为整数、码的重量谱可行性)总在第一道门;其二,造靠对称:几何、群轨道、好码是三条造法,其实都是「用对称换平衡」;其三,翻译即发现:本章所有关键结果都不是新算出来的,而是把一边的已知事实翻译到另一边——759 在设计里是块数,在码里是码字数,两个「已知」相撞就撞出了同一性。
为什么这套词典值得带走。因为数学的进步常常就是这样发生的:两个领域各自发展出成熟的技术,直到有人发现它们说的是同一件事。设计论与编码论在 1960—1970 年代完成的这次合流,直接催生了组合设计理论的黄金时代(Assmus–Mattson、Ray-Chaudhuri–Wilson、Wilson 的递归法都在此期间);而今天量子信息学又给这条通道添了新的一层。持有词典的人,能在三个领域之间自由取用工具。
★★★ 把一台码的「整本账」摊开,并看懂它怎样纠错。
题。取 H 的列依原序为 1,…,7 的三位二进制(§6.3 的写法)。求出:(1) 一台生成矩阵;(2) 全部 16 个码字;(3) 单位错误的伴随式表;(4) 指出哪些码字的支撑恰是 Fano 七条线。
解 (1):生成矩阵。解方程 H x⊤ = 0 得 4 维解空间,取一组基(每行是一个码字):
0001111, 0010110, 0100101, 1000011.
解 (2):16 个码字。全部非空码字如下(按字典序;括号内为重量):
0001111 (4) 0010110 (3) 0011001 (3) 0100101 (3) 0101010 (3)
0110011 (4) 0111100 (4) 1000011 (3) 1001100 (3) 1010101 (4)
1011010 (4) 1100110 (4) 1101001 (4) 1110000 (3) 1111111 (7).
重量分布 1 / 7 / 7 / 1(对应 0、3、4、7),与 §6.3 完全一致。
解 (3):伴随式表。由于 H 的第 j 列就是 j 的二进制,单位错误有极干净的结果——伴随式直接给出出错位置的编号:
| 出错位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 伴随式 H r⊤ | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
| 读作十进制 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
于是译码只需两步:算出伴随式,把它读成十进制——那个数字就是出错位置,翻转它即还原。「伴随式=错误位置的编号」是 Hamming 码最漂亮的性质,也是它被广泛用于计算机存储器的原因。
解 (4):七个重量 3 的码字就是 Fano 的七条线。把每个重量 3 的码字的 1 位置读出来(位置编号即点):
0010110 → {3,5,6} 0011001 → {3,4,7} 0100101 → {2,5,7} 0101010 → {2,4,6}
1000011 → {1,6,7} 1001100 → {1,4,5} 1110000 → {1,2,3}
七个三元组正是 §6.4 的线表 ✓;而七个重量 4 的码字(如 0001111 → {4,5,6,7})恰是它们的补。一台码、一张线表、一份补表,三样东西在这里完全重合。
★★★★ 亲手把 24 点宏构从码里「捞」出来,并与第五章的对账。
题。用生成多项式 g(x) = x11 + x9 + x7 + x6 + x5 + x + 1 造出 [23, 12, 7] 码并扩位为 [24, 12, 8],随后:(1) 数出重量 8 的码字个数;(2) 写出前几个八元块,验证两两交叠只取 0、2、4;(3) 与第五章的交叠表对账。
解 (1):数出 759。程序枚举 4096 个码字得重量谱 1 / 759 / 2576 / 759 / 1(对应 0、8、12、16、24)。故八元块恰 759 个——与第五章的程序核验一致。
解 (2):前六个八元块(写出点集,点记 1…24)。
| # | 八元块(点集) |
|---|---|
| 1 | {1, 3, 6, 9, 10, 11, 12, 13} |
| 2 | {1, 2, 3, 4, 6, 7, 9, 14} |
| 3 | {2, 4, 7, 10, 11, 12, 13, 14} |
| 4 | {2, 3, 4, 5, 7, 8, 10, 15} |
| 5 | {1, 5, 6, 8, 9, 10, 14, 15} |
| 6 | {3, 5, 8, 11, 12, 13, 14, 15} |
逐一相交:第 1、2 块交 {1,3,6,9}(4 点);第 1、3 块交 {10,11,12,13}(4 点);第 2、3 块交 {2,4,7,14}(4 点);第 1、5 块交 {1,6,9,10}(4 点);第 3、4 块交 {2,4,7,10}(4 点);第 4、6 块交 {5,8}(2 点)……全部落在 0、2、4 中,与 §5.10 复算的结果一致。
解 (3):与第五章对账。把全部 C(759, 2) = 287 661 对八元块的交叠数统计出来,得
交 0 点:11 385 | 交 2 点:170 016 | 交 4 点:106 260.
三个数相加 287 661 = C(759,2) ✓——正是第五章 §5.10 的交叠表,一分不差。同一批数字,在第五章来自「群轨道 + 几何核账」,在这里来自「生成多项式 + 枚举码字」;两条完全不同的路,走到了同一张表。
补充观察。由全 1 向量也在码中可知,每个八元块 O 的补集 {1,…,24} ∖ O 是重量 16 的码字;重量 16 的码字共 759 个,与八元块一一配对。「块与补块」的对应,正是自对偶码的「补封闭」性质——它是第五章「λ5 = 1 与 5-(24,16,78) 并存」的代数根源。
★★ 本组动用 §6.1–6.5,重点是「用矩阵把账算清」。
习题 6-1(距离与纠错)。某二元码的最小距离是 5。它能纠正几位错?能检测几位错(不纠错)?给出依据。
习题 6-2(发生器与校验器)。已知 [7, 4, 3] Hamming 码的两条关系 H x⊤ = 0 与 G H⊤ = 0。解释为什么这两条其实说的是同一件事,并算出 G 的行数(即维数)。
习题 6-3(重量与距离)。证明线性码的最小距离等于最小非零重量。
习题 6-4(Hamming 界)。写出一般 Hamming 界,并用它验证 [7,4,3] 与 [23,12,7] 都是完美码(球体积各为 23 与 211)。
习题 6-5(造一台 Hamming 码)。仿 §6.3 造 [15, 11, 3] Hamming 码:写出校验矩阵的列(全部非零四位向量),算出球体积与码字数,验证完美性。
习题 6-6(Fano 关联码)。用 §6.4 的七条线写出 Fano 平面的 7 × 7 关联矩阵,在 𝔽2 上求它的行空间维数,并说明为什么结果只能是 4(提示:每点落三线,把三点共线的三条线相加得什么?)。
提示与答案要点。6-1:纠 ⌊(5−1)/2⌋ = 2 位;检 5 − 1 = 4 位(能检出 s 位错 ⟺ d ≥ s+1)。6-2:H x⊤ = 0 与 x = m G 互为充要(一个是核、一个是像),故 G H⊤ = 0;G 有 4 行,因 dim C = n − rank H = 7 − 3 = 4。6-3:d(x, y) = wt(x − y),而 x − y 遍历全部非零码字。6-4:M Σi≤t C(n, i) ≤ 2n;16 × 8 = 128 = 27 ✓,212 × (1+23+253+1771) = 212 × 2048 = 223 ✓。6-5:H 的列为全部非零四位向量共 15 列;球体积 1 + 15 = 16 = 24;码字数 211;211 × 24 = 215 ✓。6-6:维数 4;理由:每条线的特征向量之和等于…把「过点 p 的三条线」的特征向量相加,得全 1 向量(每点落三线,加起来模 2 恰为 1 或 3 ≡ 1)——这说明 7 个向量线性相关(或生成全 1),故维数不超过 4;再由任意四条线线性无关得维数 ≥ 4。
★★★ 本组动用 §6.6–6.13,重点是「从重量谱读出设计」。
习题 6-7(自对偶与偶重)。证明:若二元码 C 自对偶(C = C⊥),则任意两码字的支撑交叠数为偶数。由此说明 W24 两八元块交叠必为偶数。
习题 6-8(从重量谱到设计)。已知 [23,12,7] Golay 码的重量谱为 A7 = 253、A8 = 506。分别用恒等式核验它们的支撑是否可能构成 S(4,7,23) 与 5-(23,8,1)(算 b 与整除条件)。
习题 6-9(扩位的算术)。说明 [23,12,7] 加一位总校验位后,为什么最小距离变成 8 而不是 7 或 9。
习题 6-10(稳定子阶)。用 |M24| ⁄ (对象个数) 算:24 个点的稳定子、759 个八元块的稳定子、1771 个 sextet 的稳定子,三者的阶各是多少?
习题 6-11(传递性检验)。已知 M24 的阶是 244 823 040。不查资料,仅用除法判断它是否 5-重传递、是否 6-重传递。
习题 6-12(三语翻译)。把「W24 中每个五点组恰落一块」这句话分别改写成码的语言与群的语言各一句。
提示与答案要点。6-7:两字的交叠数 = 内积(二元情形下 x · y = |supp x ∩ supp y| mod 2);自对偶表示 x · y = 0 恒成立,故交叠为偶数。6-8:253 × C(7,4) = 253 × 35 = 8855 = C(23,4) ✓ 与 λ = 1 相容;506 × C(8,5) = 506 × 56 = 28 336 = C(23,5) ✓。6-9:距离 7 的两字在原 23 位上重量奇偶相反 ⇒ 校验位相异 ⇒ 新距离 8;距离 8 的两字可同偶可…均不降为 7,故最小距离恰为 8。6-10:点:244 823 040 ⁄ 24 = 10 200 960;八元块:⁄ 759 = 322 560;sextet:⁄ 1771 = 138 240。6-11:24 × 23 × 22 × 21 × 20 = 5 100 480,244 823 040 ⁄ 5 100 480 = 48,商为整数 ⇒ 5-重传递;6-重需再多一个因子 19,而 244 823 040 不含 19 ⇒ 不 6-重传递。6-12:码的语言:「重量 8 的码字中,指定 5 个位置恰有一个码字全含这 5 位」;群的语言:「M24 在 5 元组集合上传递,且稳定子使唯一性成立」(或:「过任意五点的块在群下传递」)。
本章的结构是一个环:码 → 设计 → 群 → 码。下图标出三站之间的道路与货运方向。
三条记忆线索。其一,支撑是唯一的动词——码的支撑给出块,块的关联给出码,来回都用这一个动作;其二,自对偶是引擎——偶重与偶交叠让「支撑族」自动平衡,这才有 5-设计;其三,群阶除以个数等于稳定子——759、1771、24 三个数各自对应一个极大子群,设计的分类与群的分类是一回事。
★★ 码的五件套。
① 距离与纠错。d ≥ 2t + 1 ⇔ 能纠 t 位错;d ≥ s + 1 ⇔ 能检 s 位错。线性码的距离=最小非零重量。
② 矩阵两件套。生成矩阵 G(k × n,造码字)与校验矩阵 H((n−k) × n,筛码字)满足 G H⊤ = 0。伴随式 s = H r⊤ 是译码的钥匙。
③ Hamming 码。取 H 的列为全部非零 r 位向量,得 [2r − 1, 2r − 1 − r, 3];完美 1-纠错;伴随式直接读出错误位置。r = 3 时 [7,4,3],对应 Fano 平面。
④ 完美码清单。二元只有 Hamming(t = 1)与 Golay(t = 3);三元还有 [11,6,5] Golay(t = 2)。完美性账:M × 球体积 = 2n(或 3n)。
⑤ 两族关键码。[23,12,7] Golay:重量谱 1 / 253 / 506 / 1288 / 1288 / 506 / 253 / 1,完美 3-纠错。[24,12,8] 扩展 Golay:重量谱 1 / 759 / 2576 / 759 / 1,自对偶、偶重。[12,6,6] 三进制 Golay:重量谱 1 / 264 / 440 / 24。
与旧章的接口。第一章的关联矩阵在此变成生成矩阵(§6.7);第五章的 759 与 253 在此得到双重解释(§6.9–6.10);第三章的 Fano 平面在此变成一台最著名的码(§6.3–6.4)。本章没有新工具,只有新视角。
★★★ 一页装下全书的最高处。
| 对象 | 数量 | 稳定子阶 | 稳定子形状 |
|---|---|---|---|
| 点 | 24 | 10 200 960 | M23 |
| 八元块 octad | 759 | 322 560 | 24:A8 |
| 六元四重组 sextet | 1771 | 138 240 | 26:3.S6 |
群。M24:阶 244 823 040 = 210·33·5·7·11·23,5-重传递(五点稳定子阶 48),不 6-重传递。三个身份合一:Aut(S(5,8,24)) = Aut([24,12,8] 码) = M24。
码。[24,12,8]:4096 个码字;重量谱 1 / 759 / 2576 / 759 / 1;自对偶、偶重(故交叠必偶)。两族设计由它出生:重量 8 → S(5,8,24);重量 12 → 5-(24,12,48);重量 16 → 5-(24,16,78)。
设计。S(5,8,24):759 块、每点 253 块、λ2 = 77、λ3 = 21、λ4 = 5、λ5 = 1;交叠表 11 385 / 170 016 / 106 260;sextet 三型解剖 15 / 360 / 384。
五群协同。M11 ↔ S(4,5,11);M12 ↔ S(5,6,12);M22 ↔ S(3,6,22);M23 ↔ S(4,7,23);M24 ↔ S(5,8,24)。这五行就是本书最后的高潮:从「十五个女生怎样散步」开始,我们走到了散在单群的第一批成员的门口。
一页之外的余韵。分类定理把有限单群封锁在「四族 + 26 例外」之内;而设计论与编码论共同造出的这五个群,是那 26 个例外中最古老、也最容易理解的一批。它们的发现史(1861–1873)比单群概念本身的诞生还早——数学史上罕见的「先有例子,后有理论」。
思想卡 · 六
一个数的三种命运。759 这个数,在本册里出现了三次:第一次是第五章的「块数」,第二次是「重量 8 的码字数」,第三次是「两个极大子群作用的轨道长度」。三处相隔甚远,却始终是同一个数在扮演不同角色。当同一个数在两个不相关的地方出现,通常意味着把它们连起来的那条线还没有被看到;而一旦看到,两个领域就并成了一个。
第一层体会:结构比对象更根本。我们总是先学会「什么叫设计」,再学会「什么叫码」,最后才发现有些设计其实就是码。被比较的从来不是设计或码这些具体对象,而是它们背后的结构——一个点集、一族子集、一组平衡条件。数学的进步常常表现为:把两个看起来不同的对象认成同一个结构。
第二层体会:翻译是最好的技术。本章没有给设计论添一条新定理,但它让「求自同构群」变成一件可在码上做的计算(§6.7 的 Aut(D) = Aut(C)),也让「造设计」多了一条路(好码的重量谱)。掌握翻译的人可以用 A 领域的工具解 B 领域的题——这是数学里最划算的事。
第三层体会:对称是最后的语言。把本章三个视角排一排:设计的语言谈「什么和什么在同一条线上」,码的语言谈「位置与位置怎样互相关联」,群的语言谈「哪些变换不改变这一切」。越往后者,话语越抽象,但适用面越广。从「安排」到「对称」,是本书走得最远的那一步。
一个诚实的结尾。本书讲了从 1847 年 Kirkman 到 2014 年 Keevash 的一段历史,但这门学问远未结束:一般 S(t, k, v) 在小参数上的存在性仍有大量空白(第五章的 77 张六元块表只是小试身手),可分解性、大集问题、量子纠错的构造,都在等着新的眼睛。本书写下的每一个数字,都可以是一个新问题的起点。
★★★★ 自己造一台 Golay 码,把 759 个八元块「捞」出来。
目标。从生成多项式出发造出 [24, 12, 8] 扩展 Golay 码,验证重量谱 1 / 759 / 2576 / 759 / 1,并证明这 759 个重量 8 码字的支撑构成 S(5, 8, 24)。
三步走。
第一步:造 [23,12,7] 码。在 𝔽2 上把 23 次多项式 x23 − 1 与生成多项式
g(x) = x11 + x9 + x7 + x6 + x5 + x + 1
做多项式乘法与取模(用位运算实现最省事:把多项式写成整数,i 位对应 xi 的系数)。对每个 deg m < 12 的消息多项式计算 (m(x)g(x)) mod (x23 − 1),应得 4096 个互异的 23 位向量。
第二步:扩位成 [24,12,8]。给每个码字添一位总校验位,令全字重量为偶数。用「1 的个数」数出重量谱:应得 759 个重量 8 的字(这正是第五章的块数)。若非 759, g(x) 是否正确(可试着把 x11+x9+x7+x6+x5+x+1 换成它的「反序」x11+x10+x6+x5+x4+x2+1)。
第三步:验证 S(5,8,24)。把 759 个重量 8 码字的「1 位置集合」当作块,检查每个五元组的落块数:应恒为 1(共 C(24,5) = 42 504 个五元组,逐一清点)。顺手还可核验两件事:各块两两交叠恒为 0/2/4(统计得 11 385 / 170 016 / 106 260),以及每块 253 次出现(每点落块数)。
为什么值得做。这道题把本书的两条主线——「用群与几何造设计」与「用码造设计」——亲手接在一起;做完之后,第五章那张「759 / 253 / 77 / 21 / 5 / 1」的表格将不再是背诵对象,而是亲手算出的结果。
★★★★ 造码、验证重量谱、并真的纠三位错。
下面的程序用位运算实现多项式环 𝔽2[x]/(x23−1) 里的乘与取模,造出 [23,12,7] Golay 码;随后验证重量谱,并用「就近译码」检验三错纠正能力。
import random
def pmul(p, q): # 多项式乘法(位运算)
r = 0
while q:
if q & 1:
r ^= p
q >>= 1
p <<= 1
return r
def pmod(p, m): # 取模 x23-1
dm = m.bit_length() - 1
while p.bit_length() - 1 >= dm:
p ^= m << (p.bit_length() - 1 - dm)
return p
X23 = (1 << 23) ^ 1
g = 0b101011100011 # x11+x9+x7+x6+x5+x+1
code = {pmod(pmul(m, g), X23) for m in range(1 << 12)}
print('码字数', len(code)) # 4096
wt = {}
for c in code:
w = bin(c).count('1')
wt[w] = wt.get(w, 0) + 1
print('重量谱', sorted(wt.items()))
# [(0,1),(7,253),(8,506),(11,1288),(12,1288),(15,506),(16,253),(23,1)]
def dist(a, b):
return bin(a ^ b).count('1')
def decode(r): # 就近译码(完美码保证唯一)
return min(code, key=lambda c: dist(c, r))
random.seed(1)
ok = 0
cs = sorted(code)
for _ in range(200):
c = random.choice(cs)
e = 0
for pos in random.sample(range(23), 3):
e |= 1 << pos
ok += (decode(c ^ e) == c)
print('翻三位后成功还原', ok, '/ 200')
预期输出。码字数 4096;重量谱 [(0,1), (7,253), (8,506), (11,1288), (12,1288), (15,506), (16,253), (23,1)];翻三位后成功还原 200 / 200。
读结果。①[23,12,7] 的重量谱逐项对上 §6.9 的表——尤其是 A7 = 253 与 A8 = 506,它们就是第五章 W24 的「敲点」与「残差」。②三错纠正 200 次全中:这正是「完美 3-纠错」的实践含义——只要翻转不超过 3 位,就近译码必还原。③把 code 里的重量 7 元素取出来(253 个),每个支撑即一个七元块,可顺手验证 S(4,7,23)。
进阶。给每个码字补一位总校验位(使重量为偶),得 [24,12,8] 码;再数重量 8 的码字,应得 759——第五章的宏构就这样在机器里重新诞生了一次。若把 759 个支撑存下来与第五章的交叠表比对(C(759,2) 对统计交叠数),即可完成一次跨章的完整闭环。
★ 在信道上「保险地传话」,古已有之。
烽火:用重复抗噪声。长城沿线的烽燧制度(汉代尤详)要求「举烽」按规定的高度、次数、方向进行,沿台接力传递;不同数量与组合的烽火对应不同敌情。这套系统里有两条现代编码的影子:其一是重复——同一情报自多台依次举烽,即便某台误举或失职,相邻台仍能核对;其二是中继——把长距离信道切成若干短段,逐段确认。用今天的话说,烽燧是一条带有校验与转发的通信链路。
虎符:用分割抗伪造。虎符一分为二:君持右、将持左,使者来传达命令时必须「合符」——两半的铭文、齿形必须严丝合缝。这里没有纠错问题,而有另一个问题:怎样让别人无法伪造一份真命令?答案是把消息「编码」到一件只有双方知道其配对的对象上。虎符因此可以看作最古老的认证机制,「符合」「合同」这些词都由此而来。明代还有更制度化的「勘合」:把编号木牌对剖,双方各持一半,以编号比对真伪。
两条路的分岔。烽火与虎符解决的是两个不同的问题:抗噪声(信道不可靠,要让真消息活下来)与抗伪造(信道不可信,要让假消息活不下去)。现代信息论同样把这两件事分作两个方向:纠错码与认证码。本章讲的 Golay 码属于前者;而虎符属于后者的古老雏形。
卦象与二进制。《周易》的六十四卦由六位「爻」的阴阳组合而成,26 = 64 恰好是六位二元符号的全部组合。十七世纪的莱布尼茨看到六十四卦的排列,曾惊叹它与二进制算术的呼应。这是否是古人有意为之,史学上仍有争论;但就数学内容而言,它是「用有限的符号组合编码状态」的一次规模宏大的实践。
一句结语。古典社会没有「位」与「距离」这些概念,却在实践中区分开了「防错」与「防伪」两大信息问题。本章的所有技术,本质上都是把这两件事做得更精确、更省、更快——烽火台上的那一缕烟,与现代存储器里的一个校验位,处理的是同一类麻烦。
★★ 码论公式、四台关键码、五个群,一页备查。
| 条目 | 内容 |
|---|---|
| Hamming 距离 | d(x, y) = 相异位置个数;线性码最小距离 = 最小非零重量 |
| 纠错与检错 | 纠 t 位 ⇔ d ≥ 2t + 1;检 s 位 ⇔ d ≥ s + 1 |
| 两矩阵 | c = mG,Hc⊤ = 0,GH⊤ = 0;伴随式 s = Hr⊤ |
| Hamming 界 | M · Σi≤t C(n, i) ≤ 2n,等号即完美码 |
| Hamming 码族 | [2r−1, 2r−1−r, 3],完美 1-纠错;H 的列 = 全部非零 r 位向量 |
| 完美码清单 | 二元:Hamming、Golay([23,12,7]);三元:Hamming、Golay([11,6,5]) |
| 设计来自码 | Dw = { supp(x) : wt(x) = w };Assmus–Mattson 判据(重量计数器够稀疏) |
| 码来自设计 | 关联矩阵的行张成关联码;Aut(D) = Aut(C(D)) |
| 高重传递清单 | 4-重:Sn、An、M11、M12、M23、M24;5-重:Sn、An、M12、M24(Jordan 1871) |
| 散在单群 | 共 26 个;20 个「快乐家族」+ 6 个孤群(J1 J3 J4 Ly O′N Ru) |
| 码 | 参数 | 重量谱 | 给出的设计 |
|---|---|---|---|
| [7,4,3] Hamming | 16 字 | 1 / 7 / 7 / 1 | S(2,3,7) Fano(重量 3 字) |
| [12,6,6] 三进制 Golay | 729 字 | 1 / 264 / 440 / 24 | S(5,6,12)(重量 6 字,264⁄2 = 132) |
| [23,12,7] Golay | 4096 字 | 1 / 253 / 506 / 1288 / 1288 / 506 / 253 / 1 | S(4,7,23)(w = 7)、5-(23,8,1)(w = 8) |
| [24,12,8] 扩展 Golay | 4096 字 | 1 / 759 / 2576 / 759 / 1 | S(5,8,24)(w = 8)、5-(24,12,48)、5-(24,16,78) |
| 群 | 作用的点 | 阶 | 传递重数 | 设计 |
|---|---|---|---|---|
| M11 | 11 | 7 920 | 4 | S(4,5,11) |
| M12 | 12 | 95 040 | 5 | S(5,6,12) |
| M22 | 22 | 443 520 | 3 | S(3,6,22) |
| M23 | 23 | 10 200 960 | 4 | S(4,7,23) |
| M24 | 24 | 244 823 040 | 5 | S(5,8,24) |
口诀。距离定纠错 → 矩阵定译码 → 支撑定设计 → 码的自同构即设计的自同构。
★★ 六章走完,该收账了。
本书从三个历史问题出发(十五个女生散步、三十六名军官列队、Fano 平面),用六章搭起一座结构:第一章立账本(BIBD 与两条恒等式),第二章压紧账本(对称设计与差集),第三章把账压到最薄(Steiner 系与 Kirkman 问题),第四章给账本加维(正交拉丁方与欧拉之谜),第五章给账本加厚(t-设计与 Witt 宏构),第六章把账本换成另一种语言(码与设计的合流)。六章的主线只有一句:设计是一笔必须对上的账。
综合站会做什么。接下来的一站不是新理论,而是「盘货」:
年表(1847 → 1971 → 2014) | 人物谱(Kirkman · Steiner · Euler · Galois · Mathieu · Hadamard · Bose · Shrikhande · Parker · Bruck · Ryser · Chowla · Singer · Ray-Chaudhuri · Wilson · Witt · Golay · Hamming …)
概念依赖总图 | 方法决策树 | 参数手册(常用设计清单)
两个综合实验。其一是用程序穷举并分类 STS(7)(验证「非同构只有一个」,并看清它与 Fano 平面、与 Hamming 码的三重身份);其二是把 Hamming 码与 Fano 平面做一次逐行互译的自动核验(把 §6.4 的表格交给程序逐条检查)。
终极挑战。亲手用 Bruck–Ryser–Chowla 定理拦截一组 (v, k, λ) 参数——把第二章的数论判据用在一副陌生的参数上,体会「不构造也能否定」的快感。
收尾三页。综合习题与评讲(把六章的技术混在一张卷子上);全书小结(上、下两页:三本账的哲学、设计的宇宙观);余韵两页(一望前沿:可分解性、Keevash 大定理、与其他学科的接口;一望观念:「安排」作为一种数学思想的回响)。
出发前的最后一句。合上本章时,手头已经有了「设计 · 码 · 群」三副眼镜。它们看的是同一个世界——一个由有限集合与平衡条件构成的世界。下一站把这三副眼镜收进同一个眼镜盒,再回头看全书走过的路。
★★ 六章走完,到了清点行囊的时刻。
回望起点。本书从三个彼此独立的历史问题出发:十五名女生连走七天,每天三人一组,任何两人恰重遇一次(Kirkman,1850);三十六名军官排成六行六列,每行每列的等级与团队都不重复(Euler,1782);七点七线,每两点恰在一条线上,且任意两条线必相交(Gergonne,1826)。三者分属不同的世纪、不同的动机,却在同一副骨架上相遇:一个点集 Ω、一族块、一张「哪些点落在哪些块里」的关联表。组合设计研究的正是这副骨架——在指定的平衡条件下把点安排进块,或者证明无论如何都安排不进。
六章的一句话。设计是一笔必须对上的账。账共有三本:点账——每个点落 r 块,全部落点次 bk = vr;交点账——每对点同块 λ 次,故 r(k − 1) = λ(v − 1);块账——在对称设计里每对块也恰交 λ 点。三本账必须同时平:对不上的参数当场出局(可除性筛),对得上的也不必然存在——「存在」二字是这门学问最深的悬念。
三条干线。六章其实是三条线索并排推进的。其一账本线:五参数与两条恒等式(第一章)→ 对称与差集(第二章)→ Steiner 系(第三章)→ t-设计(第五章),账目越记越深。其二构造线:循环基差族(第三章)→ 有限域与仿射射影几何(第二、三、四章)→ 群轨道(第五章)→ 纠错码(第六章),造法越换越巧。其三拦截线:可除性(第一章)→ Fisher 不等式(第一章)→ Bruck–Ryser–Chowla(第二章)→ 灰区与 Keevash 大定理(第五、六章),拦截越拦越准。
两座桥。线与线之间有两处交汇最值得记住:有限几何把构造线与账本线焊在一起——射影平面既是设计,又是几何,又是差集(第二、三章);码把账本线与群论焊在一起——Golay 码的重量谱造出 Witt 设计,两者的自同构群同为 Mathieu 群(第五、六章)。
综合站的十四个站点。接下来不再引入新理论,只做三件事:清点(概念依赖总图、年表、人物谱、方法决策树、参数手册);检验(两个用程序完成的综合实验、一道终极挑战、一份综合卷子与评讲);回望(全书小结上、下两页与一页终极速查表)。读法随人:只想抓纲的,读两张地图与两页小结;想动手的,直接进实验与挑战;想留作工具书的,收好最后一页速查表。
一句提醒。综合站不再是「学新东西」的地方,而是把六章的内容重新摆进一张桌面的地方。能把一门学问摊开摆好的人,才算真的握住了它。
★★★ 一张图收下全书。
下图把绪论、六章与综合站串成一条蛇形链,每个节点标出该章的入口与出口。链的走向就是本书的叙述顺序;节点中的「出口」是这一章交给下一章的货。
关于这张图的读法。其一,蛇形不是随意的:左起右行、右端下折、左行下折,是为了让相邻两章的连线尽可能短——第一章交出的关联矩阵,紧接第二章的对称与差集;第二章交出的差集与几何,紧接第三章的 Steiner 系;第四章交出的有限域与正交性,紧接第五章的多重平衡。其二,每个出口都是下一章的入口:Fisher 不等式(一)→ 对称设计的必要性(二);BRC 与 Singer(二)→ 射影平面的构造语言(三、四);MOLS 与平坦性(四)→ t-设计的多重平衡(五);759 与 253(五)→ Golay 码的重量谱(六)。其三,综合站是收口的结:它不再输出新概念,只把前七站的货物重新编号。
三条干线的并行走廊。把这张蛇形图按「线索」而不是「章序」重排,就得到三条走廊。账本线走的是五参数 → 两条恒等式 → Fisher 不等式 → 对称与差集 → Steiner 系 → t-设计 → Witt 设计;构造线走的是循环基差族 → 有限域 → 仿射与射影几何 → 拉丁方 → 群轨道 → 码;拦截线走的是可除性 → Fisher 界 → BRC → 「过筛不等于存在」的灰区 → Keevash 的充分性。三条线共用的动词只有一个:对账。
两座桥的承重点。有限几何那座桥,承重点是「线」这个字的双重身份:在几何里它是直线,在设计里它是块,在差集里它是圆环上的一个子集——三种语言说同一件事,§2.8 的 Singer 定理是全册最经济的一处翻译。码那座桥,承重点是「支撑」这个动作:把码字的 1 位置读成一个集合,设计就自动浮现(§6.6)。桥的价值不在风景,而在它让两岸的工具可以互相搬运。
为什么值得画这张图。组合设计的难点从来不在单条定理,而在定理之间的关系:什么时候可以用差集、什么时候必须回到几何、什么时候应当换到码的语言。这张图就是一张「工具箱地图」——遇到新参数时,先在图里找位置,再决定动哪把工具。
★★ 把一百七十年压进一张表。
下表按年代列出本书涉及的关键节点,末列标明在本册何处出现。读年表有一个要点:看的是「问题」与「答案」之间的时差。
| 年代 | 事件 | 本书位置 |
|---|---|---|
| 1782 | Euler 提出三十六军官问题,并猜想正交对在阶数同余 2 于模 4 时不存在 | 绪论 · 第四章 |
| 1826 | Gergonne 给出七点七线构形,即后来的 Fano 平面 | 绪论 · 第三章 |
| 1847 | Kirkman 证明 STS 的存在定理:v 同余 1 或 3 于模 6 | 第三章 §3.7 |
| 1850 | Kirkman 在历书上提出女生散步问题 | 绪论 · 第三章 §3.10 |
| 1853 | Steiner 发表三元组构形的文章,「Steiner 系」由此得名 | 第三章 §3.2 |
| 1861 | Mathieu 发现置换群 M11 与 M12 | 第六章 §6.13 |
| 1873 | Mathieu 再发现 M22、M23、M24 | 第六章 §6.13 |
| 1890 年代 | Hölder 等人明确「单群」概念,Mathieu 群的意义被重新认识 | 第六章 §6.14 |
| 1892 | Fano 的有限几何论文发表,「Fano 平面」之名由此而来 | 第三章 §3.2 |
| 1893 | Hadamard 关于行列式极大值的论文,Hadamard 矩阵登场 | 第二章 §2.7 |
| 1900–01 | Tarry 穷举证明:六阶正交拉丁方对不存在 | 第四章 §4.6 |
| 1917 | Cole、Cummings 与 White 手算完成 STS(15) 的 80 个解的分类 | 第三章 §3.14 |
| 1938 | Singer 证明射影平面的循环差集构造;Witt 直接构造 S(5,8,24) 与 S(5,6,12) | 第二、五章 |
| 1940 | Fisher 在统计试验设计中发现块数不小于点数,设计的代数化由此展开 | 第一章 §1.9 |
| 1949 | Bruck 与 Ryser 拦下六元域射影平面;Golay 提出二元 Golay 码 | 第二、六章 |
| 1950 | Bruck–Ryser–Chowla 定理定型;Hamming 提出纠错码 | 第二、六章 |
| 1959–60 | Bose、Shrikhande 与 Parker 构造出十阶与二十二阶正交对,推翻欧拉猜想 | 第四章 §4.7 |
| 1969 | Assmus 与 Mattson 给出「由码造设计」的一般判据 | 第六章 §6.8 |
| 1971 | Ray-Chaudhuri 与 Wilson 解决女生问题的一般情形:KTS 存在当且仅当 v 同余 3 于模 6 | 第三章 §3.11 |
| 1972–75 | Wilson 的成对平衡设计存在性理论,构造线首次系统化 | 第五章 §5.5 |
| 1983 | 有限单群分类宣布完成,二十六个散在单群定格 | 第六章 §6.14 |
| 2004 | 分类证明中的 quasithin 缺口补全 | 第六章 §6.14 |
| 2014 | Keevash 证明设计存在性大定理:参数过筛且 v 足够大时设计必存在 | 第五章 §5.5 · 综合站 |
三处最长的时差。其一,女生散步问题:1850 年提出,1971 年获解,时差 121 年。其二,欧拉的三十六军官猜想:1782 年提出,1959–60 年全部翻案,时差 177 年(其中六阶的不存在由 Tarry 在 1900 年独自证明)。其三,一般设计的存在性:可除性条件早已明确,但「过筛即存在」要等到 2014 年 Keevash 的定理(对足够大的 v)。一门学问的成熟度,常常可以用「问题与答案的时差」来度量。
三处最密的爆发。其一,1847–1853:Kirkman 的存在定理、女生问题与 Steiner 的文章,六年间奠定整个 λ = 1 的领域。其二,1938–1950:Singer 的射影平面构造、Witt 的大设计、Fisher 不等式、Golay 与 Hamming 的码、Bruck–Ryser 的拦截——十二年里,账本、构造、拦截三条线同时开工。其三,1959–1975:Bose–Shrikhande–Parker 翻案、Assmus–Mattson 的合流判据、Ray-Chaudhuri–Wilson 解决女生问题、Wilson 的存在性理论。
一行注脚。本书的六位主角——Kirkman、Steiner、Euler、Mathieu、Witt、Hamming——分处四个国家、三种身份(牧师、几何学家、群论学家、工程师)。设计论的诞生地不属于任何单一学科,它更像一个十字路口。
★★ 一门学问的脸。
把本书出现过的名字按身份归成九组。这里不列生卒,只列「做了什么」与「在本书何处相见」。
| 组 | 人物 | 与本书的交点 | 位置 |
|---|---|---|---|
| 一 草地上的牧师 | Kirkman · Steiner | STS 存在定理(1847);女生散步问题(1850);「Steiner 系」的命名(1853) | 第一、三章 |
| 二 游戏与革命 | Euler · Galois | 三十六军官问题(1782);有限域与置换群的语言——一切有限几何的原料 | 绪论 · 第四、六章 |
| 三 统计学家 | Fisher · Bose | 试验设计的五参数化与块数界(1940);正交拉丁方与设计的统计起源 | 第一章 · 第四章 |
| 四 三个翻案者 | Bose · Shrikhande · Parker | 1959–60 推翻欧拉猜想:除二与六外,任意阶都有正交对 | 第四章 §4.7 |
| 五 拦截者 | Bruck · Ryser · Chowla | BRC 定理:用二次型与无穷递降拦下一批对称设计参数 | 第二章 §2.11 |
| 六 差集的手艺人 | Singer · Hadamard | 射影平面的循环差集(1938);Hadamard 矩阵与 Hadamard 设计 | 第二章 §2.7–2.8 |
| 七 密码与信息时代 | Hamming · Golay | 七位 Hamming 码与 Golay 码;完美码与它的自同构群 | 第六章 §6.3 · §6.9 |
| 八 群论家与构造者 | Mathieu · Witt | 五个 Mathieu 群(1861、1873);S(5,8,24) 与 S(5,6,12) 的直接构造(1938) | 第五章 §5.9 · 第六章 §6.11 |
| 九 存在性工程师 | Ray-Chaudhuri · Wilson · Keevash | KTS 定理(1971);成对平衡设计的存在性理论(1972–75);设计存在性大定理(2014) | 第三章 §3.11 · 第五、六章 |
三张面孔。把九组再压缩,会看到三类人:提问者——Euler 的军官、Kirkman 的女生、Fano 的点线,他们贡献的是问题;记账者——Fisher、Bose、Bruck、Ryser、Chowla,他们把「安排」翻译成方程组与不等式;翻译者——Hamming、Golay、Witt、Mathieu,他们在两种语言之间搭桥。一门学问的成长史大体就是这三类人接力:先有好奇的提问,再有严格的对账,最后有跨界的翻译。
两处错位。其一是命名权:三元素构形在文献里被称作「Steiner 系」,可存在定理出自 Kirkman(1847),比 Steiner 的文章早六年——「Kirkman 系统」这个更公平的名字至今只在专书中出现。其二是身份:Mathieu 一生都在研究置换群,从未想过自己在「设计」;Witt 也不曾自称设计学家,他只是要造两个五重传递的群。有些最深的设计,是被找群的人顺手造出来的。
一条时间线之外的观察。从 Kirkman 到 Keevash 是一百六十七年;九组人里,最难的那本账(设计存在性)跨了整整一百六十七年,也只结清了「足够大」的那一半。同一门学问还出现过这样的奇观:两位研究者相隔一百一十年,用完全不同的工具(手算枚举与二次型数论)处理同一批参数——前者造出设计,后者证明同类参数不可能存在。这张人名表的真正含义是:一门学问不是一个人写成的,它是一场跨越几个世纪的接力赛。
★★★ 拿到一组合法参数之后,先走哪条路?
六章教了四种武器:恒等式(判账目)、拦截定理(判生死)、构造法(造出来)、枚举法(数清楚)。真正动手时,难题不是「会不会用」,而是「先用哪一个」。下面的流程图把顺序钉死。
第一个要点:先拦截,后构造。初学者最容易犯的错是先动手造设计,造不出来才回头算账。正确的顺序相反——能用不等式与整性判死的参数,绝不进入搜索。第一批拦截工具就很够用:
① 整性。r = λ(v − 1) ⁄ (k − 1) 与 b = vr ⁄ k 必须是正整数。这两式是两条恒等式的直接推论,几乎是免费的筛子。② 界。b ≥ v(Fisher);对称设计的必要条件是 (v − 1)λ = k(k − 1),它把大量候选一次删掉。③ 数论判据。BRC 定理:对称设计在 v 为偶数时要求 k − λ 是完全平方。三条都与「造」无关,却最省力。
第二个要点:过筛之后分四条路。参数走出三关,才轮到构造线登场。λ = 1 走 Steiner 系:存在条件早已清楚(三元的 v ≡ 1, 3,四元与五元有小定理,一般 t 靠 Keevash);对称走差集:一张基块表加一个平移,比逐块搜索经济得多,Singer 定理更把射影平面整体归约到「圆环上一个子集」;参数小就走回溯枚举:一条最笨但最可靠的路,第三章的 STS(15) 与本章的 STS(7) 都靠它;多重平衡则换语言,走码或群轨道。
第三个要点:终点的三种颜色。黑——被定理拦死,永远不存在(§2.11 的 (43, 7, 1));白——构造成功,还能分类(§3.14 的 STS(15) 的 80 类);灰——过筛而存亡未定(大批对称参数停在这里)。灰色区域的存在本身就是一门学问的地图:它标出了「已知」与「未知」的边界。而 Keevash 2014 定理的伟大之处,正是把灰色的一半一次性涂成了白色——对于足够大的 v,凡过筛者必存在。
一句话。决策树的形状就是本书的形状:上端是账(第一章),中段是刀(第二章),下端是路(第三至六章)。遇到陌生参数时,从上往下走一遍,不必慌张。
★★★ 一页备查:见过世面的参数们。
下表汇总本书出现过的全部具体设计,可直接当手册使用。三个数各有其职:b 是块数、r 是每点落块数、λ 是每对点同块次数。
| 名称 | (v, k, λ) | b | r | 备注 |
|---|---|---|---|---|
| Fano 平面 PG(2,2) | (7, 3, 1) | 7 | 3 | 对称;唯一;自同构群阶 168 |
| STS(9) = AG(2,3) | (9, 3, 1) | 12 | 4 | 唯一;4 个平行类;反 Pasch |
| STS(13) | (13, 4, 1) | 13 | 4 | 对称;非同构恰 2 个 |
| STS(15) | (15, 3, 1) | 35 | 7 | 存在;80 个非同构类 |
| KTS(15) = PG(3,2) | (15, 3, 1) | 35 | 7 | 可分解者唯一;自同构群阶 20160 |
| STS(19) | (19, 3, 1) | 57 | 9 | 存在;11 084 874 829 个非同构类 |
| AG(3,2) 的 14 个平面 | (8, 4, 3) | 14 | 7 | 即 S(3,4,8):每个三元组恰落一块 |
| 双平面 (11,5,2) | (11, 5, 2) | 11 | 5 | 对称;唯一;补设计与自身同参数 |
| 双平面 (16,6,2) | (16, 6, 2) | 16 | 6 | 对称;唯一 |
| 射影平面 PG(2,4) | (21, 5, 1) | 21 | 5 | 对称;q = 4 |
| 射影平面 PG(2,5) | (31, 6, 1) | 31 | 6 | 对称;q = 5 |
| 射影平面 PG(2,7) | (57, 8, 1) | 57 | 8 | 对称;q = 7 |
| 射影平面 PG(2,8) | (73, 9, 1) | 73 | 9 | 对称;q = 8 |
第二张表收起全册「多重平衡」的一族:t-设计的参数一旦写下,λ 序列就被递降恒等式锁死,没有任何自由度。
| 名称 | 类型 | b | r | λ 序列(由深到浅) |
|---|---|---|---|---|
| Fano 平面 | 2-(7,3,1) | 7 | 3 | λ2 = 1 |
| S(3,4,8) | 3-(8,4,1) | 14 | 7 | λ3 = 1,λ2 = 3 |
| W11(小 Witt) | 4-(11,5,1) | 66 | 30 | λ4 = 1,λ3 = 4,λ2 = 12 |
| W12(小 Witt) | 5-(12,6,1) | 132 | 66 | λ5 = 1,λ4 = 4,λ3 = 12,λ2 = 30 |
| W22 | 3-(22,6,1) | 77 | 21 | λ3 = 1,λ2 = 5 |
| W23 | 4-(23,7,1) | 253 | 77 | λ4 = 1,λ3 = 5,λ2 = 21 |
| W24(大 Witt) | 5-(24,8,1) | 759 | 253 | λ5 = 1,λ4 = 5,λ3 = 21,λ2 = 77 |
| 扩展 Golay 的重量 12 支撑 | 5-(24,12,48) | 2576 | 1288 | λ5 = 48,λ4 = 120,λ3 = 280 |
| 扩展 Golay 的重量 16 支撑 | 5-(24,16,78) | 759 | 506 | λ5 = 78,λ4 = 130,λ3 = 210 |
第三张表是第四章的正交系清单。N(n) 记「两两正交的 n 阶拉丁方最多能有几个」,上界恒为 n − 1,素数幂阶恰好取到上界。
| 阶 n | N(n) | 来路 |
|---|---|---|
| 2 | 1 | 平凡取到上界 n − 1 = 1 |
| 3 | 2 | 有限域构造 |
| 4 | 3 | 有限域构造 |
| 5 | 4 | 有限域构造(AG(2,5) 的 4 个方向) |
| 6 | 1 | Tarry 1900 穷举:正交对不存在 |
| 7 | 6 | 有限域构造 |
| 8 | 7 | 有限域构造(q = 8 是素数幂) |
| 9 | 8 | 有限域构造(q = 9 是素数幂) |
| 10 | 至少 2 | Bose–Shrikhande–Parker 1959–60 |
| 其他 n ≠ 2, 6 | 至少 2 | 同上:欧拉猜想被彻底推翻 |
手册的用法。遇到一组陌生参数,先在这三张表里检索:命中即抄答案,未命中则回到决策树(图 综合-3),依次过三关。要特别留意的是:参数本身不决定存在性。同为 (15, 3, 1),既有 80 个非同构的 STS,又恰有一个可分解的 KTS;同为「q = 6 的射影平面参数」,账目全部合法,对象却不存在。参数是门票,不是座位号。
★★★★ 用一台机器数清楚最小的 Steiner 系。
实验目的。程序穷举七个标号点上的全部 STS(7),与 7! ⁄ 168 = 30 对上;再用同构测试把三十个解压成一个同构类,从而亲手验证「STS(7) 只有一个,它的名字叫 Fano 平面」。这个实验的意义在于:它把第一章的「同构与自同构」、第三章的「存在与分类」、第六章的「群阶除以个数」三句口号全部落实为可运行的动作。
from itertools import combinations, permutations
n = 7
triples = list(combinations(range(n), 3))
need = n * (n - 1) // 6 # 7 条线
def search(i, chosen, cov):
if len(chosen) == need:
yield tuple(chosen); return
if i >= len(triples): return
b = triples[i]
ps = frozenset(combinations(b, 2))
if not ps & cov: # 新块的点对未被用过
yield from search(i + 1, chosen + (b,), cov | ps)
yield from search(i + 1, chosen, cov) # 也可以不取这一块
sols = list(search(0, (), frozenset()))
print('标号设计数', len(sols))
def canon(B): # 规范形:全部标号里字典序最小者
best = None
for p in permutations(range(n)):
s = tuple(sorted(tuple(sorted(p[x] for x in b)) for b in B))
if best is None or s < best: best = s
return best
print('非同构类数', len({canon(B) for B in sols}))
B0 = sols[0]
aut = [p for p in permutations(range(n))
if all(tuple(sorted(p[x] for x in b)) in B0 for b in B0)]
print('自同构群阶', len(aut))
print('7! / 168 =', 5040 // 168)
print('一个解', canon(B0))
预期输出。
标号设计数 30
非同构类数 1
自同构群阶 168
7! / 168 = 30
一个解 ((0, 1, 2), (0, 3, 4), (0, 5, 6), (1, 3, 5), (1, 4, 6), (2, 3, 6), (2, 4, 5))
读结果。其一,30 不是随便一个数:它是 7! ⁄ 168,即「七个标号的全部重排」除以「保持设计不变的重排数」——这正是轨道稳定子定理 |群| = |轨道| × |稳定子| 在组合分类里的第一次显形。其二,非同构类数是 1:三十个标号设计彼此只差一次改名字,本质上是同一座 Fano 平面。其三,那 168 个自同构就是 PSL(2, 7)——同一个群在第三章管着 Fano 的七条线,在第六章管着七位 Hamming 码。其四,程序吐出的那个「一个解」,正是第一章实验页逐条核验过的七条线。
若把参数换成 (9, 3, 1)。同一段程序只需改一行 n = 9,输出会变成:标号设计数 840、自同构群阶 432——因为那个唯一的 STS(9) 比 Fano 更对称(9! ⁄ 432 = 840)。它就是仿射平面 AG(2,3):十二条线分四个平行类,且一个 Pasch 构形都没有。把两个最小 Steiner 系并排一放,反差极为鲜明:Fano 有 7 个 Pasch(删去任一点,剩下的六点恰好带着四条线),AG(2,3) 一个也没有——后者因此被称为反 Pasch 系,并由此可以一步证明「STS(9) 不是 Fano 的放大」。
进阶。把 n = 15 交给同一段回溯,程序会在数秒到数分钟内吐出大量解;把它们按同构归类需要更聪明的规范标号(顶点细化的 nauty 思想,见 §3.14)。历史上这一步由 Cole、Cummings 与 White 在 1917 年纯手算完成,结论是 80 类。而若只想确认「可分解的那一个」是否存在,则不必分类:直接在搜索里加一条约束「每一步所选的线必须填满当前未覆盖的点」,跑出来的正好是 KTS(15) 的七日表。
★★★★ 把 §6.4 的互译表交给程序逐条检查。
实验目的。第六章声称「Fano 平面与 Hamming(7,4) 码是同一个对象的两副面孔」。这句断言相当强:它要求七条线、七个重量 3 的码字、七条校验方程三样东西一一重合。下面这段程序不引用任何结论,只做三件事:由七条线造出关联矩阵,在二元域上求出它的行空间,检查这个行空间就是 Hamming 码并且重量 3 的码字恰好还原七条线。
from itertools import combinations, product
lines = [{1,2,3},{1,4,5},{1,6,7},{2,4,6},{2,5,7},{3,4,7},{3,5,6}]
N = [[1 if j in L else 0 for j in range(1, 8)] for L in sorted(lines, key=min)]
def rref(rows): # 二元域上的行化简
rows = [r[:] for r in rows]; piv = 0
for c in range(7):
i = next((i for i in range(piv, len(rows)) if rows[i][c]), None)
if i is None: continue
rows[piv], rows[i] = rows[i], rows[piv]
for k in range(len(rows)):
if k != piv and rows[k][c]:
rows[k] = [a ^ b for a, b in zip(rows[k], rows[piv])]
piv += 1
return [r for r in rows if any(r)]
G = rref(N)
print('关联矩阵行空间维数', len(G))
code = set() # 行空间的 24 个向量即全部码字
for m in product([0, 1], repeat=len(G)):
c = [0] * 7
for mi, gi in zip(m, G):
if mi: c = [a ^ b for a, b in zip(c, gi)]
code.add(tuple(c))
wt = {}
for c in code: wt[sum(c)] = wt.get(sum(c), 0) + 1
print('码字数', len(code), '| 重量谱', sorted(wt.items()))
w3 = sorted(tuple(i + 1 for i in range(7) if c[i]) for c in code if sum(c) == 3)
print('重量 3 支撑就是 Fano 七线?',
sorted(map(tuple, map(sorted, lines))) == w3)
comp = sorted(tuple(sorted({1,2,3,4,5,6,7} - set(L))) for L in w3)
w4 = sorted(tuple(i + 1 for i in range(7) if c[i]) for c in code if sum(c) == 4)
print('重量 4 支撑就是七线的补?', comp == w4)
print('完美性账:', len(code), '×', 1 + 7, '=', len(code) * 8, '= 27 =', 2 ** 7)
预期输出。
关联矩阵行空间维数 4
码字数 16 | 重量谱 [(0, 1), (3, 7), (4, 7), (7, 1)]
重量 3 支撑就是 Fano 七线? True
重量 4 支撑就是七线的补? True
完美性账: 16 × 8 = 128 = 27 = 128
读结果。其一,维数 4 是关键数:七条线的关联向量虽然只有七个,却张成四维空间——这正是 Hamming 码的信息位数 k = n − r = 7 − 3 = 4。其二,重量谱 1 ⁄ 7 ⁄ 7 ⁄ 1 与第六章例题一的表完全一致,其中七个重量 3 的码字逐字等于七条线(程序打印 True)。其三,重量 4 的七个码字恰是七条线的补集——这就是「补封闭」,它保证了自对偶与偶交叠,也是第五章 λ 序列能配平的代数根源。其四,完美性账 16 × 8 = 128 = 27 一行过关。
为什么这场核验有价值。第六章给出的互译表如果有一处错位,上面至少会有一行打印 False。程序在这里扮演的是独立的裁判:它不接受「看起来对」,只接受「逐条对上」。把两个领域的对照表交给机器复核,是理解「合流」这件事最扎实的方式。
进阶。把七条线换成交错群的点集,或把二元域换成三元域,同一段程序就能去核验别的合流:三元 Golay 码的重量 6 支撑给出 132 个六元块,即 S(5,6,12) 的块表;把 24 个点上的 [24,12,8] 码的生成多项式交给它,就能重演第五章的 759。整个第六章的所有数字,都可以在这段二十行的骨架里重新走一遍。
★★★★ 不构造,也能否定——这是组合设计最痛快的时刻。
目标。给定一组「对称设计」的候选参数 (v, k, λ),不需要画出任何设计,只用三把尺子判断它的命运:出局(永远不存在)、过筛(必要条件是都对,但存在与否未定)、或者已知存在。
三把尺子。第零关(对称门槛):对称设计必有 (v − 1)λ = k(k − 1)——这是比两条恒等式更强的一刀,先砍掉一批「账目就不对称」的候选。第一关(整性):r = λ(v − 1) ⁄ (k − 1) 与 b = vr ⁄ k 必须为正整数。第二关(BRC):对称设计在 v 为偶数时,k − λ 必须是一个完全平方数;否则永远不存在。三关全过者进「灰区」。
三个已竣工的示例。
示例一:(7, 3, 1)。第零关:6 × 1 = 6 = 3 × 2 ✓。第一关:r = 1 × 6 ⁄ 2 = 3、b = 7 × 3 ⁄ 3 = 7 ✓。第二关:v = 7 为奇数,平方判据不适用。结论:过筛,而且确实存在——它就是 Fano 平面。
示例二:(11, 5, 2)。第零关:10 × 2 = 20 = 5 × 4 ✓。第一关:r = 2 × 10 ⁄ 4 = 5、b = 11 × 5 ⁄ 5 = 11 ✓。第二关:v 为奇数,不适用。结论:过筛,且存在——双平面 (11,5,2)。
示例三:(43, 7, 1)。第零关:42 × 1 = 42 = 7 × 6 ✓。第一关:r = 6、b = 43 ✓。第二关:v 为奇数,平方判据不适用——但 BRC 在奇数情形有另一副形态(一个二次方程须有非平凡整数解),它在这里生效,判定永不存在。正是这一刀,在 1949 年终结了「q = 6 的射影平面」这桩悬案。
待判的六组。下表给出六组候选参数,全部只差裁决。要求写出每一关的具体算式(尤其是第零关的两个乘积),并给出最终判定:出局(写明倒在哪一关)还是过筛。答案与算式在下一页的评讲中给出。
| 编号 | (v, k, λ) | 第零关 (v−1)λ 与 k(k−1) | 第二关(v 偶时) |
|---|---|---|---|
| 甲 | (22, 7, 2) | 21 × 2 = 42 | 待判 |
| 乙 | (46, 10, 2) | 45 × 2 = 90 | 待判 |
| 丙 | (34, 12, 4) | 33 × 4 = 132 | 待判 |
| 丁 | (40, 13, 4) | 39 × 4 = 156 | 待判 |
| 戊 | (52, 11, 2) | 51 × 2 = 102 | 视第零关 |
| 己 | (28, 7, 2) | 27 × 2 = 54 | 视第零关 |
提示(不含答案)。①六组的第一列都写得出来, k(k − 1) 也算出来对照——有一组会在第零关就死。②v 为偶数的四组要算 k − λ,并问:它是平方吗?③注意「平方判据」只对偶数 v 生效;奇数 v 的候选不能靠这一条出局(但可能靠第零关出局)。
为什么值得做。这道题把第二章的两件武器——对称必要条件与 BRC 定理——放在一条流水线上。做完之后,参数就再也不是一串无意义的数字:每一个 (v, k, λ) 都有了自己的判决书,而判决书上的理由,正是本书第二章的全部内容。
★★★ 一份把六章混在一起的卷子。
本卷分三组:A 组记三本账(第一、五章的工具)、B 组造与拦(第二、三、四章的工具)、C 组合流与对称(第五、六章的工具)。每题只署主要涉及的小节,允许跨章取用工具。
A 组 · 三本账。
综合 12-1(两条恒等式)。写出 BIBD 的两条计数恒等式。对 (v, k, λ) = (11, 5, 2) 算出 r 与 b,并说明这个设计是否对称。
综合 12-2(对称的必要条件)。证明:对称设计必满足 (v − 1)λ = k(k − 1)。说明它为什么比两条恒等式更强——找一组过了两条恒等式却不满足它的参数。
综合 12-3(递降恒等式)。已知 5-(24, 8, 1) 的设计存在。用递降恒等式求出 λ4、λ3、λ2,并计算 b 与 r,验证 b = 759。
综合 12-4(Fisher 不等式)。用 Fisher 不等式说明:不存在块数恰为 v − 1 的 2-设计。再看 (6, 3, 2):它的 b 与 v 谁大?这说明什么?
B 组 · 造与拦。
综合 12-5(差集核账)。在 ℤ7 中取 D = {0, 1, 3}。列出全部非零差 a − b(a, b ∈ D,a ≠ b)的模 7 余数,验证 (7, 3, 1) 差集,并写出七个平移块。
综合 12-6(BRC 拦截)。对 (22, 7, 2) 与 (40, 13, 4) 分别走三关,指出前者为何出局、后者为何过筛。据此说明「过筛不等于存在」这句话的确切含义。
综合 12-7(存在门槛)。用 STS 的存在定理判断:v = 21 与 v = 25 上是否有 Steiner 三元系?再用可分解的条件(KTS 定理)判断 v = 21 上是否有 Kirkman 三元系。
综合 12-8(欧拉翻案)。「正交对不存在当且仅当 n ≡ 2 (mod 4)」这句话哪里错了?写出正确的例外清单,并指出是哪三篇工作(哪一年)完成了翻案。
C 组 · 合流与对称。
综合 12-9(由码造设计)。说明 [24, 12, 8] 扩展 Golay 码中重量 8 的码字为什么可以当作块,并任选一条路线论证这些块构成 5-(24, 8, 1)(可用的路线:自对偶与偶交叠、群轨道、或与第五章的构造对账)。
综合 12-10(三语翻译)。把「M24 在 24 个点上五重传递」这句话,分别改写成设计语言与码语言各一句。
综合 12-11(稳定子算术)。已知 |M24| = 244 823 040。用「群阶除以对象个数」算出:一个点、一个八元块、一个 sextet 的稳定子阶各是多少?并验算三点整除。
综合 12-12(完美的边界)。列出二元完美码的完整清单,写出各自的参数;并用球体积等式验证 [23, 12, 7] 码的完美性。再说明为什么 [7, 4, 3] 与 [23, 12, 7] 之后再没有二元完美码。
★★★ 先给挑战页的六张判决书,再逐题讲卷。
挑战页六组参数的裁决。算式与结论一并列出;「灰区」一栏的写法特意区分了「没有死」与「活着」。
| 编号 | (v, k, λ) | 第零关 (v−1)λ 与 k(k−1) | 第二关(v 偶) | 裁决 |
|---|---|---|---|---|
| 甲 | (22, 7, 2) | 42 = 42 ✓ | k − λ = 5,非平方 | 出局(BRC) |
| 乙 | (46, 10, 2) | 90 = 90 ✓ | k − λ = 8,非平方 | 出局(BRC) |
| 丙 | (34, 12, 4) | 132 = 132 ✓ | k − λ = 8,非平方 | 出局(BRC) |
| 丁 | (40, 13, 4) | 156 = 156 ✓ | k − λ = 9 = 32,平方 | 过筛(灰区) |
| 戊 | (52, 11, 2) | 102 ≠ 110 ✗ | 无需走到 | 出局(第零关) |
| 己 | (28, 7, 2) | 54 ≠ 42 ✗ | 无需走到 | 出局(第零关) |
一句话读表。三组倒在 BRC 上(甲、乙、丙),两组在门槛处就死了(戊、己),只有丁活到灰区——而灰区恰恰是本书反复强调的地方:必要条件全部满足,不等于对象存在。甲、乙、丙的判决是「永远不存在」;丁的判决只是「不排除」。
逐题要点。12-1:bk = vr 与 r(k − 1) = λ(v − 1)。代入得 r = 5、b = 11 = v,故对称(它就是双平面 (11,5,2))。12-2:对称设计里每点落 r 块、每块含 k 点、每对块交 λ 点,对偶设计与原设计同参数,故 r = k;代入交点账即得。更强之处:它把两条恒等式压缩成一个条件,且能筛掉「b ≠ v」的伪对称候选。反例可取 (6, 3, 2):两条恒等式给出 r = 5、b = 10 皆整数,但 5 × 2 = 10 ≠ 3 × 2 = 6,故它不是对称设计——门槛一刀即拦下。12-3:λ4 = 1 × (24 − 4) ⁄ (8 − 4) = 5;λ3 = 5 × (24 − 3) ⁄ (8 − 3) = 21;λ2 = 21 × (24 − 2) ⁄ (8 − 2) = 77;r = 253、b = 24 × 253 ⁄ 8 = 759。12-4:Fisher 给出 b ≥ v,故 b = v − 1 不可能;又 b = v 恰是对称设计,可见「差一个块」不是小差别,而是从「绝不可能」到「可能」的分界。对 (6, 3, 2):b = 10 > v = 6,Fisher 无异议,但它仍可能是灰区样本。12-5:六个有序差给 1, 3, 2, 6, 4, 5(模 7),恰是 1, …, 6 各一次,故 λ = 1;七个平移 D + t(t = 0, …, 6)即 {0,1,3}, {1,2,4}, {2,3,5}, {3,4,6}, {4,5,0}, {5,6,1}, {6,0,2},是 Fano 平面的七条线。12-6:(22,7,2):门槛过(21 × 2 = 42 = 7 × 6),整性过(r = 7、b = 22),但 k − λ = 5 非平方 ⇒ 出局。(40,13,4):39 × 4 = 156 = 13 × 12 ✓,k − λ = 9 = 32 ✓ ⇒ 过筛。「过筛不等于存在」的意思是:三关只用了必要条件,全过只意味着「没有被拦下」,是否存在仍需构造或更深的定理。12-7:21 ≡ 3、25 ≡ 1(模 6),两者都存在 STS;21 ≡ 3(模 6)且 21 ≥ 3,故 KTS(21) 存在。12-8:错在「当且仅当」——n = 6 恰好是反例之外的特例,n = 2 平凡;正确结论是「除 2 与 6 外,任意阶都有正交对」。翻案的三篇工作是 Bose 与 Shrikhande(1959)以及 Bose、Shrikhande 与 Parker(1960)的构造(Parker 亦有独立短文),核心是造出十阶与二十二阶的正交对。12-9:自对偶与偶重保证任意两重量 8 码字的支撑交叠为偶数;配合球堆积(或 Assmus–Mattson 判据)可推出任意五点恰落一个支撑,即 λ5 = 1;块数由重量谱 A8 = 759 给出。三条路线(自对偶、轨道、构造对账)得到同一个设计。12-10:设计语言——「任意 5 个点都被 M24 送到任意 5 个点,等价地,过任意五点的八元块在群作用下彼此等同」;码语言——「重量 8 的码字中,指定 5 个位置恰有一个码字全含这 5 位,且 M24 在这族码字上传递」。12-11:点 244 823 040 ⁄ 24 = 10 200 960(= |M23|);八元块 ⁄ 759 = 322 560;sextet ⁄ 1771 = 138 240。三式皆整除,商即稳定子阶——这是轨道稳定子定理在同一个群上的三次显形。12-12:二元完美码只有 Hamming 码 [2r − 1, 2r − 1 − r, 3](t = 1)与 Golay 码 [23, 12, 7](t = 3)。验证:212 × (1 + 23 + C(23,2) + C(23,3)) = 4096 × (1 + 23 + 253 + 1771) = 4096 × 2048 = 223 ✓。之所以没有更多:三维以上的完美码要么是 Hamming 型,要么可归结为长度 23 的 Golay 码(Tietäväinen 与 Leontiev 的定理),这是完美性极苛刻的后果。
★★★ 把六章的记账法收成三行公式。
小结 · 上
① 三本账。点账:每点落 r 块,共 v 点,全部落点次为 vr;从块的角度数,b 块各含 k 点,亦为 bk,故 bk = vr。交点账:固定一点 p,它出现在 r 块中,每块内与 p 配对 k − 1 个点,共 r(k − 1) 个有序配对;而 v − 1 个其他点各被数 λ 次,故 r(k − 1) = λ(v − 1)。块账:当 b = v 时设计对称,对偶构造让「每对块」也恰好交 λ 点——这是对称设计才有的第三本账。
② 记账语言的四级跳。全册的账越记越深:一级是 2-设计(只管每对点);二级是 t-设计(管每 t 个点,λ 退化为一个序列);三级是 Witt 设计(t = 4 或 5,λ 序列一路递减到 1);四级是码(把「点落在块里」换成「位置上是 1」,于是记账变成线性代数)。每跳一级,平衡更强,存在更稀有,对称也更惊人。
③ 记账的三条纪律。其一,先算账再动手:整性检查是免费的筛子,能砍掉大部分伪参数。其二,两次数,换角度:本册几乎所有的证明都是「从点的角度数一遍,再从块的角度数一遍,两者相等」——这个动作在第一章被称作换角计数,在第六章被称作支撑与交叠,其实是同一个动作。其三,账平不等于存在:必要条件与充分条件之间隔着一片灰区,Keevash 的定理只填平了「足够大」的那一半。
与旧章的接口。Pasch 计数(第三章)是账的局部形态;Hadamard 矩阵(第二章)是账的符号化;重量计数器(第六章)是账的生成函数。三本账的语言一路变形,但每一次都仍然只是「同一份安排的两种数法」。
一句总结。一门学问能走多远,取决于它的账本能记多深。组合设计的全部力量来自一个朴素的事实:同一份安排可以从不同方向清点,而两个结果必须相等。此即「安排的艺术」的记账学。
★★★★ 三条干线,一条金线。
三条干线。账本线从五参数走到 Witt 设计,问的是「平衡能加多深」;构造线从循环基差族走到纠错码,问的是「有多少种造法」;拦截线从可除性走到 Keevash 定理,问的是「什么样的参数根本不配存在」。三条线各有一位代表性人物:账本线的 Fisher、构造线的 Singer、拦截线的 Bruck 与 Ryser。它们不是三件事:能造出来的,一定要过账;能过账的,一定要过拦截;而拦截往往正是构造的反面——同一个必要条件的两种读法。
一条金线:对称。贯穿三条干线的是群。第一章用自同构群把设计分类;第二章发现对称设计本身就是「被群追着跑」的结构(差集的平移群);第三章认出 Fano 的自同构群是 PSL(2, 7);第四章用有限域的乘法群批量生产拉丁方;第五章直接把设计的自同构群当作研究对象,造出 M11 与 M24;第六章进一步说明,码的自同构群与设计的自同构群是同一个群。设计论之所以能长出散在单群,正是因为这根金线。
存在性三重奏。全册的悬念可以压缩成三个年份。1847:Kirkman 给出第一条完整的存在定理,三元系的存在性被 v ≡ 1, 3 (mod 6) 一网打尽——从「构造」到「判据」的第一次飞跃。1971:Ray-Chaudhuri 与 Wilson 解决可分解的一般情形,女生问题在一百二十一年后收兵——从「特殊参数」到「一般参数」的飞跃。2014:Keevash 证明只要参数过筛且 v 足够大,设计必存在——从「个别判据」到「渐近完备」的飞跃。三次飞跃有一个共同点:判据都写在参数上,而不写在构造上。
三处出口。合流之后,这门学问流向三个方向。统计学:区组设计是试验设计的骨架,Fisher 与 Bose 的工作至今写在农业与临床试验的方法论里;信息科学:纠错码、量子纠错、分布式存储、秘密共享,都能看到块设计与平衡条件的影子;群论:五个 Mathieu 群加上散在单群家族,把组合安排送进了有限单群分类的最深处。一门从游戏起步的学问,最终在三个现代领域里都有座位。
一望前沿。把已知与未知并排看:已知——三元的 Steiner 系已经完全解决,可分解情形已完全解决,足够大的 v 上的一般设计已完全解决;未知——小参数的一般 S(t, k, v) 仍有大片空白,灰区参数(过筛而存亡未定)成排悬挂,大集问题、Ramsey 型问题的设计版、量子纠错的最优构造都还敞开。此外还有一个意味深长的事实:绝大多数灰区参数,人们既造不出设计,也证明不了它不存在——这正是这门学问仍然年轻的证据。
最后一次回望。本册从十五名女生的散步出发,走到二十四个点上五重平衡的宏构;从一条「每两点恰在一线上」的朴素要求出发,走到散在单群的门口。这一路上真正被反复使用的只有两样东西:一个点集和一族子集,以及「换个方向再数一遍」这条纪律。合上书时,若还能记住一句话,愿它是这一句:安排的艺术,就是平衡与对称的艺术。
★★★★ 全书一页收账,备查。
| 条目 | 内容 |
|---|---|
| BIBD 五参数 | v 点、b 块、每块 k 点、每点 r 块、每对点同块 λ 次 |
| 两条恒等式 | bk = vr;r(k − 1) = λ(v − 1) |
| 可除性筛 | r = λ(v − 1) ⁄ (k − 1)、b = vr ⁄ k 必须是正整数;t-设计要求全部 λs 为整数 |
| 关联矩阵 | N N⊤ = (r − λ)I + λJ |
| Fisher 不等式 | b ≥ v;等号即对称设计 |
| 对称必要条件 | (v − 1)λ = k(k − 1)(即 r = k);对称设计的对偶同参数,每对块交 λ 点 |
| BRC 定理 | 对称设计且 v 偶时,k − λ 必为完全平方 |
| t-设计递降 | λs = λ · C(v − s, t − s) ⁄ C(k − s, t − s),s = t, …, 1 |
| 差集 | D ⊆ ℤv,每非零差恰 λ 次 ⇒ 平移族构成对称设计 |
| 拉丁方 | N(n) ≤ n − 1,素数幂取等号;除 n = 2, 6 外 N(n) ≥ 2 |
| 存在性定理 | STS(v) ⟺ v ≡ 1, 3 (mod 6);KTS(v) ⟺ v ≡ 3 (mod 6);Keevash 2014:足够大的 v 上过筛即存在 |
| 码的基本量 | 纠 t 位 ⟺ d ≥ 2t + 1;M · Σi≤t C(n, i) ≤ 2n,等号即完美码 |
| 拦截工具 | 拦下什么 | 反例(永远不存在) |
|---|---|---|
| 可除性 | 账目不为整数者 | (10, 5, 3):r = 27 ⁄ 4 非整数 |
| Fisher 界 | 块数少于点数者 | 任何 b = v − 1 的 2-设计 |
| 对称必要条件 | (v − 1)λ ≠ k(k − 1) 的伪对称候选 | (28, 7, 2)、(52, 11, 2) |
| BRC(偶 v) | k − λ 非完全平方者 | (22, 7, 2)、(34, 12, 4)、(46, 10, 2) |
| BRC(奇 v) | 相应的二次方程无非平凡整数解者 | (43, 7, 1);六元域的射影平面 |
| 数字 | 身份(本书中出现的位置) |
|---|---|
| 7 · 168 | Fano 的点数与线数;|Aut| = 168 = |PSL(2, 7)| |
| 15 · 35 · 7 | 女生的数目;KTS(15) 的三人组总数;七个平行类 |
| 80 · 20 160 | STS(15) 的非同构类数(1917 手算);|Aut(KTS(15))| |
| 11 084 874 829 | STS(19) 的非同构类数 |
| 14 · 56 | AG(3,2) 的平面数;每个三元组恰落一块的次数总和 |
| 253 · 506 | W23 的块数(=每点落块数);5-(23,8,1) 的块数 |
| 759 · 253 · 77 · 21 · 5 · 1 | W24 的块数、每点块数、λ2、λ3、λ4、λ5 |
| 1771 · 7590 | sextet 总数(=7 × 11 × 23);把 24 点劈成三块八元组的方法数 |
| 287 661 | C(759, 2) = 11 385 + 170 016 + 106 260(交 0 / 2 / 4 点的块对数) |
| 132 · 660 | S(5,6,12) 的块数(=264 ⁄ 2);|PSL(2, 11)| |
| 244 823 040 | |M24|;点、八元块、sextet 的稳定子分别为其 24、759、1771 分之一 |
| 干线 | 路径 | 关键定理 |
|---|---|---|
| 账本线 | 五参数 → 两条恒等式 → Fisher → 对称与差集 → Steiner 系 → t-设计 → Witt 设计 | Fisher 不等式;递降恒等式 |
| 构造线 | 循环基差族 → 有限域 → 仿射与射影几何 → 拉丁方 → 群轨道 → 码 | Singer 定理;有限域构造;Bose 拟群 |
| 拦截线 | 可除性 → Fisher 界 → BRC → 灰区 → Keevash | Bruck–Ryser–Chowla;RCW 不等式 |
口诀。账先算 → 刀后砍 → 路再选 → 群收口。
最后一行。设计是一笔必须对上的账:构造是它的正面,拦截是它的反面,而对称是贯穿两面的一条金线。