容斥原理

容斥原理就是在计数的时候防止重复计算,又防止漏算的一种计算技巧。

具体地,对于两个集合 \(A,B\),有:

\[|A \cup B| = |A|+|B|-|A \cap B| \]

这是容斥原理最基本的公式,将两个集合扩展到三个集合 \(A,B,C\),则有:

\[|A \cup B \cup C| = |A|+|B|+|C|-|A \cap B|-|A \cap C|-|B \cap C|+|A \cap B \cap C| \]

这是容斥原理比较广为人知的基础公式,简单推广一下,变成对于 \(n\) 个集合 \(A_1,A_2,\dots,A_n\),可以得到容斥原理的标准公式:

\[\left|\bigcup_{i = 1}^n A_i\right| = \sum_{k = 1}^n (-1)^{k-1} \sum_{1 \le s_1<s_2<\dots<s_k \le n} \left|\bigcap_{j = 1}^k A_{s_j}\right| \]

而这个公式可以应用到这种类型的题:有若干个条件,对于每个条件 \(i\),对应的满足条件的方案的集合为 \(A_i\),问有多少种方案满足其中的任意一个条件。

那如果要求满足所有条件的话方案数又该怎么求呢?

我们可以转化问题,对于每个集合 \(A_i\),它的补集 \(\complement A_i\) 称为“坏性质”,问有多少个方案同时不满足所有坏性质。

很容易发现这是好求的(其中 \(U\) 表示全集):

\[\begin{align*} \left|\bigcap_{i = 1}^n \complement A_i\right| &= |U|-\left|\bigcup_{i = 1}^n A_i\right|\\ &= \sum_{k = 0}^n (-1)^k \sum_{1 \le s_1<s_2<\dots<s_k \le n} \left|\bigcap_{j = 1}^k A_{s_j}\right| \end{align*} \]

约定当 \(k = 0\) 时,\(\left|\bigcap_{j = 1}^k A_{s_j}\right| = U\)

同时容斥原理是可以直接嵌套概率论公式的:

\[\begin{align*} P\left(\bigcup_{i = 1}^n A_i\right) &= \sum_{k = 1}^n (-1)^{k-1} \sum_{1 \le s_1<s_2<\dots<s_k \le n} P\left(\bigcap_{j = 1}^k A_{s_j}\right) \\ P\left(\bigcap_{i = 1}^n \complement A_i\right) &= \sum_{k = 0}^n (-1)^k \sum_{1 \le s_1<s_2<\dots<s_k \le n} P\left(\bigcap_{j = 1}^k A_{s_j}\right) \end{align*} \]

但前提是 \(P(U) = 1\)

posted @ 2026-07-26 10:51  林晋堃  阅读(5)  评论(0)    收藏  举报