相关笔记: 8.4 生成函数 | 8.6 容斥原理的应用

概览

本节系统介绍了容斥原理(Principle of Inclusion-Exclusion)的完整理论体系,这是组合数学中处理”集合并集计数”问题的核心工具。在6.1 计数基础中,我们已经学习了两个集合的容斥公式 ,本节将其推广到==任意 个有限集==的一般情形。

  • 两集合容斥公式第6章基础版
  • 三集合容斥公式
  • ==一般 集合容斥原理==:交替加减所有非空子集的交集大小
  • 证明方法:基于组合计数——每个元素恰好被计算一次
  • 公式共 项,对应 的所有非空子集
  • 核心恒等式:

一、知识结构总览

graph TB
    A["8.5 容斥原理 Inclusion-Exclusion"] --> B["两集合公式"]
    A --> C["三集合公式"]
    A --> D["一般 n 集合公式"]
    A --> E["容斥原理的证明"]
    A --> F["应用实例"]

    B --> B1["|A∪B| = |A| + |B| - |A∩B|"]
    B --> B2["与第6章衔接"]
    B --> B3["例:班级学生计数"]

    C --> C1["三集合并集公式"]
    C --> C2["推导思路:加→减→加"]
    C --> C3["例:三门语言课程"]

    D --> D1["交替加减规律"]
    D --> D2["2^n - 1 项"]
    D --> D3["例:四集合公式"]

    E --> E1["元素恰好属于 r 个集合"]
    E --> E2["被计算 C(r,m) 次"]
    E --> E3["关键恒等式 Σ(-1)^m C(r,m) = 0"]

    F --> F1["整除性问题"]
    F --> F2["补集计数"]
    F --> F3["课程选修统计"]

二、核心思想

核心思想

容斥原理的核心思想是交替补偿(alternating compensation):当我们计算多个集合的并集大小时,先简单地把所有集合的大小相加,然后减去被重复计算的交集部分,再加上被多减的三重交集部分,以此类推。这种”加-减-加-减…”的交替模式确保最终每个元素恰好被计数一次。其数学本质依赖于二项式恒等式 ),该恒等式正是二项式定理中令 的直接推论。

1. 两集合的容斥公式(回顾与衔接)

两集合容斥公式

为有限集,则

这是6.1 计数基础减法法则的直接结果。直觉上,当我们将 相加时, 中的元素被计算了两次,因此需要减去一次。

例1:离散数学课程的学生数

某离散数学课程中,每个学生主修计算机科学或数学(或两者兼修)。主修计算机科学的有 25 人,主修数学的有 13 人,同时主修两门的有 8 人。问共有多少学生?

:设 为主修计算机科学的学生集合, 为主修数学的学生集合。则

因此共有 30 名学生。

例2:不超过1000的整数中能被7或11整除的个数

为不超过1000且能被7整除的正整数集合, 为不超过1000且能被11整除的正整数集合。

因为 ,所以能同时被7和11整除的整数就是能被 整除的整数:

因此:

例3:补集计数——未选修课程的新生数

某校有 1807 名新生,其中 453 人选修计算机科学,567人选修数学,299人同时选修两门。问有多少新生两门都未选修?

:选修至少一门的人数为

因此两门都未选修的人数为

2. 三集合的容斥公式

三集合容斥公式

为有限集,则

推导思路(分步补偿法):

  1. 第一步(加) ——恰好在1个集合中的元素被计1次,恰好在2个集合中的元素被计2次,在3个集合中的元素被计3次
  2. 第二步(减):减去所有两两交集 ——恰好在1个集合中的元素仍被计1次,恰好在2个集合中的元素被计 次,但在3个集合中的元素被计
  3. 第三步(加):加上三重交集 ——所有元素现在都恰好被计1次

例4:三门语言课程

1232名学生选修了西班牙语,879名选修了法语,114名选修了俄语。其中103名同时选修西班牙语和法语,23名同时选修西班牙语和俄语,14名同时选修法语和俄语。已知2092名学生至少选修了其中一门语言,问有多少学生同时选修了三门语言?

:设 分别为选修西班牙语、法语、俄语的学生集合。代入三集合公式:

因此有7名学生同时选修了三门语言。

3. 一般 集合的容斥原理

容斥原理(The Principle of Inclusion-Exclusion)

为有限集,则

用紧凑记号表示为:

公式共有 项,对应 的所有非空子集。

容斥原理的证明

证明:我们证明并集中的每个元素恰好被右端表达式计算一次。

设元素 恰好属于 个集合()。我们需要计算该元素在右端各求和项中被计数的总次数。

  • 该元素在 中被计数 次(从它所属的 个集合中选1个)
  • 该元素在 中被计数 次(从 个集合中选2个)
  • 一般地,该元素在涉及 个集合交集的求和项中被计数

因此,该元素被计数的总次数为:

二项式定理的推论(Corollary 2 of Section 6.4),我们知道:

因此:

这说明每个元素恰好被计数一次。

例5:四集合容斥公式

对于四个集合 ,容斥原理给出:

共有 项,对应 的所有非空子集。

注意:符号规律

容斥原理中各项的符号遵循交替规律

  • 单个集合的大小:(奇数个集合的交集,
  • 两两交集的大小:(偶数个集合的交集,
  • 三重交集的大小:(奇数个集合的交集,
  • 一般地, 个集合交集的系数为

也可以等价地写为:


三、补充理解与易混淆点

补充理解

补充1:容斥原理的历史渊源与递进关系

容斥原理的思想最早可追溯到 Abraham de Moivre(1718)和 Daniel da Silva(1854)的系统性表述。其名称”Inclusion-Exclusion”反映了”先包含(inclusion)再排除(exclusion)“的操作本质。

在 Rosen 教材体系中,容斥原理经历了两个层次的递进:

  • 第一层(第6章 6.1节:仅介绍两集合情形 ,作为减法法则的特例,用于解决简单的重叠计数问题
  • 第二层(本节 8.5节):推广到==任意 个集合==的一般情形,并给出严格的组合证明,为 8.6 节的高级应用(错排、onto函数、素数计数等)奠定理论基础

这种递进设计体现了从特殊到一般的数学思维方法,也与5.1 数学归纳法的证明思想相呼应——两集合情形是归纳基础,一般 集合情形可以通过归纳法证明(见习题24)。 来源:da Silva, J. J. (1854). “Propriedades geraes da resolução d’equações binomias.” Memoirs of the Royal Academy of Sciences of Lisbon, 2, 59–76. 来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 8.5.

补充2:容斥原理与概率论的深层联系

容斥原理可以直接推广到概率论中。设 为样本空间中的事件,则

这与第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.5.

补充3:容斥原理的计算复杂度

容斥原理的公式包含 项,这意味着当 较大时,直接套用公式需要指数级计算量。在实际应用中:

  • 很大但很多交集为空时,大量项为零,实际计算量可能远小于
  • 在某些特殊结构的问题中(如8.6节的素数计数),可以利用对称性大幅简化计算
  • 对于 很大的一般情形,通常需要借助容斥原理的补集形式(见8.6节)或其他高级计数技术 来源:Stanley, R. P. (2012). Enumerative Combinatorics, Vol. 1 (2nd ed.). Cambridge University Press, Section 2.1. 来源:van Lint, J. H. & Wilson, R. M. (2001). A Course in Combinatorics (2nd ed.). Cambridge University Press, Chapter 10.

易混淆点

误区1:混淆容斥原理的加减方向

  • ❌ 认为所有项都应该相加
  • ✅ 容斥原理的核心是交替加减:单个集合加、两两交集减、三重交集加、四重交集减……
  • 记忆口诀:"奇加偶减"——奇数个集合的交集前面取正号,偶数个集合的交集前面取负号

误区2:忽略空交集的简化

  • ❌ 机械地写出所有 项,即使很多交集为空
  • ✅ 在实际计算前,应先分析哪些交集可能为空。例如,若集合两两不相交,则容斥原理退化为简单的加法:
  • 如果没有任何三个集合有公共元素,则所有三重及更高重交集均为零,公式在两两交集项即终止

误区3:与第6章容斥原理的层次混淆

  • ❌ 认为本节的容斥原理与6.1节的减法法则是完全独立的内容
  • ✅ 6.1节的减法法则 正是容斥原理在 时的特例。本节是同一原理的高级扩展,从两个集合推广到任意有限个集合
  • 理解这种递进关系有助于建立完整的知识体系

四、习题精选

习题概览

题号范围核心考点难度
1-2两集合容斥公式的基本应用
3-4实际问题中的两集合容斥(调查数据、市场报告)⭐⭐
5-6三集合容斥公式的计算(各种参数组合)⭐⭐
7-8三集合容斥的实际应用(编程语言、蔬菜偏好)⭐⭐⭐
9-12补集计数与整除性问题⭐⭐⭐
13-14整数性质(奇数/完全平方数/完全立方数)⭐⭐⭐
15-17排列中的容斥(禁止子串)⭐⭐⭐
18-19四集合容斥公式的计算⭐⭐⭐
20-21 集合容斥的项数与显式公式⭐⭐⭐
22五集合容斥的计算⭐⭐⭐⭐
23特殊条件下的六集合容斥⭐⭐⭐⭐
24-25数学归纳法证明容斥原理、概率推广⭐⭐⭐⭐
26-31概率论中的容斥应用⭐⭐⭐⭐

题1:两集合容斥的基本计算

题目

,在以下情况下 分别是多少? (a) (b) (c) (d)

题2:课程选修的容斥计数

题目

某学院有345名学生选修了微积分,212名选修了离散数学,188名同时选修了两门课程。问有多少学生至少选修了其中一门?

题3:三集合容斥计算

题目

,已知每个集合各有100个元素,且: (a) 集合两两不相交 (b) 每对集合有50个公共元素,三个集合没有公共元素 (c) 每对集合有50个公共元素,三个集合有25个公共元素 (d) 三个集合相等

题4:补集计数——整除性问题

题目

求不超过100的正整数中,既不能被5整除也不能被7整除的整数个数。

题5:用数学归纳法证明容斥原理

题目

用数学归纳法证明容斥原理。

解题思路提示

容斥原理问题的解题方法论:

  1. 识别集合:将问题中的每个条件/属性对应到一个集合
  2. 确定目标:明确要求的是并集大小还是补集大小
  3. 计算各交集:系统地计算所有必要交集的大小
  4. 代入公式:根据集合数量选择相应版本的容斥公式
  5. 检查简化:利用空交集、包含关系等特殊条件简化计算
  6. 验证结果:确保结果不超过全集大小,且非负

五、视频学习指南

视频资源

资源链接对应内容备注
Rosen 8e Section 8.5教材原文完整定义、定理与例题英文教材
TrevTutor: Inclusion-Exclusion链接容斥原理完整讲解英文,含例题
MIT 6.042J Lecture 12链接容斥原理与概率英文,MIT开放课程

六、教材原文

教材原文

“A technique for solving such counting problems was introduced in Section 6.1. In this section we will generalize the ideas introduced in that section to solve problems that require us to count the number of elements in the union of more than two sets.”

“The inclusion-exclusion principle tells us that we can count the elements in a union of n sets by adding the number of elements in the sets, then subtracting the sum of the number of elements in all intersections of two of these sets, then adding the number of elements in all intersections of three of these sets, and so on, until we reach the number of elements in the intersection of all the sets.”


参见 Wiki

高级计数技术