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

常见的例子有:$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 $$

Asymptotic I Catalan Number的更多相关文章

  1. 卡特兰数(Catalan Number) 算法、数论 组合~

    Catalan number,卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡特兰数的前几个数 前20项为( ...

  2. 浅谈卡特兰数(Catalan number)的原理和相关应用

    一.卡特兰数(Catalan number) 1.定义 组合数学中一个常出现在各种计数问题中出现的数列(用c表示).以比利时的数学家欧仁·查理·卡特兰的名字来命名: 2.计算公式 (1)递推公式 c[ ...

  3. 卡特兰数 catalan number

    作者:阿凡卢 出处:http://www.cnblogs.com/luxiaoxun/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留 ...

  4. 【知识总结】卡特兰数 (Catalan Number) 公式的推导

    卡特兰数的英文维基讲得非常全面,强烈建议阅读! Catalan number - Wikipedia (本文中图片也来源于这个页面) 由于本人太菜,这里只选取其中两个公式进行总结. (似乎就是这两个比 ...

  5. Lucas定理 & Catalan Number & 中国剩余定理(CRT)

    又双叒叕来水数论了 今天来学习\(Lucas \:\ \& \:\ Catalan Number\) 两者有着密切的联系(当然还有CRT),所以放在一起学习一下 \(Lucas\) 定义\(\ ...

  6. Catalan Number 卡特兰数

    内容部分来自以下博客: Cyberspace_TechNode 邀月独斟 一个大叔 表示感谢! Catalan数的引入: 一个长度为2N的序列,里面有N个+1,N个-1 它的任意前缀和均非负,给定N, ...

  7. 卡特兰数(Catalan Number) 学习笔记

    一.三个简单的问题 1.给定一串长为2n的01序列,其中0和1的数量相等,满足任意前缀中0的个数不少于1的个数,求序列的个数 2.给出一串长为n的序列,按顺序将他们进栈,随意出栈,求最后进出栈的方案 ...

  8. 浅谈 Catalan number——卡特兰数

    一.定义: 卡特兰数是一组满足下面递推关系的数列: 二.变形: 首先,设h(n)为Catalan数的第n+1项,令h(0)=1,h(1)=1,Catalan数满足递推式: h(n)= h(0)*h(n ...

  9. catalan number

    http://blog.csdn.net/yutianzuijin/article/details/13161721

随机推荐

  1. 友盟分享小结 - iOS

    因之前都写在了 AppDelegate 类中,看起来过于臃肿,此次基于友盟分享重新进行了一次优化,此次分享内容基于已经成功集成 SDK 后 code 层级部分.注:此次分享基于 SDK 6.9.3,若 ...

  2. pdo->prepare 返回false的问题总结

    报错信息: Fatal error: Call to a member function execute() on a non-object 一般是pdo->prepare 返回了false导致 ...

  3. Docker学习之镜像操作

    使用Docker镜像 以下都是Docker镜像的一系列重要名操作,包括获取.查看.搜索.删除.创建.存出或载入.上传等.可使用docker image help命令查看帮助. 1.获取镜像(pull) ...

  4. pycharm快捷键一览

    编辑(Editing) Ctrl + Space 基本的代码完成(类.方法.属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctrl + P ...

  5. html页面 加载完成后再刷新 一次

    主要用于第一次加载页面有部分加载bug,再刷新一次即可正常运行. 简单粗暴直接上代码,不带参数,0影响 <Script>function refresh(){ url = location ...

  6. #Python编程从入门到实践#第四章笔记

    #Python编程从入门到实践#第四章笔记   操作列表 ​​​1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...

  7. Pandas 文本数据

    Pandas针对字符串配备的一套方法,使其易于对数组的每个元素(字符串)进行操作. 1.通过str访问,且自动排除丢失/ NA值 # 通过str访问,且自动排除丢失/ NA值 s = pd.Serie ...

  8. 4-linux基本命令

    1. cd命令 cd 回当前用户 家目录   cd /home  进入home目录 (绝对路径)   (相对路径)   cd –  上一目录和当前目录来回切换(主要用于返回上一目录)   cd .   ...

  9. 2037: [Sdoi2008]Sue的小球

    2037: [Sdoi2008]Sue的小球 链接 题解 论文 代码 #include<cstdio> #include<algorithm> #include<cstr ...

  10. 剑指Offer - 九度1506 - 求1+2+3+...+n

    剑指Offer - 九度1506 - 求1+2+3+...+n2013-11-29 19:22 题目描述: 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switc ...