基础组合数学学习笔记

一.组合数的定义.

下降幂:我们把从nnn个不同的数中选出mmm个数组成不同序列(考虑顺序)的数量称为nnnmmm阶下降幂,记为nm‾n^{\underline{m}}nm,即:
nm‾=∏i=1m(n−i+1)=n(n−1)(n−2)⋯(n−m+1)=n!(n−m)! n^{\underline{m}}=\prod_{i=1}^{m}(n-i+1)=n(n-1)(n-2)\cdots(n-m+1)=\frac{n!}{(n-m)!} nm=i=1m(ni+1)=n(n1)(n2)(nm+1)=(nm)!n!

上升幂:我们把nnnmmm阶上升幂记为nm‾n^{\overline{m}}nm,与下降幂类似的有:
nm‾=∏i=1m(n+i−1)=n(n+1)(n+2)⋯(n+m−1)=(n+m−1)m‾ n^{\overline{m}}=\prod_{i=1}^{m}(n+i-1)=n(n+1)(n+2)\cdots(n+m-1)=(n+m-1)^{\underline{m}} nm=i=1m(n+i1)=n(n+1)(n+2)(n+m1)=(n+m1)m

组合数:我们把从n个不同的数中选出mmm个数组成不同集合(不考虑顺序)的数量记为(nm)\binom{n}{m}(mn),即:
(nm)=nm‾m!=∏i=1m(n−i+1)∏i=1mi=n!m!(n−m)! \binom{n}{m}=\frac{n^{\underline{m}}}{m!}=\frac{\prod_{i=1}^{m}(n-i+1)}{\prod_{i=1}^{m}i}=\frac{n!}{m!(n-m)!} (mn)=m!nm=i=1mii=1m(ni+1)=m!(nm)!n!

特别的,我们规定(n0)=1\binom{n}{0}=1(0n)=1.

观察三个定义,我们发现nnn都不一定非要是非负整数,于是将nnn的定义域推广到实数域上.

组合数最经典的求法是直接预处理阶乘,这样就可以在模数是素数时做到O(n)O(n)O(n)预处理而O(1)O(1)O(1)回答询问了.

还有一种求法是在模数不为素的时候,直接统计每一个素因子的出现数量,最后直接乘起来就好了,求单个组合数的时间复杂度为O(nlog⁡n)O(n\log n)O(nlogn).


二.隔板法.

隔板法:对于nnn个顺序排列的相同的球,要在它们之中安置mmm块相同的隔板,两个球之间最多只能有一块隔板且两边不能有,就可以把这个看成在n−1n-1n1个空中放入mmm个球,方案数为(n−1m)\binom{n-1}{m}(mn1),这种方法称为隔板法.

隔板法可以很方便的解决一些看起来很难的问题,下面就给几道例题:

问题1:给定一个方程∑i=1mxi=n\sum_{i=1}^{m}x_i=ni=1mxi=n,求方程的正整数解数量.

分析:看成在nnn个球之中插入m−1m-1m1块隔板,两个球之间不能有多于一块隔板且两边不能有,方案数即为(n−1m−1)\binom{n-1}{m-1}(m1n1).

问题2:给定一个方程∑i=1mxi=n\sum_{i=1}^{m}x_i=ni=1mxi=n,求方程的自然数解数量.

分析:把算式变成:
∑i=1m(xi+1)=n+m \sum_{i=1}^{m}(x_i+1)=n+m i=1m(xi+1)=n+m

那么现在问题就转化为了问题1,答案就是(n+m−1m−1)=(n+m−1n)\binom{n+m-1}{m-1}=\binom{n+m-1}{n}(m1n+m1)=(nn+m1).

问题3:给定nnn个相同的白球,要求在其中插入mmm个相同的黑球,使得每两个黑球之间至少有kkk个白球(保证n≥(m−1)kn\geq (m-1)kn(m1)k),求方案数.

分析:考虑先提出(m−1)k(m-1)k(m1)k个白球,直接在mmm个黑球组成的空隙分别插入kkk个白球,问题变为在n−(m−1)kn-(m-1)kn(m1)k个白球中插入mmm个黑球,直接套用问题二的公式可得答案:
(n−(m−1)k+mm)=(n+m+k−mkm) \binom{n-(m-1)k+m}{m}=\binom{n+m+k-mk}{m} (mn(m1)k+m)=(mn+m+kmk)

问题4:给定一个由nnn个相同的白球组成的环(旋转同构算同一种方案,翻转同构不算同一种),在环中插入mmm个相同的黑球,使得每两个黑球之间至少有kkk个白球(保证n≥mkn\geq mknmk),求方案数.

分析:先钦定一个黑球在最前面,问题转化为在nnn个白球中插入m+2m+2m+2个黑球(两端必须放),直接套用问题4的答案并除掉旋转同构的mmm得到答案:
1m(n−mk+m−1m−1) \frac{1}{m}\binom{n-mk+m-1}{m-1} m1(m1nmk+m1)



三.二项式定理.

二项式定理:对于一个非负整数nnn(a+b)n=∑i=0n(ni)aibn−i(a+b)^n=\sum_{i=0}^{n}\binom{n}{i}a^ib^{n-i}(a+b)n=i=0n(in)aibni.

二项式定理的推论1∑i=0n(ni)=2n\sum_{i=0}^{n}\binom{n}{i}=2^ni=0n(in)=2n.

二项式定理的推论2∑i=1n(−1)k(ni)=[n=1]\sum_{i=1}^{n}(-1)^k\binom{n}{i}=[n=1]i=1n(1)k(in)=[n=1].

这两个式子分别可以用(1+1)n(1+1)^n(1+1)n(1−1)n(1-1)^n(11)n套上二项式定理得到.

二项式定理的推论3∑i=0n[2∣i](ni)aibn−i=(a+b)n+(a−b)n2\sum_{i=0}^{n}[2|i]\binom{n}{i}a^{i}b^{n-i}=\frac{(a+b)^{n}+(a-b)^{n}}{2}i=0n[2i](in)aibni=2(a+b)n+(ab)n.

广义二项式定理:对于一个实数nnn(a+b)n=∑i=0+∞(ni)aibn−i(a+b)^{n}=\sum_{i=0}^{+\infty}\binom{n}{i}a^{i}b^{n-i}(a+b)n=i=0+(in)aibni.

多项式定理(a1+a2+⋯+am)n=∑i1+i2+⋯+im=nn!i1!i2!⋯im!a1i1a2i2⋯amim(a_1+a_2+\cdots+a_m)^{n}=\sum_{i_1+i_2+\cdots+i_m=n}\frac{n!}{i_1!i_2!\cdots i_m!}a_1^{i_1}a_2^{i_2}\cdots a_m^{i_m}(a1+a2++am)n=i1+i2++im=ni1!i2!im!n!a1i1a2i2amim.


四.组合恒等式.

接下来在这一节出现的组合恒等式中,若没有特殊说明,则默认变量的取值范围能够使得所有的运算有效.

其中对于组合数(nm)\binom{n}{m}(mn)而言,有效的nnn为实数,mmm为非负整数;对于和式而言,其上下界均为整数,且下界小于等于上界.

组合恒等式1(对称恒等式):对于任意非负整数nnn,有(nm)=(nn−m)\binom{n}{m}=\binom{n}{n-m}(mn)=(nmn).

组合恒等式2(加法/归纳恒等式)(nm)=(n−1m)+(n−1m−1)\binom{n}{m}=\binom{n-1}{m}+\binom{n-1}{m-1}(mn)=(mn1)+(m1n1).

证明:
(n−1m)+(n−1m−1)=(n−1)m‾m!+(n−1)m−1‾(m−1)!=(n−m)(n−1)m−1‾+m(n−1)m−1‾m!=n(n−1)m−1‾m!=nm‾m!=(nm) \binom{n-1}{m}+\binom{n-1}{m-1}\\ =\frac{(n-1)^{\underline{m}}}{m!}+\frac{(n-1)^{\underline{m-1}}}{(m-1)!}\\ =\frac{(n-m)(n-1)^{\underline{m-1}}+m(n-1)^{\underline{m-1}}}{m!}\\ =\frac{n(n-1)^{\underline{m-1}}}{m!}\\ =\frac{n^{\underline{m}}}{m!} =\binom{n}{m} (mn1)+(m1n1)=m!(n1)m+(m1)!(n1)m1=m!(nm)(n1)m1+m(n1)m1=m!n(n1)m1=m!nm=(mn)

证毕.

利用这个组合恒等式可以做到O(n2)O(n^{2})O(n2)预处理所有i,j≤ni,j\leq ni,jn的组合数(ij)\binom{i}{j}(ji).

组合恒等式2的推论1(平行求和法)∑i=0n(m+ii)=(m+n+1n)\sum_{i=0}^{n}\binom{m+i}{i}=\binom{m+n+1}{n}i=0n(im+i)=(nm+n+1).

证明:
∑i=0n(m+ii)=(m0)+∑i=1n((m+i+1i)−(m+ii−1))=(m0)+(m+n+1n)−(m+10)=1+(m+n+1n)−1=(m+n+1n) \sum_{i=0}^{n}\binom{m+i}{i}\\ =\binom{m}{0}+\sum_{i=1}^{n}\left(\binom{m+i+1}{i}-\binom{m+i}{i-1}\right)\\ =\binom{m}{0}+\binom{m+n+1}{n}-\binom{m+1}{0}\\ =1+\binom{m+n+1}{n}-1\\ =\binom{m+n+1}{n} i=0n(im+i)=(0m)+i=1n((im+i+1)(i1m+i))=(0m)+(nm+n+1)(0m+1)=1+(nm+n+1)1=(nm+n+1)

证毕.

组合恒等式2的推论2(上指标求和法)∑i=0n(im)=(n+1m+1)\sum_{i=0}^{n}\binom{i}{m}=\binom{n+1}{m+1}i=0n(mi)=(m+1n+1).

证明:
∑i=0n(im)=∑i=0n((i+1m+1)−(im+1))=(n+1m+1)−(0m+1)=(n+1m+1) \sum_{i=0}^{n}\binom{i}{m}\\ =\sum_{i=0}^{n}\left(\binom{i+1}{m+1}-\binom{i}{m+1}\right)\\ =\binom{n+1}{m+1}-\binom{0}{m+1}\\ =\binom{n+1}{m+1} i=0n(mi)=i=0n((m+1i+1)(m+1i))=(m+1n+1)(m+10)=(m+1n+1)

证毕.

组合恒等式3(吸收/提取恒等式)m(nm)=n(n−1m−1)m\binom{n}{m}=n\binom{n-1}{m-1}m(mn)=n(m1n1).

证明:
m(nm)=mnm‾m!=n(n−1)m−1‾(m−1)!=n(n−1m−1) m\binom{n}{m} =m\frac{n^{\underline{m}}}{m!} =n\frac{(n-1)^{\underline{m-1}}}{(m-1)!} =n\binom{n-1}{m-1} m(mn)=mm!nm=n(m1)!(n1)m1=n(m1n1)

证毕.

利用这个组合恒等式可以做到O(m)O(m)O(m)求出单个组合数(nm)\binom{n}{m}(mn).

组合恒等式4m(nm)=(n−m+1)(nm−1)m\binom{n}{m}=(n-m+1)\binom{n}{m-1}m(mn)=(nm+1)(m1n).

证明:
m(nm)=mnm‾m!=(n−m+1)nm−1‾(m−1)!=(n−m+1)(nm−1) m\binom{n}{m} =m\frac{n^{\underline{m}}}{m!} =(n-m+1)\frac{n^{\underline{m-1}}}{(m-1)!} =(n-m+1)\binom{n}{m-1} m(mn)=mm!nm=(nm+1)(m1)!nm1=(nm+1)(m1n)

证毕.

利用这个组合恒等式可以做到O(n)O(n)O(n)预处理一行组合数.即对于所有i≤ni\leq nin,预处理(mi)\binom{m}{i}(im).

组合恒等式5(n−m)(nm)=n(n−1m)(n-m)\binom{n}{m}=n\binom{n-1}{m}(nm)(mn)=n(mn1).

证明:
(n−m)(nm)=(n−m)nm‾m!=n(n−1)m‾m!=n(n−1m) (n-m)\binom{n}{m} =(n-m)\frac{n^{\underline{m}}}{m!} =n\frac{(n-1)^{\underline{m}}}{m!} =n\binom{n-1}{m} (nm)(mn)=(nm)m!nm=nm!(n1)m=n(mn1)

证毕.

利用这个组合恒等式可以做到O(n)O(n)O(n)预处理一列组合数.即对于所有i≤ni\leq nin,预处理(im)\binom{i}{m}(mi).

组合恒等式6(上指标反转)(nm)=(−1)m(m−n−1m)\binom{n}{m}=(-1)^{m}\binom{m-n-1}{m}(mn)=(1)m(mmn1).

证明:
(−1)m(m−n−1m)=(−1)m(m−n−1)m‾m!=(−1)mm!∏i=1m(m−n−i)=1m!∏i=1m(n−m+i)=nm‾m!=(nm) (-1)^{m}\binom{m-n-1}{m}\\ =(-1)^{m}\frac{(m-n-1)^{\underline{m}}}{m!}\\ =\frac{(-1)^{m}}{m!}\prod_{i=1}^{m}(m-n-i)\\ =\frac{1}{m!}\prod_{i=1}^{m}(n-m+i)\\ =\frac{n^{\underline{m}}}{m!}\\ =\binom{n}{m} (1)m(mmn1)=(1)mm!(mn1)m=m!(1)mi=1m(mni)=m!1i=1m(nm+i)=m!nm=(mn)

证毕.

组合恒等式7(三项式版恒等式)(nm)(mk)=(nk)(n−km−k)\binom{n}{m}\binom{m}{k}=\binom{n}{k}\binom{n-k}{m-k}(mn)(km)=(kn)(mknk).

证明:
(nm)(mk)=nm‾m!mk‾k!=nk‾(n−k)m−k‾k!mk‾m!=(nk)(n−k)m−k‾(m−k)!=(nk)(n−km−k) \binom{n}{m}\binom{m}{k} =\frac{n^{\underline{m}}}{m!}\frac{m^{\underline{k}}}{k!} =\frac{n^{\underline{k}}(n-k)^{\underline{m-k}}}{k!}\frac{m^{\underline{k}}}{m!} =\binom{n}{k}\frac{(n-k)^{\underline{m-k}}}{(m-k)!} =\binom{n}{k}\binom{n-k}{m-k} (mn)(km)=m!nmk!mk=k!nk(nk)mkm!mk=(kn)(mk)!(nk)mk=(kn)(mknk)

证毕.

组合恒等式7的推论:对于整数0≤m≤n0\leq m\leq n0mn∑i=0m(mi)(ni)=n+1n−m+1\sum_{i=0}^{m}\frac{\binom{m}{i}}{\binom{n}{i}}=\frac{n+1}{n-m+1}i=0m(in)(im)=nm+1n+1.

证明:

将组合恒等式7两边同除(nm)(nk)\binom{n}{m}\binom{n}{k}(mn)(kn),我们可以得到:
(mk)(nk)=(n−km−k)(nm) \frac{\binom{m}{k}}{\binom{n}{k}}=\frac{\binom{n-k}{m-k}}{\binom{n}{m}} (kn)(km)=(mn)(mknk)

利用这个式子进行推导:
∑i=0m(mi)(ni)=∑i=0m(n−im−i)(nm)=1(nm)∑i=0m(n−m+ii)=(n+1m)(nm)=n+1n−m+1 \sum_{i=0}^{m}\frac{\binom{m}{i}}{\binom{n}{i}}\\ =\sum_{i=0}^{m}\frac{\binom{n-i}{m-i}}{\binom{n}{m}}\\ =\frac{1}{\binom{n}{m}}\sum_{i=0}^{m}\binom{n-m+i}{i}\\ =\frac{\binom{n+1}{m}}{\binom{n}{m}}\\ =\frac{n+1}{n-m+1} i=0m(in)(im)=i=0m(mn)(mini)=(mn)1i=0m(inm+i)=(mn)(mn+1)=nm+1n+1

证毕.

组合恒等式8(范德蒙卷积恒等式)∑i=0k(ni)(mk−i)=(n+mk)\sum_{i=0}^{k}\binom{n}{i}\binom{m}{k-i}=\binom{n+m}{k}i=0k(in)(kim)=(kn+m).

证明:

考虑(ni)\binom{n}{i}(in)是二项式(1+x)n(1+x)^{n}(1+x)n展开后xix^{i}xi的系数,那么我们有:
(1+x)n(1+x)m=(1+x)n+m(∑i=0+∞(ni)xi)(∑i=0+∞(mi)xi)=∑i=0+∞(n+mi)xi (1+x)^{n}(1+x)^{m}=(1+x)^{n+m}\\ \left(\sum_{i=0}^{+\infty}\binom{n}{i}x^{i}\right)\left(\sum_{i=0}^{+\infty}\binom{m}{i}x^{i}\right)=\sum_{i=0}^{+\infty}\binom{n+m}{i}x^{i} (1+x)n(1+x)m=(1+x)n+m(i=0+(in)xi)(i=0+(im)xi)=i=0+(in+m)xi

然后我们写出右边式子中kkk次项是怎么得出的:
(n+mk)xk=∑i=0k(ni)xi(mk−i)xk−i \binom{n+m}{k}x^{k}=\sum_{i=0}^{k}\binom{n}{i}x^{i}\binom{m}{k-i}x^{k-i} (kn+m)xk=i=0k(in)xi(kim)xki

两边同时消除xkx^{k}xk就可以得到:
(n+mk)=∑i=0k(ni)(mk−i) \binom{n+m}{k}=\sum_{i=0}^{k}\binom{n}{i}\binom{m}{k-i} (kn+m)=i=0k(in)(kim)

证毕.

组合恒等式8的推论1∑i=0m−k(ni)(mk+i)=(n+mm−k)\sum_{i=0}^{m-k}\binom{n}{i}\binom{m}{k+i}=\binom{n+m}{m-k}i=0mk(in)(k+im)=(mkn+m).

证明:
∑i=0m−k(ni)(mk+i)=∑i=0m−k(ni)(mm−k−i)=(n+mm−k) \sum_{i=0}^{m-k}\binom{n}{i}\binom{m}{k+i}\\ =\sum_{i=0}^{m-k}\binom{n}{i}\binom{m}{m-k-i}\\ =\binom{n+m}{m-k} i=0mk(in)(k+im)=i=0mk(in)(mkim)=(mkn+m)

证毕.

组合恒等式8的推论2(上指标卷积恒等式)∑i=0k(in)(k−im)=(k+1m+n+1)\sum_{i=0}^{k}\binom{i}{n}\binom{k-i}{m}=\binom{k+1}{m+n+1}i=0k(ni)(mki)=(m+n+1k+1).

证明:
∑i=0k(in)(k−im)=∑i=0k∑j=0i−1(jn−1)(k−im)=∑i=0k(in−1)∑j=i+1k(k−jm)=∑i=0k(in−1)∑j=0k−i−1(jm)=∑i=0k(in−1)(k−im+1)⋮=∑i=0k(i0)(k−im+n)=∑i=0k(im+n)=(k+1m+n+1) \sum_{i=0}^{k}\binom{i}{n}\binom{k-i}{m}\\ =\sum_{i=0}^{k}\sum_{j=0}^{i-1}\binom{j}{n-1}\binom{k-i}{m}\\ =\sum_{i=0}^{k}\binom{i}{n-1}\sum_{j=i+1}^{k}\binom{k-j}{m}\\ =\sum_{i=0}^{k}\binom{i}{n-1}\sum_{j=0}^{k-i-1}\binom{j}{m}\\ =\sum_{i=0}^{k}\binom{i}{n-1}\binom{k-i}{m+1}\\ \vdots\\ =\sum_{i=0}^{k}\binom{i}{0}\binom{k-i}{m+n}\\ =\sum_{i=0}^{k}\binom{i}{m+n}\\ =\binom{k+1}{m+n+1} i=0k(ni)(mki)=i=0kj=0i1(n1j)(mki)=i=0k(n1i)j=i+1k(mkj)=i=0k(n1i)j=0ki1(mj)=i=0k(n1i)(m+1ki)=i=0k(0i)(m+nki)=i=0k(m+ni)=(m+n+1k+1)

证毕.

组合恒等式9的推论3(下降幂二项式定理)∑i=0n(ni)xi‾yn−i‾=(x+y)n‾\sum_{i=0}^{n}\binom{n}{i}x^{\underline{i}}y^{\underline{n-i}}=(x+y)^{\underline{n}}i=0n(in)xiyni=(x+y)n.

证明:
∑i=0n(ni)xi‾yn−i‾=∑i=0nn!i!(n−i)!xi‾yn−i‾=n!∑i=0n(xi)(yn−i)=n!(x+yn)=(x+y)n‾ \sum_{i=0}^{n}\binom{n}{i}x^{\underline{i}}y^{\underline{n-i}}\\ =\sum_{i=0}^{n}\frac{n!}{i!(n-i)!}x^{\underline{i}}y^{\underline{n-i}}\\ =n!\sum_{i=0}^{n}\binom{x}{i}\binom{y}{n-i}\\ =n!\binom{x+y}{n}\\ =(x+y)^{\underline{n}} i=0n(in)xiyni=i=0ni!(ni)!n!xiyni=n!i=0n(ix)(niy)=n!(nx+y)=(x+y)n

证毕.


五.上指标含有1/2的组合数.

一类上指标中含有12\frac{1}{2}21的组合数往往有各种技巧处理.

定理5.1:对于一个正整数nnn,有(12n)=(−1)n−121−2n(2n−2)!n!(n−1)!\binom{\frac{1}{2}}{n}=(-1)^{n-1}2^{1-2n}\frac{(2n-2)!}{n!(n-1)!}(n21)=(1)n1212nn!(n1)!(2n2)!.

证明:
(12n)=(12)n‾n!=1n!∏i=1n(32−i)=(−1)n−1n!2−n∏i=1n−1(2i−1)=(−1)n−1n!2−n∏i=12n−2i∏i=1n−12i=(−1)n−121−2n(2n−2)!n!(n−1)! \binom{\frac{1}{2}}{n}\\ =\frac{\left(\frac{1}{2}\right)^{\underline{n}}}{n!}\\ =\frac{1}{n!}\prod_{i=1}^{n}\left(\frac{3}{2}-i\right)\\ =\frac{(-1)^{n-1}}{n!}2^{-n}\prod_{i=1}^{n-1}(2i-1)\\ =\frac{(-1)^{n-1}}{n!}2^{-n}\frac{\prod_{i=1}^{2n-2}i}{\prod_{i=1}^{n-1}2i}\\ =(-1)^{n-1}2^{1-2n}\frac{(2n-2)!}{n!(n-1)!} (n21)=n!(21)n=n!1i=1n(23i)=n!(1)n12ni=1n1(2i1)=n!(1)n12ni=1n12ii=12n2i=(1)n1212nn!(n1)!(2n2)!

证毕.

定理5.2nm‾(n−12)m‾=(2n)2m‾22mn^{\underline{m}}\left(n-\frac{1}{2}\right)^{\underline{m}}=\frac{(2n)^{\underline{2m}}}{2^{2m}}nm(n21)m=22m(2n)2m.

证明:
nm‾(n−12)m‾=∏i=02m−1(n−i2)=2−2m∏i=02m−1(2n−i)=(2n)2m‾22m n^{\underline{m}}\left(n-\frac{1}{2}\right)^{\underline{m}}\\ =\prod_{i=0}^{2m-1}\left(n-\frac{i}{2}\right)\\ =2^{-2m}\prod_{i=0}^{2m-1}(2n-i)\\ =\frac{(2n)^{\underline{2m}}}{2^{2m}} nm(n21)m=i=02m1(n2i)=22mi=02m1(2ni)=22m(2n)2m

证毕.

定理5.2的推论(nm)(n−12m)=(2n2m)(2mm)2−2m\binom{n}{m}\binom{n-\frac{1}{2}}{m}=\binom{2n}{2m}\binom{2m}{m}2^{-2m}(mn)(mn21)=(2m2n)(m2m)22m.

证明:

在定理5.2的基础上两边同除(m!)2(m!)^{2}(m!)2得到:
(nm)(n−12m)=(2n)2m‾(m!)22−2m=(2n)2m‾(2m)!(2m)!m!m!2−2m=(2n2m)(2mm)2−2m \binom{n}{m}\binom{n-\frac{1}{2}}{m}\\ =\frac{(2n)^{\underline{2m}}}{(m!)^2}2^{-2m}\\ =\frac{(2n)^{\underline{2m}}}{(2m)!}\frac{(2m)!}{m!m!}2^{-2m}\\ =\binom{2n}{2m}\binom{2m}{m}2^{-2m} (mn)(mn21)=(m!)2(2n)2m22m=(2m)!(2n)2mm!m!(2m)!22m=(2m2n)(m2m)22m

证毕.


六.高阶差分.

我们定义差分Δkf(x)=Δk−1f(x+1)−Δk−1f(x)\Delta^{k}f(x)=\Delta^{k-1}f(x+1)-\Delta^{k-1}f(x)Δkf(x)=Δk1f(x+1)Δk1f(x),其中初始定义Δ0f(x)=f(x)\Delta^{0}f(x)=f(x)Δ0f(x)=f(x).

分别写出k=1,2,3,4k=1,2,3,4k=1,2,3,4的式子:
Δ1(x)=f(x+1)−f(x)Δ2(x)=f(x+2)−2f(x+1)+f(x)Δ3(x)=f(x+3)−3f(x+2)+3f(x+1)−f(x)Δ4(x)=f(x+4)−4f(x+3)+6f(x+2)−4f(x+1)+f(x) \Delta^{1}(x)=f(x+1)-f(x)\\ \Delta^{2}(x)=f(x+2)-2f(x+1)+f(x)\\ \Delta^{3}(x)=f(x+3)-3f(x+2)+3f(x+1)-f(x)\\ \Delta^{4}(x)=f(x+4)-4f(x+3)+6f(x+2)-4f(x+1)+f(x) Δ1(x)=f(x+1)f(x)Δ2(x)=f(x+2)2f(x+1)+f(x)Δ3(x)=f(x+3)3f(x+2)+3f(x+1)f(x)Δ4(x)=f(x+4)4f(x+3)+6f(x+2)4f(x+1)+f(x)

我们发现高阶差分展开式的形式为:
Δk(x)=∑i=0k(−1)k−i(ki)f(x+i) \Delta^{k}(x)=\sum_{i=0}^{k}(-1)^{k-i}\binom{k}{i}f(x+i) Δk(x)=i=0k(1)ki(ik)f(x+i)

归纳证明后我们发现这个式子是对的.


七.牛顿级数.

在高等数学中,我们知道一个函数f(x)f(x)f(x)有它的泰勒级数:
f(x+a)=∑i=0+∞f′(a)i!xi f(x+a)=\sum_{i=0}^{+\infty}\frac{f'(a)}{i!}x^{i} f(x+a)=i=0+i!f(a)xi

而在组合数学中,一个函数f(x)f(x)f(x)也有其对应的牛顿级数:
f(x+a)=∑i=0+∞Δif(a)i!xi‾ f(x+a)=\sum_{i=0}^{+\infty}\frac{\Delta^{i}f(a)}{i!}x^{\underline{i}} f(x+a)=i=0+i!Δif(a)xi

我们发现xi‾i!=(xi)\frac{x^{\underline{i}}}{i!}=\binom{x}{i}i!xi=(ix),所以牛顿级数还可以写成:
f(x+a)=∑i=0+∞Δif(a)(xi) f(x+a)=\sum_{i=0}^{+\infty}\Delta^{i}f(a)\binom{x}{i} f(x+a)=i=0+Δif(a)(ix)

而我们又发现若f(x)f(x)f(x)是一个nnn次多项式,那么其高于nnn阶的差分结果为000.所以对于任意一个多项式f(x)=∑i=0naixif(x)=\sum_{i=0}^{n}a_ix^{i}f(x)=i=0naixi,我们都可以找到对应的系数bib_ibicic_ici满足:
f(x)=∑i=0naixi=∑i=0nbixi‾=∑i=0nci(xi) f(x)=\sum_{i=0}^{n}a_ix^{i}=\sum_{i=0}^{n}b_ix^{\underline{i}}=\sum_{i=0}^{n}c_i\binom{x}{i} f(x)=i=0naixi=i=0nbixi=i=0nci(ix)



八.二项式反演.

二项式反演
fn=∑i=0n(−1)i(ni)gi⇔gn=∑i=0n(−1)i(ni)fi 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 fn=i=0n(1)i(in)gign=i=0n(1)i(in)fi

证明:

将右边的式子代入左边,则这个证明二项式反演等价于证明:
fn=∑i=0n(−1)i(ni)∑j=0i(−1)j(ij)fj f_n=\sum_{i=0}^{n}(-1)^{i}\binom{n}{i}\sum_{j=0}^{i}(-1)^{j}\binom{i}{j}f_j fn=i=0n(1)i(in)j=0i(1)j(ji)fj

尝试推导:
∑i=0n(−1)i(ni)∑j=0i(−1)j(ij)fj=∑i=0n(−1)ifi∑j=in(−1)j(nj)(ji)=∑i=0n(−1)ifi∑j=in(−1)j(ni)(n−ij−i)=∑i=0n(−1)i(ni)fi∑j=0n−i(−1)j+i(n−ij)=∑i=0n(ni)fi∑j=0n−i(−1)j(n−ij)=∑i=0n(ni)fi(1−1)n−i=fn \sum_{i=0}^{n}(-1)^{i}\binom{n}{i}\sum_{j=0}^{i}(-1)^{j}\binom{i}{j}f_j\\ =\sum_{i=0}^{n}(-1)^{i}f_i\sum_{j=i}^{n}(-1)^{j}\binom{n}{j}\binom{j}{i}\\ =\sum_{i=0}^{n}(-1)^{i}f_i\sum_{j=i}^{n}(-1)^{j}\binom{n}{i}\binom{n-i}{j-i}\\ =\sum_{i=0}^{n}(-1)^{i}\binom{n}{i}f_i\sum_{j=0}^{n-i}(-1)^{j+i}\binom{n-i}{j}\\ =\sum_{i=0}^{n}\binom{n}{i}f_i\sum_{j=0}^{n-i}(-1)^{j}\binom{n-i}{j}\\ =\sum_{i=0}^{n}\binom{n}{i}f_i(1-1)^{n-i}\\ =f_n i=0n(1)i(in)j=0i(1)j(ji)fj=i=0n(1)ifij=in(1)j(jn)(ij)=i=0n(1)ifij=in(1)j(in)(jini)=i=0n(1)i(in)fij=0ni(1)j+i(jni)=i=0n(in)fij=0ni(1)j(jni)=i=0n(in)fi(11)ni=fn

证毕.

二项式反演有一个更加常用的等价形式:
fn=∑i=0n(ni)gi⇔gn=∑i=0n(−1)n−i(ni)fi f_n=\sum_{i=0}^{n}\binom{n}{i}g_i\Leftrightarrow g_n=\sum_{i=0}^{n}(-1)^{n-i}\binom{n}{i}f_i fn=i=0n(in)gign=i=0n(1)ni(in)fi

二项式反演的一个重要应用是计算错排数dnd_ndn的通项公式.

首先我们有:
n!=∑i=0n(ni)di n!=\sum_{i=0}^{n}\binom{n}{i}d_{i} n!=i=0n(in)di

二项式反演后得到:
dn=∑i=0n(−1)n−i(ni)i!=∑i=0n(−1)i(ni)(n−i)!=∑i=0n(−1)in!i!(n−i)!(n−i)!=n!∑i=0n(−1)ii! d_{n}=\sum_{i=0}^{n}(-1)^{n-i}\binom{n}{i}i!\\ =\sum_{i=0}^{n}(-1)^{i}\binom{n}{i}(n-i)!\\ =\sum_{i=0}^{n}(-1)^{i}\frac{n!}{i!(n-i)!}(n-i)!\\ =n!\sum_{i=0}^{n}\frac{(-1)^{i}}{i!} dn=i=0n(1)ni(in)i!=i=0n(1)i(in)(ni)!=i=0n(1)ii!(ni)!n!(ni)!=n!i=0ni!(1)i

我们得到了重要的错排公式
dn=n!∑i=0n(−1)ii! d_{n}=n!\sum_{i=0}^{n}\frac{(-1)^{i}}{i!} dn=n!i=0ni!(1)i



九.恰好和至多至少的转化.

这是一种很常见的套路,通常情况下需要求出恰好的答案,但恰好非常难求而至多或至少却好做很多,这时候就需要用至多或至少来求恰好了.

一种用二项式反演的情况是,设fif_ifi表示至多选iii个的方案数,gig_igi表示恰好选iii个的方案数,fif_ifigig_igi之间表现出如下关系:
fi=∑j=0i(ij)gj f_i=\sum_{j=0}^{i}\binom{i}{j}g_j fi=j=0i(ji)gj

我们发现这个式子可以直接二项式反演成:
gi=∑j=0i(−1)i−j(ij)fj g_i=\sum_{j=0}^{i}(-1)^{i-j}\binom{i}{j}f_{j} gi=j=0i(1)ij(ji)fj

同样的,设fif_ifi表示至少选iii个的方案数,gig_igi表示恰好选iii个的方案数,fif_ifigig_igi之间表现出如下关系:
fi=∑j=in(ji)gj f_i=\sum_{j=i}^{n}\binom{j}{i}g_j\\ fi=j=in(ij)gj

根据二项式反演同样可以得出:
gi=∑j=in(−1)j−i(ji)fj g_i=\sum_{j=i}^{n}(-1)^{j-i}\binom{j}{i}f_j gi=j=in(1)ji(ij)fj



十.二项式反演的生成函数形式.

观察二项式反演的式子:
fi=∑j=0i(ij)gj⇔gi=∑j=0i(−1)i−j(ij)fj f_i=\sum_{j=0}^{i}\binom{i}{j}g_j\Leftrightarrow g_i=\sum_{j=0}^{i}(-1)^{i-j}\binom{i}{j}f_j fi=j=0i(ji)gjgi=j=0i(1)ij(ji)fj

F(x),G(x)F(x),G(x)F(x),G(x)分别为fi,gif_i,g_ifi,gi的指数型生成函数,我们发现:
F(x)=G(x)ex⇔G(x)=F(x)e−x F(x)=G(x)e^{x}\Leftrightarrow G(x)=F(x)e^{-x} F(x)=G(x)exG(x)=F(x)ex

所以就可以直接用NTT快速计算二项式反演啦!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值