容斥原理
容斥原理就是在计数的时候防止重复计算,又防止漏算的一种计算技巧。
具体地,对于两个集合 \(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\)。

浙公网安备 33010602011771号