Catalan序列是一个整数序列,其通项公式是
h(n)=C(2n,n)/(n+1) (n=0,1,2,...)
其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452
(从0开始)
递推:
Catalan数的一些性质
基本公式:
Catalan数的基本公式就是上个部分所列出的那样,但是却有一些变形和具体的性质:
1、
这是根据原来的式子推导出来的,大概过程是这样的:
2、
这个递推式很容易可以从原来的式子中获得
3、
4、
5、
这个是Catalan数的增长趋势。
在《组合数学》(机械工业出版社)一书中,介绍Catalan数是由其一个应用推导出的公式,其具体的描述如下:
n个+1和n个-1构成2n项,其部分和满足的序列个数等于第n个Catalan数。
其证明也不难,我们假设不满足条件的序列个数为,那么就有。剩下的工作就是求了,我们假设有一个最小的k令。由于这里k是最小的,所以必有,并且k是一个奇数。此时我们将前k项中的+1变为-1,将-1变为+1,那么就得到一个有(n+1)个+1和(n-1)个-1的序列了,这样的序列个数就是我们要求的,数值大小为 。那么我们就得到了,就是我们前面的公式。
在具体的组合数问题中,很多都可以转换为Catalan数进行最后的计算,如下:
1、如上文所说,对于任意的k,前k个元素中-1的个数小等于+1的个数的序列计数,我们可以不停地变换形式,比如将-1看成右括号,+1看成左括号,就变成了合法括号表达式的个数。比如2个左括号和2个右括号组成的合法表达式有种,是()()和(())。
2、既然如上一点都把括号加上去了,那么顺便就再次转换,n+1个数连乘,乘法顺序有种,比如我们三个数连乘a*b*c,那么等于在式子上加括号,有2种乘法顺序,分别是(ab)c和a(bc)。貌似对应关系比较模糊,我们取n为3来看看,n为3的时候就是4个数相乘了,那么我们设为abcd,最初的标号定在a上,我们对于n为3得到合法的括号序列有5个,分别是:((())),()(()),()()(),(())()和(()()),那么我们将一个左括号看成是当前操作数指针往右移动一个位置,一个右括号看成是当前操作数和左边最近的一块操作数相乘起来,那么对应的五个表达式就是:a(b(cd)),(ab)(cd),((ab)c)d,(a(bc))d和a((bc)d),他们之间是一一对应关系。
转自:http://www.cnblogs.com/muzinian/archive/2012/11/08/2761430.html
组合数学中有非常多.的组合结构可以用卡塔兰数来计数。在Richard P. Stanley的Enumerative Combinatorics: Volume 2一书的习题中包括了66个相异的可由卡塔兰数表达的组合结构。以下用Cn=3和Cn=4举若干例:
- Cn表示长度2n的dyck word的个数。Dyck word是一个有n个X和n个Y组成的字串,且所有的前缀字串皆满足X的个数大于等于Y的个数。以下为长度为6的dyck words:
XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY
- 将上例的X换成左括号,Y换成右括号,Cn表示所有包含n组括号的合法运算式的个数:
((())) ()(()) ()()() (())() (()())(这里n=3,为5个)
- Cn表示有n个节点组成不同构二叉树的方案数。
- 下图中,n等于3,圆形表示节点,月牙形表示什么都没有。
- Cn表示有2n+1个节点组成不同构满二叉树(full binary tree)的方案数。下图中,n等于3,圆形表示内部节点,月牙形表示外部节点。本质同上。
证明:
令1表示进栈,0表示出栈,则可转化为求一个2n位、含n个1、n个0的二进制数,满足从左往右扫描到任意一位时,经过的0数不多于1数(也就是1的个数>=0的个数)。显然含n个1、n个0的2n位二进制数共有个,下面考虑不满足要求的数目。
考虑一个含n个1、n个0的2n位二进制数,扫描到第2m+1位上时有m+1个0和m个1(容易证明一定存在这样的情况),则后面的0-1排列中必有n-m个1和n-m-1个0。将2m+2及其以后的部分0变成1、1变成0,则对应一个n+1个0和n-1个1的二进制数。反之亦然(相似的思路证明两者一一对应)。
从而
证毕。
Cn表示所有在n × n格点中不越过对角线的单调路径的个数。一个单调路径从格点左下角出发,在格点右上角结束,每一步均为向上或向右。计算这种路径的个数等价于计算Dyck word的个数: X代表“向右”,Y代表“向上”。下图为n = 4的情况:
Cn表示通过连结顶点而将n + 2边的凸多边形分成三角形的方法个数。下图中为n = 4的情况:
- (Cn表示对{1, ..., n}依序进出栈的置换个数。一个置换w是依序进出栈的当S(w) = (1, ..., n), 其中S(w)递归定义如下:令w = unv,其中n为w的最大元素,u和v为更短的数列;再令S(w) = S(u)S(v)n,其中S为所有含一个元素的数列的单位元。
- Cn表示集合{1, ..., n}的不交叉划分的个数. 那么, Cn 永远不大于第n项贝尔数. Cn也表示集合{1, ..., 2n}的不交叉划分的个数,其中每个段落的长度为2。综合这两个结论,可以用数学归纳法证明 that all of the free cumulants of degree more than 2 of the Wigner semicircle law are zero. This law is important in free probability theory and the theory of random matrices.
- Cn表示用n个长方形填充一个高度为n的阶梯状图形的方法个数。下图为 n = 4的情况:
转自:http://zh.wikipedia.org/wiki/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0
括号化问题 如,矩阵链乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n-1)种)
出栈次序问题
1、一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列?
出栈次序
判断另一个序列有没有可能是对应的pop 顺序。
2、有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某5元出栈)。
将多边行划分为三角形问题 n+2是Cn ,如果是n个点的话是C(n-2)
1、将一个凸多边形区域分成三角形区域的方法数?
2、一位大城市的律师在她住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。如果她从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路?
3、在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数? (Cn)
给顶节点组成二叉树的问题 给定N个节点,能构成多少种不同的二叉树?
1、16个人按顺序去买烧饼,其中8个人每人身上只有一张5块钱,另外8个人每人身上只有一张10块钱。烧饼5块一个,开始时烧饼店老板身上没有钱。16个顾客互相不通气,每人只买一个。问这16个人共有多少种排列方法能避免找不开钱的情况出现。
h(8)=16!/(8!*9!)=1430,所以总数=h(8)*8!*8!=16!/9
2、在图书馆一共6个人在排队,3个还《面试宝典》一书,3个在借《面试宝典》一书,图书馆此时没有了面试宝典了,求他们排队的总数?
h(3)=6!/(3!*4!)=5,所以总数=h(3)*3!*3!=180
catalan数深入:
http://www.cnblogs.com/wuyuegb2312/archive/2013/07/16/3016878.html#code1