卡特兰数出现在许多计数问题中。

常见的例子有:$n$ 个节点的有序二叉树,$2n$ 个括号构成的合法括号序列。

在上面所举的两个例子中,很容易看出卡特兰数满足递推:
$$
C_{n+1} = \sum_{i = 0}^{n} C_i C_{n-i }, \quad(n \ge 1)
$$
$C_0 = 1$

卡特兰数的闭形式,亦即上述递推式的解为

$$
C_n = \frac{1}{n+1} \binom{2n}{n} = \frac{(2n)!}{n!(n+1)!}
$$

曾经我对于如何推导这个式子很感兴趣,实际上推导过程很容易搜到,维基百科上就有。
现在我摘录一种最常见的借助生成函数的证明,以备查看。

定义 $C_n$ 的生成函数
$$
c(x) = \sum_{n = 0}^{\infty} C_n x^n
$$

为了利用上述递推关系,我们考虑 $c(x)^2$ 的幂级数展开式中 $x^n$ 项的系数
\begin{aligned}
c(x)^2 &= \sum_{n = 0}^\infty \sum_{i = 0}^{n} C_i C_{n-i} x^n \\
&= \sum_{n = 0}^\infty C_{n+1} x^n
\end{aligned}

于是有
\begin{equation}
c(x) = 1 + xc(x)^2 \label{E:1}
\end{equation}
\eqref{E:1} 是关于 $c(x)$ 的一元二次方程,解之即得 $c(x)$ 的闭形式,再将此闭形式展开即得 $C_n$ 的表达式。

解得
$$ c(x) = \frac{1 \pm \sqrt{1 - 4x}} {2x} $$
注意到 $c(x)$ 在 $x = 0$ 处的极限应为 $0$,据此可知上式中分母上应取负号,即
\begin{equation}
c(x) = \frac{1 - \sqrt{1 - 4x}} {2x} \label{E:2}
\end{equation}
现在问题归结为如何将 \eqref{E:2} 展成幂级数。

要解决这个问题,我们需要知道一个东西,那就是二项式定理的推广形式。
回忆我们所学过的二项式定理,$(x + y)^n$ 中的指数 $n$ 必须是非负整数。先哲牛顿推广了初等的二项式定理,他证明了指数可以为任意实数 $r$,二项式定理同样成立。即有
$$(x+y)^r = \sum_{k = 0}^{\infty} \binom{r}{k} x^k y ^{r-k} $$
其中
$$\binom{r}{k} = \frac{r (r-1) (r-2) \dots (r - k + 1)} {k!}$$
$r (r-1) (r-2) \dots (r - k + 1)$ 也称作「$r$ 的降 $k$ 阶乘」,记作 $(r)_k$,这种记法称作 Pochhammer 符号。

二项式定理的一般形式在物理上很有用处,我念本科时不知道这么个好东西,常常看不懂书上的一些推导过程。

借助推广的二项式定理,我们很容易写出 $\sqrt{1 - 4x}$ 的展开式
\begin{aligned}
\sqrt{1 - 4x} &= (1 - 4x)^{1/2} \\
&= \sum_{k = 0}^{\infty}\binom{1/2}{k} (-4x)^k \\
&= \sum_{k = 0}^{\infty} \frac{(-1)^{k-1}(2k-3)!!}{2^k k!} (-4x)^k \\
&= \sum_{k = 0}^{\infty} \frac{(-1)^{k-1}}{4^k (2k -1) }\frac{2^k (2k-1)!!}{k!} (-4x)^k \\
&= \sum_{k = 0}^{\infty} \frac{(-1)^{k-1}}{4^k (2k -1) } \binom{2k}{k} (-4x)^k \\
&= \sum_{k = 0}^{\infty} \frac{-1}{ 2k -1 } \binom{2k}{k} x^k
\end{aligned}
进而
\begin{aligned}
1 - \sqrt{1 - 4x} &= \sum_{k = 1}^{\infty} \frac{1}{ 2k -1 } \binom{2k}{k} x^k \\
&= \sum_{k = 0}^{\infty} \frac{1}{ 2k + 1 } \binom{2k+2}{k+1} x^{k+1} \\
&= \sum_{k = 0}^{\infty} \frac{2}{k+1} \binom{2k}{k} x^{k+1}
\end{aligned}
从而
$$ \frac{1 - \sqrt{1 - 4x}} {2x} = \sum_{k = 0}^{\infty} \frac{1}{ k+1 } \binom{2k}{k} x^k $$
因此
$$ C_n = \frac{1}{n+1} \binom{2n}{n} $$

补充

$C_n$ 还可写成
$$ C_n = \binom{2n}{n} - \binom{2n}{n + 1} $$
另外,$C_n$ 的相邻两项满足
$$ C_{n+1} = \frac{2(2n+1)}{n + 2} C_n $$

最新文章

  1. 运算符 与 分支语句:if ,else if,else;switch case
  2. web前端性能14条规则
  3. 使用 RestEasy 和 Apache Tomcat 构建 RESTful Web 服务
  4. 对Struts的理解
  5. spring定时任务的配置
  6. [深入React] 1. 开发环境搭建
  7. archlinux的安装与简单配置(长期更新)
  8. Oracle索引状态查询&索引重建
  9. 详解css3弹性盒模型(Flexbox)
  10. 数字是否可以被3和5同时整除,use if and % (21.9.2017)
  11. [bzoj1901]动态区间k大
  12. ROS_Kinetic_19 群机器人框架示例(micros swarm framework)
  13. 微信小程序 遇到的问题(新)
  14. 熟悉pyspider的装饰器
  15. asp.net mvc自动压缩文件,并生成CDN引用
  16. RabbitMQ 内存控制 硬盘控制
  17. Java多线程--基础概念
  18. linux命令(52):usermod 修改账户信息,groupmod
  19. juc并发工具类之CountDownLatch闭锁
  20. python 字符串与字节之间的相互转化

热门文章

  1. Informatica 简单使用
  2. iOS之旅--隐藏(去除)导航栏底部横线
  3. mysql指定id默认第一
  4. MySQL中事物的详解
  5. mysql,oracle表数据相互导入
  6. Choosing Capital for Treeland CodeForces - 219D (树形DP)
  7. easypoi 一行代码搞定excel导入导出
  8. Aizu:2170-Marked Ancestor
  9. python, 面向对象编程Object Oriented Programming(OOP)
  10. Android面试收集录17 Android进程优先级