容斥与反演
容斥
容斥原理
用于不重不漏地【表达/转化】某集合
广义容斥:合法方案数 = 总方案数 - 不合法方案数
狭义容斥:
\[\left|\bigcup_{i = 1}^{n}S_i\right|=\sum_{x = 1}^{n}(-1)^{x - 1}\sum_{i_1<i_2<\cdots <i_x}\left|\bigcap_{j = 1}^{x}S_{i_j}\right|
\]
我们来证明一下容斥系数为什么是 \((-1)^{x - 1}\)
一个被n个集合包含的元素,那么它的容斥系数之和为:
\[\sum_{i = 1}^{n}(-1)^{i - 1}\binom{n}{i}=\binom{n}{0}-\sum_{i = 0}^{n}(-1)^{i}\binom{n}{i}=1
\]
Min-Max容斥
\[\max(S)=\sum_{T\subseteq S}(-1)^{|T|-1}\min(T)\\
\min(S)=\sum_{T\subseteq S}(-1)^{|T|-1}\max(T)
\]
其中 max(S) 表示集合 S 中所有元素的最大值。
证明:对于第k+1大的元素,有k个比它小的集合。以它为最小值的,大小为 i 的集合有 \(\binom k{i-1}\) 个,所以它的统计次数为:
\[\sum_{i = 1}^{k + 1}\binom{k}{i - 1}(-1)^{i - 1}=\sum_{i = 0}^{k}\binom{k}{i}(-1)^{i}=[k = 0]
\]
推广到求第 k 大的元素:
\[\mathrm{kthmax}(S)=\sum_{T\subseteq S}(-1)^{|T|-k}\binom{|T|-1}{k - 1}\min(T)\\
\mathrm{kthmin}(S)=\sum_{T\subseteq S}(-1)^{|T|-k}\binom{|T|-1}{k - 1}\max(T)
\]
其中 kthmax(S) 表示集合 S 中所有元素的第 k 大值。证明与上面的类似。
min-max容斥还有很好的期望意义,这是min-max容斥得以广泛使用的重要原因:
\[E(\max(S))=\sum_{T\subseteq S}(-1)^{|T|-1}E(\min(T))\\
E(\min(S))=\sum_{T\subseteq S}(-1)^{|T|-1}E(\max(T))\\
E(\mathrm{kthmax}(S))=\sum_{T\subseteq S}(-1)^{|T|-k}\binom{|T|-1}{k - 1}E(\min(T))\\
E(\mathrm{kthmin}(S))=\sum_{T\subseteq S}(-1)^{|T|-k}\binom{|T|-1}{k - 1}E(\max(T))
\]
反演
反演的本质就是容斥。
我们从一下几种常见的反演来讲:
二项式反演
\[f(n)=\sum_{i = 0}^{n}\binom{n}{i}g(i)\Leftrightarrow g(n)=\sum_{i = 0}^{n}(-1)^{n - i}\binom{n}{i}f(i)\\
f(n)=\sum_{i = n}^{m}\binom{i}{n}g(i)\Leftrightarrow g(n)=\sum_{i = n}^{m}(-1)^{i - n}\binom{i}{n}f(i)
\]
因为第二个式子可以由第一个式子推出,所以我们先证明第一个。
组合意义证明
记\(f_n\)表示恰好使用n个不同元素形成特定结构的方案数,\(g_n\)表示从n个不同元素中选出若干个元素形成特定结构的总方案数。
于是有:\(g_n = \sum^n_{i=0}\binom{n}{i}f_i\)
使用容斥原理,可以得到:\(f_n = \sum^n_{i=0}(-1)^{n-i}\binom nmg_i\)
这个因该很好感性理解,下面是严谨证明$\downarrow $
代数证明:(某知名竞赛教练在白板上的珍贵推导过程)
例:例题
我们用矩阵描述这一过程:
\[\underbrace{
\begin{pmatrix}
\binom{0}{0} & 0 & \cdots & 0 \\
\binom{1}{0} & \binom{1}{1} & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
\binom{n}{0} & \binom{n}{1} & \cdots & \binom{n}{n}
\end{pmatrix}
}_{\boldsymbol{A}}
\begin{pmatrix}
f_0 \\
f_1 \\
\vdots \\
f_n
\end{pmatrix}
=
\begin{pmatrix}
g_0 \\
g_1 \\
\vdots \\
g_n
\end{pmatrix}
\Leftrightarrow
\]
\[\underbrace{
\begin{pmatrix}
\binom{0}{0} & 0 & \cdots & 0 \\
-\binom{1}{0} & \binom{1}{1} & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
(-1)^n\binom{n}{0} & (-1)^{n - 1}\binom{n}{1} & \cdots & \binom{n}{n}
\end{pmatrix}
}_{\boldsymbol{B}}
\begin{pmatrix}
g_0 \\
g_1 \\
\vdots \\
g_n
\end{pmatrix}=
\begin{pmatrix}
f_0 \\
f_1 \\
\vdots \\
f_n
\end{pmatrix}
\]
刚才给出的证明等价于证明A·B=I。
将A和B转置(延对角线翻着)之后得到的矩阵仍然是互逆的.
所以 \(g_m = \sum_{i = m}^{n} \binom{i}{m} f_i \Longleftrightarrow f_m = \sum_{i = m}^{n} (-1)^{i - m} \binom{i}{m} g_i\)
子集反演
\[f(S)=\sum_{T\subseteq S}g(T)\Longleftrightarrow g(S)=\sum_{T\subseteq S}(-1)^{|S|-|T|}f(T)\\
f(S)=\sum_{S\subseteq T}g(T)\Longleftrightarrow g(S)=\sum_{S\subseteq T}(-1)^{|T|-|S|}f(T)
\]
第二个式子由第一个式子取补得到。
而对于第一个式子的证明,我们选择讲左式代入右式:
\[g(S) = \sum_{T\subseteq S}(-1)^{|S|-|T|}\sum_{X\subseteq T}g(X)=\sum_{X\subseteq S}g(X)\sum_{X\subseteq T\subseteq S}(-1)^{|S|-|T|}
\]
改为枚举集合T的大小:
\[\begin{align*}
\text{上式}&=\sum_{X\subseteq S}g(X)\sum_{i = |X|}^{|S|}\binom{|S|-|X|}{i - |X|}(-1)^{|S|-i}\\
&=\sum_{X\subseteq S}g(X)\sum_{i = 0}^{|S|-|X|}\binom{|S|-|X|}{i}(-1)^{|S|-|X|-i}\\
&=\sum_{X\subseteq S}g(X)[|X| = |S|]=g(S) \\\Box
\end{align*}
\]
斯特林反转
\[f(n)=\sum_{k = 0}^{n}\left\{\begin{array}{l}n\\k\end{array}\right\}g(k)\Longleftrightarrow g(n)=\sum_{k = 0}^{n}(-1)^{n - k}\left[\begin{array}{l}n\\k\end{array}\right]f(k)\\
f(m)=\sum_{k = m}^{n}\left\{\begin{array}{l}k\\m\end{array}\right\}g(k)\Longleftrightarrow g(m)=\sum_{k = m}^{n}(-1)^{k - m}\left[\begin{array}{l}k\\m\end{array}\right]f(k)
\]
带入用反转公式可以验证。