卡特兰数(Catalan number)
Catalan数列
目录
定义
Number
Catalan数列的前几项为(从 \(f_1\) 开始):
1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...
在递归定义中,递推起点(边界) \(f_0=f_1=1\)
即 \(f_0\) 可理解成 值为 \(1\)
说明
首先,Catalan数 并没有十分明确的意义,只是一个十分常见的数学规律
但可以将 Catalan数 理解为在平面直角坐标系上,从原点 \(O(0,0)\) 开始,每一次只能向上或向右移动一步,直到移动到第一象限的点 \(N(n,n)\) ( \(n \ge 0\) , \(N\) 有可能位于原点 \(O\) 的位置),Catalan数列 第 \(n\) 项(就是 \(f_n\) ) 就是总方案数的 值
另外,还可以将 Catalan数 理解为括号匹配 —— 对于 \(f_n\) 来说:就是有 \(2n\) 个括号( \(n\)个左括号, \(n\) 个右括号),并将这些括号进行匹配, \(f_n\) 就是这 \(2n\) 个括号匹配后,符合条件的总方案个数的 值
除此之外,还有其它的理解方法(例如 进出栈问题、二叉树构成问题 等)
表示
递推起点(边界) \(f_0=f_1=1\)
1. 递推定义
2. 递推关系
3. 通项公式
4. 通项公式II
证明
(对于每个公式,并非按照顺序证明,以公式相互的关联依次证明)
1. 公式4
- 通项公式II
$ f_n= C_{2n}^n- C_{2n}^{n-1} $$
关于此公式,应该是有多种证明,在此介绍一种常见的证明方法,如下:
首先,如下图(就以下面的这个例子证明)
就拿这张图来说吧
如图,从原点 \(O(0,0)\) 到 点 \(N(7,7)\) ,且每一次只能向上或向右移动一步,并不超过第一象限的角平分线(就是不超过图中蓝色的一条 —— \((x,x)\),即不到达图中红色的一条 —— \((x,x+1)\) ),那么合法的总方案数的值就是 \(f_n\) (Catalan数列 的 第 \(n\) 项)
其中,黄色的与紫色的线就是合法的,而绿色的就是不合法的
我们还可以将其转化为括号匹配——其中向右为 \((\) ,向上为 \()\)
那么图中三条线就可以分别表示为:
黄色线—— \(((())((())))()\) 显然是合法的
紫色线—— \(((((((()))))))\) 显然是合法的
绿色线—— \(()))))(((())((\) 显然是不合法的
但是
想要证明公式 \(f_n= C_{2n}^n- C_{2n}^{n-1}\) ,我们就需要用到正难则反的思想——就是 总的-不满足(不合法)的 (间接法)
“总的” 就是 \(C_{2n}^n\)
Why?
可以理解为 \(2n\) 个括号(其中左括号有 \(n\) 个,右括号也有 \(n\) 个),如果我们先在 \(2n\) 个括号的位置中选出 \(n\) 个左括号的位置(右括号也可以),那么右括号(左括号)的位置同样确定了
例如:当 \(n=5\) 时,(此处选出一种情况分析)从 \(2n\)(也就是\(10\)) 个位置中选出 \(n\) 个右括号的位置,为
(-(-(-(--(- ——(其中短横线为未定的右括号的位置)
显然 右括号的位置已经是确定了的
现在我们将不满足(不合法)的设为 \(A\) ,那么就是
大家都知道, \(A\) 肯定是 \(C_{2n}^{n-1}\) ,但是是怎么得到的呢?
好,下面先看看下面这张图
这是一张与 \(f_7\) 有关的图——从 \((0,0)\) 到 \((7,7)\)
其中,绿色的线,表示为 \((()))(())))(((\) ,
显然是不合法的
因为绿线越过了蓝线,并碰到了红线
不过我们可以将绿线从第一次碰到红线的点开始,将后面的点(线)按红线 \((y=x+1)\) 对称
操作完后就如紫线所示
显然,紫线终究会到达点 \(N'(6,8)\) ,表示为 \((()))))(((()))\) ,共有 \(6\) 个左括号 \(8\) 个右括号
对于每一条紫线,都有一条不合法的绿线与之对应——就是 一 一 对 应 的
对于 \(f_7\) 不合法的就是从 \(14\) 个括号中选出 \(6\) 个左括号(或者 \(8\) 个右括号),有 \(C_{14}^{6}\) 或者 \(C_{14}^{8}\) ,这两个式子是相等的
然后用上之前的公式,求得 \(f_7\) 的值,即
显然,对于任意一个 \(f_n\) —— 从 \((0,0)\) 到 \((n,n)\) ,都可以以上述方法求得
即 任意一条绿线(不合法) 沿 红线(\(y=x+1\)) 对称之后, 都会到达 点 \((n-1,n+1)\)
同样是有 \(n-1\) 个左括号与 \(n+1\) 个右括号
且绿线与红线是 一 一 对 应 的
则不合法的就有 \(C_{2n}^{n-1}\) 或 \(C_{2n}^{n+1}\) (两个式子相等)
对应上面的公式
\(f_n= C_{2n}^n- A\)
我们可以得到其中的 \(A=C_{2n}^{n-1}=C_{2n}^{n+1}\)
所以得到公式
得证 公式4
2. 公式1
紧接着,就是证明公式1
递推起点(边界) \(f_0=f_1=1\)
1. 递推定义
\( \begin{aligned} f_n &= f_0\cdot f_{n-1}+ f_1\cdot f_{n-2}+\dots +f_{n-2}\cdot f_1+f_{n-1}\cdot f_0 \\ &= \sum_{k= 1}^{n}f_{k-1}\cdot f_{n-k} \end{aligned} \)
对于这一个公式就会更主要的运用到括号匹配原理,属于直接法
首先让我们先来熟悉一下括号匹配
\(f_1\) --> \(2\) 个括号
\(f_2\) --> \(4\) 个括号
\(f_3\) --> \(6\) 个括号
\(\cdots\cdots\)
\(f_n\) --> \(2n\) 个括号
接下来就进入主要的证明过程
首先 就直接以 \(f_n\) 为例 进行证明
\(f_n\) 是可以理解为有 \(2n\) 个括号 可以组成的合法的括号序列的个数的值
我们设其中的一个括号序列为 \((()())((()()))\)
如下图
显然,共有 \(n\) 个左括号,我们就抓与最后一个右括号匹配的左括号(设这是第 \(i\) 个左括号)的标准进行分类讨论
第 \(i\) 个左括号前就有 \((i-1)\) 对括号,即有 \(f_{i-1}\) 种情况
第 \(i\) 个左括号及以后就有 \((n-i)\) 对括号,即有 \(f_{n-i}\) 种情况
这种情况下,共有 \(f_{i-1}\cdot f_{n-i}\) 种情况
很容易发现, \(i\) 的取值为 \(1\le i\le n\)
所以(公式中用 \(k\) 代替 \(i\) )
得证 公式1
接下来的两个公式就比较的简单了
3. 公式3
- 通项公式
\( \begin{aligned} f_n &= \frac{1}{n+1}\cdot C_{2n}^n \\ &= \frac{C_{2n}^n}{n+1} \end{aligned} \)
其实这个公式就是由前面已经证明的公式4推到而来
- 通项公式II
$ f_n= C_{2n}^n- C_{2n}^{n-1} $
具体过程如下:
得证 公式3
4. 公式2
- 递推关系
\( f_n= \frac{4n-2}{n+1}\cdot f_{n-1} \)
得证 公式2