关于反演原理以及一个例子:二项式反演(世界上最垃圾的组合数学2)(坑)
前言
准备期末考就不做题了吧。。。
填一点坑。
反演原理
为了下文方便,我们定义一个函数\(U_{i,j}=[i=j]\),其中\([q]\) 表示\(q\)成立时值为\(1\),反之值为\(0\)。
首先我们有一个数列\(a\),以及一个二元函数\(f_{i,j}\),以及一个已经知道的数列\(b\)。
\(a\)的生成法则为:\(a_{i}=\sum\limits_{j=0}^{i}f_{i,j}b_{j}①\)
那么假如我们直到了\(a\),能不能通过类似得生成法则倒推回\(b\)呢(这也就意味着在这个生成法则上,任意一个\(a\)数列都对应着一个\(b\)数列,有点反函数的味道),这个过程就叫反演。
假定也有一个函数\(g\)。
那么\(b_{i}=\sum\limits_{j=0}^{i}g_{i,j}a_{j}②\)
那么我们把\(①\)带入\(②\)中得:
\(b_{i}=\sum\limits_{j=0}^{i}g_{i,j}\sum\limits_{k=0}^jf_{j,k}b_{k}\)
\(b_{i}=\sum\limits_{j=0}^{n}b_{j}\sum\limits_{k=j}^{n}g_{i,k}f_{k,j}③\)
那么,一个比较明显的事情就是如果两边需要相等的话,那么需要:
\(\sum\limits_{k=j}^ig_{i,k}f_{k,j}=U_{i,j}\)
那么能不能证明如果不满足这个就会爆掉???
如果\(j=i\)时\(\sum\limits_{k=j}^ig_{i,k}f_{k,j}\)不等于\(1\),那么直接其余\(b\)取\(0\),就可以让③不成立,同理,如果\(j≠i\)时,\(\sum\limits_{k=j}^ig_{i,k}f_{k,j}\)不等于\(0\),那么除\(j\)以外\(b\)都取\(0\),照样不行,所以只有满足上述式子,这条式子才能成立。
这个就是充要条件:
\(∀i,j∈N且0≤j≤i,\sum\limits_{k=j}^ig_{i,k}f_{k,j}=U_{i,j}\)
坑
当然,在参考资料的核心文章中提到了一个条件:
\(∀i,j∈N且0≤j≤i,\sum\limits_{k=j}^if_{i,k}g_{k,j}=U_{i,j}\)
我觉得也是充要条件,但是代数证明我还是不会证明。。。
至于这个的证明,如果只是由这个反演出发是很好想的。
用列方程可以通过\(f,g\)中的某一个解出另外一个,然后通过反证法可以证明解就是我们解出来的那个,如果从这个角度上讲的话,这两个确实是等价的。
二项式反演
公式1
一群神仙就想到了组合数跟这条式子不谋而合。
如果设定\(f_{i,j}=(-1)^jC_{i}^{j},g_{i,j}=(-1)^jC_{i}^{j}\),上述的式子竟然就可以完美的成立?
具体式子列出来:\(a_{i}=\sum\limits_{j=0}^{i}(-1)^jC_{i}^jb_{j}\),那么\(b_{i}=\sum\limits_{j=0}^{i}(-1)^jC_{i}^ja_{j}\)。
那么这个式子要怎么去证明了?
其实就是证明:
\(∀i,j∈N且0≤j≤i,\sum\limits_{k=j}^i(-1)^{k+j}C_{i}^kC_{k}^j=U_{i,j}\)
运用恒等式:\(C_{i}^kC_{k}^j=C_{i} ^{j}*C_{i-j}^{i-k}\)
变成:\(C_{i}^j\sum\limits_{k=j}^i(-1)^{k +j}C_{i-j}^{i-k}\)
发现\(i-k\)的范围在\([0,i-j]\),化成:
变成:\(C_{i}^j\sum\limits_{k=0}^{i-j}(-1)^{(i-k)+j}C_{i-j}^{k}\)
不难发现,在\(i=j\)时,式子等于\(1\),反之等于\(0\),成立。
证毕。
公式2
\(a_{i}=\sum\limits_{j=0}^{i}C_{i}^jb_{j}\),那么\(b_{i}=\sum\limits_{j=0}^{i}(-1)^{i-j}C_{i}^ja_{j}\)。
这个证明利用公式1就行了,设\(h_{i}=b_{i}*(-1)^i\)。
那么\(a_{i}=\sum\limits_{j=0}^iC_{i}^jh_{j},\frac{h_{i}}{(-1)^i}=\sum\limits_{j=0}^i(-1)^jC_{i}^ia_{i}\)。
化简一下就可以证明完毕。
公式3
定义一个上界\(lim\)。
由于感觉把\(i\)换成\(n\)更加好看,所以换成\(n\)。
\(a_{n}=\sum\limits_{i=n}^{lim}C_{i}^nb_i\),\(b_{n}=\sum\limits_{i=n}^{lim}(-1)^{i-n}C_{i}^na_{i}\)
当然,这里的证明我个人认为GXZlegend写的比我的好,建议去看他的。后面打算把证明换成GXZlegend的
这条式子看起来特别难证明,因为和上面的式子不一样,但是如果我们换一下形式呢?比如把\(a,b\)翻转一下:
\(a_{lim-n}=\sum\limits_{i=0}^{lim-n}C_{lim-i}^{n}b_{i}\),\(b_{lim-n}=\sum\limits_{i=0}^{lim-n}(-1)^{lim-i-n}C_{lim-i}^{n}a_{i}\)
然后再用\(k\)代替\(lim-n\),那么\(n=lim-k\)。
\(a_{k}=\sum\limits_{i=0}^{k}C_{lim-i}^{lim-k}b_{i}\),\(b_{k}=\sum\limits_{i=0}^{k}(-1)^{k-i}C_{lim-i}^{lim-k}a_{i}\)
也就是:
\(a_{n}=\sum\limits_{i=0}^{n}C_{lim-i}^{lim-n}b_{i}\),\(b_{n}=\sum\limits_{i=0}^{n}(-1)^{n-i}C_{lim-i}^{lim-n}a_{i}\)
进一步化简:
\(a_{n}=\sum\limits_{i=0}^{n}C_{lim-i}^{lim-n}b_{i}\),\(b_{n}=\sum\limits_{i=0}^{n}(-1)^{n-i}C_{lim-i}^{lim-n}a_{i}\)
这样子,就比较好证明了:
\(g_{i,j}=(-1)^{i-j}C_{lim-j}^{lim-i},f_{i,j}=C_{lim-j}^{lim-i}\)
\(∀i,j∈N且0≤j≤i,\sum\limits_{k=j}^i(-1)^{i-k}C^{lim-i}_{lim-k}C_{lim-j}^{lim-k}=U_{i,j}\)
\(\sum\limits_{k=j}^i(-1)^{i-k}C^{lim-i}_{lim-k}C_{lim-j}^{lim-k}=C_{lim-j}^{lim-i}\sum\limits_{k=j}^i(-1)^{i-k}C_{i-j}^{k-j}=C_{lim-j}^{lim-i}\sum\limits_{k=j}^i(-1)^{i-k}C_{i-j}^{i-k}=C_{lim-j}^{lim-i}\sum\limits_{k=0}^{i-j}(-1)^kC_{i-j}^k=U_{i,j}\)。
证毕。
参考资料
核心文章:http://blog.miskcoo.com/2015/12/inversion-magic-binomial-inversion
二项式反演的参考资料:
https://www.cnblogs.com/sdzwyq/p/9920531.html
https://www.cnblogs.com/lcyfrog/p/11772757.html
https://www.cnblogs.com/GXZlegend/p/11407185.html
坑
- 反演原理中关于两种条件他们之前的关系
- 我需要添加组合意义。