反演原理

反演原理

推荐阅读:反演原理相关_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\)

写成矩阵形式有:

\[A=\begin{bmatrix} 1&1&\dots&1&1\\ 1&1&\dots&1&1\\ 1&1&\dots&1&1\\ 1&1&\dots&1&1\\ 1&1&\dots&1&1\\ \end{bmatrix}, B=\begin{bmatrix} 1&-1&\dots&0&0\\ 0&1&\dots&0&0\\ 0&0&\dots&-1&0\\ 0&0&\dots&1&-1\\ 0&0&\dots&0&1\\ \end{bmatrix} \]

于是

\[A*B=\begin{bmatrix} 0&0&\dots&0&0\\ 0&0&\dots&0&0\\ 0&0&\dots&0&0\\ 0&0&\dots&0&0\\ 0&0&\dots&0&1\\ \end{bmatrix} \]

定理 \(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]}\)

可以相互推导。

posted @ 2022-07-22 21:58  mklzc  阅读(371)  评论(0编辑  收藏  举报