组合数学
第 1 章 · 20 分钟

计数的唯一动作:定等价与造双射

两条原理其实是同一件事的两种写法。

概念地图
定等价
数之前先说清什么算同一个对象。
深色为本章概念,浅色为其他章
陪练模式
不想只是读?让它带你走一遍。
导师把这一章拆成小步,每一步先问你,再讲;你用自己的话答,它先认下对的部分再纠偏。用你自己的 AI,对话只存在这台设备上。
对话只存在本机
定位01

延伸阅读

康托 · 十九世纪末 · 用双射定义「同样多」
把「两个集合一样大」定义成它们之间存在一一对应,而不是先数出各自的个数。他反对的是把基数当作可以先验给出的量;代价是这个定义对无穷集合给出许多反直觉结论,而组合学几乎只用它的有限情形。
奠基
十七至十八世纪的组合学传统 · 帕斯卡、伯努利、欧拉
在赌博与级数问题里积累起排列、组合与分拆的算法。他们反对的是逐个枚举;代价是各种公式长期以配方式存在,没有统一的解释。
转向
现代组合学的双射方法 · 二十世纪后半叶
主张一个恒等式的最好证明是给出两边集合之间的显式对应,而不是代数化简。这是对「算出来就行」的正面反驳,也是本课的组织原则。
修正
布鲁迪 · 《组合数学》第 5 版
本课对象。教材把两条基本原理放在最前,本课把它们合并成一件事——建立双射——并把「什么算同一个对象」提到它们之前。
本课对象
机制02

先定等价

「三个人排成一排有几种排法」这个问题,在问出口之前已经作了一个决定:三个人互不相同。若换成三张同样的白纸,答案立刻从 6 变成 1。所以计数的第一步永远不是算,而是说清什么算同一个对象——用群论的语言,就是在对象集合上取一个等价关系。本课后面每一处算错,追下去几乎都是这一步没说清。

机制一个计数问题通过先固定「什么算相同」把答案确定下来。
可迁移性测试
换到软件测试:问「有多少种测试用例」之前,必须先说清两组输入什么时候算同一个用例——按参数值还是按覆盖到的分支。不同构的地方在于测试里的等价类往往是人为约定的,而数学里的等价关系一旦写下就完全确定。
机制03

造一个双射

定好等价之后,剩下的全部工作只有一件:在这个难数的集合与某个已知大小的集合之间建立一个双射。加法原理、乘法原理、隔板法、递推、生成函数,全都是造这种对应的不同手法。把它们记成五条互不相干的公式,是这门课最常见的学法,也是最费力的学法。

机制一个难数的集合通过与一个已知大小的集合一一对应把计数问题化为已解问题。
可迁移性测试
换到库存盘点:不去逐件清点货架,而是清点入库单,前提是每张单与每件货一一对应。不同构的地方在于仓库里可能有无单的货,而数学里的双射必须证明它既不漏也不重。
推导04

两条原理都是双射的特例

这一段要证的是:加法原理与乘法原理不是两条独立的规则,它们各自是一个显式双射。

集合 有限
定理前提。无限集合上「同样多」的行为完全不同,康托的例子里部分可以与整体一一对应。
加法原理的条件:(读作「A 与 B 的交集为空」)
定理前提。去掉它公式立刻变假,第 4 章整章处理去掉之后怎么办。
乘法原理的条件:第二步的选项数不依赖第一步选了什么
定理前提。它比「两步独立」弱,但比「选项集合相同」强——只要求个数相同。
推导 · 0 / 4
推导实例05

「不交」不成立时错在哪一步

一个班有 18 人选数学、15 人选物理,问选课人数是否为 33?
先看题目有没有说这两类不交,再看推导第 1 步的那个双射还成不成立。
裂缝06

本章命题的边界

争议地形07
本书主张
计数的基础是两条原理;掌握它们再加上若干标准模型(排列组合、隔板),大部分计数问题可以拆解。
另一种看法
双射方法一线主张:把两条原理当作起点会让学习者把计数记成一批公式;应当从一开始就要求给出显式对应,这样公式是被推出来的而不是被记住的。
分歧扎在
分歧扎在「先给工具还是先给原则」这条教学决定上,而不在数学上。两边算出的结果完全相同,争的是哪种组织方式让人更少出错。
什么证据能裁决
能裁决它的是错误类型的分布:给两组学习者同一批非标准计数题,记录他们的错误。若按公式组织的一组更多犯「用错公式」的错,按双射组织的一组更多犯「对应没建对」的错,且后者的总错误率更低,双射方法的主张成立。
目前的证据把天平压向双射一侧,但证据本身很弱:现有比较多为课堂观察而非对照实验。还差的是一个把「教法」与「教师水平」分开的设计。
边界与反例08

把「先定等价」的建模承诺写成可检验的规格

要检验的建模承诺是:现实中的计数对象存在一个客观的「什么算相同」,因而计数问题有唯一答案。

去掉哪条假设:等价关系在提问时已被唯一确定
计数有唯一答案的前提;等价关系不唯一时,同一句话对应多个不同的问题。
该情形下的具体反例:「这段代码有多少条执行路径」在按分支与按语句两种口径下答案相差数倍
两个答案都对,对应的是两个不同的等价关系。
这条承诺对应的可观测量:多位独立分析者对同一问题给出的计数结果
必须是同一句自然语言问题,不预先统一口径。
什么观测算它不成立:结果的离散程度超过事前登记的阈值,且分歧可归因于等价关系而非算错
两个条件缺一不可;算错不构成反例。
事前登记的失败条件:离散度超阈值且分歧源于口径,或分析者报告的等价关系彼此不同
两者都按承诺不成立处理。
推导 · 0 / 3
接口09
挂在哪个槽位
挂在哪个槽位你已有的那条结论多半是「数东西要仔细」——一条关于计数出错原因的判断。本章要动的正是它对原因的归因。
本章对你已有的结构做的是 (a) 替换「数错是因为不仔细」这条结论,还是 (b) 约束它:只在等价关系已定的情况下才是不仔细?
慢变量登记两个慢变量:你最近做过的统计里有几次写下了等价关系,以及有几次两个人数出了不同的结果。三天后先看第二个。
小结10
本章小结
01计数的第一步是定等价,不是算;换一个「相同」就是换一个问题。
02加法原理与乘法原理各自是一个显式双射,不是两条独立规则。
03加法原理的全部条件是不交,乘法原理的全部条件是后一步选项数不依赖前一步。
04公式出错时回到对应的双射,看坏的是单射性还是满射性。
05唯一承担观测风险的是「现实问题里那两个条件成立」,不是任何定理。
提取练习 · 合上书,先自己答一遍。
?「不交并的大小等于两部分之和」是 (a) 由定义得到的 还是 (b) 关于现实的建模承诺?
?「先取 a 再取比 a 大的数」不能用乘法原理,失效的是 (a) 不交条件 还是 (b) 选项数不依赖前一步?
受迫二选一11

A 机制辨识

下面哪一条是机制?
二选一
受迫二选一12

C 裂缝定位

哪个情境下本章框架会给出自信而错误的答案?
二选一
读到这里,把它记为已读。