反演原理
反演原理
推荐阅读:反演原理相关_hezlik的博客
前置废话:学习二项式反演时不知道几个形式之间的互相推导,于是就有了这篇博客。
给定函数 \(F\to G\) 之间的(求和)关系式,由此推出 \(G\to F\) 的关系式,此二者之间的相互推导就称为反演关系。
定义两个关系矩阵 \(A\) ,来描述求和关系 \(F\) 和 \(G\) 。
\(F[i]=\sum_{j=1}^{i}{A_{i,j}\times G[j]}\Leftrightarrow G[i]=\sum_{j=1}^{i}{B_{i,j}\times F[j]}\)
例 \(1\):
比如前缀和(\(F[i]=\sum_{j=0}^{i}{G[j]}\))与差分(\(G[i]=F[i]-F[i-1]\))之间的相互推导就称为一对反演关系。
于是有 :
\(A_{i,j}=[j\le i]\)
\(B_{i,j}\) 为
-
\(j=i\):\(B_{i,j}=1\)
-
\(j=i-1\):\(B_{i,j}=-1\)
-
\(otherwise:B_{i,j}=0\)
写成矩阵形式有:
于是
定理 \(1\): 两个互为反演的关系矩阵互逆(\(A*B=[i=j]\))。
代数证明:
设有反演关系 \(F[i]=\sum_{j=1}^{i}{A_{i,j}G[j]}\Leftrightarrow G[i]=\sum_{j=1}^{i}{B_{i,j}F[j]}\)
那么 \(F[i]=\sum_{j=1}^{i}{A_{i,j}\sum_{k=1}^{j}B_{j,k}F[k]}\)
变换枚举顺序 \(\to F[i]=\sum_{j=1}^{i}{F[j]\sum_{k=1}^{j}A_{i,k}B_{k,j}}\)
同理可得:\(\to G[i]=\sum_{j=1}^{i}{G[j]\sum_{k=1}^{j}B_{i,k}A_{k,j}}\)
显然:\(\sum_{k=1}^{j}{A_{i,k}B_{k,j}}=\sum_{k=1}^{j}{B_{i,k}A_{k,j}}=[i=j]\)
证毕。
定理 \(2\): 一对互逆的矩阵分别数乘 \(c\) 后仍然互逆。
定理 \(3\): \(-1\) 的幂可以在反演系数中移动。
在恒等式 \(\sum_{k=0}{\{(-1)^{i-k}A_{i,k}\}B_{k,j}}=[i=j]\) 中:
数乘 \((-1)^{j-i}\) 后,由定理 \(2\) 得到 \(\sum_{k=0}{\{(-1)^{j-k}A_{i,k}\}B_{k,j}}\to \sum_{k=0}{\{(-1)^{j}A_{i,k}\}\{B_{k,j}(-1)^k\}}\)
由于:\((-1)^{j-k}=(-1)^{k-j}\) ,于是也有 \(\sum_{k=0}{\{(-1)^{k}A_{i,k}\}\{(-1)^jB_{k,j}\}}\)
举个例子对于二项式反演 \(\displaystyle 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)\)
有形式 \(2\):\(\displaystyle 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)\)
注意一下下标,带入上式即可。
定理 \(4\) :一对互逆的矩阵转置后仍然互逆。
由上文的推导过程知:
\(\sum_{k=1}^{j}{A_{i,k}B_{k,j}}=\sum_{k=1}^{j}{B_{i,k}A_{k,j}}=[i=j]\)
同理对于反演 \(f[i]=\sum_{j=i}^{n}A'_{i,j}g[i]\Leftrightarrow g[i]=\sum_{j=i}^{n}{B'_{j,i}g[i]}\) 有:
\(\sum_{k=j}^{i}{A'_{i,k}B'_{k,j}}=\sum_{k=j}^{i}{B'_{i,k}A'_{k,j}}=[i=j]\)
此时,可令 \(A'_{j,i}=A_{i,j},B'_{j,i}=B_{i,j}\) 可以发现 \(A'\) 为 \(A\) ,\(B'\) 为 \(B\) 的转置矩阵。
于是得出结论:
\(F[i]=\sum_{j=1}^{i}{A_{i,j}G[j]}\Leftrightarrow G[i]=\sum_{j=1}^{i}{B_{i,j}F[j]}\)
与形式:
\(f[i]=\sum_{j=i}^{n}A'_{i,j}g[i]\Leftrightarrow g[i]=\sum_{j=i}^{n}{B'_{j,i}g[i]}\)
可以相互推导。