卡特兰数 Catalan

卡特兰数

定义

Catalan 数列 Hn 是以下问题的方案数:

  • 有一个大小为 n×n 的方格图,左下角为 (0,0) 右上角为 (n,n),从左下角开始 每次都只能向右或者向上走一单位,不走到对角线 y=x 上方(但可以触碰) 的情况下到达右上角有多少可能的路径?
  • 在圆上选择 2n 个点,将这些点成对连接起来使得所得到的 n 条线段不相交的 方法数?
  • 一个栈的进栈序列为 1,2,3,···,n 有多少个不同的出栈序列?
  • n 个结点可构造多少个不同的二叉树?
  • n 对括号能组成的括号序列数?
  • ......

这些问题的方案数可以证明是相等的。我们先以第一个命题来具体研究 Catalan

图片有点抽象还请各位海涵一下。

我们从(1,1)走到(n,n)的方案数可以递推来求。

设我们第一次接触到对角线时的横坐标为i,前面的方案数可看为从(2,1)走到(i,i-1)的方案数,后面的方案数可看为从(i,i)走到(n,n)的方案数。

对 i 求和有:Hn=i=1nHi1Hni,这就是卡特兰数的递推式。初值为 H0=H1=1

我们还可以看为总方案数减去超过对角线(触碰到红线)的方案数。

我们对最后一次触碰到红线后的部分进行翻转,则原来的每一条不合法路径(如蓝色)就一一对应了一条终点为(n-1,n+1)的路径(如绿色)。

所以卡特兰数的组合意义是 Hn=(2nn)(2nn1)

综上

Hn={i=0n1HiHni1(n2)1(n=0,1)Hi=(2nn)(2nn1)

再看卡特兰数的第二个和第四个定义,可以发现它们的递推式与该递推式相同。对于第三个和第五个定义,可以认为就是在走网格,并且横向步数不超过纵向步数。

通项公式Hn=(2nn)n+1。这个使用递推公式的生成函数搞出来的,证明比较麻烦,这里不再赘述 。你也可以把该式子带入组合意义中来验证其正确性。

递推式2Hn=Hn1(4n2)n+1 ,这个可以直接带入验证。

因为上课讲的例题都没怎么听懂,这里就不放题了。

posted @   花子の水晶植轮daisuki  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
https://blog-static.cnblogs.com/files/zouwangblog/mouse-click.js
点击右上角即可分享
微信分享提示