【知识总结】卡特兰数 (Catalan Number) 公式的推导
卡特兰数的英文维基讲得非常全面,强烈建议阅读!
Catalan number - Wikipedia
(本文中图片也来源于这个页面)
由于本人太菜,这里只选取其中两个公式进行总结。
(似乎就是这两个比较常用?)
首先先扔卡特兰数的定义式
\[Catalan_n=\prod_{i=1}^{n-1}Catalan_i*Catalan_{n-i}\]
(卡特兰数的很多应用,比如二叉树形态数,出栈序列数等,都由这个定义式得到。详见英文维基)
公式1 (通项公式) :
\[Catalan_n=\frac{1}{n+1}C_{2n}^n\]
在上文提到的出栈序列的问题情景中,如果有\(n\)个元素,在平面直角坐标系中用\(x\)坐标表示入栈数,\(y\)坐标表示出栈数,则坐标\((a,b)\)表示目前已经进行了\(a\)次入栈和\(b\)次出栈,则再进行一次入栈就是走到\((a+1,b)\),再进行一次出栈就是走到\((a,b+1)\)。并且,由于入栈数一定小于等于出栈数,所以路径不能跨越直线\(y=x\)
因此,题目相当于求从\((0,0)\)走到\((n,n)\)且不跨越直线\(y=x\)的方案数
首先,如果不考虑不能跨越直线\(y=x\)的要求,相当于从\(2n\)次操作中选\(n\)次进行入栈,则方案数为\(C_{2n}^n\)。
然后,考虑对于一种不合法的方案,一定在若干次操作后有一次出栈数比入栈数多一次,这个点在直线\(y=x+1\) (即下图中红色的线) 上。那么把第一次碰到该直线以后的部分关于该直线对称,则最终到达的点是\((n-1,n+1)\) (如下图) 。
![]()
图源:英文维基 (即文首网址)
显然,任何非法方案都可以通过此方式变成一条从\((0,0)\)到\((n-1,n+1)\)的路径,有\(C_{2n}^{n+1}\)种。而任何合法方案由于不接触直线\(y=x+1\),无论从哪个点对称都不是一条连续的路径。由于合法方案数就是\(Catalan_n\),所以:
\[
\begin{aligned}
Catalan_n&=C_{2n}^n-C_{2n}^{n+1}\\
&=\frac{(2n)!}{n!*n!}-\frac{(2n)!}{(n+1)!*(n-1)!}\\
&=\frac{1}{n+1}(\frac{(2n)!*(n+1)}{n!*n!}-\frac{(2n)!}{n!*(n-1)!})\\
&=\frac{1}{n+1}(\frac{(2n)!*(n+1)}{n!*n!}-\frac{(2n)!*n}{n!*n!})\\
&=\frac{1}{n+1}*\frac{(2n)!*(n+1)-(2n)!*n}{n!*n!}\\
&=\frac{1}{n+1}*\frac{(2n)!}{n!*n!}\\
&=\frac{1}{n+1}C_{2n}^n\\
\end{aligned}
\]
公式2 (递推公式) :
\[Catalan_{n+1}=\frac{4n+2}{n+2}Catalan_n\]
(这个公式的推导过程似乎网上没有,估计是思路太简单了……我太菜了想了半天才推出来)
由上面那个通项公式得
\[
\begin{aligned}
Catalan_{n+1}&=\frac{1}{n+2}C_{2n+2}^{n+1}\\
&=\frac{1}{n+2}*\frac{(2n+2)!}{(n+1)!*(n+1)!}\\
&=\frac{1}{n+2}*\frac{(2n)!*(2n+1)*(2n+2)}{n!*n!*(n+1)^2}\\
&=\frac{1}{n+2}*\frac{(2n+1)*(2n+2)}{(n+1)}*\frac{1}{n+1}*\frac{(2n)!}{n!*n!}\\
&=\frac{2(2n+1)}{n+2}*\frac{1}{n+1}*C_{2n}^n\\
&=\frac{4n+2}{n+2}Catalan_n\\
\end{aligned}
\]
【知识总结】卡特兰数 (Catalan Number) 公式的推导的更多相关文章
- 浅谈卡特兰数(Catalan number)的原理和相关应用
一.卡特兰数(Catalan number) 1.定义 组合数学中一个常出现在各种计数问题中出现的数列(用c表示).以比利时的数学家欧仁·查理·卡特兰的名字来命名: 2.计算公式 (1)递推公式 c[ ...
- 卡特兰数 catalan number
作者:阿凡卢 出处:http://www.cnblogs.com/luxiaoxun/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留 ...
- 卡特兰数(Catalan Number) 算法、数论 组合~
Catalan number,卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡特兰数的前几个数 前20项为( ...
- 卡特兰数(Catalan Number) 学习笔记
一.三个简单的问题 1.给定一串长为2n的01序列,其中0和1的数量相等,满足任意前缀中0的个数不少于1的个数,求序列的个数 2.给出一串长为n的序列,按顺序将他们进栈,随意出栈,求最后进出栈的方案 ...
- [LeetCode系列]卡特兰数(Catalan Number) 在求解独特二叉搜寻树(Unique Binary Search Tree)中的应用分析
本文原题: LeetCode. 给定 n, 求解独特二叉搜寻树 (binary search trees) 的个数. 什么是二叉搜寻树? 二叉查找树(Binary Search Tree),或者是一棵 ...
- 卡特兰数 Catalan数 ( ACM 数论 组合 )
卡特兰数 Catalan数 ( ACM 数论 组合 ) Posted on 2010-08-07 21:51 MiYu 阅读(13170) 评论(1) 编辑 收藏 引用 所属分类: ACM ( 数论 ...
- 卡特兰数 Catalan 笔记
一.公式 卡特兰数一般公式 令h(0)=1,h(1)=1,catalan数满足递推式.h(n) = h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>= ...
- 卡特兰数Catalan——定义、公式、模型总结
推荐:卡特兰数总结 定义: f(i)表示,从(0,0)出发,到(i,i),每次只能向上或者向右走,并且不越过红线的方案数. 这个图片的点上的数字,其实告诉我们f[i],就可以根据这个n方dp得到. 其 ...
- ACM数论-卡特兰数Catalan
Catalan 原理: 令h(0)=1,h(1)=1,catalan 数满足递归式: (其中n>=2) 另类递推公式: 该递推关系的解为: (n=1,2,3,...) 卡特兰数的应用实质上都是递 ...
随机推荐
- 线程 synchronized锁机制
脏读 一个常见的概念.在多线程中,难免会出现在多个线程中对同一个对象的实例变量进行并发访问的情况,如果不做正确的同步处理,那么产生的后果就是"脏读",也就是取到的数据其实是被更改过 ...
- 在Myeclipse中拷贝一个web项目,但是tomcat文件夹中没有更新,需要进行修改才能更新。
1.在Myeclipse中拷贝一个web项目,但是tocat文件夹中没有更新,需要进行修改才能更新. 2.方法:右键这个工程,然后Properties->MyEclipse->Projec ...
- Ubuntu 16.04安装汇编编译器NASM
NASM支持intel语法. 安装过程: 1.通过二进制包方式 下载: http://www.nasm.us/pub/nasm/releasebuilds/2.13/ 如果要下载其它版本可以把地址靠前 ...
- Ubuntu桌面卡死时的处理
1.这种方式可以尝试,但是不成功 sudo skill x sudo stop lightdm sudo start lightdm 2.这种方式比较可靠 ps -t tty7 kill 27342 ...
- SiteMesh2-sitemesh.xml的PageDecoratorMapper映射器的用法
继上一章http://www.cnblogs.com/EasonJim/p/7083165.html中使用的例子中,是通过decorators.xml文件通过URL匹配进行转换的. 而下面这种方法是通 ...
- Workflow:添加工作流存储功能
数据库准备: 1. 创建database(这里我们用的是MSSQL.Workflow支持其它数据库,但是MSSQL是配置最方便,不要问我为什么!). 2. 运行位于[%WINDIR%\Microsof ...
- Redis是单线程的
Redis是单线程的 学习了: http://blog.csdn.net/liupeng_qwert/article/details/77263187 https://www.cnblogs.com/ ...
- MVC之查询demo
上篇已经说过怎样建立MVC项目.这次主要讲述样例的实现. 其基本的功能就是从数据库中查询一些基本信息. 前边我们已经将实体引入到了项目中,这时Model目录中已经出现了我们建立的newsSystem. ...
- CentOS6.5 64位站点压力測试工具webbench
在Apache中有自带的ab命令能够測试服务的压力,而nginx没有自带的命令,必需要採用第三方软件来測试.今天就简介一下webbench对nginx的压力測试,压力測试是对系统管理员和运维人员必须的 ...
- 苹果iPhone连接wifi就进去www.apple.com主页 下边显示 <HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY>
苹果iPhone连接wifi就进去www.apple.com主页 下边显示 <HTML><HEAD><TITLE>Success</TITLE>< ...