二项式反演学习笔记

二项式反演学习笔记

概念

二项式反演作为一种反演形式,常用于通过指定若干个求解恰好若干个的问题,即我们常说的容斥问题。

引入

首先讲讲朴素容斥。

作为集合来说,有

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

这其实就是容斥原理。更一般地,有

\[|A_1\cup A_2\cup\cdots\cup A_n|=\sum_{1\le i\le n}|A_i|-\sum_{1\le i<j\le n}|A_i\cap A_j|+\cdots+(-1)^{n-1}\times|A_1\cap A_2\cap\cdots\cap A_n| \]

证明:设某一元素被 \(m\) 个集合包含,则其对左侧的贡献为 \(1\)

而对右侧的贡献为

\[\begin{aligned}\sum_{i=1}^{m}(-1)^{i-1}\binom{m}{i}&=-\sum_{i=1}^{m}(-1)^i\binom{m}{i}\\&=1-\sum_{i=0}^{m}(-1)^i\binom{m}{i}\\&=1-(1-1)^m\\&=1 \end{aligned} \]

所以每个元素对左右两侧的贡献均相等,得证。

形式

形式零

顺着刚刚容斥的公式,记 \(\overline{A}\) 表示 \(A\) 的补集,则有

\[|\overline{A_1}\cap\overline{A_2}\cap\cdots\cap\overline{A_n}|=|S|-\sum_{i\le i\le n}|A_i|+\sum_{1\le i<j\le n}|A_i\cap A_j|-\cdots+(-1)^n\times|A_1\cap A_2\cap\cdots\cap A_n| \]

同时,因为补集的补集就是原集,因此有

\[|A_1\cap A_2\cap\cdots\cap A_n|=|S|-\sum_{i\le i\le n}|\overline{A_i}|+\sum_{1\le i<j\le n}|\overline{A_i}\cap\overline{A_j}|-\cdots+(-1)^n\times|\overline{A_1}\cap\overline{A_2}\cap\cdots\cap\overline{A_n}| \]

下面考虑一种特殊情况:多个集合的交集大小之和集合的数目有关。

也就是说,在总共的 \(n\) 个集合里面任选 \(m\) 个集合所得到的交集大小不变,均为 \(\text{siz}_m\)

\(f(m)\) 表示 \(m\) 个补集的交集大小,\(g(m)\) 表示 \(m\) 个集合的交集大小。通过上面的式子,我们可以得到

\[f(n)=\sum_{i=0}^{n}(-1)^i\binom{n}{i}g(i)\\g(n)=\sum_{i=0}^{n}(-1)^i\binom{n}{i}f(i) \]

显然这两个公式等价,且能够相互推导,于是我们得到了二项式反演的形势零

\[f(n)=\sum_{i=0}^n(-1)^i\binom{n}{i}g(i)\Leftrightarrow g(n)=\sum_{i=0}^n(-1)^i\binom{n}{i}f(i) \]

形式一

有如下公式

\[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) \]

证明:考虑函数 \(h(n)=(-1)^ng(n)\),那么代入形式零可以得到

\[\begin{aligned}&f(n)=\sum_{i=0}^{n}(-1)^i\binom{n}{i}\frac{h(i)}{(-1)^i}\Leftrightarrow \frac{h(n)}{(-1)^n}=\sum_{i=0}^{n}(-1)^i\binom{n}{i}f(i)\\\Rightarrow&f(n)=\sum_{i=0}^{n}\binom{n}{i}h(i)\Leftrightarrow h(n)=\sum_{i=0}^{n}(-1)^{n+i}\binom{n}{i}f(i)\\\Rightarrow&f(n)=\sum_{i=0}^{n}\binom{n}{i}h(i)\Leftrightarrow h(n)=\sum_{i=0}^{n}(-1)^{n-i}\binom{n}{i}f(i) \end{aligned} \]

形式二

和形式一类似,是最常用的公式,公式如下

\[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)=\sum_{i=n}^{m}(-1)^{i-n}\binom{i}{n}g(i)\Leftrightarrow g(n)=\sum_{i=n}^{m}(-1)^{i-n}\binom{i}{n}f(i) \]

证明:将右式代入左式,有

\[\begin{aligned}f(n)&=\sum_{i=n}^{m}\binom{i}{n}\sum_{j=i}^{m}(-1)^{j-i}\binom{j}{i}f(j)\\&=\sum_{i=n}^{m}\sum_{j=i}^{m}(-1)^{j-i}\binom{i}{n}\binom{j}{i}f(j)\\&=\sum_{j=n}^{m}f(j)\sum_{i=n}^{j}(-1)^{j-i}\binom{i}{n}\binom{j}{i}\\&=\sum_{j=n}^{m}\binom{j}{n}f(j)\sum_{i=n}^j\binom{j-n}{j-i}(-1)^{j-i}\\&=\sum_{j=n}^{m}\binom{j}{n}f(j)\sum_{t=0}^{j-n}\binom{j-n}{t}(-1)^t1^{j-n-t}\\&=\sum_{j=n}^{m}\binom{j}{n}f(j)(1-1)^{j-n}\\&=\sum_{j}^{m}\binom{j}{n}f(j)[j=n]\\&=\binom{n}{n}f(n)\\&=f(n) \end{aligned} \]

左右恒等,得证。

至于下式,令 \(h(n)=\frac{g(n)}{(-1)^n}\),则有

\[\begin{aligned}&f(n)=\sum_{i=n}^{m}\binom{i}{n}(-1)^ih(i)\Leftrightarrow (-1)^ng(n)=\sum_{i=n}^{m}(-1)^{i}\binom{i}{n}f(i)\\ \Rightarrow &f(n)=\sum_{i=n}^{m}(-1)^i\binom{i}{n}h(i)\Leftrightarrow h(n)=\sum_{i=n}^{m}(-1)^{i}\binom{i}{n}f(i)\end{aligned} \]

得证。

意义

更具体的来说,认为 \(f(n)\) 表示选择 \(n\) 个集合后,至少有 \(n\) 个满足条件的方案数。而 \(g(n)\) 表示恰好有 \(n\) 个满足条件的方案数。如果 \(i\ge n\),那么对于 \(g(i)\) 来说,会在 \(f(n)\) 中被计算 \(\binom{i}{n}\) 次,所以有 \(f(n)=\sum_{i=n}^{m}\binom{i}{n}g(i)\),接着利用二项式反演即可。也就是所谓至少和恰好的转换。

posted @ 2024-07-05 17:07  DycIsMyName  阅读(5)  评论(0编辑  收藏  举报