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

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

C_n = \frac{C_{2n}^n}{n+1} = \frac{(2n)!}{(n+1)!n!}, n为自然数
由计算公式很容易导出其递推公式为 C0=1,Cn=2(2n+1)n+2Cn−1 C 0 = 1 , C n = 2 ( 2 n + 1 ) n + 2 C n − 1 C_0=1, C_n=\frac{2(2n+1)}{n+2}C_{n-1}
卡特兰数列的前四项是1,1,2,5,…

应用
1. Cn C n 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 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 C_{2n}^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=Cn2n−Cn+12n=(2n)!n!n!−(2n!)(n+1)!(n−1)!=(1−1n+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

C_n = C_{2n}^n-C_{2n}^{n+1}=\frac{(2n)!}{n!n!}-\frac{(2n!)}{(n+1)!(n-1)!}=(1-\frac{1}{\frac{n+1}{n}})\frac{(2n)!}{n!n!}=\frac{C_{2n}^n}{n+1}

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

卡特兰数catalan证明及应用举例相关推荐

  1. 卡特兰数 Catalan number

    卡特兰数 Catalan number 卡特兰数前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 74290 ...

  2. 算法基础 - 数论 | 组合数学 卡特兰数(Catalan number)定义、证明及例题

    写在前面:卡特兰数这东西感觉挺常用的,并且公式很简单,那就花一下午总结一下,学点皮毛吧(反正遇到我还是不会 ) [PDF] 大三上组合数学课堂讲义 文章目录 卡特兰数定义 卡特兰数的性质 卡特兰数证明 ...

  3. 卡特兰数——Catalan数

    卡特兰数是组合数学中一个常出现在各种计数问题中出现的数列.由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡塔兰数的一般项公式为  通常使用的递归式:  h(n)=((4*n-2) ...

  4. 卡特兰数Catalan

    1.卡特兰数的性质 其实重要的就两个公式:1和3. 公式1是卡特兰数的通项公式. 公式2是卡特兰数的递归公式.注意递推公式是C n+1=- 通常是发现问题可以用卡特兰数的递推公式来解决,从而想到卡特兰 ...

  5. 卡特兰数 Catalan数

    From: http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html 维基百科资料: 卡塔兰数 卡塔兰数是组合数学中一个常出现在各种计数问题 ...

  6. java编程求卡特兰数_卡特兰数(Catalan Number)

    卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列.该数在计算机专业中比较重要,有一些具体的应用实例.这篇文章主要分三部分: 卡特兰数递归式的含 ...

  7. 卡特兰数Catalan number的应用

    卡特兰数(Catalan number)的应用 使用场景 计算公式   卡特兰数是一个特殊的数列,基于这个数列,可以找出很多有趣的问题,对于我们学计算机的而言,与这个数列打交道是不可避免了,举一个很经 ...

  8. 卡特兰数 Catalan

    做初赛题,回顾到以前学的一些知识,发现还有其他广泛的应用,所以在此记录并当作复习,若有不当之处,随时欢迎读者斧正. Catalan 卡特兰数又称卡塔兰数,卡特兰数是组合数学中一个常出现在各种计数问题中 ...

  9. 卡特兰数递推公式证明及应用

    目录 卡特兰数 定义 递推公式 公式1: 公式2: 公式3: 公式4: 应用场景 公式1证明 公式2证明 公式3证明 公式4证明 例题 卡特兰数 定义 在oeis上可以看到卡特兰数的定义如下. 递推公 ...

最新文章

  1. ASP.NET抓取其他网页代码
  2. openstack云主机无法绑定ip_智汇华云|OpenStack 虚拟机 GPU 性能优化
  3. ubuntu搭建【python】运行环境
  4. 埃罗芒阿老师计算机谱,[B型]ヒトリゴト-埃罗芒阿老师OP 完整版
  5. Some Essential JavaScript Questions And Answers(3)
  6. 【C语言简单说】四:常量
  7. iOS input被键盘遮挡
  8. sql case when then else多个条件_SQL-多表查询
  9. php得到第一个数组_php怎么获取数组第一个元素
  10. C++--第23课 - STL简介
  11. traceroute 详解及结果出现*的分析
  12. 推荐9个值得关注的公众号
  13. 知名网站的 404 页面长啥样?最后一个我惊呆了!
  14. 【前端升全栈】 五分钟了解Node.js
  15. ST表 详解(C语言描述)
  16. lda主题模型python实现篇_主题模型TopicModel:通过gensim实现LDA
  17. java线程状态——java线程状态图
  18. 【ol-cesium】OpenLayers与Cesium的二三维联动
  19. 谷歌地图高清卫星地图、电子地图和地形图有什么区别?
  20. Android10 读取和写入手机内部存储

热门文章

  1. 基于arm核心板-呼吸机解决方案
  2. 1.5计算机性能评测
  3. 浪潮n系列服务器指示灯_浪潮服务器系统故障指示灯按键做什么用的
  4. 锂电池保护板基本知识(转)
  5. 产品分析数据来源渠道
  6. Constraint Layout 2.0 用法详解
  7. JTAG(Joint Test Action Group)
  8. 51单片机---定时器
  9. Dubbo接口级服务发现-数据结构
  10. 如何快速查询SOLIDWORKS官方教程