二项式反演(证明及其应用)
前言
其实管他叫二项式反演好像有些狭义了
因为这个东西不仅仅和二项式有关,并且应用非常的广泛
所有的反演都有一个特点,把那些非常不好求的东西变换一下
先求到一个好弄的东西,然后通过反演公式得到原数组
其实这个玩意吧,他还有一个形式0,说是或我没看太懂,两个式子好像是等价的
咱也不知道那是个啥,没啥用,不管他了
形式一
表达式
\[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\)数组表示我们满足最多是\(i\)个条件的时候的方案数或者概率或者期望
那么\(g\)数组就表示恰好满足\(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\)的时候才成立,所以得证
这个东西在一般的题中的应用就是用\(f\)数组的到\(g\)数组
因为这种至少至多的比较好求
然后,形式二就是关于至少的形式了
形式二
\[f(n)=\sum\limits_{i=n}^m{i\choose n}g(i)\Leftrightarrow g(n)=\sum\limits_{i=n}^m(-1)^{i-n}{i\choose n}f(i)
\]
这个证明其实跟上面的是一样的,直接看就行了
\[\begin{split}
f(n)&=\sum\limits_{i=n}^m{i\choose n}\sum\limits_{j=i}^m(-1)^{j-i}{j\choose i}f(j)\\
&=\sum\limits_{i=n}^m\sum\limits_{j=i}^m(-1)^{j-i}{i\choose n}{j\choose i}f(j)\\
&=\sum\limits_{j=n}^mf(j)\sum\limits_{i=n}^j(-1)^{j-i}{i\choose n}{j\choose i}\\
&=\sum\limits_{j=n}^m{j\choose n}f(j)\sum\limits_{i=n}^j{j-n\choose j-i}(-1)^{j-i}\\
&=\sum\limits_{j=n}^m{j\choose n}f(j)\sum\limits_{t=0}^{j-n}{j-n\choose t}(-1)^{t}1^{j-n-t}\\
&=\sum\limits_{j=n}^m{j\choose n}f(j)(1-1)^{j-n}\\
&=\sum\limits_{j=n}^m{j\choose n}f(j)[j=n]\\
&={n\choose n}f(n)\\
&=f(n)
\end{split}\]
题目
QQ:2953174821