组合数学:卡特兰数

作者

李 辉

发布于

2026年4月2日

平衡括号

n=1

()

n=2

()() \qquad (())

n=3

()()() \qquad ()(()) \qquad (())()

(()()) \qquad ((()))

注:“(())()” 是有效的,但 “())(()” 则不是。


n=4

(((()))) ((()()))

((())()) \qquad (()(()))

((()))() \qquad (()()()) \qquad ()((()))

(()())() \qquad (())(()) \qquad ()(()())

(())()() \qquad ()(())() \qquad ()()(())

()()()()


存在一个数列 1, 2, 5, 14, …

这就是卡特兰数 (Catalan numbers),记作 C_n。

如果我们定义 n = 0 的数量为 1,那么该序列变为 1, 1, 2, 5, 14, …


单调格路。从左上角开始,沿着网格边缘移动到右下角,且不跨越对角线的单调路径。

(0,0,0,2)(0,0,0,1)(0,0,2,2)(0,0,2,3)(0,0,1,1)(0,0,1,3)(0,0,1,2)(0,1,1,1)(0,1,1,3) (0,1,1,2)(0,1,2,2)(0,1,2,3)

多边形三角剖分。(这就是欧拉多边形分割问题。)

递推数列

计算八边形的多边形三角剖分 (C8-2=C6)。(C6=C0C5+C1C4+C2C3+C3C2+C4C1+C5C0)

可以观察到,上述所有的组合问题都满足塞格纳递推关系 (Segner’s recurrence relation):

C_{n+1}=\sum_{i=0}^n C_i\,C_{n-i}\quad\text{对于 }n\ge 0, 且 C_0=1,C_1=1。

生成函数

卡特兰数的生成函数 (generating function) 定义为:

c(x)=\sum_{n=0}^\infty C_n x^n=C_0+C_1x+C_2x^2+\cdots

这两个递推关系可以总结为生成函数形式的关系:

c^2(x)=C_0C_0+(C_1C_0+C_0C_1)x+(C_2C_0+C_1C_1+C_0C_2)x^2+\cdots

c^2(x)=C_1+C_2x+C_3x^2+\cdots

c(x)=1+xc(x)^2

c(x) = \frac{1-\sqrt{1-4x}}{2x}


\sqrt{1-4x}=\left(1-4x\right)^{1/2}=\sum_{n\ge 0}\binom{1/2}n(-4x)^n

\begin{aligned} =\sum_{n\ge 0}\frac{\left(\frac12\right)\left(-\frac12\right)\left(-\frac32\right)\dots\left(-\frac{2n-3}2\right)}{n!}(-4x)^n\\ =\sum_{n\ge 0}(-1)^{n-1}\frac{(2n-3)!!}{2^nn!}(-4x)^n\\ =-\sum_{n\ge 0}\frac{2^n(2n-3)!!}{n!}x^n\\ =-2\sum_{n\ge 0}\frac{2^{n-1}\prod_{k=1}^{n-1}(2k-1)}{n(n-1)!}x^n\\ \end{aligned}


\begin{aligned} =-2\sum_{n\ge 0}\frac{2^{n-1}(n-1)!\prod_{k=1}^{n-1}(2k-1)}{n(n-1)!^2}x^n\\ =-2\sum_{n\ge 0}\frac{\left(\prod_{k=1}^{n-1}(2k)\right)\left(\prod_{k=1}^{n-1}(2k-1)\right)}{n(n-1)!^2}x^n\\ =-2\sum_{n\ge 0}\frac{(2n-2)!}{n(n-1)!^2}x^n\\ =-2\sum_{n\ge 0}\frac1n\binom{2n-2}{n-1}x^n, \end{aligned}


\begin{aligned} c(x)\\ =\frac1{2x}\left(1+2\left(-\frac12+\sum_{n\ge 1}\frac1{n}\binom{2(n-1)}{n-1}x^n\right)\right)\\ =\sum_{n\ge 1}\frac1n\binom{2(n-1)}{n-1}x^{n-1}\\ =\sum_{n\ge 0}\frac1{n+1}\binom{2n}nx^n. \end{aligned}

通项公式

卡特兰数的通项公式:

C_n = \frac{1}{n+1}{2n\choose n}


图 1: 使用路径反射法 (Path Reflection) 计算单调格路

C_n 的表达式为:

C_n = {2n\choose n} - {2n\choose n+1} = {\frac{1}{n+1}}{2n\choose n}


图 2: 可以通过 “0” -> “(”,“1” -> “)” 来计算平衡括号

图 3: 具有 n 个内部节点的有根二叉树

明安图

图 4: 明安图 (1692-1763) 于 1730 年首次建立并使用了后来被称为卡特兰数的数列。

卡特兰数列表

 [1]          1          2          5         14         42        132
 [7]        429       1430       4862      16796      58786     208012
[13]     742900    2674440    9694845   35357670  129644790  477638700
[19] 1767263190 6564120420