Skip to content

二项式反演

二项式反演的推导核心在于利用组合恒等式交换求和顺序。最关键的数学工具是以下这个正交性恒等式:

j=kn(1)jk(nj)(jk)=δnk\sum_{j=k}^{n} (-1)^{j-k} \binom{n}{j} \binom{j}{k} = \delta_{nk}

其中 δnk\delta_{nk} 是克罗内克函数(当 n=kn=k 时为 1,否则为 0)。
Also [n=k]

下面我将分步推导最常用的形式一

目标

已知:

f(n)=k=0n(nk)g(k)(1)f(n) = \sum_{k=0}^{n} \binom{n}{k} g(k) \quad \cdots (1)

求证:

g(n)=k=0n(1)nk(nk)f(k)(2)g(n) = \sum_{k=0}^{n} (-1)^{n-k} \binom{n}{k} f(k) \quad \cdots (2)


推导过程

第一步:代入

我们将公式 (1) 中的 f(k)f(k) 代入到公式 (2) 的右边(RHS),看看能否化简得到左边的 g(n)g(n)

RHS=k=0n(1)nk(nk)f(k)\text{RHS} = \sum_{k=0}^{n} (-1)^{n-k} \binom{n}{k} f(k)

f(k)=j=0k(kj)g(j)f(k) = \sum_{j=0}^{k} \binom{k}{j} g(j) 代入上式:

RHS=k=0n(1)nk(nk)[j=0k(kj)g(j)]\text{RHS} = \sum_{k=0}^{n} (-1)^{n-k} \binom{n}{k} \left[ \sum_{j=0}^{k} \binom{k}{j} g(j) \right]

第二步:交换求和顺序

目前的求和范围是:

  • 外层 kk00nn
  • 内层 jj00kk

这等价于满足条件 0jkn0 \le j \le k \le n 的所有整数对 (j,k)(j, k)。 我们可以先枚举 jj,再枚举 kk

  • jj 的范围是从 00nn
  • 对于固定的 jjkk 的范围是从 jjnn

交换后:

RHS=j=0ng(j)[k=jn(1)nk(nk)(kj)]\text{RHS} = \sum_{j=0}^{n} g(j) \left[ \sum_{k=j}^{n} (-1)^{n-k} \binom{n}{k} \binom{k}{j} \right]

注意:我们将与 kk 无关的 g(j)g(j) 提到了内层求和符号的外面。

第三步:化简内层求和

我们要处理方括号内的部分:

S=k=jn(1)nk(nk)(kj)S = \sum_{k=j}^{n} (-1)^{n-k} \binom{n}{k} \binom{k}{j}

利用组合数性质 (nk)(kj)=(nj)(njkj)\binom{n}{k} \binom{k}{j} = \binom{n}{j} \binom{n-j}{k-j}直观理解:从 nn 个里选 kk 个,再从这 kk 个里选 jj 个,等价于先从 nn 个里直接选出那最终的 jj 个 ((nj)\binom{n}{j}),然后从剩下的 njn-j 个里选出 kjk-j 个来凑齐 kk 个 ((njkj)\binom{n-j}{k-j})。

代入 SS

S=k=jn(1)nk(nj)(njkj)S = \sum_{k=j}^{n} (-1)^{n-k} \binom{n}{j} \binom{n-j}{k-j}

提取与 kk 无关的 (nj)\binom{n}{j}

S=(nj)k=jn(1)nk(njkj)S = \binom{n}{j} \sum_{k=j}^{n} (-1)^{n-k} \binom{n-j}{k-j}

m=kjm = k - j。当 k=jk=jm=0m=0;当 k=nk=nm=njm=n-j。 同时,指数 nk=n(m+j)=(nj)mn-k = n-(m+j) = (n-j)-m

S=(nj)m=0nj(1)(nj)m(njm)S = \binom{n}{j} \sum_{m=0}^{n-j} (-1)^{(n-j)-m} \binom{n-j}{m}

第四步:利用二项式定理

观察求和部分 m=0N(1)Nm(Nm)\sum_{m=0}^{N} (-1)^{N-m} \binom{N}{m},其中 N=njN = n-j。 根据二项式定理:

(x+y)N=m=0N(Nm)xNmym(x+y)^N = \sum_{m=0}^{N} \binom{N}{m} x^{N-m} y^m

x=1,y=1x=1, y=-1,则:

(11)N=m=0N(Nm)(1)Nm(1)m=m=0N(1)m(Nm)(1-1)^N = \sum_{m=0}^{N} \binom{N}{m} (1)^{N-m} (-1)^m = \sum_{m=0}^{N} (-1)^m \binom{N}{m}

等等,我们的式子是 (1)Nm(-1)^{N-m}。由于 (1)Nm=(1)N(1)m=(1)N(1)m(-1)^{N-m} = (-1)^N \cdot (-1)^{-m} = (-1)^N \cdot (-1)^m(因为 (1)m=(1)m(-1)^{-m} = (-1)^m),所以:

m=0N(1)Nm(Nm)=(1)Nm=0N(1)m(Nm)=(1)N(11)N\sum_{m=0}^{N} (-1)^{N-m} \binom{N}{m} = (-1)^N \sum_{m=0}^{N} (-1)^m \binom{N}{m} = (-1)^N (1-1)^N

这里需要讨论 NN 的值:

  1. 如果 N>0N > 0(即 n>jn > j):

    (11)N=0N=0(1-1)^N = 0^N = 0

    所以整个求和结果为 0。

  2. 如果 N=0N = 0(即 n=jn = j): 求和只有一项 m=0m=0

    (1)00(00)=11=1(-1)^{0-0} \binom{0}{0} = 1 \cdot 1 = 1

    或者看公式:(1)0(11)0=11=1(-1)^0 (1-1)^0 = 1 \cdot 1 = 1(约定 00=10^0=1)。

综上所述:

m=0nj(1)(nj)m(njm)={1if n=j0if nj=δnj\sum_{m=0}^{n-j} (-1)^{(n-j)-m} \binom{n-j}{m} = \begin{cases} 1 & \text{if } n=j \\ 0 & \text{if } n \neq j \end{cases} = \delta_{nj}

因此,内层求和 SS 简化为:

S=(nj)δnjS = \binom{n}{j} \delta_{nj}

第五步:得出结论

回到第二步末尾的式子:

RHS=j=0ng(j)S=j=0ng(j)(nj)δnj\text{RHS} = \sum_{j=0}^{n} g(j) \cdot S = \sum_{j=0}^{n} g(j) \binom{n}{j} \delta_{nj}

由于 δnj\delta_{nj} 仅在 j=nj=n 时为 1,其他情况为 0,求和中只有 j=nj=n 这一项保留下来:

RHS=g(n)(nn)1=g(n)1=g(n)\text{RHS} = g(n) \binom{n}{n} \cdot 1 = g(n) \cdot 1 = g(n)

RHS=g(n)=LHS\text{RHS} = g(n) = \text{LHS}

证毕。


补充:形式二的简要推导思路

形式二: 已知 f(n)=k=nN(kn)g(k)f(n) = \sum_{k=n}^{N} \binom{k}{n} g(k),求 g(n)g(n)

这种形式通常通过变量代换转化为形式一,或者使用生成函数。 另一种常见的推导是利用下指标反转差分算子

但在竞赛中,最稳妥的方法是记住形式一,如果遇到形式二,可以通过重新定义下标或集合关系将其转化为形式一的结构,或者直接记忆结论:

g(n)=k=nN(1)kn(kn)f(k)g(n) = \sum_{k=n}^{N} (-1)^{k-n} \binom{k}{n} f(k)

其推导逻辑与上面完全一致,只是求和的上下限和组合数的物理意义(“至少” vs “至多”)发生了变化,核心的正交性恒等式 (1)k(nk)=[n=0]\sum (-1)^k \binom{n}{k} = [n=0] 依然起作用。

容斥原理