一.组合数的定义.
下降幂:我们把从nnn个不同的数中选出mmm个数组成不同序列(考虑顺序)的数量称为nnn的mmm阶下降幂,记为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=1∏m(n−i+1)=n(n−1)(n−2)⋯(n−m+1)=(n−m)!n!
上升幂:我们把nnn的mmm阶上升幂记为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=1∏m(n+i−1)=n(n+1)(n+2)⋯(n+m−1)=(n+m−1)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=1mi∏i=1m(n−i+1)=m!(n−m)!n!
特别的,我们规定(n0)=1\binom{n}{0}=1(0n)=1.
观察三个定义,我们发现nnn都不一定非要是非负整数,于是将nnn的定义域推广到实数域上.
组合数最经典的求法是直接预处理阶乘,这样就可以在模数是素数时做到O(n)O(n)O(n)预处理而O(1)O(1)O(1)回答询问了.
还有一种求法是在模数不为素的时候,直接统计每一个素因子的出现数量,最后直接乘起来就好了,求单个组合数的时间复杂度为O(nlogn)O(n\log n)O(nlogn).
二.隔板法.
隔板法:对于nnn个顺序排列的相同的球,要在它们之中安置mmm块相同的隔板,两个球之间最多只能有一块隔板且两边不能有,就可以把这个看成在n−1n-1n−1个空中放入mmm个球,方案数为(n−1m)\binom{n-1}{m}(mn−1),这种方法称为隔板法.
隔板法可以很方便的解决一些看起来很难的问题,下面就给几道例题:
问题1:给定一个方程∑i=1mxi=n\sum_{i=1}^{m}x_i=n∑i=1mxi=n,求方程的正整数解数量.
分析:看成在nnn个球之中插入m−1m-1m−1块隔板,两个球之间不能有多于一块隔板且两边不能有,方案数即为(n−1m−1)\binom{n-1}{m-1}(m−1n−1).
问题2:给定一个方程∑i=1mxi=n\sum_{i=1}^{m}x_i=n∑i=1mxi=n,求方程的自然数解数量.
分析:把算式变成:
∑i=1m(xi+1)=n+m
\sum_{i=1}^{m}(x_i+1)=n+m
i=1∑m(xi+1)=n+m
那么现在问题就转化为了问题1,答案就是(n+m−1m−1)=(n+m−1n)\binom{n+m-1}{m-1}=\binom{n+m-1}{n}(m−1n+m−1)=(nn+m−1).
问题3:给定nnn个相同的白球,要求在其中插入mmm个相同的黑球,使得每两个黑球之间至少有kkk个白球(保证n≥(m−1)kn\geq (m-1)kn≥(m−1)k),求方案数.
分析:考虑先提出(m−1)k(m-1)k(m−1)k个白球,直接在mmm个黑球组成的空隙分别插入kkk个白球,问题变为在n−(m−1)kn-(m-1)kn−(m−1)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−(m−1)k+m)=(mn+m+k−mk)
问题4:给定一个由nnn个相同的白球组成的环(旋转同构算同一种方案,翻转同构不算同一种),在环中插入mmm个相同的黑球,使得每两个黑球之间至少有kkk个白球(保证n≥mkn\geq mkn≥mk),求方案数.
分析:先钦定一个黑球在最前面,问题转化为在nnn个白球中插入m+2m+2m+2个黑球(两端必须放),直接套用问题4的答案并除掉旋转同构的mmm得到答案:
1m(n−mk+m−1m−1)
\frac{1}{m}\binom{n-mk+m-1}{m-1}
m1(m−1n−mk+m−1)
三.二项式定理.
二项式定理:对于一个非负整数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)aibn−i.
二项式定理的推论1:∑i=0n(ni)=2n\sum_{i=0}^{n}\binom{n}{i}=2^n∑i=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(1−1)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[2∣i](in)aibn−i=2(a+b)n+(a−b)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)aibn−i.
多项式定理:(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!a1i1a2i2⋯amim.
四.组合恒等式.
接下来在这一节出现的组合恒等式中,若没有特殊说明,则默认变量的取值范围能够使得所有的运算有效.
其中对于组合数(nm)\binom{n}{m}(mn)而言,有效的nnn为实数,mmm为非负整数;对于和式而言,其上下界均为整数,且下界小于等于上界.
组合恒等式1(对称恒等式):对于任意非负整数nnn,有(nm)=(nn−m)\binom{n}{m}=\binom{n}{n-m}(mn)=(n−mn).
组合恒等式2(加法/归纳恒等式):(nm)=(n−1m)+(n−1m−1)\binom{n}{m}=\binom{n-1}{m}+\binom{n-1}{m-1}(mn)=(mn−1)+(m−1n−1).
证明:
(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}
(mn−1)+(m−1n−1)=m!(n−1)m+(m−1)!(n−1)m−1=m!(n−m)(n−1)m−1+m(n−1)m−1=m!n(n−1)m−1=m!nm=(mn)
证毕.
利用这个组合恒等式可以做到O(n2)O(n^{2})O(n2)预处理所有i,j≤ni,j\leq ni,j≤n的组合数(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=0∑n(im+i)=(0m)+i=1∑n((im+i+1)−(i−1m+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=0∑n(mi)=i=0∑n((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(m−1n−1).
证明:
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(m−1)!(n−1)m−1=n(m−1n−1)
证毕.
利用这个组合恒等式可以做到O(m)O(m)O(m)求出单个组合数(nm)\binom{n}{m}(mn).
组合恒等式4:m(nm)=(n−m+1)(nm−1)m\binom{n}{m}=(n-m+1)\binom{n}{m-1}m(mn)=(n−m+1)(m−1n).
证明:
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=(n−m+1)(m−1)!nm−1=(n−m+1)(m−1n)
证毕.
利用这个组合恒等式可以做到O(n)O(n)O(n)预处理一行组合数.即对于所有i≤ni\leq ni≤n,预处理(mi)\binom{m}{i}(im).
组合恒等式5:(n−m)(nm)=n(n−1m)(n-m)\binom{n}{m}=n\binom{n-1}{m}(n−m)(mn)=n(mn−1).
证明:
(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}
(n−m)(mn)=(n−m)m!nm=nm!(n−1)m=n(mn−1)
证毕.
利用这个组合恒等式可以做到O(n)O(n)O(n)预处理一列组合数.即对于所有i≤ni\leq ni≤n,预处理(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(mm−n−1).
证明:
(−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(mm−n−1)=(−1)mm!(m−n−1)m=m!(−1)mi=1∏m(m−n−i)=m!1i=1∏m(n−m+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)(m−kn−k).
证明:
(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(n−k)m−km!mk=(kn)(m−k)!(n−k)m−k=(kn)(m−kn−k)
证毕.
组合恒等式7的推论:对于整数0≤m≤n0\leq m\leq n0≤m≤n有∑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)=n−m+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)(m−kn−k)
利用这个式子进行推导:
∑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=0∑m(in)(im)=i=0∑m(mn)(m−in−i)=(mn)1i=0∑m(in−m+i)=(mn)(mn+1)=n−m+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)(k−im)=(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=0∑k(in)xi(k−im)xk−i
两边同时消除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=0∑k(in)(k−im)
证毕.
组合恒等式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=0m−k(in)(k+im)=(m−kn+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=0∑m−k(in)(k+im)=i=0∑m−k(in)(m−k−im)=(m−kn+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)(mk−i)=(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=0∑k(ni)(mk−i)=i=0∑kj=0∑i−1(n−1j)(mk−i)=i=0∑k(n−1i)j=i+1∑k(mk−j)=i=0∑k(n−1i)j=0∑k−i−1(mj)=i=0∑k(n−1i)(m+1k−i)⋮=i=0∑k(0i)(m+nk−i)=i=0∑k(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)xiyn−i=(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=0∑n(in)xiyn−i=i=0∑ni!(n−i)!n!xiyn−i=n!i=0∑n(ix)(n−iy)=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)n−121−2nn!(n−1)!(2n−2)!.
证明:
(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=1∏n(23−i)=n!(−1)n−12−ni=1∏n−1(2i−1)=n!(−1)n−12−n∏i=1n−12i∏i=12n−2i=(−1)n−121−2nn!(n−1)!(2n−2)!
证毕.
定理5.2:nm‾(n−12)m‾=(2n)2m‾22mn^{\underline{m}}\left(n-\frac{1}{2}\right)^{\underline{m}}=\frac{(2n)^{\underline{2m}}}{2^{2m}}nm(n−21)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(n−21)m=i=0∏2m−1(n−2i)=2−2mi=0∏2m−1(2n−i)=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)(mn−21)=(2m2n)(m2m)2−2m.
证明:
在定理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)(mn−21)=(m!)2(2n)2m2−2m=(2m)!(2n)2mm!m!(2m)!2−2m=(2m2n)(m2m)2−2m
证毕.
六.高阶差分.
我们定义差分Δ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)=Δk−1f(x+1)−Δk−1f(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=0∑k(−1)k−i(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_ibi和cic_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=0∑naixi=i=0∑nbixi=i=0∑nci(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=0∑n(−1)i(in)gi⇔gn=i=0∑n(−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=0∑n(−1)i(in)j=0∑i(−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=0∑n(−1)i(in)j=0∑i(−1)j(ji)fj=i=0∑n(−1)ifij=i∑n(−1)j(jn)(ij)=i=0∑n(−1)ifij=i∑n(−1)j(in)(j−in−i)=i=0∑n(−1)i(in)fij=0∑n−i(−1)j+i(jn−i)=i=0∑n(in)fij=0∑n−i(−1)j(jn−i)=i=0∑n(in)fi(1−1)n−i=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=0∑n(in)gi⇔gn=i=0∑n(−1)n−i(in)fi
二项式反演的一个重要应用是计算错排数dnd_ndn的通项公式.
首先我们有:
n!=∑i=0n(ni)di
n!=\sum_{i=0}^{n}\binom{n}{i}d_{i}
n!=i=0∑n(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=0∑n(−1)n−i(in)i!=i=0∑n(−1)i(in)(n−i)!=i=0∑n(−1)ii!(n−i)!n!(n−i)!=n!i=0∑ni!(−1)i
我们得到了重要的错排公式:
dn=n!∑i=0n(−1)ii!
d_{n}=n!\sum_{i=0}^{n}\frac{(-1)^{i}}{i!}
dn=n!i=0∑ni!(−1)i
九.恰好和至多至少的转化.
这是一种很常见的套路,通常情况下需要求出恰好的答案,但恰好非常难求而至多或至少却好做很多,这时候就需要用至多或至少来求恰好了.
一种用二项式反演的情况是,设fif_ifi表示至多选iii个的方案数,gig_igi表示恰好选iii个的方案数,fif_ifi和gig_igi之间表现出如下关系:
fi=∑j=0i(ij)gj
f_i=\sum_{j=0}^{i}\binom{i}{j}g_j
fi=j=0∑i(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=0∑i(−1)i−j(ji)fj
同样的,设fif_ifi表示至少选iii个的方案数,gig_igi表示恰好选iii个的方案数,fif_ifi和gig_igi之间表现出如下关系:
fi=∑j=in(ji)gj
f_i=\sum_{j=i}^{n}\binom{j}{i}g_j\\
fi=j=i∑n(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=i∑n(−1)j−i(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=0∑i(ji)gj⇔gi=j=0∑i(−1)i−j(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)ex⇔G(x)=F(x)e−x
所以就可以直接用NTT快速计算二项式反演啦!