Catalan数

参考  Catalan数 - 云+社区 - 腾讯云

Catalan数一瞥:

关于Catalan,这是一个特殊的数列,可以方便求解许多问题。

这里,先给出Catalan数的通项公式,再举例进行进一步的分析:Cat_n = \frac{1}{n+1}C_{2n}^n。
先分析它的递推关系:

题目:在一个有n+2条边的多边形中,我们可以画出n-1条不相交的对角线将多边形分为n个三角形,设所有满足条件的方案数是h_n,定义h_0=1,求h_2、h_4、h_4。

分析:由题意,我们知道,有n+2条边的多边形,就相当于有n+2个点。我们又知道,因为每个点都通向两外两个相邻的点,那么,与它不相交的点就有n个点。给你们画张图就知道了。此时,n=4。(如下图)。

                                                       

现在,我们知道,与它不相交的点有n个。那我们来帮助理解一下,什么叫做n-1条不相交对角线。

                                                      

这是一种方案。

                                                      

这也是一种方案。

那么,我们可以得到,每次在我们连接完一条不相交的对角线后,我们会发现,这条对角线把当前图行分割成了2部分。那我们设其中一块有k+2条边(这样我们就可以得到k个三角形)。同理,另一块图形我们会得到n-1-k个三角形。因为乘法原理,这样剖分的方案数就为h_k*h_{n-1-k}(其中n为三角形的总数量,看前面n的介绍)。

显然,k可以从0一直变化到n-1(注意,考虑边界情况,并注意到这里的对角线不相交,所以这里不会出现重复计数)。

所以,递推式为h_n = \sum_{k=0}^{n-1}h_k*h_{n-1-k}

这个数列就是著名的Catalan数列。

现在,我们将这玩意整成我们熟悉的带有组合数的通项公式:h_n = \frac{1}{n+1}C_{2n}^n
需要用到一点点生成函数:

我们很容易写出上文h_n的生成函数

我们进一步计算

因为有:,所以进一步得到:

,由于

所以有:,解之得到:

,另一个解不符合,舍去。

那么根据牛顿二项式有:

那么带入化简得到:

那么我们最终得到:

所以:,h_n = \frac{1}{n+1}C_{2n}^n这就是Catalan的推导过程。

 
另一种方式看一看Catalan数:

题目:我们有n个+1和n个-1,将它们排列起来,其中任何长度的前缀和都大于等于0。问,有几种排列方案?、

这时,答案h_n = \frac{1}{n+1}C_{2n}^n

解释:我们设A_n表示满足条件的排列数的个数。再设U_n表示不满足条件即任何长度的前缀和有一个或多个前缀和答案小于0。那么由组合数定义我们可以知道:A_n+U_n=C_{2n}^n

接下来,我们试图求出U_n

根据题目定义,我们先设k满足某些前缀和小于0,且这个k必须要保证最小。

那么我们可以知道,前k个数中-1的数量肯定比+1的数量多1,换句话说,前k-1个数中+1和-1的数量是相等的且是符合要求的。

那么,我们根据k的定义可以知道,k是一个正奇整数(-1的数量比+1多1),且第k个数必须是-1,这样才能保证k最小。

那么,我们将前k个数取反(每一个数1变0或者0变1),就可以得到有n+1个+1和n-1个-1(因为前k个数中-1的数量比+1的数量多1)。那么不可接受的数列 就和 有n+1个+1和n-1个-1的数列是一一对应的。因为如果有n+1个+1和n-1个-1的序列出现,那么从头到尾遍历序列,一定在某一个点上(包括这个点)的前缀和大于0。因为这是取反的数列,那么我们把这个点之前(包括这个点)的所有数字都去反,就会得到一个前缀和小于0的序列,那么这就是一个不符合的序列。

我们很容易求出不可接受的数列为U_n = C_{2n}^{n+1} = \frac{n}{n+1}C_{2n}^n

所以,A_n+U_n=C_{2n}^n

所以,解就是 A_n=\frac{1}{n+1}C_{2n}^{n}=h_n

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wanderer001

ROIAlign原理

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值