卡特兰数

来源:互联网 发布:九州天空城虐心网络帖 编辑:程序博客网 时间:2024/04/28 08:34

前几项为: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786

递推公式:


通项:


若n从0开始,则



证明:由于这个递推关系不是线性的,h(n)并不依赖于前面的某个固定值,而是依赖与前面的所有值。令生成函数


将g(x)与自己相乘:


将h1=h2=1和hn的递推关系代入得到:




解方程


由g(x)的定义知道g(0)=0,验证上述根只有g2(x)成立,所以生成函数


由广义牛顿二项式定理得:



常见问题:

1、凸多边形三角划分

问题描述:在一个凸n边形中,通过插入内部不相交的对角线将其分成一些三角形区域,问有多少种不同的分法?


分析:令h(n)表示分一个n+1条边的凸多边形为三角形的方法数,并规定h(1)=1

n=2,h(2)=1

n=3,h(3)=2,有如下两种情况


当n=k+1,


如图,取定多边形的一个顶点,边将多边形分成和T三部分,则凸(n+1)边形中三角形的分法为R1中三角形分法和R2的积,即


2、矩阵连乘

问题描述: ,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?

分析:解:设对n个矩阵的乘积有hn种方案,选取第k个数,第k个数左边(包括k)的部分有种方案,右边有种方案

当k=1,2,3,...,n得


3、出栈顺序

问题描述:一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列?

分析:假定k时最后出栈的数k=1,2,3,...,n,那么在k出栈之前有k-1个数进栈出栈,在k之后以n-k个数进栈出栈得


3、二叉树问题

问题描述:n个节点的二叉树的所有可能形态数

分析:考虑随便取一个节点作为根,那么他左边和右边的儿子节点个数就确定了。根节点标号为k,那么左子树的标号就从1到k-1,共k-1个,右子树的标号就从k+1到n,共n-k个,得



4、街区对角线问题

问题描述:一位大城市的律师在他住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。如果他从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路? 


分析一:

      如图,先考虑对角线下方的路径。设第一次接触对角线的位置A(k,k),它一定是由下方的点(k,k-1)而来,而起点的第一步一定是(1,0)。考虑从(1,0)到(x,x-1)的(x-1)*(x-1)的小棋盘中,因为在此中路径一直没有接触过主对角线(A的选取),所以在此小棋盘中路径也一定没有穿过从(1,0)到(k,k-1)的小棋盘的对角线L1。

     这样在这个区域中的满足条件的路径数量就是一个同构的子问题,解应该是F(k-1),而从M到右上角终点的路径数量也是一个同构的子问题,解应该是F(n-k)。


分析二:

如图,先考虑对角线下方的路径。这些路径都是从(0,0)点出发,经过(0,1)点及(n,n-1)点到达(n,n)点的不接触对角线的路径,其中有n-1条向上,n-1条向右,故有条路径。对其中任意一条接触对角线的路径,我们可以把他从最后离开对角线的点如图(4中的A点)到(0,1)点之间的部分关于对角线做一个反射,就得到一条从(1,0)点出发经过A点到达(n,n-1)点的路径。反之,任何一条从(1,0)点出发,穿过对角线而到达(n,n-1)点的非将路径,也可以通过这样的反射对应到一条从(0,1)点出发接触到对角线而达到(n,n-1)点的路径。

       而从(0,1)走到(n,n-1)有2n条路,其中n步向右,n-1步向上,故有路径。

即共有路径。

由对称性:



0 0