卡特兰数(Catalan Number)

来源:互联网 发布:热云数据 编辑:程序博客网 时间:2024/04/25 23:48

卡特兰数基本递推公式:

原理:h(0)=1, h(1)=1,h(2)=2,h(3)=5,h(4)=14,h(5)=42,h(6)=132,h(7)=429,h(8)=1430,h(9)=4862......

令h(0)=1,h(1)=1,卡特兰数满足递推式:h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)

例如:

h(2)=h(0)*h(1)+h(1)*h(0)=1*1+1*1=2 

h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=1*2+1*1+2*1=5

变形递推关系:

递推式(2):    h(n)=h(n-1)*(4*n-2)/(n+1);
递推关系的解为: h(n)=C(2n,n)/(n+1) (n=0,1,2,3,...)
递推关系的另类解为: h(n)=C(2n,n)-C(2n,n+1)(n=0,1,2,3,...)

卡特兰数的应用

(1)矩阵连乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种方案?

思路:首先通过括号化,将P分成两个部分,然后分别对两个部分进行括号化。比如分成(a1)×(a2×a3.....×an),然后再对(a1)和(a2×a3.....×an)分别括号化;又如分成(a1×a2)×(a3.....×an),然后再对(a1×a2)和 (a3.....×an)括号化。

则 f(n) = f(1)*f(n-1) + f(2)*f(n-2) + f(3)*f(n-3) + f(n-1)*f(1)

(2)有n个节点的二叉树共有多少种情形?

       思路:h(n)表示这n个元素一共可以构成h(n)个不同的二叉树。如果选取a0作为根节 点,那么其左子树包含0个元素,左子树的数目是h(0);其右子树包含n-1个元素,右子树的数目是h(n-1);以a0为根节点的二叉树的数目是 h(0)*h(n-1)。如果选取a1作为根节点,那么其左子树包含1个元素a0,左子树的数目是h(1);其右子树包含h(n-2)个元素,右子树的数 目是h(n-2);以a1为根节点的二叉树的数目是h(1)*h(n-2)。

则h(n)=h(0)*h(n-1)+h(1)*h(n-2)+…+h(i)*h(n-1-i)+…+h(n-1)*h(0)。

(3)一个栈的进栈序列为1,2,3,…,n,有多少个不同的出栈序列?

(4)买票找零问题

(5)在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数?

(6)n*n的方格地图中,从一个角到另外一个角,不跨越对角线的路径数为h(n).

(7)圆桌周围有 2n个人,他们两两握手,但没有交叉的方案数为h(n)

(8)求一个凸多边形区域划分成三角形区域的方法数?

(9)10个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问有多少种排列方式?

0 0
原创粉丝点击