卡特兰数
卡特兰数的意义
卡特兰数有一个很重要的意义就是:
\(C_n\)表示全部在n × n格点中不越过对角线的单调路径的个数。ui
通项公式
卡特兰数有两个通项公式,第一个是这样的:spa
\[C_{n}=\frac{1}{n+1}\left(\begin{array}{c}{2 n} \\ {n}\end{array}\right)=\frac{(2 n) !}{(n+1) ! n !} \]
第二个是这样的:blog
\[\displaystyle C_n=\binom{2n}{n}-\binom{2n}{n+1}\quad \operatorname{for} n\ge1 \]
第一个公式就是把第二个公式拆开。ip
卡特兰数通项公式的证实
咱们考虑证实第二个公式。证实的方式有不少,均和卡特兰数的性质有关,证实方法之间也能够互相转换。因此这里介绍一种最普通的证实方法。get

根据定义,合法的路径不能越过对角线。那么咱们考虑利用总方案数\(C_{2n}^n\)减去不合法的方案数。数学

这里的黄色线和绿色线链接而成的路径表明一条不合法的路径,咱们把路径第一次超越对角线的点(点L)到终点(点A)的路径沿粉色线条(对角线向上平移1个单位获得)对称。获得了蓝色的路径。显然,这里的黄色路径和蓝色路径是对应的。io
而之因此选择“向上平移1个单位”的意义就是在任何状况下接触这条线就会变成不合法路径。class
容易证实,全部不合法的路径和全部从原点到A'点的路径都是一一对应的。因此不合法的路径条数就是从原点到A'的路径条数\(C_{2n}^{n-1}\)二叉树
证实以下:方法
由于这个关系是可逆的(经过操做后的路径能得出操做前的路径),因此显然全部不合法的路径和全部从原点到A'点的路径都是一一对应的。
这样就得出了前面提到的卡特兰数第二个通项公式:
\[C_{n}=\left(\begin{array}{c}{2 n} \\ {n}\end{array}\right)-\left(\begin{array}{c}{2 n} \\ {n+1}\end{array}\right) \quad \text { for } n \geq 1 \]
应用
组合数学中有很是多的组合结构能够用卡塔兰数来计数。
- \(C_n\)表示长度2n的dyck word的个数。Dyck word是一个有n个X和n个Y组成的字串,且全部的前缀字串皆知足X的个数大于等于Y的个数。如下为长度为6的dyck words: XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY。(这个性质在ZROI1151用到了)
- 将上例的X换成左括号,Y换成右括号,\(C_n\)表示全部包含n组括号的合法运算式的个数。
- \(C_n\)表示有n个节点组成不一样构的二叉树方案数。下图中,n等于3,圆形表示节点,月牙形表示什么都没有。(不一样构二叉树是指:对于两颗二叉树每一个节点,他们的左儿子和右儿子彻底相等)
- \(C_n\)表示有2n+1个节点组成不一样构"合并果子树"(full binary tree)的方案数。下图中,n等于3,圆形表示内部节点,月牙形表示外部节点。本质同上。

- \(C_n\)表示经过连结顶点而将n + 2边的凸多边形分红三角形的方法个数。
- \(C_n\)表示集合\(\{1,...,n\}\)依次入栈后合法的出栈顺序方案数。
参考资料
维基百科-卡特兰数
