Skip to main content

卡特兰数

卡特兰数(Catalan numbers, OEIS A000108)是一个非常重要的数列。其前10项为:

1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862

其递推公式为

C(N)=i=0N1C(i)C(N1i)C(N)=\sum_{i=0}^{N-1}C(i)C(N-1-i)

其中边界条件为C(0)=1C(0)=1

进一步地,可以求出其通项公式为

C(N)=(2NN)N+1=(2N)!N!(N+1)!C(N)=\frac{2N\choose N}{N+1}=\frac{(2N)!}{N!(N+1)!}

卡特兰数是一个非常神奇的序列,它与许多看似千差万别的问题都有着紧密的关联。这些问题包括:

  • 有效的括号表达式
  • 二叉搜索树的结构
  • 有效的出栈序列
  • 凸多边形的三角划分
  • ……

卡特兰数的性质

奇偶性

卡特兰数CnC_n是奇数,当且仅当n=2k1n=2^k-1

证明:

Cn=(2n)!(n+1)!n!=(2n1)!!2n(n+1)!C_n=\frac{(2n)!}{(n+1)!n!}=\frac{(2n-1)!!\cdot2^n}{(n+1)!}

显然(2n1)!!(2n-1)!!中不含22,所以要判断CnC_n的奇偶性,也就要判断(n+1)!(n+1)!含有多少个22

这时,我们有:

T=n+12+n+14++n+12k<n+1T=\lfloor\frac{n+1}{2}\rfloor+\lfloor\frac{n+1}{4}\rfloor+\cdots+\lfloor\frac{n+1}{2^k}\rfloor<n+1

也即TnT\leq n。其中k=arg maxt(2tn+1)k=\argmax_t(2^t\leq n+1)

下面我们要说明n=2k1n=2^k-1是等号成立的充要条件。

充分性是显然的,将n=2k1n=2^k-1代入上式,可得:

T=2k1+2k2++1=2k1=nT=2^{k-1}+2^{k-2}+\cdots+1=2^k-1=n

下面说明必要性。设n=2k+x,0x<2k1n=2^k+x,0\leq x<2^k-1,则n+1<2k+1n+1<2^{k+1},也即k=arg maxt(2tn+1)k=\argmax_t(2^t\leq n+1)依然成立。

此时,原式左边变为:

l.h.s=2k1+x+12+x+14++x+12kl.h.s=2^k-1+\lfloor\frac{x+1}{2}\rfloor+\lfloor\frac{x+1}{4}\rfloor+\cdots+\lfloor\frac{x+1}{2^k}\rfloor

从而:

l.h.s<2k1+x+1=2k+x=nl.h.s<2^k-1+x+1=2^k+x=n

这样,我们就说明了原命题的充要性。进而可知,CnC_n为奇数,当且仅当n=2k1n=2^k-1

质数

所有卡特兰数中只有两个质数,C2=2C_2=2以及C3=5C_3=5

练习题

BS - Planar Edges

LC22 - 括号生成

小贴士

本题要求给出具体的方案。如果只需要给出方案总数,那么结果即为卡特兰数。