容斥原理
设S_1,S_2,…,S_n为有限集合,
∣
S
∣
\left\vert\\{S}\right\vert
∣S∣表示集合S的大小,则:
∣
⋃
i
=
1
n
S
i
∣
=
∑
i
=
1
n
∣
S
i
∣
−
∑
1
≤
i
<
j
≤
n
∣
S
i
∩
S
j
∣
+
∑
1
≤
i
<
j
<
k
≤
n
∣
S
i
∩
S
j
∩
S
k
∣
+
⋯
\left\vert\bigcup_{i=1}^nS_i\right\vert=\sum_{i=1}^n\left\vert\\ S_i \right\vert-\sum_{1\le i<j\le n}\left\vert\\ S_i\cap S_j \right\vert+\sum_{1\le i<j<k\le n}\left\vert\\ S_i\cap S_j\cap S_k \right\vert+\cdots
∣∣∣∣∣i=1⋃nSi∣∣∣∣∣=i=1∑n∣Si∣−1≤i<j≤n∑∣Si∩Sj∣+1≤i<j<k≤n∑∣Si∩Sj∩Sk∣+⋯
+ ( − 1 ) n + 1 ∣ S 1 ∩ S 2 ∩ . . . . ∩ S n ∣ +(-1)^{n+1}\left\vert\\ S_1\cap S_2\cap ....\cap S_n\right\vert +(−1)n+1∣S1∩S2∩....∩Sn∣
两个字:去重
用文氏图(Venn图)表示就很简单明了了:
多重集的组合数
设 S = { n 1 ⋅ a 1 , n 2 ⋅ a 2 , n 3 ⋅ a 3 , ⋯   , n k ⋅ a k } S=\begin{Bmatrix}n_1\cdot a_1,n_2\cdot a_2,n_3\cdot a_3,\cdots,n_k\cdot a_k\end{Bmatrix} S={n1⋅a1,n2⋅a2,n3⋅a3,⋯,nk⋅ak}是由 n 1 n_1 n1个 a 1 a_1 a1, n 2 n_2 n2个 a 2 a_2 a2, ⋯ \cdots ⋯, n k n_k nk个 a k a_k ak组成的多重集。设 n = ∑ i = 1 k n i n=\sum_{i=1}^kn_i n=∑i=1kni,对于任意整数 r ≤ n r\le n r≤n,从S中取出r个元素组成一个多重集(不考虑顺序),产生的不同多重集的数量为:
C k + r − 1 k − 1 − ∑ i = 1 k C k + r − n i − 2 + ∑ 1 ≤ i < j ≤ k C k + r − n i − n j − 3 k − 1 − ⋯ + ( − 1 ) k C k + r − ∑ i = 1 k n i − ( k + 1 ) k C_{k+r-1}^{k-1}-\sum_{i=1}^kC_{k+r-n_i-2}+\sum_{1\le i<j\le k}C^{k-1}_{k+r-n_i-n_j-3}-\cdots+(-1)^kC_{k+r-\sum_{i=1}^{k}n_i-(k+1)}^k Ck+r−1k−1−i=1∑kCk+r−ni−2+1≤i<j≤k∑Ck+r−ni−nj−3k−1−⋯+(−1)kCk+r−∑i=1kni−(k+1)k
证明:
不考虑
n
i
n_i
ni的限制,从S中任选r个元素,相当于从多重集
{
∞
⋅
a
1
,
∞
⋅
a
2
,
⋯
 
,
∞
⋅
a
k
}
\begin{Bmatrix}\infty\cdot a_1,\infty\cdot a_2,\cdots,\infty\cdot a_k\end{Bmatrix}
{∞⋅a1,∞⋅a2,⋯,∞⋅ak}中取出r个元素,根据组合计数的讨论,方案数为
C
k
+
r
−
1
k
−
1
C_{k+r-1}^{k-1}
Ck+r−1k−1.
设 S i ( 1 ≤ i ≤ k ) S_i(1\le i \le k) Si(1≤i≤k)表示至少包含 n i + 1 n_i+1 ni+1个a_i的多重集。我们先从S中取出 n i + 1 n_i+1 ni+1个 a i a_i ai,然后再任选 r − n i − 1 r-n_i-1 r−ni−1个元素,即可构成 S i S_i Si。与上面同理,可以构成不同 S i S_i Si的数量为 C k + r − n i − 2 k − 1 C_{k+r-n_i-2}^{k-1} Ck+r−ni−2k−1.
进一步地,先从S中取出
n
i
+
1
n_i+1
ni+1个
a
i
a_i
ai和
n
j
+
1
n_j+1
nj+1个
a
j
a_j
aj,然后再任选
r
−
n
i
−
n
j
−
2
r-n_i-n_j-2
r−ni−nj−2个元素,即可构成
S
i
∩
S
j
S_i\cap S_j
Si∩Sj,方案数为:
C
k
+
r
−
n
i
−
n
j
−
3
k
−
1
C^{k-1}_{k+r-n_i-n_j-3}
Ck+r−ni−nj−3k−1
根据容斥原理,至少有一种
a
i
a_i
ai选取的数量超过
n
i
n_i
ni限制的多重集共有:
∣
⋃
i
=
1
k
S
i
∣
=
∑
i
=
1
k
C
k
+
r
−
n
i
−
2
−
∑
1
≤
i
<
j
≤
k
C
k
+
r
−
n
i
−
n
j
−
3
k
−
1
+
⋯
+
(
−
1
)
k
+
1
C
k
+
r
−
∑
i
=
1
k
n
i
−
(
k
+
1
)
k
\left\vert\\\bigcup_{i=1}^kS_i\right\vert=\sum_{i=1}^kC_{k+r-n_i-2}-\sum_{1\le i<j\le k}C^{k-1}_{k+r-n_i-n_j-3}+\cdots+(-1)^{k+1}C_{k+r-\sum_{i=1}^{k}n_i-(k+1)}^k
∣∣∣∣∣i=1⋃kSi∣∣∣∣∣=i=1∑kCk+r−ni−2−1≤i<j≤k∑Ck+r−ni−nj−3k−1+⋯+(−1)k+1Ck+r−∑i=1kni−(k+1)k
故满足所有限制的合法多重集共有 C k + r − 1 k − 1 − ∣ ⋃ i = 1 k S i ∣ C_{k+r-1}^{k-1}-\left\vert\\\bigcup_{i=1}^kS_i\right\vert Ck+r−1k−1−∣∣∣⋃i=1kSi∣∣∣个,(也可以用文氏图简单明了的得到)两式相减即得原命题。
证毕。