二项式反演
反演
定义
\[F(n)=\sum_{i=0}^n a_{n,i} \times G(i)
\]
对于用 \(F\) 来表示 \(G\) 的过程称为反演,有
\[G(n)=\sum_{i=0}^n b_{n,i} \times F(i)
\]
那么 \(a\) 和 \(b\) 满足什么关系?直接带入 \(G(i)\)。
\[F(n)=\sum_{i=0}^n a_{n,i} \sum_{j=0}^i b_{i,j} \times F(j)
\]
考虑交换枚举顺序,枚举 \(F(j)\),再计数 \(F(j)\) 被计算了多少次。
\[F(n)=\sum_{j=0}^n F(j) \sum_{i=j}^n a_{n,i}\times b_{i,j}
\]
上式成立,当且仅当
\[\sum_{i=j}^n a_{n,i}\times b_{i,j}=[j=n]
\]
二项式反演
公式一
\[F(n)=\sum_{i=0}^n (-1)^i \binom{n}{i} G(i) \Leftrightarrow G(n)=\sum_{i=0}^n (-1)^i \binom{n}{i} F(i)
\]
证明
令 \(a_{n,i}=b_{n,i}=(-1)^i \binom{n}{i}\)
那么就有
\[\sum_{i=j}^n a_{n,i}\times b_{i,j}=\sum_{i=j}^n (-1)^{i+j} \binom{n}{i}\binom{i}{j}=(*)
\]
后面两个二项式系数可以简单变换
\[(*)=\sum_{i=j}^n (-1)^{i+j} \binom{n}{j} \binom{n-j}{i-j}
\]
再用 \(i+j\) 替换 \(i\) ,注意指标范围
\[(*)=\binom{n}{j}\sum_{i=0}^{n-j} (-1)^i \binom{n-j}{i}
\]
当 \(n\neq j\) 后面可以用二项式定理化掉,
\[(*)=\binom{n}{j}(1-1)^{n-j}=0
\]
当 \(n=j\) ,容易发现后面 \((*)=1\)
那么就有 \((*)=[n=j]\),得证。
公式二
对公式一进行简单变换,令 \(H(n)=(-1)^n G(n)\),那么就有
\[F(n)=\sum_{i=0}^n \binom{n}{i} H(i) \Leftrightarrow \frac{H(n)}{(-1)^n}=\sum_{i=0}^n (-1)^{i} \binom{n}{i} F(i)
\]
事实上,下指标无需从 \(0\) 开始。那么对任意 \(m\in[0,n]\) ,有
\[F(n)=\sum_{i=m}^n \binom{n}{i} G(i) \Leftrightarrow G(n)=\sum_{i=m}^n (-1)^{n-i} \binom{n}{i} F(i)
\]
公式三
\[F(n)=\sum_{i=n}^m \binom{i}{n} G(i) \Leftrightarrow G(n)=\sum_{i=n}^m (-1)^{i-n} \binom{i}{n} F(i)
\]
证明略,只需一些简单的代数运算。