首页 > 其他分享 >卡特兰数(Catalan number)

卡特兰数(Catalan number)

时间:2022-12-30 19:11:31浏览次数:79  
标签:frac 括号 cdot 公式 number Catalan 2n 卡特兰

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. 递推定义

\[\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} \]

2. 递推关系

\[f_n= \frac{4n-2}{n+1}\cdot f_{n-1} \]

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} \]

证明

(对于每个公式,并非按照顺序证明,以公式相互的关联依次证明)

1. 公式4

  1. 通项公式II
    $ f_n= C_{2n}^n- C_{2n}^{n-1} $$

关于此公式,应该是有多种证明,在此介绍一种常见的证明方法,如下:

首先,如下图(就以下面的这个例子证明)
image

就拿这张图来说吧

如图,从原点 \(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\) ,那么就是

\[f_n= C_{2n}^n- A \]

大家都知道, \(A\) 肯定是 \(C_{2n}^{n-1}\) ,但是是怎么得到的呢?

好,下面先看看下面这张图
image
这是一张与 \(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_7=C_{14}^7-C_{14}^6 \]

显然,对于任意一个 \(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}\)
所以得到公式

\[f_n= C_{2n}^n-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\) 个括号 可以组成的合法的括号序列的个数的值
我们设其中的一个括号序列为 \((()())((()()))\)
如下图
image
显然,共有 \(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\) )

\[f_n= \sum_{k= 1}^{n}f_{k-1}\cdot f_{n-k} \]

得证 公式1



接下来的两个公式就比较的简单了

3. 公式3

  1. 通项公式
    \( \begin{aligned} f_n &= \frac{1}{n+1}\cdot C_{2n}^n \\ &= \frac{C_{2n}^n}{n+1} \end{aligned} \)

其实这个公式就是由前面已经证明的公式4推到而来

  1. 通项公式II
    $ f_n= C_{2n}^n- C_{2n}^{n-1} $

具体过程如下:

\[\begin{aligned} f_n &= C_{2n}^n-C_{2n}^{n-1} \\ &=\frac{(2n)!}{n!\cdot n!}-\frac{(2n)!}{(n+1)!\cdot (n-1)!} \\ &=\frac{1}{n+1}\cdot (\frac{(2n)!\cdot (n+1)}{n!\cdot n!}-\frac{(2n)!}{n!\cdot (n-1)!}) \\ &=\frac{1}{n+1}\cdot (\frac{(2n)!\cdot (n+1)}{n!\cdot n!}-\frac{(2n)!\cdot n}{n!\cdot n!}) \\ &=\frac{1}{n+1}\cdot \frac{(2n)!\cdot (n+1-n)}{n!\cdot n!} \\ &=\frac{1}{n+1}\cdot \frac{(2n)!}{n!\cdot n!} \\ &=\frac{1}{n+1}\cdot C_{2n}^n \\ &=\frac{C_{2n}^n}{n+1} \\ \therefore f_n &= \frac{1}{n+1}\cdot C_{2n}^n \\ &= \frac{C_{2n}^n}{n+1} \end{aligned} \]



得证 公式3




4. 公式2

  1. 递推关系
    \( f_n= \frac{4n-2}{n+1}\cdot f_{n-1} \)

得证 公式2

证毕

推荐链接

%%%1
%%%2
%%%3







~~~

标签:frac,括号,cdot,公式,number,Catalan,2n,卡特兰
From: https://www.cnblogs.com/MingruiYang/p/16998331.html

相关文章

  • [LeetCode] 1759. Count Number of Homogenous Substrings
    Givenastring s,return thenumberof homogenous substringsof s. Sincetheanswermaybetoolarge,returnit modulo 109 +7.Astringis homogenou......
  • 高斯消元+组合数+卡特兰数
    高斯消元+组合数+卡特兰数高斯消元\(O(n^3)\)的线性时间内求解n元线性方程组\[\\\begin{cases}\a_{11}x_1+a_{12}x_2+...+a_{1n}x_n=b_1\\\a_{21}x_1+a_{22}x_2+.......
  • Powerful Number 筛
    PN筛。有时候确实比Min_25筛快。首先定义PowerfulNumber为形如\(a^2b^3\)的数。一个结论是\(n\)以内的PowerfulNumber是\(O(\sqrtn)\)的。证明枚举\(a\)......
  • Chapter 1 Why Biology by the Number
    1.生物物理学和模型构建生物物理学是应用物理学的概念和方法研究生物各个层次结构与功能的关系,生命活动的物理,物理化学过程和物质在生命活动过程中表现的物理特性的学科,......
  • js中Number数字类型没有length属性
    Number类型是没有length属性的,可以参考MDN文档Number类型的描述延伸问题:我在浏览器控制台里直接输入78.length回车是报错的,但是,varsomeValue=78;varstrLength=......
  • [CF1325E] Ehab's REAL Number Theory Problem
    Ehab'sREALNumberTheoryProblem题目描述Youaregivenanarray$a$oflength$n$thathasaspecialcondition:everyelementinthisarrayhasatmost7......
  • 【数据结构-栈】卡特兰数
    目录卡特兰数公式出栈序列数二叉树形态数卡特兰数公式f(n)=C(2n,n)/(n+1)计算用途:二叉树形态数,出栈序列数出栈序列数【例1】3个不同元素依次进栈,能得到多少种......
  • 1751.maximum-number-of-events-that-can-be-attended-ii 最多可以参加的会议数目II
    问题描述1751.最多可以参加的会议数目II解题思路动态规划+二分法令dp[i][j]表示在前i个会议,最多参加j个会议,收获的最大价值:考虑选择不参加events[i-1],dp[i][j]=......
  • LeetCode-Java-136. Single Number
    题目Givenanon-emptyarrayofintegers,everyelementappearstwiceexceptforone.Findthatsingleone.Note:Youralgorithmshouldhavealinearruntimecompl......
  • 计组学习01——Number Rep
    计组学习——NumberRepresentationNumberRepresentation数字的表示方式有符号数的表示原码,把第一位数字表示为符号位,​ 如果000表示0,001表示为1,101表示-1,这样就会......