Catalan数以及相关性质的证明
\(Catalan\) 数相关证明
- Mushroom
- 2021-5-14
\(Catalan\)数的定义
给定一个凸\(n + 1\)边形, 通过在内部不相交的对角线,把它划分成为三角形的组合,不同的划分方案的个数称为\(Catalan\)数,记作\(h_n\)
比如说正对于五边形的\(Catalan\)数\(h_4\),可以可视化为下面的形式。
递推定义
分析
\(Catalan\)数的定义是描述一个凸多边形被不相交的直线分割为三角形的方案数,记这样一件事为\(A\)
id1(创建确定一条边A1Ak+1)
id2(确定一个点B在上述边已经占用的其他边里面)
id1 --> id2
id4(左右两边的Catalan数的乘积是其整体的组合数)
id2 --> id4
id4 --> id2
注意在这个解决\(A\)事件过程中,只需要定一条边就可以了,这是由于其他的边会由\(\sum_{l=1}^{n-1}h_kh_{n-k}\)遍历得到,如果此时选择所有边,就会导致算出出现重复
依据递推方程求解\(Catalan\)数的解
牛顿二项式定理
\(\forall\)\(\alpha\) \(\in R\),且\(0 \leq |x| \leq |y|\),那么有:
\[(x + y)^a = \sum_{k = 0}^{\infty}\begin{pmatrix}\alpha \\ k\end{pmatrix}x^ky^{a-k}\\
\begin{pmatrix}
\alpha\\
k
\end{pmatrix} = \frac{\alpha(\alpha - 1)(\alpha -2) \dots(\alpha -k + 1)}{k!}
\]
现在计算\((1 + x)^{\frac{1}{2}}\)的展开式
(1 + x)^{\frac{1}{2}} = & \sum_{k=0}^{\infty}\frac{\frac{1}{2}(\frac{1}{2} - 1)(\frac{1}{2} -2)\dots (\frac{1}{2} - k + 1)}{k!}x^k
\\&=1 + \sum_{k = 1}^{\infty}\frac{(-1)^{k - 1}1 \cdot3\cdot5\dots(2k - 3)}{2^kk!}x^k
\\&=1 + \sum_{k=1}^{\infty}\frac{(-1)^{k-1}(2k-2)!}{2^kk!\cdot2^{k-1}(k-1)!}x^k
\\&=1 + \sum_{k=1}^{\infty}\frac{(-1)^{k-1}}{2^{2k-1}k}\begin{pmatrix}2k -2 \\ k-1\end{pmatrix}x^k
\end{aligned}
\]
\(Catalan\)数证明
设\(H(x)\)是\(Catalan\)数的生成函数
那么
\]
两边平方
H^2(x) =& \sum_{n = 1}^{\infty}h_nx^n\sum_{k = 1}^{\infty}h_kx^k
\\=&\sum_{n=1}^{\infty}\sum_{k=1}^{\infty}h_nh_kx^{n+k}
\\=&\sum_{n=2}^{\infty}x^n\sum_{k=1}^{n-1}h_kh_{n-k}
\end{aligned}
\]
由于
\]
所以
\]
使用二次函数的求解得出
由于\(H(0) = 0\),过滤得出的解,故
\]
由于牛顿二项式展开定理
(1 - 4x)^{\frac{1}{2}} &= 1 + \sum_{k=1}^{\infty}\frac{(-1)^{k-1}}{2^{2k-1}k}\begin{pmatrix}2k -2 \\ k-1\end{pmatrix}(-4x)^k
\\&
\end{aligned}
\]
带入上式\((1)\)
H(x) &= \sum_{n=1}^{\infty}\frac{(-1)^n}{n2^{2n}}\begin{pmatrix}2n -2 \\ n -1\end{pmatrix}(-1)^nx^{2n}x^n
\\&=\sum_{n=1}^{\infty}\frac{1}{n}\begin{pmatrix}2n -2 \\ n - 1\end{pmatrix}x^n
\end{aligned}
\]
故
\]
Python
代码
import time
def combinatorial_number(m: int, n: int) -> int:
'''
:param n: 下标
:param m: 上标
:return: 返回组合数
'''
begin = n - m + 1
if m != 0:
result: int = int(factorial(begin=begin, end=n) / factorial(end=m))
else:
result: int = 1
return result
pass
def factorial(end: int, begin: int = 1) -> int:
result: int = begin
if end != 0:
for i in range(begin, end):
result *= i + 1
else:
result = 1
return result
pass
def catalan(num: int) -> int:
return int (combinatorial_number(n = 2 * num - 2, m = num - 1) / num)
t1 = time.time()
for i in range(1, 11):
print("h{} = ".format(i), catalan(i))
t2 = time.time()
print("一共所花时间是{}".format(t2 - t1))
h1 = 1
h2 = 1
h3 = 2
h4 = 5
h5 = 14
h6 = 42
h7 = 132
h8 = 429
h9 = 1430
h10 = 4862
一共所花时间是0.0005903244018554688
PS
后续的一些应用场景以及性质会在慢慢更新的!!
Catalan数以及相关性质的证明的更多相关文章
- Catalan数以及使用Raney引理证明
一.Catalan数性质 1.1 令h(0)=1,h(1)=1,catalan数满足递推式: h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) ...
- [总结]数论和组合计数类数学相关(定理&证明&板子)
0 写在前面 0.0 前言 由于我太菜了,导致一些东西一学就忘,特开此文来记录下最让我头痛的数学相关问题. 一些引用的文字都注释了原文链接,若侵犯了您的权益,敬请告知:若文章中出现错误,也烦请告知. ...
- [自用]多项式类数学相关(定理&证明&板子)
写在前面 由于上一篇总结的版面限制,特开此文来记录 \(OI\) 中多项式类数学相关的问题. 该文启发于Miskcoo的博客,甚至一些地方直接引用,在此特别说明:若文章中出现错误,烦请告知. 感谢你的 ...
- [总结]多项式类数学相关(定理&证明&板子)
目录 写在前面 前置技能 多项式相关 多项式的系数表示 多项式的点值表示 复数相关 复数的意义 复数的基本运算 单位根 代码相关 多项式乘法 快速傅里叶变换 DFT IDFT 算法实现 递归实现 迭代 ...
- [总结]其他杂项数学相关(定理&证明&板子)
目录 写在前面 一类反演问题 莫比乌斯反演 快速莫比乌斯变换(反演)与子集卷积 莫比乌斯变换(反演) 子集卷积 二项式反演 内容 证明 应用举例 另一形式 斯特林反演 第一类斯特林数 第二类斯特林数 ...
- KMP (next数组的性质及证明)
性质:如果len%(len-next[len-1])==0,则字符串中必存在最小循环节,且循环次数即为len/(len-next[len-1]); 证明:在前len个字符组成的字符串,存在最小循环节k ...
- [自用]数论和组合计数类数学相关(定理&证明&板子)
0 写在前面 本文受 NaVi_Awson 的启发,甚至一些地方直接引用,在此说明. 1 数论 1.0 gcd 1.0.0 gcd $gcd(a,b) = gcd(b,a\;mod\;b)$ 证明:设 ...
- zoj 1562 反素数 附上个人对反素数性质的证明
反素数的定义:对于不论什么正整数,其约数个数记为.比如,假设某个正整数满足:对随意的正整 数.都有,那么称为反素数. 从反素数的定义中能够看出两个性质: (1)一个反素数的全部质因子必定是从2開始的连 ...
- Java String的相关性质分析
引言 String可以说是在Java开发中必不可缺的一种类,String容易忽略的细节也很多,对String的了解程度也反映了一个Java程序员的基本功.下面就由一个面试题来引出对String的剖析. ...
随机推荐
- 面向对象进阶时,if语句写错位置
这周blog我也不知道要写什么,因为这章我其实学得有点懵,前面那几天我纠结了好久代码,一直不知道原因错在哪里.后来经过询问老师才知道自己调用错了构造方法,相信也有跟我一样的新手会犯这个错误.我在创建关 ...
- Android Studio 之 EditText
EditText 简介 •简介 EditText是一个非常重要的组件,可以说它是用户和Android应用进行数据传输窗户: 有了它就等于有了一扇和Android应用传输的门,通过它用户可以把数据传给A ...
- OAuth2.0授权码模式实战
OAuth2.0是目前比较流行的一种开源授权协议,可以用来授权第三方应用,允许在不将用户名和密码提供给第三方应用的情况下获取一定的用户资源,目前很多网站或APP基于微信或QQ的第三方登录方式都是基于O ...
- 分享15个实用VSCode插件,快来收藏吧!
Visual Studio Code 是由微软开发的一款免费.跨平台的文本编辑器.它有卓越的性能和丰富的功能.VSCode 也有一个扩展和主题市场,为了帮助大家挑选出值得下载的插件,我们针对性的收集了 ...
- [树形DP]战略游戏
战 略 游 戏 战略游戏 战略游戏 题目描述 Bob喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的办法.现在他有个问题.他要建立一个古城堡,城堡中的路形成一棵树.他要在这棵树的结点上 ...
- 201871030140-朱婷婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 2018级卓越班 这个作业要求链接 实验三 结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握GitHub协作开发程序的操作方法. 这个 ...
- 生产环境中的redis是怎么部署的?
redis cluster,10台机器,5台机器部署了redis主实例,另外5台机器部署了redis的从实例,每个主实例挂了一个从实例,5个节点对外提供读写服务,每个节点的读写高峰qps可能可以达到每 ...
- Spring Boot demo系列(五):Docker部署
2021.2.24 更新 1 概述 本文讲述了如何使用Docker部署Spring Boot应用,首先介绍了Docker的安装过程,接着介绍了Docker的一些基础知识,最后讲述了Dockerfile ...
- Hadoop完整搭建过程(一):本地模式
1 本地模式 本地模式是最简单的模式,所有模块都运行在一个JVM进程中,使用本地文件系统而不是HDFS. 本地模式主要是用于本地开发过程中的运行调试用,下载后的Hadoop不需要设置默认就是本地模式. ...
- Java JFR 民间指南 - 事件详解 - jdk.ObjectAllocationSample
对象分配采样:jdk.ObjectAllocationSample 引入版本:Java 16 相关 ISSUE:Introduce JFR Event Throttling and new jdk.O ...