二项式反演

反演

定义

[F(n)=sum_{i=0}^n a_{n,i} imes G(i) ]

对于用 (F) 来表示 (G) 的过程称为反演,有

[G(n)=sum_{i=0}^n b_{n,i} imes F(i) ]

那么 (a)(b) 满足什么关系?直接带入 (G(i))

[F(n)=sum_{i=0}^n a_{n,i} sum_{j=0}^i b_{i,j} imes F(j) ]

考虑交换枚举顺序,枚举 (F(j)),再计数 (F(j)) 被计算了多少次。

[F(n)=sum_{j=0}^n F(j) sum_{i=j}^n a_{n,i} imes b_{i,j} ]

上式成立,当且仅当

[sum_{i=j}^n a_{n,i} imes b_{i,j}=[j=n] ]

二项式反演

公式一

[F(n)=sum_{i=0}^n (-1)^i inom{n}{i} G(i) Leftrightarrow G(n)=sum_{i=0}^n (-1)^i inom{n}{i} F(i) ]

证明

(a_{n,i}=b_{n,i}=(-1)^i inom{n}{i})

那么就有

[sum_{i=j}^n a_{n,i} imes b_{i,j}=sum_{i=j}^n (-1)^{i+j} inom{n}{i}inom{i}{j}=(*) ]

后面两个二项式系数可以简单变换

[(*)=sum_{i=j}^n (-1)^{i+j} inom{n}{j} inom{n-j}{i-j} ]

再用 (i+j) 替换 (i) ,注意指标范围

[(*)=inom{n}{j}sum_{i=0}^{n-j} (-1)^i inom{n-j}{i} ]

(n eq j) 后面可以用二项式定理化掉,

[(*)=inom{n}{j}(1-1)^{n-j}=0 ]

(n=j) ,容易发现后面 ((*)=1)
那么就有 ((*)=[n=j]),得证。

公式二

对公式一进行简单变换,令 (H(n)=(-1)^n G(n)),那么就有

[F(n)=sum_{i=0}^n inom{n}{i} H(i) Leftrightarrow frac{H(n)}{(-1)^n}=sum_{i=0}^n (-1)^{i} inom{n}{i} F(i) ]

事实上,下指标无需从 (0) 开始。那么对任意 (min[0,n]) ,有

[F(n)=sum_{i=m}^n inom{n}{i} G(i) Leftrightarrow G(n)=sum_{i=m}^n (-1)^{n-i} inom{n}{i} F(i) ]

公式三

[F(n)=sum_{i=n}^m inom{i}{n} G(i) Leftrightarrow G(n)=sum_{i=n}^m (-1)^{i-n} inom{i}{n} F(i) ]

证明略,只需一些简单的代数运算。

原文地址:https://www.cnblogs.com/wwlwQWQ/p/14254126.html