卡特兰数

来源:互联网 发布:医院网络客服工作职责 编辑:程序博客网 时间:2024/04/29 03:28

卡特兰数是组合数学中一个经常在各种计数问题中出现的数列,公式如下:

数列的前几项:1,1,2,5,14,42,132,429,1430,4862……

性质:
卡特兰数的公式可以表达成下面形式:
这里写图片描述
也可以用递推公式来表示:
这里写图片描述

应用:
1、大家最熟悉的应该是用Cn来表示将n+2边的凸多边形切割成三角形的方法个数,当n=4时:
这里写图片描述

2、Cn表示长度2n的dyck word的个数。Dyck word是一个有n个X和n个Y组成的字串,且所有的前缀字串皆满足X的个数大于等于Y的个数。以下为长度为6的dyck words:
XXXYYY,XYXXYY,XYXYXY,XXYYXY,XXYXYY

其实这就是一种括号化问题
P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?
将上例的X换成左括号,Y换成右括号,Cn表示所有包含n组括号的合法运算式的个数:
((())),()(()),()()(),(())(),(()())

这种Dyck word字符串还可以运用在棋盘上,例如用Cn表示所有在n × n格点中不越过对角线的单调路径的个数。一个单调路径从格点左下角出发,在格点右上角结束,每一步均为向上或向右。计算这种路径的个数等价于计算Dyck word的个数:X代表“向右”,Y代表“向上”。下图为n = 4的情况:
这里写图片描述
更详细的,可以参考这道题:sicily 13062

3、Cn表示有n个节点组成不同构二叉树的方案数,n=3时:
这里写图片描述

4、出栈次序问题:一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列?
类似:
  (1)有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某5元出栈)
  (2)在圆上选择2n个点,将这些点成对连接起来,使得所得到的n条线段不相交的方法数。

总结:
所有的问题虽然看上去不一样 ,但是本质是一样的,都是卡特兰数的应用。实际中我们就是要看透问题的本质,才可以快速解决问题。

参考:
维基百科,组合数学

0 0
原创粉丝点击