卡特兰数(Catalan Number)

卡特兰数

考虑以下问题:

现在我们有 n + 1 n+1 n+1个数, x 0 , x 1 , x 2 , ⋯   , x n x_0,x_1,x_2,\cdots,x_n x0,x1,x2,,xn,考虑它们的乘积 x 1 ⋅ x 2 ⋯ x n x_1\cdot x_2\cdots x_n x1x2xn,现在我们可以在其中插入括号来改变计算顺序。那么一共有多少种排列的顺序呢?比如说,现在有三个数 x 0 , x 1 , x 2 x_0, x_1, x_2 x0,x1,x2,它们的计算顺序有 ( x 0 x 1 ) x 2 (x_0x_1)x_2 (x0x1)x2以及 x 0 ( x 1 x 2 ) x_0(x_1x_2) x0(x1x2)两种排列方式

问题分析

我们可以使用递归的思想来考虑这个问题。我们把这 n + 1 n+1 n+1个数分为两组,在第 k k k个数处分开,就形成了下面 A , B A, B A,B两组数。
( x 0   x 1   x 2 ⋯ x k ) ⏟ A , (   x k + 1 ⋯ x n − 1   x n ) ⏟ B \underbrace{(x_0\space x_1\space x_2 \cdots x_k)}_{A} ,\underbrace{(\space x_{k+1}\cdots x_{n-1}\space x_{n})}_{B} A (x0 x1 x2xk),B ( xk+1xn1 xn)
我们记 n + 1 n+1 n+1个数的插入括号后的计算顺序个数为 C n C_n Cn,那么 A A A的计算顺序个数就是 C k C_k Ck B B B的就是 C n − k − 1 C_{n-k-1} Cnk1。所以说,如果说我们把最后一个括号放在第 k k k个数的地方,那么我们总的个数就是 C k C n − k − 1 C_kC_{n-k-1} CkCnk1。这里 k k k可以从0到 n − 1 n-1 n1,根据加法原则,
C n = ∑ k = 0 n − 1 C k C n − k − 1 ,      n ⩾ 1 C_n=\sum^{n-1}_{k=0}C_kC_{n-k-1}, \space\space\space\space n\geqslant 1 Cn=k=0n1CkCnk1,    n1

剩下的事情就是用数学方法计算出这个数列的通项公式。

数学解法

通过生成函数法(generating function)可以解出符合方法一中递推公式的数列的通项公式。

首先我们定义函数
f ( x ) = ∑ k ⩾ 0 C k x k f(x)=\sum_{k\geqslant0}C_kx^k f(x)=k0Ckxk
然后我们可以将上面的递推公式推广到 n ⩾ 0 n\geqslant0 n0,也就是
C n = ∑ k ⩾ 0 C k C n − k − 1 + I { n = 0 } ,      ∀ n ⩾ 0 C_n=\sum_{k\geqslant0}C_kC_{n-k-1}+\mathbb{I}_{\{n=0\}}, \space\space\space\space \forall n\geqslant0 Cn=k0CkCnk1+I{n=0},    n0
其中 I { n = 0 } \mathbb{I}_{\{n=0\}} I{n=0}是示意函数(indicator function),当 n = 0 n=0 n=0时此函数值为1,否则值为0。并且我们定义当 k < 0 k<0 k<0时, C k = 0 C_k=0 Ck=0。等式两边同乘我们可以得到
f ( x ) = ∑ n ⩾ 0 C n x n = ∑ n ⩾ 0 C k C n − k − 1 x n + I { n = 0 } x n = ∑ n ⩾ 0 ∑ k ⩾ 0 C k C n − k − 1 x k x n − k + 1 = ∑ k ⩾ 0 [ C k x k ∑ n ⩾ 0 C n − k − 1 x n − k − 1 ⋅ x ] + 1 \begin{aligned} f(x)& = \sum_{n\geqslant0}C_nx^n =\sum_{n\geqslant0}C_kC_{n-k-1}x^n+\mathbb{I}_{\{n=0\}}x^n \\ & = \sum_{n\geqslant0}\sum_{k\geqslant0}C_kC_{n-k-1}x^kx^{n-k}+1 \\ & = \sum_{k\geqslant0}\Big[C_kx^k\sum_{n\geqslant0}C_{n-k-1}x^{n-k-1}\cdot x\Big]+1 \\ \end{aligned} f(x)=n0Cnxn=n0CkCnk1xn+I{n=0}xn=n0k0CkCnk1xkxnk+1=k0[Ckxkn0Cnk1xnk1x]+1
我们对 n − k + 1 n-k+1 nk+1进行一个换元之后,式子中的 ∑ n ⩾ 0 C n − k − 1 x n − k − 1 \sum_{n\geqslant0}C_{n-k-1}x^{n-k-1} n0Cnk1xnk1可以写成 ∑ j ⩾ 0 C j x j \sum_{j\geqslant0}Cjx^j j0Cjxj,也就是 f ( x ) f(x) f(x),所以我们得到
f ( x ) = ∑ k ⩾ 0 C k x k f ( x ) x + 1 = x ( f ( x ) ) 2 + 1 ⟹ f ( x ) = 1 ± 1 − 4 x 2 x \begin{aligned} f(x)& =\sum_{k\geqslant0}C_kx^kf(x)x+1 \\ & =x\big(f(x)\big)^2+1 \\ \Longrightarrow f(x)& =\frac{1\pm\sqrt{1-4x}}{2x} \end{aligned} f(x)f(x)=k0Ckxkf(x)x+1=x(f(x))2+1=2x1±14x
通过观察,由于 f ( x ) = C 0 + C 1 x + C 2 x 2 + ⋯ f(x)=C_0+C_1x+C_2x^2+\cdots f(x)=C0+C1x+C2x2+并且 f ( 0 ) = C 0 = 1 f(0)=C_0=1 f(0)=C0=1,可以推断出这里我们需要取减号。接下来计算 ( 1 − 4 x ) 1 2 (1-4x)^{\frac{1}{2}} (14x)21
( 1 − 4 x ) 1 2 = ∑ k ⩾ 0 ( 1 2 k ) ( − 4 x ) k      ∣ x ∣ < 1 4 = 1 + ∑ k ⩾ 1 ( − 1 ) k ( 1 2 k ) 4 k x k \begin{aligned} (1-4x)^{\frac{1}{2}} & =\sum_{k\geqslant0}\tbinom{\frac{1}{2}}{k}(-4x)^k \space\space\space\space |x|<\frac{1}{4}\\ & = 1+\sum_{k\geqslant1}(-1)^k\tbinom{\frac{1}{2}}{k}4^kx^k \end{aligned} (14x)21=k0(k21)(4x)k    x<41=1+k1(1)k(k21)4kxk
通过广义二项式定理,我们可以进一步化简
( 1 2 k ) = 1 2 ( 1 2 − 1 ) ⋯ ( 1 2 − k + 1 ) k ! = 1 2 k ⋅ ( − 1 2 ) ( − 3 2 ) ⋯ ( − 1 2 − ( k − 1 ) + 1 ) ( k − 1 ) ! = 1 2 k ⋅ ( − 1 2 ) k − 1 ⋅ 1 ⋅ 3 ⋯ ( 2 k − 3 ) ( k − 1 ) ! = 1 2 k ⋅ ( − 1 2 ) k − 1 ⋅ 1 ⋅ 2 ⋅ 3 ⋅ 4 ⋯ ( 2 k − 3 ) ⋅ ( 2 k − 2 ) 2 k − 1 ( k − 1 ) ! ( k − 1 ) ! = 1 2 k ⋅ ( − 1 4 ) k − 1 ⋅ ( 2 k − 2 k − 1 ) \begin{aligned} \tbinom{\frac{1}{2}}{k}& =\frac{\frac{1}{2}(\frac{1}{2}-1)\cdots(\frac{1}{2}-k+1)}{k!} \\ & = \frac{1}{2k}\cdot\frac{(-\frac{1}{2})(-\frac{3}{2})\cdots(-\frac{1}{2}-(k-1)+1)}{(k-1)!} \\ & = \frac{1}{2k}\cdot(-\frac{1}{2})^{k-1}\cdot\frac{1\cdot3\cdots(2k-3)}{(k-1)!} \\ & = \frac{1}{2k}\cdot(-\frac{1}{2})^{k-1}\cdot\frac{1\cdot2\cdot3\cdot4\cdots(2k-3)\cdot(2k-2)}{2^{k-1}(k-1)!(k-1)!} \\ & =\frac{1}{2k}\cdot(-\frac{1}{4})^{k-1}\cdot\tbinom{2k-2}{k-1} \end{aligned} (k21)=k!21(211)(21k+1)=2k1(k1)!(21)(23)(21(k1)+1)=2k1(21)k1(k1)!13(2k3)=2k1(21)k12k1(k1)!(k1)!1234(2k3)(2k2)=2k1(41)k1(k12k2)
代入上述式子可得
( 1 − 4 x ) 1 2 = 1 − ∑ k ⩾ 1 1 2 k ( 2 k − 2 k − 1 ) ⋅ 4 ⋅ x k = 1 − 2 x ∑ k ⩾ 0 1 k + 1 ( 2 k k ) x k \begin{aligned} (1-4x)^{\frac{1}{2}}& =1-\sum_{k\geqslant1}\frac{1}{2k}\tbinom{2k-2}{k-1}\cdot4\cdot x^k \\ & =1-2x\sum_{k\geqslant0}\frac{1}{k+1}\tbinom{2k}{k}x^k \end{aligned} (14x)21=1k12k1(k12k2)4xk=12xk0k+11(k2k)xk

最后把这个式子代回到 f ( x ) f(x) f(x)的表达式中去,我们可以得到
f ( x ) = ∑ k ⩾ 0 1 k + 1 ( 2 k k ) x k f(x)=\sum_{k\geqslant0}\frac{1}{k+1}\tbinom{2k}{k}x^k f(x)=k0k+11(k2k)xk
f ( x ) = ∑ k ⩾ 0 C k x k f(x)=\sum_{k\geqslant0}C_kx^k f(x)=k0Ckxk进行对比我们可以得出结论
C n = 1 n + 1 ( 2 n n ) C_n=\frac{1}{n+1}\tbinom{2n}{n} Cn=n+11(n2n)
这就是卡特兰数(Catalan Number)

卡特兰数的其他等价问题

  1. Dyck word的个数. Dyck word表示一个有由 n n n个X和 n n n个Y组成的字符串,并且需要满足:在任意一个位置,之前的X个数都必须大于等于Y的个数。

    这里可以给出一个卡特兰数简单的计算方法

    首先不考虑限制条件,那么总共的排列方式有 ( 2 n n ) \tbinom{2n}{n} (n2n)种,然后考虑不满足题目限制的个数。假设在第 2 m + 1 2m+1 2m+1处有 m + 1 m+1 m+1个Y和 m m m个X(不满足题目要求),那么后面就有 n − m n-m nm个X和 n − m − 1 n-m-1 nm1个Y,将这里的X全部替换为Y,Y全部替换为X,那么这样的字符串就变成了由 n − 1 n-1 n1个X和 n + 1 n+1 n+1个Y组成的字符串。这样的字符串总数是 ( 2 n n + 1 ) \tbinom{2n}{n+1} (n+12n),所以总数是
    ( 2 n n ) − ( 2 n n + 1 ) = 1 n + 1 ( 2 n n ) \tbinom{2n}{n}-\tbinom{2n}{n+1}=\frac{1}{n+1}\tbinom{2n}{n} (n2n)(n+12n)=n+11(n2n)

  2. 包含n组括号的合法运算式的个数。

  3. 不相交的弦问题:在一个圆周上分布着 2 n 2n 2n个点,要求在每两个点之间连接一条弦,并 且弦与弦不能相交,求这样的连接方式个数。

  4. 格路问题:所有在 n × n n\times n n×n格点中不越过对角线的单调路径的个数。可以等价于计算Dyck word的个数(X代表“向右”,Y表示向右)

参考资料

维基百科

卡特兰数(Catalan number)(一)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值