《具体数学》第五章 二项式系数 学习笔记(部分)

更好的阅读体验

从《具体数学》第五章 二项式系数中选了一些个人认为比较 useful 的内容,添加了部分解释和证明。

组合数

n 个元素中选择 m 个的方案数,记作 (nm),定义为:

(nm)=n!m!(nm)!

其中 n,m 为非负整数。

m 为非负整数时,可以拓展定义:

(nm)=nm_m!

其中 n 为任意实数甚至复数。

事实上甚至可以拓展到 m 为复数:

1z!=limnn+znnz

z 为负整数时 1z!=0,故认为 m 为负整数时 (nm)=0

基本恒等式

下面基本只讨论 m 为整数的情况。

对称恒等式:(nm)=(nnm),其中 n0

吸收/释放恒等式:nm=nm(n1m1)

加法公式:(nm)=(n1m)+(n1m1)

平行求和:k=0m(n+kk)=(n+m+1n)n 为非负整数。

上指标求和:k=0n(km)=(n+1m+1)n 为非负整数。

这个式子两边乘上 m 就可以得到有限积分的结果。

二项式定理:(1+x)r=k0(nk)xkynk,当 n 不为非负整数时需要 |x|1 来保证收敛。

上指标反转:(nm)=(1)m(nm1m)

范德蒙德卷积:k=0n(ak)(bnk)=(a+bn)n 为非负整数。

组合证明:左边 a 个球,右边 b 个球,一共选 n 个球,相当于枚举左边选 i 个球,右边选 ni 个球。

代数证明:

LHS=i=0n([xi](1+x)a)([xni](1+x)b)=[xn](1+x)a+b=(a+bn)

反范德蒙德卷积:k=0n(ka)(nkb)=(n+1a+b+1)n 为非负整数。

组合证明:共 n+1 个球排成一列,选出 a+b+1 个球,相当于枚举第 a+1 个球在 i+1 处。

代数证明:

LHS=i=0n([xi](xa(1x)a+1))([xni](xb(1x)b+1))=[xn](xa+b(1x)a+b+2)=(n+1a+b+1)

一半组合数

下降幂加倍公式:

xk_(x12)k_=(2x)2k_22k(xk)

(x1/2k)=1k!(x1/2)k_=(2x)2k_k!xk_22k=4k(2x2k)(2kk)/(xk)

Example 1

x=k=n 时有 (n1/2n)=4n(2nn)

用上指标反转可推出 (1/2n)=(4)n(2nn),故有:

(2ii)xi=(14x)1/2

还可以算 (1/2k)=1/2k(1/2k1)=12k(4)k1(2(k1)k1),于是:

C(x)=1(14x)1/22x=i[(2ii)/(i+1)]xi

即卡特兰数的生成函数。

Example 2

(x1/2k)(xk)=4k(2x2k)(2kk)

中令 x=n/2 得到:

((n1)/2k)(n/2k)=4k(n2k)(2kk)

k4k(n2k)(2kk)=k((n1)/2k)(n/2k)

然后 (n1)/2n/2 中至少有一个是非负整数。以 n/2 为非负整数为例:

k((n1)/2k)(n/2k)=k((n1)/2k)(n/2n/2k)=(n1/2n/2)

最后将两种情况合起来可以得到:

k4k(n2k)(2kk)=(n1/2n/2)

Example 3

还可以得到一些别的东西。已经得到:

(1/2n)=(4)n(2nn)

对其求和有:

k(1/2k)(1/2nk)=k(4)k(2kk)(4)(nk)(2(nk)nk)=(4)nk(2kk)(2(nk)nk)

而左式用范德蒙德卷积就是 (1n)=(1)n。于是:

k(2kk)(2(nk)nk)=4n

差分和牛顿级数

这里涉及到有限微积分。考虑函数将序列放在值上的函数 f(x),关心其在整数上的取值。

定义平移算子 Ef(x)=f(x+1),差分算子 Δf(x)=f(x+1)f(x),那么有 Δ=E1,及:

Δn=k(nk)(1)nkEk

Δnf(x)=k(nk)(1)nkf(x+k)

Example

有限微积分中有结果 Δxk_=kxk1_

f(x)=(x1)1=1x,则:

Δnf(x)=(1)(2)(n)(x1)n1=(1)nn!x(x+1)(x+n)=(1)nx1(x+nn)1

于是:

k(nk)(1)kx+k=x1(x+nn)1

于是获得了右式的部分分式展开,不过其实直接设元解也能快速得到

牛顿级数

考虑 n 次多项式 f(x)=k=0nakxk。将其转为下降幂多项式后再给 xk 系数乘上 k!,可以得到:

f(x)=k=0nck(xk)

所以任意多项式都可以唯一地表示成牛顿级数形式。

由于 Δ(xk)=(x+1k)(xk)=(xk1),故牛顿级数的导数很简单:

Δmf(x)=k=0nck(xkm)

x=0,则 Δmf(0)=cm

Example 1

代入得:

f(x)=k=0nΔkf(0)(xk)

于是若知道 f(0),f(1),,f(n) 就可以 O(n2) 得到 f(n) 的牛顿级数形式,这即牛顿插值。

该式进一步还可以写成:

f(a+x)=k0Δkf(a)k!xk_

可以看作有限微积分中的泰勒展开。

Example 2

还有另一个结果。将其代入 Δnf(x)=k(nk)(1)nkf(x+k) 可得:

k(1)k(nk)f(k)=(1)ncn

再把 f(n) 写回一般多项式 kak,那么有 an=n!cn,故:

k(1)k(nk)f(k)=(1)nn!an

不过这个结果并不特别,其实就是下降幂多项式插求值的其中一个式子而已。

这给出一个启示:如果和式中出现 (1)k(nk) 并且剩下的是一个 n 次多项式,就可以直接化简。

广义二项级数与 Raney 引理

组合角度

该部分内容来自 7.5 卷积

考虑这样一个问题:

求有多少个长为 2n 的序列 a1,,a2n{1,1} 满足 ai=0,使得所有前缀和非负。

答案显然就是卡特兰数 Cn=(2nn)/(n+1)。求法五花八门(比如经典折线翻转双射),这里有一种新的解释:

Raney 引理:若序列 a1,,anZ 满足 ai=1,那么其 n 个循环移位产生的序列中有且仅有一个满足所有前缀和为正

证明:设前缀和为 sk,设 x 为满足 sk=mintst 的最大的 k,则显然以 x 开头的循环移位序列合法。考虑以 y(yx) 开头的循环移位序列:

  • y<x,则 sysx,不合法。
  • y>x,则 sy>sx,即 sysx+1=sx+n,不合法。

那么考虑补上 a0=1,限制就变成每个前缀和为正。由 Raney 引理就有:

Cn=12n+1(2n+1n)=1n+1(2nn)

此外,考虑最后一个 sx=1x<2nx,那么 [0,x][x+1,n1] 均为合法序列,故卡特兰数的生成函数满足:

C(x)=xC2(x)+1


事实上这个东西可以拓展,比如考虑:

求有多少个长为 mn 的序列 a1,,anm{1m,1} 满足 ai=0,使得所有前缀和非负。

可以算出共 n(1m)mnn1

同样设 a0=1,再用 Raney 引理得到:

Cn(m)=1mn+1(mn+1n)=1mnn+1(mnn)

这个数列的名字叫 富斯-卡特兰数。

bt 为最大的 k 使得 sk=tk<mn(认为 b0=1),那么 [bt+1,bt+1](0t<m) 都是合法序列。于是其生成函数 F(x) 满足:

F(x)=xFm(x)+1

这是一个很厉害的东西,因为直接从这个方程很难得到封闭形式。


下面来考虑 [xn]Fd(x)。显然没法直接求,但这里有个巧妙的双射,其与下面这个问题的答案是一样的:

求有多少个长为 mn 的序列 a1,,anm+d1{1m,1} 满足 ak=d1(d>0),使得所有前缀和非负。

还是令 a0=1,设 bt 为最大的 k 使得 sk=t(认为 b0=1),那么 [bt+1,bt+1](0t<d) 都是合法序列。那么就相当于 d 个合法序列拼在一起了。

但是还是没法求出具体值。考虑 Raney 引理的一个推广:

若序列 a1,,an(,1]Z 满足 ai=d,那么其 n 个循环移位产生的序列中有且仅有 d 个满足所有前缀和为正

证明:设前缀和为 sk。设 bt 为最大的 k 使得 sk=t(认为 b0=0),那么所有 [bt+1,bt+1](0t<d) 将整个序列分成 d 段。每一段里的位置最大的最小值均满足条件;其它位置同理易证不合法。

于是答案为:

[xn]Fd(x)=dmn+d(mn+dn)

代数角度

考虑上文中得到的方程:

F(x)=xFm(x)+1

P(x)=F(x)1,有:

P(x)=x(P(x)+1)m

其复合逆 Q(x) 满足:

x=(1+x)mQ(x)

Q(x)=x(1+x)m

由拓展拉格朗日反演得到:

Fd(x)=1n[x1]d(1+x)d1xn(1+x)mn=dn[xn1](1+x)mn+d1=dn(mn+d1n1)=dmn+d(mn+dn)

得到了同样的结果:

Fd(x)=k0dmk+d(mk+dk)xk

并且对所有整数 m 及实数 d 成立。

该多项式被称为广义二项级数 Bm(x)

Bm(x)=k0(mk)k1_xkk!


下面再证另一个恒等式:

Fd(x)1m+mF1(x)=k0(mk+rk)xk

考虑对 Fd(x)=k0dmk+d(mk+dk)xk 求导,有:

Fd1(x)F(x)=k0kmk+d(mk+dk)xk

于是可以凑出要证的右式:

mFd1(x)F(x)+Fd(x)=k0(mk+dk)xk

下面只需要证:

(xmF1(x)F(x)+1)(1m+mF1(x))=1

考虑对 F(x)=xFm(x)+1 求导,得:

F(x)=Fm(x)+mxFm1(x)F(x)

F(x)=Fm(x)1mxFm1(x)

代入后只要证:

1m+mF1(x)1mxFm1(x)=1

F1(x)1=xFm1(x)

F(x)=xFm(x)+1

证毕。


将上述两个恒等式乘在一起可以获得一些拓展的恒等式。

例如用第一个恒等式自乘:

d+tmn+d+t(mn+d+tn)xk=Fd+t(x)=nxnkndmk+d(mk+dk)tm(nk)+t(m(nk)+tnk)

kndmk+dtm(nk)+t(mk+dk)(m(nk)+tnk)=d+tmn+d+t(mn+d+tn)

这是拓展的范德蒙德卷积(t=0 时退化)。并且还有(不会证):

kn(nk)dmk+dtm(nk)+t(mk+d)k(m(nk)+t)nk=d+tmn+d+t(mn+d+t)n

这是拓展的二项式定理(t=0 时退化)。

两个恒等式乘在一起可以得到另一种结果:

kndmk+d(mk+dk)(m(nk)+tnk)=(mn+d+tn)

kn(nk)dmk+d(mk+d)k(m(nk)+t)nk=(mn+d+t)n

超几何级数

超几何级数的定义是:

F(a1,,am;b1,,bn;x)=k0a1k¯amk¯b1k¯bnk¯xkk!

其中 bk 均不为 0 或负整数。

记该级数为 t0,t1,

注意到 t0=1,且相邻两项比值:

tk+1tk=(k+a1)(k+am)x(k+b1)(k+bn)(k+1)

为关于 k 的有理函数(即两个多项式之商)。

另一方面,任意有理函数都能表示成该形式(因式分解后若分母无 (k+1) 则补一个)。

接下来考虑超几何函数的各种具体形式。

m=n=0 时,就有最简单的:

F(;;x)=k0xkk!=ex

m=1,n=0 时,有:

F(a;;x)=k0ak¯xkk!=k0(a+k1k)xk=(1x)a

m=2,n=1 时,F(a,b;c;x) 被称为高斯超几何级数

试着改写范德蒙德卷积:

k0(ak)(bnk)=(a+bn)

tk=a!k!(ak)!b!(nk)!(bn+k)!

tk+1tk=(ka)(kn)(k+1)(k+bn+1)

(bn)F(a,n;bn+1;1)=(a+bn)

F(a,n;bn+1;1)=(a+b)!(bn)!(a+bn)!b!

F(a,b;c;1)=(cab1)!(c1)!(ca1)!(cb1)!

其中 bZb0

还可以写成:

F(a,n;c;1)=(ca)n¯cn¯=(ac)n_(c)n_

还有更多内容,不过我没看懂就不写了

部分超几何和式

考虑这样一个问题:

给出超几何级数 f(k),求其有限不定积分 f(k)δk=g(k)+C(即满足 f(k)=Δg(k)=g(k+1)g(k))。

可惜的是不是所有这样的 g(k) 都具有简单形式,例如 g(k)+C=(nk)δk通常都是用大家最熟悉的莫队算法做的)。

称超几何级数 f(k)可用超几何项求和的,如果其不定积分可用表示为超几何级数。

Gosper 算法:对于给定超几何级数,求出其超几何级数的不定积分或判定其不可用超几何项求和。

下面来介绍这个算法。设超几何级数 t(k) 的不定积分为 T(k)

第一步是将比值表示成:

t(k+1)t(k)=p(k+1)p(k)q(k)r(k+1)

其中 q(k)r(k) 满足:不存在 αβZ+ 使得 q(α)=r(β)=0

那么先令 p(k)=1,将比值拆成分子 q(k) 与分母 r(k+1)

接下来如果 q(k)r(k) 分别有因子 (k+α)(k+β) 满足 αβZ+,就将它们从 q(k)r(k) 中除掉再令:

p(k)p(k)(k+α1)αβ1_=p(k)(k+α1)(k+β+1)

容易发现仍然满足条件。不断重复即可得到合法的 p(k),q(k),r(k)

第二步考虑将 T(k) 改写成 T(k)=r(k)s(k)t(k)p(k),代入有:

T(k+1)=r(k+1)s(k+1)t(k+1)p(k+1)=q(k)s(k+1)t(k)p(k)

t(k)=T(k+1)T(k)=q(k)s(k+1)t(k)p(k)r(k)s(k)t(k)p(k)

p(k)=q(k)s(k+1)r(k)s(k)

现在要求 s(k)。容易发现 s(k) 一定是有理函数,但事实上可以证明 s(k) 一定是多项式。

s(k)=f(k)/g(k)。代入可以得到:

p(k)g(k)g(k+1)=q(k)f(k+1)g(k)r(k)f(k)g(k+1)

证明:先消去 f(k)g(k) 的公因子。设最大的 N 使存在 x 满足 (k+x)(k+x+N1) 均为 g(k) 因子(注意 N=1 一定满足)。
k=xk=xN 代入条件式得:

r(x)f(x)g(x+1)=q(xN)f(xN+1)g(xN)=0

由于 f(k)g(k) 无公因子,故 f(x)0f(xN+1)0。由于 N 的最大性,x1x+N 也不为 g(k) 的根。
r(x)=q(xN)=0。这与第一步中的限制矛盾。证毕。

有这个结论就好办了。设 s(k)=t=0dαtkt,代入解方程即可,若方程无解则说明原级数不可用超几何项求和。

最后一个问题:怎么确定 s(k) 的系数 d

考虑 p(k)=q(k)s(k+1)r(k)s(k)。令 Q(k)=q(k)r(k)R(k)=q(k)+r(k),则有:

2p(k)=Q(k)(s(k+1)+s(k))+R(k)((s(k+1)s(k))

这样有关 s(k) 的多项式次数可控了。

  • 如果 deg(Q)deg(R),那么右式次数即为 d+deg(Q),故 d=deg(p)deg(Q) 唯一确定。

  • 如果 deg(Q)<deg(R)=e,这时 d 可能很大(高位全消掉了)。设 Q(k)=Ake1+R(k)=Bke+,则右式为 (2αdA+dαdB)kd+e1+
    于是要么 d=deg(p)deg(Q)+1,要么 d=2A/B,至多两种情况,分别做即可。

至此整个问题得到解决。

还有一个推广 Gosper-Zeilberger 算法,通过加维在不同的 n 中尝试寻找递推关系来解决 Gosper 算法求不出来的和式。

我没学过组合数 /kk

本文作者:苹果蓝17

本文链接:https://www.cnblogs.com/Appleblue17/p/16653961.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   苹果蓝17  阅读(505)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起