其他分享
首页 > 其他分享> > 二项式反演

二项式反演

作者:互联网

二项式反演

设 \(f(n)\) 表示 \(n\) 个补集的交集大小,\(g(n)\) 表示 \(n\) 个原集的交集的大小。

\[f_n = \sum_{i=0}^n (-1)^i {n \choose i} g_i \Leftrightarrow g_n = \sum_{i=0}^n (-1)^i {n \choose i} f_i \]

\[f_n = \sum_{i=0}^n {n \choose i} g_i \Leftrightarrow g_n = \sum_{i=0}^n (-1)^{n-i} {n \choose i} f_i \]

\[f_k=\sum_{i=k}^n {i\choose k} g_i\Leftrightarrow g_k=\sum_{i=k}^n (-1)^{i-k} {i\choose k} f_i \]

这里证明就只证明一下二式吧

\[f(n)=\sum\limits_{i=0}^n{n\choose i}g(i)\Leftrightarrow g(n)=\sum\limits_{i=0}^n(-1)^{n-i}{n\choose i}f(i) \]

这个证明的话,就是直接带入法

将 \(f\) 式子带入到 \(g\) 的式子中,得到

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

我们将 \(j\) 的枚举提前,这个是反演的基本操作

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

然后就直接把后面这个拆开

\[{n\choose i}{i\choose j}=\frac{n!}{i!(n-i)!}×\frac{i!}{j!(i-j)!} \]

这个时候就直接把 \(i!\) 消掉,再上下同时乘上 \((n-j)!\) 就直接变成了下面的等式

\[{n\choose i}{i\choose j}={n\choose j}{n-j\choose n-i} \]

直接在原来的式子中替换它

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

那前面那个组合数已经和 \(i\) 没有关系了,直接提出来

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

我们就直接吧后面那个 \(i\) 改一下从 \(i=0\) 枚举到 \(n-j\)然后就直接用二项式定理

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

\[g(n)=\sum_{j=0}^{n}{n\choose j}g(j)(-1+1)^{n-j} \]

后面的这个式子只有在 \(n=j\) 的时候才成立,所以得证

标签:直接,sum,反演,choose,Leftrightarrow,二项式,式子
来源: https://www.cnblogs.com/spaceswalker/p/16483390.html