11. 卡特兰数

11.1. 公式

卡特兰数(Catalan Number)的递推式如下:

\[\begin{split}\mathbb{C}_n &=\ \mathbb{C}_0 \mathbb{C}_{n-1} + \mathbb{C}_1 \mathbb{C}_{n-2} + \mathbb{C}_2 \mathbb{C}_{n-3} + \cdots + \mathbb{C}_{n-2} \mathbb{C}_1 + \mathbb{C}_{n-1} \mathbb{C}_0 \\ &=\ C_{2n}^n - C_{2n}^{n-1} \\ &=\ \frac{1}{n+1} C_{2n}^n \\ &=\ \frac{1}{n+1} \frac{(2n)!}{n!n!} \\ &=\ \frac{4n-2}{n+1} \mathbb{C}_{n-1} \\\end{split}\]

前几项卡特兰数是:

\[\begin{split}\mathrm{index} & : &\ 0 &,& 1 &,& 2 &,& 3 &,& 4 &,& 5 &,& 6 &,& 7 &,& 8 &,& 9 &,& 10 &,& 11 &,& 12 &,& 13 &,& 14 &,& ... \\ \mathrm{number} & : &\ 1 &,& 1 &,& 2 &,& 5 &,& 14 &,& 42 &,& 132 &,& 429 &,& 1430 &,& 4862 &,& 16796 &,& 58786 &,& 208012 &,& 742900 &,& 2674440 &,& ...\end{split}\]

11.2. 应用

卡特兰数的应用非常广泛,基本上可以转化为左右匹配的问题,解题最重要的是确定 \(n\) 的大小。

  • 计算矩阵连乘的不同计算次序。

    两个矩阵连乘对应 \(\mathbb{C}_1\) ,三个矩阵连乘对应 \(\mathbb{C}_2\) ,四个矩阵连乘对应 \(\mathbb{C}_3\) 。要求在任一左括号的左边,右括号的数量不多于左括号的数量。

../_images/11_matrix.jpg ../_images/11_mtree.jpg
  • 凸多边形的三角剖分。

    正六边形的剖分对应 \(\mathbb{C}_4\)

../_images/11_polygon.png
  • 阶梯形的矩形剖分。

    使用 \(n\) 个矩形拼成 \(n\) 阶梯形,对应 \(\mathbb{C}_n\)

../_images/11_rectangle.jpg
  • 满位置二叉树(每个节点有0或2个子节点,且左子节点和右子节点是不同的)的计数。

    \(n\) 个叶子节点的满位置二叉树对应 \(\mathbb{C}_{n-1}\)

../_images/11_tree.jpg
  • \(n \times n\) 的格子中,只在下三角行走,每次横或竖走一格,有多少种走法?

    对应 \(\mathbb{C}_n\) 。要求所有走过的步数中,向右走的步数不比向上走的步数少,即 \(C_{2n}^n - C_{2n}^{n-1}\)

../_images/11_grid.png
  • 长度为 \(n\) 的序列的出栈方式有多少种?

    对应 \(\mathbb{C}_n\) 。要求进栈的数不少于出栈的数。

  • 在圆上选择 \(2n\) 个点,将这些点成对连接起来使得所得到的 \(n\) 条线段不相交的方法数。

    对应 \(\mathbb{C}_n\)

../_images/11_circle.jpg
  • 16个人按顺序去买烧饼,其中8个人每人身上只有一张5块钱,另外8个人每人身上只有一张10块钱。烧饼5块一个,开始时烧饼店老板身上没有钱。16个顾客互相不通气,每人只买一个。这16个人共有多少种排列方法能避免找不开钱的情况出现?

    对应 \(\mathbb{C}_8\) 。要求队列前方有5块钱的人数不少于有10块钱的人数。

  • 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?

    对应 \(\mathbb{C}_6\)

11.3. 参考资料

  1. 卡特兰数(Catalan number)(二)

  1. 卡特兰数

  1. 卡特兰数

  1. 卡特兰数

  1. Catalan number