容斥原理

info

若无特殊说明,本章涉及的变量皆为正整数.

简介 #

容斥原理是一种不重不漏的计数原理.

例,$A,B,C$ 三人竞选扫黄队长:

  • $15$ 人投给 $A$
  • $16$ 人投给 $B$
  • $17$ 人投给 $C$
  • $2$ 人同时投给 $A,B,C$
  • $4$ 人同时投给 $A,B$
  • $5$ 人同时投给 $A,C$
  • $6$ 人同时投给 $B,C$

问共有多少人参与投票.

$A,B,C$ 三人的得票情况以用韦恩图描述:

  • $|A|=15$
  • $|B|=16$
  • $|C|=17$
  • $|A∩B∩C|=2$
  • $|A∩B|=4$
  • $|A∩C|=5$
  • $|B∩C|=6$

求的是投票人数,即 $|A∪B∪C|$.

$$|A∪B∪C|=|A|+|B|+|C|-|A∩B|-|A∩C|-|B∩C|+|A∩B∩C|$$

将上述问题推广到普遍情况,就是容斥原理.

公式 #

并集 #

对于 $n$ 个集合 $S_1,S_2\cdots S_n$,$|S|$ 表示集合 $S$ 的元素数,则:

$$\left|\bigcup_{i=1}^nS_i\right|=\sum_i|S_i|-\sum_{i < j}|S_i∩S_j|+\sum_{i < j < k}|S_i∩S_j∩S_k|-\cdots+(-1)^{n+1}\left|\bigcap_{i=1}^nS_i\right|$$

证明

设 $x\in S_{a_1},S_{a_2},\cdots,S_{a_m}$,根据公式,$\left|\bigcup_{i=1}^nS_i\right|$ 中包含元素 $x$ 的个数为:

$$cnt(x)=m-{m\choose 2}+{m\choose 3}-\cdots+(-1)^{n+1}{m\choose m}={m\choose 0}-\sum_{i=0}^m(-1)^i{m\choose i}$$

根据 二项式定理 有:

$$(1-1)^m=\sum_{i=0}^m{m\choose i}1^{m-i}\cdot(-1^i)=\sum_{i=0}^m(-1)^i{m\choose i}$$

$$∴cnt(x)={m\choose 0}-(1-1)^m=1$$

每个元素只出现一次,等价于并集,证毕.

交集 #

对于 $n$ 个集合 $S_1,S_2\cdots S_n$,已知全集为 $U$:

$$\left|\bigcap_{i=1}^nS_i\right|=|U|-\left|\bigcup_{i=1}^n\overline{S_i}\right|$$

其中 $\left|\bigcup_{i=1}^n\overline{S_i}\right|$ 套用 并集 的公式计算即可.

多重集的排列数 #

info

普通集合:不允许有相同的元素.

多重集:相同的元素可以出现多次.

设 $S=\{n_1\cdot a_1,n_2\cdot a_2,\cdots,n_k\cdot a_k\}$ 是由 $n_1$ 个 $a_1$,$n_2$ 个 $a_2$,$\cdots$,$n_k$ 个 $a_k$ 组成的多重集. 设 $ n=\sum_{i=1}^kn_i$. $S$ 的全排列个数为:

$$\frac{n!}{n_1!n_2!\cdots n_k!}$$

证明

$n$ 个不同元素的全排列有 $n!$ 种.

若有 $j$ 个元素相同,则 $n!$ 种排列中有 $j!$ 种排列应算作同一种. 排列数为:

$$\dfrac{n}{j!}$$

根据 乘法原理,多重集的全排列个数为:

$$\frac{n!}{n_1!n_2!\cdots n_k!}$$

多重集的组合数 1 #

设 $S=\{∞\cdot a_1,∞\cdot a_2,\cdots,∞\cdot a_k\}$,从 $S$ 中任取 $λ$ 个元素的方案数为:

$${k+λ-1\choose k-1}$$

证明

原问题等价于求以下方程非负整数解的个数:

$$x_1+x_2+\cdots+x_k=λ$$

解的个数用插板法计算:

在 $λ$ 个 $1$ 之间插 $k-1$ 块板,使其分为 $k$ 个区间. 第 $i$ 个区间的和代表 $x_i$. 这样就构造出了一组解.

需要注意,板插在两端或同一个空隙中是允许的.

最初有 $λ+1$ 个空隙. 插第一块板有 $λ+1$ 种方法,第二块有 $λ+2$ 种,第三块有 $λ+3$ 种 $\cdots$ 第 $k-1$ 块有 $λ+k-1$ 种. 根据 乘法原理,总的方案数为:

$$(λ+1)(λ+2)(λ+3)\cdots(λ+k-1)=A_{λ+k-1}^{k-1}$$

但是插板的顺序与答案无关. 这么算显然会包含一些重复情况:

每一个方案都有 $(k-1)!$ 种不同的插板顺序,故答案为:

$$\dfrac{A_{λ+k-1}^{k-1}}{(k-1)!}={k+λ-1\choose k-1}$$

多重集的组合数 2 #

设 $S=\{n_1\cdot a_1,n_2\cdot a_2,\cdots,n_k\cdot a_k\}$,从 $S$ 中任取 $λ(λ≤\sum_in_i)$ 个元素的方案数为:

$${k+λ-1\choose k-1}-\sum_i{k+λ-n_i-2\choose k-1}+\sum_{i < j}{k+λ-n_i-n_j-3\choose k-1}-\cdots+(-1)^k{k+λ-\sum_in_i-k-1\choose k-1}$$

证明

考虑容斥原理:

合法方案数 $=$ 总方案数 $-$ 不合法方案数

总方案数 $={k+λ-1\choose k-1}$,详见 多重集的组合数 1.

于是问题转化为求不合法方案数.

  • 设 $T_i$ 为 $a_i$ 超标的多重集. 先取 $n_i+1$ 个 $a_i$,再任取 $λ-n_i-1$ 个元素,加入 $T_i$. 不同 $T_i$ 的数量为 ${k+λ-n_i-2\choose k-1}$.

  • 设 $T_{ij}$ 为 $a_i,a_j$ 超标的多重集. 先取 $n_i+1$ 个 $a_i$ 和 $n_j+1$ 个 $a_j$,再任取 $λ-n_i-n_j-2$ 个元素,加入 $T_{ij}$. 不同 $T_{ij}$ 的数量为 ${k+λ-n_i-n_j-3\choose k-1}$.

依次类推,由容斥原理可得,不合法的方案数为:

$$\left|\bigcup\{T\}\right|=\sum_i{k+λ-n_i-2\choose k-1}-\sum_{i < j}{k+λ-n_i-n_j-3\choose k-1}+\cdots+(-1)^{k+1}{k+λ-\sum_in_i-k-1\choose k-1}$$

于是合法的方案数为:

$${k+λ-1\choose k-1}-\left|\bigcup\{T\}\right|$$