码迷,mamicode.com
首页 > 其他好文 > 详细

卡特兰数

时间:2019-10-20 10:36:18      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:转换   use   方案   黄色   利用   连接   外部   splay   应用   

卡特兰数

卡特兰数的意义

卡特兰数有一个很重要的意义就是:
\(C_n\)表示所有在n × n格点中不越过对角线的单调路径的个数。

通项公式

卡特兰数有两个通项公式,第一个是这样的:
\[ C_{n}=\frac{1}{n+1}\left(\begin{array}{c}{2 n} \\ {n}\end{array}\right)=\frac{(2 n) !}{(n+1) ! n !} \]
第二个是这样的:
\[ 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_{2n}^n\)减去不合法的方案数。

技术图片

这里的黄色线和绿色线连接而成的路径代表一条不合法的路径,我们把路径第一次超越对角线的点(点L)到终点(点A)的路径沿粉色线条(对角线向上平移1个单位得到)对称。得到了蓝色的路径。显然,这里的黄色路径和蓝色路径是对应的。

容易证明,所有不合法的路径和所有从原点到A‘点的路径都是一一对应的。所以不合法的路径条数就是从原点到A‘的路径条数\(C_{2n}^{n-1}\)

这样就得出了前面提到的卡特兰数第二个通项公式:

\[ 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\}\)依次入栈后合法的出栈顺序方案数。

参考资料

维基百科-卡特兰数

技术图片

卡特兰数

标签:转换   use   方案   黄色   利用   连接   外部   splay   应用   

原文地址:https://www.cnblogs.com/GavinZheng/p/11706690.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!