容斥原理
字数 1461 2025-10-26 09:01:44
容斥原理
容斥原理是组合数学中一种重要的计数方法,用于计算多个有限集合的并集中元素的个数。
-
基本思想:解决“多算”与“漏算”
想象一下,你想知道两个班级A班和B班的总人数。如果你简单地将A班人数加上B班人数,那么同时属于两个班的学生(比如交换生)就被计算了两次。为了得到准确的总人数,你需要减去这部分被重复计算的学生。这就是容斥原理最朴素的思想:在求和的基数上,减去重复的部分。 -
两个集合的情况
设A和B为两个有限集合。它们的并集A ∪ B的元素个数公式为:
|A ∪ B| = |A| + |B| - |A ∩ B|
其中:|A|是集合A的元素个数。|B|是集合B的元素个数。|A ∩ B|是集合A与B的交集(即同时属于A和B的元素)的个数。- 公式含义:先将两个集合的大小相加,然后减去它们交集的大小,以修正因交集被重复计算一次而多出来的部分。
-
三个集合的情况
当集合增加到三个(A, B, C)时,情况变得复杂一些。如果我们简单地将三个集合的大小相加|A| + |B| + |C|,那么:- 每两个集合的交集(
A∩B,A∩C,B∩C)中的元素都被计算了两次。 - 三个集合的交集(
A∩B∩C)中的元素甚至被计算了三次。
如果我们直接减去所有两两交集的大小,即- (|A∩B| + |A∩C| + |B∩C|),这虽然修正了两两交集被多算一次的问题,但却导致三交集A∩B∩C被“过度修正”了——因为它最初被加了三次,现在又被减了三次(因为它包含在每一个两两交集中),结果它一次都没有被计算进去。
因此,我们需要把三交集的大小再加回来。公式如下:
|A ∪ B ∪ C| = |A| + |B| + |C| - |A∩B| - |A∩C| - |B∩C| + |A∩B∩C|
这个过程就像是在“包容”和“排斥”之间取得平衡,故名“容斥原理”。
- 每两个集合的交集(
-
一般形式(n个集合)
容斥原理可以推广到任意有限个集合的情况。设 A₁, A₂, ..., Aₙ 是 n 个有限集合。它们的并集的元素个数由以下公式给出:
|A₁ ∪ A₂ ∪ ... ∪ Aₙ| = Σ|Aᵢ| - Σ|Aᵢ ∩ Aⱼ| + Σ|Aᵢ ∩ Aⱼ ∩ Aₖ| - ... + (-1)^(n+1) |A₁ ∩ A₂ ∩ ... ∩ Aₙ|
其中:- 第一个求和符号
Σ|Aᵢ|是对所有单个集合的大小求和(1个集合的组合)。 - 第二个求和符号
Σ|Aᵢ ∩ Aⱼ|是对所有两个集合交集的大小求和(i < j,2个集合的组合)。 - 第三个求和符号
Σ|Aᵢ ∩ Aⱼ ∩ Aₖ|是对所有三个集合交集的大小求和(i < j < k,3个集合的组合)。 - 以此类推,直到最后一项,是 n 个集合的交集,符号为
(-1)^(n+1)。
这个公式的规律是:依次加上所有奇数个集合的交集大小,减去所有偶数个集合的交集大小。
- 第一个求和符号
-
核心价值与应用场景
容斥原理的强大之处在于,它经常被用来解决一些“间接”计数比“直接”计数更简单的问题。典型的应用场景包括:- 错位排列问题:求有多少种排列方式,使得每个元素都不在原来的位置上。直接计算困难,但利用容斥原理计算“至少有一个元素在正确位置”的情况则相对容易。
- 欧拉函数φ(n)的计算:计算小于正整数n且与n互质的正整数的个数。可以通过容斥原理,从总数中减去能被n的各个质因数整除的数的个数,再加回能被其两两乘积整除的数的个数,等等。