卡特兰数(Catalan Number)

本文介绍了卡特兰数的基本递推公式及其变形,包括h(n)=h(n-1)*(4*n-2)/(n+1)和h(n)=C(2n,n)/(n+1),并探讨了卡特兰数在矩阵连乘、二叉树、出栈序列、找零问题等领域的应用。" 107340668,9329892,TensorFlow中的语义分割模型大全,"['深度学习', '计算机视觉', '语义分割', 'TensorFlow框架', '模型库']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

卡特兰数基本递推公式:

原理: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个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问有多少种排列方式?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值