相关笔记: 8.5 容斥原理 | 第09章 关系 — 章节汇总
概览
本节展示了容斥原理在若干经典组合计数问题中的强大应用能力。核心应用包括:容斥原理的补集形式(计算不具有任何性质的元素数)、埃拉托斯特尼筛法(素数计数)、onto 函数的计数、错排问题(derangement)以及==欧拉函数 == 的计算。
- 容斥原理的补集形式:
- 埃拉托斯特尼筛法:用容斥原理计算不超过 的素数个数
- onto 函数计数定理:从 元集到 元集的 onto 函数有 个
- 错排公式:,且
- 欧拉函数: 等于不超过 且与 互素的正整数个数
- 跨章关联:第二类Stirling数 、概率论、数论
一、知识结构总览
graph TB A["8.6 容斥原理的应用"] --> B["补集形式"] A --> C["埃拉托斯特尼筛法"] A --> D["onto函数计数"] A --> E["错排问题 Derangement"] A --> F["欧拉函数"] A --> G["组合恒等式"] B --> B1["N(P1'...Pn') 公式"] B --> B2["方程约束解的计数"] B --> B3["例:x1+x2+x3=11"] C --> C1["不超过n的素数计数"] C --> C2["筛除合数因子"] C --> C3["例:100以内素数=25"] D --> D1["Theorem 1: onto函数公式"] D --> D2["与Stirling数的关系"] D --> D3["例:工作分配"] E --> E1["Dn 的定义"] E --> E2["Theorem 2: 错排公式"] E --> E3["帽子检查问题"] E --> E4["极限 1/e"] E --> E5["递推关系"] F --> F1["φ(n) 的定义"] F --> F2["积性函数性质"] F --> F3["容斥原理计算"] G --> G1["n! = ΣC(n,k)Dk"] G --> G2["Stirling数公式推导"]
二、核心思想
核心思想
本节的核心思想是容斥原理的补集形式(alternative form):在很多计数问题中,我们需要的不是”具有至少一个性质的元素数”(即并集大小),而是”不具有任何性质的元素数”(即补集大小)。通过 ,我们可以将容斥原理转化为补集计数工具。这一转化是本节所有应用的基础——无论是计算方程约束解的个数、素数的个数、onto函数的个数,还是错排的个数,本质上都是在问”不具有某种’坏’性质的元素有多少个”。
1. 容斥原理的补集形式
容斥原理的补集形式
设 为全集中的元素总数, 为 个性质。令 表示同时具有性质 的元素个数, 表示不具有任何性质的元素个数。则
直觉理解:从总数中减去具有至少一个性质的元素数(由容斥原理计算),剩下的就是不具有任何性质的元素数。
例1:带约束的方程解的计数
求方程 的非负整数解的个数,其中 ,,。
解:定义性质: 为 (即 ), 为 (即 ), 为 (即 )。
我们需要求 ,即不满足任何”越界”性质的解的个数。
利用第6章 6.5节的”方程非负整数解”方法(等价于”将11个不可区分的球放入3个可区分的盒子”),令 进行变量替换:
- (总解数)
- ():令 ,则 ,解数
- ():令 ,则 ,解数
- ():令 ,则 ,解数
- ():,解数
- ():,解数
- ():,解数
- :解数
代入补集形式公式:
2. 埃拉托斯特尼筛法(Sieve of Eratosthenes)
用容斥原理计数素数
第4章介绍了埃拉托斯特尼筛法,本节用容斥原理给出其数学基础。
核心思想:不超过 的合数必有一个不超过 的素因子。因此,不超过 的素数 = 不超过 的素数 + 大于1且不超过 且不被任何不超过 的素数整除的整数。
例:计算不超过100的素数个数
不超过 的素数为 2, 3, 5, 7。定义性质:
- :被2整除,:被3整除,:被5整除,:被7整除
大于1且不超过100的整数共99个。由补集形式:
因此不超过100的素数共有 个。
3. onto 函数的计数
onto 函数计数定理(Theorem 1)
设 和 为正整数且 。则从 元集到 元集的onto 函数共有
个。
证明思路:设到达域为 。定义性质 为” 不在函数的值域中”。一个函数是 onto 的当且仅当它不具有任何性质 。
- 总函数数
- (值域中不含 ,每个自变量有 个选择),共有 个这样的项
- (值域中不含 和 ),共有 个这样的项
- 一般地,,共有 个这样的项
代入补集形式即得公式。
例2:从6元集到3元集的onto函数
例3:工作分配问题
将5个不同的工作分配给4个不同的员工,要求每个员工至少分到一个工作。这等价于求从5元集(工作集)到4元集(员工集)的onto函数数:
onto函数与第二类Stirling数的关系
从 元集到 元集的onto函数数等于 ,其中 是第二类Stirling数。
直觉解释:将 个可区分的球放入 个不可区分的非空盒子有 种方式,再对 个盒子赋予标签(排列)有 种方式,因此onto函数数 。
由此可以反推Stirling数的公式:
4. 错排问题(Derangements)
错排(Derangement)
错排是 的一种排列,其中没有任何元素留在其原始位置上。用 表示 个元素的错排数。
例:排列 是 的错排(没有数字在原位),但 不是(4留在原位)。
小规模验证:,错排为 和 。
错排公式(Theorem 2)
个元素的错排数为
证明:
设性质 为”排列固定了元素 ”()。错排数就是不具有任何性质 的排列数:
由容斥原理的补集形式:
逐项计算:
- (总排列数)
- (固定第 个位置,其余 个位置任意排列),共有 个这样的项
- (固定第 和第 个位置),共有 个这样的项
- 一般地,,共有 个这样的项
代入得:
利用 ,化简得:
例4:帽子检查问题(The Hatcheck Problem)
一位新员工负责检查餐厅顾客的帽子,但忘记在帽子上做标记。当顾客取回帽子时,检查员从剩余帽子中随机分配。问没有人拿到自己帽子的概率是多少?
解:该概率为 ,由错排公式:
2 3 4 5 6 7 0.50000 0.33333 0.37500 0.36667 0.36806 0.36786
错排概率的极限
由微积分中的指数函数展开式 ,令 得
由于这是一个各项趋于零的交错级数,当 增大时,错排概率收敛于 。事实上,该概率与 的误差不超过 。
这意味着无论有多少人,没有人拿到自己帽子的概率大约都是 36.8%,这是一个非常优美的结果。
错排的递推关系
错排数 满足递推关系:
初始条件:,。
组合证明:考虑 个元素的错排中第1个元素的位置。它不能在位置1,所以它可以在位置 中的任意一个,共 种选择。假设第1个元素放在位置 :
- 情况1:第 个元素放在位置1(两个元素交换),则剩余 个元素需要错排,有 种方式
- 情况2:第 个元素不放在位置1,则元素 (除第1个外)在位置 中需要形成错排(其中位置1现在”属于”第 个元素),有 种方式
因此 。
错排的另一递推形式
这可以由显式公式直接验证,也可以由前一递推关系推导。
5. 欧拉函数
欧拉函数(Euler's Totient Function)
用容斥原理计算欧拉函数
设 为 的素因子分解。定义性质 为”整数能被 整除”()。则
利用乘法公式,可以化简为:
推导:不超过 且能被 整除的整数有 个(因为 是这些素数的幂的乘积,所以整除)。代入容斥原理的补集形式,再因式分解即得乘积公式。
计算欧拉函数的例子
验证:不超过12且与12互素的正整数为 1, 5, 7, 11,共4个。
验证:1, 7, 11, 13, 17, 19, 23, 29,共8个。
- ( 为不同素数)
6. 容斥原理在组合恒等式中的应用
全排列的错排分解
个元素的全排列可以按”恰好固定了 个元素”来分类:
其中 是 个元素的错排数。
直觉解释:从 个元素中选 个固定位置(有 种选法),其余 个元素形成错排(有 种方式)。对所有 求和即得全排列数 。
这一恒等式将排列计数与错排计数联系起来,是容斥原理思想的自然推论。
三、补充理解与易混淆点
补充理解
补充1:错排问题的历史——Montmort 的邂逅问题
错排问题有着悠久的历史。1708年,法国数学家 Pierre Raymond de Montmort (1678-1719) 在研究一种叫做”rencontres(邂逅)“的法国纸牌游戏时提出了这个问题:将两副52张的牌分别排成一行,求没有一张牌在同一位置匹配的概率。这个概率正是 ,由错排公式可知其近似值为 。
错排问题也被称为”derangement problem”或”probleme des rencontres”,是组合数学中最经典的计数问题之一。其解法的优美之处在于:尽管问题看似复杂,但最终的概率竟然趋近于一个与 无关的常数 ,这深刻地揭示了离散数学与连续数学(微积分)之间的内在联系。 来源:Montmort, P. R. de (1708). Essay d’Analyse sur les Jeux de Hazard. Paris: Quillau. 来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 8.6.
补充2:容斥原理与第二类Stirling数的深层联系
由 onto 函数计数定理,我们知道:
这给出了第二类Stirling数的一个显式公式:
这一公式在组合数学中极其重要,它将”将 个可区分的球放入 个不可区分的非空盒子”这个看似困难的计数问题,转化为一个可以直接计算的代数表达式。这也解释了为什么第6章在介绍Stirling数时只给出了递推定义而没有给出闭式公式——闭式公式的推导需要容斥原理这一更高级的工具。 来源:Graham, R. L., Knuth, D. E. & Patashnik, O. (1994). Concrete Mathematics (2nd ed.), Addison-Wesley, Section 6.1. 来源:Knuth, D. E. (1997). The Art of Computer Programming, Vol. 3: Sorting and Searching (2nd ed.), Addison-Wesley, Section 5.1.2.
补充3:容斥原理在概率论中的应用
容斥原理的补集形式可以直接推广到概率论中。设 为样本空间中的事件,则
这与第7章中讨论的事件概率公式一致。帽子检查问题的解正是这一推广的直接应用:。当 较大时,这个概率接近 ,这一结果在实际应用中(如随机排序、密码学中的置换分析)有重要意义。 来源:Feller, W. (1968). An Introduction to Probability Theory and Its Applications, Vol. 1 (3rd ed.). Wiley, Chapter IV. 来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 8.6.
易混淆点
误区1:混淆"至少一个固定"与"恰好一个固定"
- ❌ 认为错排公式给出的是”恰好一个元素在原位”的排列数
- ✅ 错排 是”没有任何元素在原位”的排列数
- “恰好 个元素在原位”的排列数为 (先选 个固定,其余错排)
- “至少一个元素在原位”的排列数为
误区2:onto函数公式中 与 的混淆
- ❌ 写成 (这是”值域恰好有 个元素”的函数数的错误公式)
- ✅ onto函数公式中是 ,含义是”从到达域中排除 个元素后,每个自变量有 个选择”
- 直觉: 表示值域中不包含指定的 个元素
误区3:欧拉函数 的计算范围
- ❌ 认为 计算的是不超过 的素数个数
- ✅ 计算的是不超过 且与 互素的正整数个数(包括1,但不一定都是素数)
- 例如 ,对应的整数是 1, 5, 7, 11,其中1不是素数
- 不超过 的素数个数记为 (素数计数函数),与欧拉函数是不同的概念
四、习题精选
习题概览
题号范围 核心考点 难度 1-2 补集形式的基本应用(苹果、登山申请) ⭐⭐ 3-4 带约束的方程解计数 ⭐⭐⭐ 5-7 素数计数、无平方因子数、高次幂 ⭐⭐⭐ 8-10 onto函数计数与分配问题 ⭐⭐⭐ 11-12 带附加约束的工作分配 ⭐⭐⭐⭐ 13-14 错排的计算与概率 ⭐⭐⭐ 15-17 错排的变体(信封、座位、偶数位) ⭐⭐⭐⭐ 18-19 错排的递推关系与显式公式 ⭐⭐⭐⭐ 20-21 错排的奇偶性与显式推导 ⭐⭐⭐⭐ 22-23 欧拉函数 的计算 ⭐⭐⭐⭐ 24-27 组合恒等式与全排列分解 ⭐⭐⭐⭐
题1:补集形式的基本应用
题目
一筐100个苹果中,20个有虫,15个有碰伤。只有既无虫又无碰伤的苹果才能出售。如果有10个苹果同时有虫和碰伤,问这筐苹果中有多少个可以出售?
解答
设 为有虫的苹果集合, 为有碰伤的苹果集合。
有虫或有碰伤的苹果数:
因此可以出售的苹果数为 个。
题2:带约束的方程解计数
题目
方程 有多少非负整数解,其中 均小于6?
解答
定义性质: 为 , 为 , 为 。
- :令 ,,解数
- 同理
- :,解数
- 同理
- :,解数
题3:onto函数计数
题目
从7元集到5元集有多少个onto函数?
解答
由onto函数计数定理:
题4:错排的计算
题目
求7个元素的错排数 。
解答
由错排公式:
也可以用递推关系验证:,,则 。
题5:欧拉函数的计算
题目
设 和 为不同的素数,用容斥原理求不超过 且与 互素的正整数个数 。
解答
定义性质: 为”能被 整除”, 为”能被 整除”。
不超过 的正整数共 个。
- (能被 整除)
- (能被 整除)
- (能被 整除,即 本身)
由容斥原理的补集形式:
这与乘积公式 一致。
解题思路提示
容斥原理应用问题的解题方法论:
- 识别性质:将”不希望发生的情况”定义为性质
- 确定目标:明确求的是 (补集形式)
- 计算各 :利用方程解计数、整除性等工具
- 代入公式:注意交替加减的符号
- 特殊技巧:
- onto函数:
- 错排:
- 欧拉函数:
五、视频学习指南
视频资源
六、教材原文
教材原文
“Many counting problems can be solved using the principle of inclusion-exclusion. For instance, we can use this principle to find the number of primes less than a positive integer. Many problems can be solved by counting the number of onto functions from one finite set to another.”
“A derangement is a permutation of objects that leaves no object in its original position. The well-known hatcheck problem can be solved using the principle of inclusion-exclusion. This problem asks for the probability that no person is given the correct hat back by a hatcheck person who gives the hats back randomly.”
“By the identity for all real numbers (from calculus), we know that .”