Catalan数

一、递推式

已知n(n∈N)个元素,约定元素k表示第k个入栈的元素,换句话说,将元素按入栈顺序的先后编号为1~n,称为元素1~n。求可能的出栈顺序的总数Cn
显然C1=1, C2=2。当n=3时,C3=5,可能的出栈顺序有(用1表示入栈,0表示出栈)

出栈顺序123132213231321
操作方法101010101100110010110100111000

如当n=4时,C4=14,可能的出栈顺序有

出栈顺序1234124313241342143221342143
操作方法10101010101011001011001010110100101110001100101011001100
出栈顺序2314234124313214324134214321
操作方法11010010110101001101100011100010111001001110100011110000

将这14种可能按照元素1的出栈顺序可以分成4组:元素1第1/2/3/4个出栈。

出栈顺序1234124313241342143221342143
操作方法10101010101011001011001010110100101110001100101011001100
出栈顺序2314234124313214324134214321
操作方法11010010110101001101100011100010111001001110100011110000

不妨按元素1第几个出栈排列。当元素1第1个出栈时,元素234的出栈顺序任意,方案数显然为C3。当元素1第2个出栈时,显然第1个出栈的是元素2,后2个出栈的便为元素34,且只要元素34出栈顺序合法,则4个元素的出栈顺序便一定为合法的,根据分步相乘原则,方案数为C1×C2;当元素1第3个出栈时,显然前2个出栈的是元素23,最后一个出栈的是元素4,方案数为C2×C1;当元素1第4个出栈时,前3个出栈的元素234顺序任意,方案数也为C3。最后,根据分组相加原则,总方案数C4=C3+C1×C2+C2×C1+C3
推广到Cn,可得Catalan数的递推式:

Cn=k=1n1CkCnk

二、通项公式

Cn 的通项公式则是由操作方法的01串入手。首先,显然对于每个合法的01串,在其任意前缀中1的数量≥0的数量。每个元素都会入栈一次、出栈一次,则01串必然有2n个数字,由n个0和n个1组成。在2n个位置中填入n个1(剩下的位置自动填0)的方案数为 Cn2n 。从 Cn2n 中减去不合法的方案数即为所求。同理,对于每个不合法的01串,必然在至少一组前缀中1的数量<0的数量。
对于每个不合法的01串,设m为0的数量>1的数量的最短前缀中1的个数,显然该前缀有m+1个0,2m+1个数位。此后的2(n-m)-1位上有n-m个1,n-m-1个0。如果把这2(n-m)-1位按位取反,变为n-m个0,n-m-1个1,结果得到一个由n+1个0和n-1个1组成的2n位01串。
反过来,任何一个由n+1个0,n-1个1组成的2n位01串,也必然在某一前缀中0的数量>1的数量,同样将后面的数位按位取反,结果得到一个由n个0和n个1组成的2n位01串,且由于两个01串的前缀相同,∴新01串必然在同一前缀中0的数量>1的数量,∴新01串一定是不合法的。
通过上述过程,我们证明了由n个0和n个1组成的2n位不合法01串与由n+1个0和n-1个1组成的2n位01串一一对应,所以不合法的01串共有 Cn+12n

Cn=Cn2nCn+12n=(2n)!n!n!(2n)!(n+1)!(n1)!=(2n)![1n!n!1(n+1)!(n1)!]=(2n)![n+1(n+1)!n!n(n+1)!n!]=(2n)!(n+1)!n!=(2n)!(n+1)n!n!=Cn2nn+1

Cn=Cn2nn+1

三、变式

Catalan数的变式很有趣的一点是推出递推式与通项公式的方法不同,变式也不同。
推出递推式的方法的变式包括
1. Cn表示通过连结顶点而将n + 2边的凸多边形分成三角形的方法个数。
这里写图片描述
2. Cn表示用n个长方形填充一个有n个台阶的阶梯的方法个数。
这里写图片描述
3. Cn表示有n个结点组成二叉树的方案数。
这里写图片描述
4. Cn表示有2n+1个节点组成不同构满二叉树的方案数。
这里写图片描述

推出通项公式的方法的变式包括

  1. Cn表示在平面直角坐标系中,只向右、向上走,只在格点处转弯,不穿过直线y=x(可以在直线上),从(0,0)走到(n,n)的方案数。
    这里写图片描述
  2. 在圆上选择2n个点,将这些点成对连接起来,且所得n条线段不相交,求可行的方法数。
    分析:——————
  3. (2n)个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?
  4. 2n个人排队买票,其中n个人持50元,n个人持100元。每张票50元,且一人只买一张票。初始时售票处没有零钱找零。请问这2n个人一共有多少种排队顺序,不至于使售票处找不开钱?
    变式4还有一种变化:n+m个人排队买票,并且满足,票价为50元,其中n个人各手持一张50元钞票,m个人各手持一张100元钞票,除此之外大家身上没有任何其他的钱币,并且初始时候售票窗口没有钱,问有多少种排队的情况数能够让大家都买到票。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值