卡特兰数出现在许多计数问题中。

常见的例子有:$n$ 个节点的有序二叉树,$2n$ 个括号构成的合法括号序列。

在上面所举的两个例子中,很容易看出卡特兰数满足递推:
$$
C_{n+1} = \sum_{i = 0}^{n} C_i C_{n-i }, \quad(n \ge 1)
$$
$C_0 = 1$

卡特兰数的闭形式,亦即上述递推式的解为

$$
C_n = \frac{1}{n+1} \binom{2n}{n} = \frac{(2n)!}{n!(n+1)!}
$$

曾经我对于如何推导这个式子很感兴趣,实际上推导过程很容易搜到,维基百科上就有。
现在我摘录一种最常见的借助生成函数的证明,以备查看。

定义 $C_n$ 的生成函数
$$
c(x) = \sum_{n = 0}^{\infty} C_n x^n
$$

为了利用上述递推关系,我们考虑 $c(x)^2$ 的幂级数展开式中 $x^n$ 项的系数
\begin{aligned}
c(x)^2 &= \sum_{n = 0}^\infty \sum_{i = 0}^{n} C_i C_{n-i} x^n \\
&= \sum_{n = 0}^\infty C_{n+1} x^n
\end{aligned}

于是有
\begin{equation}
c(x) = 1 + xc(x)^2 \label{E:1}
\end{equation}
\eqref{E:1} 是关于 $c(x)$ 的一元二次方程,解之即得 $c(x)$ 的闭形式,再将此闭形式展开即得 $C_n$ 的表达式。

解得
$$ c(x) = \frac{1 \pm \sqrt{1 - 4x}} {2x} $$
注意到 $c(x)$ 在 $x = 0$ 处的极限应为 $0$,据此可知上式中分母上应取负号,即
\begin{equation}
c(x) = \frac{1 - \sqrt{1 - 4x}} {2x} \label{E:2}
\end{equation}
现在问题归结为如何将 \eqref{E:2} 展成幂级数。

要解决这个问题,我们需要知道一个东西,那就是二项式定理的推广形式。
回忆我们所学过的二项式定理,$(x + y)^n$ 中的指数 $n$ 必须是非负整数。先哲牛顿推广了初等的二项式定理,他证明了指数可以为任意实数 $r$,二项式定理同样成立。即有
$$(x+y)^r = \sum_{k = 0}^{\infty} \binom{r}{k} x^k y ^{r-k} $$
其中
$$\binom{r}{k} = \frac{r (r-1) (r-2) \dots (r - k + 1)} {k!}$$
$r (r-1) (r-2) \dots (r - k + 1)$ 也称作「$r$ 的降 $k$ 阶乘」,记作 $(r)_k$,这种记法称作 Pochhammer 符号。

二项式定理的一般形式在物理上很有用处,我念本科时不知道这么个好东西,常常看不懂书上的一些推导过程。

借助推广的二项式定理,我们很容易写出 $\sqrt{1 - 4x}$ 的展开式
\begin{aligned}
\sqrt{1 - 4x} &= (1 - 4x)^{1/2} \\
&= \sum_{k = 0}^{\infty}\binom{1/2}{k} (-4x)^k \\
&= \sum_{k = 0}^{\infty} \frac{(-1)^{k-1}(2k-3)!!}{2^k k!} (-4x)^k \\
&= \sum_{k = 0}^{\infty} \frac{(-1)^{k-1}}{4^k (2k -1) }\frac{2^k (2k-1)!!}{k!} (-4x)^k \\
&= \sum_{k = 0}^{\infty} \frac{(-1)^{k-1}}{4^k (2k -1) } \binom{2k}{k} (-4x)^k \\
&= \sum_{k = 0}^{\infty} \frac{-1}{ 2k -1 } \binom{2k}{k} x^k
\end{aligned}
进而
\begin{aligned}
1 - \sqrt{1 - 4x} &= \sum_{k = 1}^{\infty} \frac{1}{ 2k -1 } \binom{2k}{k} x^k \\
&= \sum_{k = 0}^{\infty} \frac{1}{ 2k + 1 } \binom{2k+2}{k+1} x^{k+1} \\
&= \sum_{k = 0}^{\infty} \frac{2}{k+1} \binom{2k}{k} x^{k+1}
\end{aligned}
从而
$$ \frac{1 - \sqrt{1 - 4x}} {2x} = \sum_{k = 0}^{\infty} \frac{1}{ k+1 } \binom{2k}{k} x^k $$
因此
$$ C_n = \frac{1}{n+1} \binom{2n}{n} $$

补充

$C_n$ 还可写成
$$ C_n = \binom{2n}{n} - \binom{2n}{n + 1} $$
另外,$C_n$ 的相邻两项满足
$$ C_{n+1} = \frac{2(2n+1)}{n + 2} C_n $$

转载于:https://www.cnblogs.com/Patt/p/10454746.html

Asymptotic I Catalan Number相关推荐

  1. 卡特兰数Catalan Number

    Catalan Number满足下列递推公式: N个元素元素进栈,多少种出栈方式 考虑A.B.C.D依次进栈,那么所有的出栈顺序是下列4种情况的并集: 1)A第一个出栈.肯定是A进栈后马上出栈,剩下B ...

  2. C语言Catalan number卡特兰数(使用n个键可以搜索多少个二叉搜索树)的算法(附完整源码)

    C语言使用n个键可以搜索多少个二叉搜索树的算法 C语言使用n个键可以搜索多少个二叉搜索树的算法完整源码(定义,实现,main函数测试) C语言使用n个键可以搜索多少个二叉搜索树的算法完整源码(定义,实 ...

  3. 卡塔兰数(Catalan Number)--动态规划(Dynamic Programming)

    -卡塔兰数是组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡特兰(1814–1894)命名.历史上,清朝数学家明安图(1692年-1763年)在其<割圜密率捷法> ...

  4. 卡特兰数Catalan number的应用

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

  5. 卡特兰数 Catalan number

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

  6. Catalan number卡特兰数

    背景知识介绍:   卡特兰数是离散数学中的一个重要数列,是很多生活场景的一个抽象,比如买早餐.买电影票等等.在很多大公司的笔试或者面试题中也常涉及到. 百度百科介绍   卡特兰数   卡特兰数是组合数 ...

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

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

  8. Catalan number

    **Catalan number,卡特兰数又称卡塔兰数,**是组合数学中一个常出现在各种计数问题中出现的数列. 卡特兰数的前几个数 前20项为(OEIS中的数列A000108):1, 1, 2, 5, ...

  9. 程序员数学--卡特兰数(Catalan number)

    10个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问有多少种排列方式? 我们可以先把这10个人从低到高排列,然后,选择5个人排在第一排,那么剩下的5个人肯定是在第二 ...

  10. Catalan number (卡兰特数)

    卡特兰数非常经典,很多现实的问题都是卡特兰数,如合法的入栈出栈序列有多少种就是卡特兰数,为什么呢?我们可以把0看成入栈操作,1看成出栈操作,即0的累计个数不小于1的排列有多少种.还有很多其他的问题都是 ...

最新文章

  1. 图解全球无人驾驶产业链:这些公司在主宰人类出行的未来
  2. NSMutableArray 记住取不到时要进行强转
  3. leetcode算法题--Decode String
  4. asp.net中使用CKEditor
  5. oracle查询指定行数间的记录
  6. 原始尺寸_螺母尺寸检测,螺丝螺母外观检测设备
  7. 为何银联选择了Apple pay?
  8. 「单点登录与权限管理」系列概述
  9. springboot jpa 创建数据库以及rabbitMQ分模块扫描问题
  10. 深入理解设计模式(22):享元模式
  11. 精选 26 个 Python 实用技巧,想秀技能先 Get 这份技术列表!
  12. ajax mysql登录我注册_ajax方式实现注册功能(提交数据到后台数据库完成交互)
  13. 64如何传入后台_如何保证API接口数据安全?
  14. 前端实现拖动滑块完成验证
  15. javabs架构实习管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  16. 斐讯k2php环境,斐讯K2 刷华硕固件 实现 单线复用(网络、IPTV走一根网线)
  17. 二元二次方程例题_二元二次方程组解法例题
  18. 计算机右键管理删除,【win7右键菜单管理】右键菜单的设置及清除
  19. nintendo掌机
  20. cdr 表格自动填充文字_极速office中表格的七个最常用技巧

热门文章

  1. 匀速运动小车卡尔曼_平衡小车卡尔曼滤波算法使用心得
  2. 计算机算法分析与设计心得体会,算法设计与分析课程的心得体会
  3. 用matlab如何画中国地图,利用matlab画中国地图的几种方法
  4. java date类赋值日期_Java中Date时间类
  5. AirPlay/ios浅谈
  6. cie色度图matlab,带你解读 CIE1931色度图
  7. 风行电视账号服务器链接失败,腾讯对战平台连接版本服务器失败的解决方法
  8. tp-link无线网卡linux下的驱动,Ubuntu14下安装无线网卡驱动(TP-LINK TL-WN823N)
  9. UEFI原理与编程(七):包及.dsc、.dec、.fdf文件
  10. iOS经典讲解之Apple Pay开发