卡特兰数catalan证明及应用举例

卡塔兰数是组合数学中一个常在各种计数问题中出现的数列。其计算公式是

Cn=Cn2nn+1=(2n)!(n+1)!n!,n C n = C 2 n n n + 1 = ( 2 n ) ! ( n + 1 ) ! n ! , n 为 自 然 数

由计算公式很容易导出其递推公式为 C0=1,Cn=2(2n+1)n+2Cn1 C 0 = 1 , C n = 2 ( 2 n + 1 ) n + 2 C n − 1
卡特兰数列的前四项是1,1,2,5,…

应用
1. Cn C n 表示长度2n的dyck word的个数。Dyck word是一个有n个X和n个Y组成的字串,且所有的前缀字串皆满足X的个数大于等于Y的个数。以下为长度为6的dyck words:
XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY
2. 将上例的X换成左括号,Y换成右括号,Cn表示所有包含n组括号的合法运算式的个数:
((())) ()(()) ()()() (())() (()())
3. Cn C n 表示所有在n × n格点中不越过对角线的单调路径的个数。一个单调路径从格点左下角出发,在格点右上角结束,每一步均为向上或向右。计算这种路径的个数等价于计算Dyck word的个数:X代表“向右”,Y代表“向上”。
4. 电影院买票找零问题:有2n个人排队进电影院,票价是50美分。在这2n个人当中,其中n个人只有50美分,另外n个人有1美元(纸票子)。愚蠢的电影院开始卖票时1分钱也没有。问:有多少种排队方法使得每当一个拥有1美元买票时,电影院都有50美分找钱
注:1美元=100美分,拥有1美元的人,拥有的是纸币,没法破成2个50美分

证明
令1表示进栈,0表示出栈,则可转化为求一个2n位、含n个1、n个0的二进制数,满足从左往右扫描到任意一位时,经过的0数不多于1数。显然含n个1、n个0的2n位二进制数共有 Cn2n C 2 n n 个,下面考虑不满足要求的数目。

考虑一个含n个1、n个0的2n位二进制数,扫描到第2m+1位上时有m+1个0和m个1(容易证明一定存在这样的情况),则后面的0-1排列中必有n-m个1和n-m-1个0。为了便于求解不满足要求的情况(即扫描到某一位时经过的0数多于1数)数,将2m+2及其以后的部分0变成1、1变成0(一一映射,情况数是相等的),则对应一个n+1个0和n-1个1的二进制数。从而

Cn=Cn2nCn+12n=(2n)!n!n!(2n!)(n+1)!(n1)!=(11n+1n)(2n)!n!n!=Cn2nn+1 C n = C 2 n n − C 2 n n + 1 = ( 2 n ) ! n ! n ! − ( 2 n ! ) ( n + 1 ) ! ( n − 1 ) ! = ( 1 − 1 n + 1 n ) ( 2 n ) ! n ! n ! = C 2 n n n + 1

参考资料:
1. 维基百科卡特兰数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值