尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

$\text{Catalan}$ 数 卡特兰数

$\text{Catalan}$ 数 卡特兰数
📅 发布时间:2026/6/19 19:46:16

定义

  • 公式 \(1\):\(C_n=\begin{pmatrix}2n\\n\end{pmatrix}-\begin{pmatrix}2n\\n-1\end{pmatrix}\)

  • 公式 \(2\):\(C_n=\sum_{a+b=n-1}C_aC_b\)

  • 公式 \(3\):\(C_n=\frac{4n-2}{n+1}C_{n-1},C_0=1\)

其中公式 \(3\) 表明其增长速度是 \(O(4^n)\) 的。

定义式 \(C_n=\frac{1}{n+1}\begin{pmatrix}2n\\n\end{pmatrix}\) 可以由公式 \(1\) 直接拆组合数推导出来。

组合意义

主包不会代数,所以在此仅说明一下公式 \(1\) 的组合意义推导过程。我们考虑通过 \(\text{Catalan}\) 数解决这么一个问题:

Statement:从 \((0,0)\) 走到 \((n,n)\),只能向上走或向右走,不能穿过直线 \(y=x\)(即 \(y-x\le 0\)),方案数是多少?

方案数是 \(C_n\),接下来我们考虑证明这一结论。

(图片来源于OI-wiki:卡特兰数,侵删)

image

计数通常要求找到的特性与对象存在双射关系,我们也尝试这样寻找,以下我们尝试用第一次触碰点这一特殊性无重地映射若干种情况。

为什么有这样的对应?我们不妨令其方案数为 \(T_n\),显然 \(T_0=1\),而考虑每种方案第一次触碰 \(y=x\) 的位置 \((k,k)\),发现第一步一定向右,最后一步一定向上。然后就可以划分为两个子问题,下面 \((1,0)\to(k,k-1)\) 的方案数是 \(T_{k-1}\),上面 \((k,k)\to(n,n)\) 的方案数是 \(T_{n-k}\),总递推式就是 \(T_n=\sum_{a+b=n-1}T_aT_b\),符合公式 \(2\)。

image

由于主包没有高超代数技巧,为了证明公式 \(1\) 和 \(2\) 的等效性,我们再来验证一下公式 \(1\) 的对应性。首先不考虑穿过的限制,方案数是 \(2n\) 步中选 \(n\) 步向上即 \(\begin{pmatrix}2n\\n\end{pmatrix}\),然后我们考虑去掉每个非法情况,这些非法情况一定在至少一个点触碰了 \(y=x+1\),一样地找到第一个触碰点 \((k,k+1)\),到 \((n,n)\) 的向量就是 \((n-k,n-k-1)\)。关于 \(y=x+1\) 翻折一下后半段,可以得到位移变成了 \((n-k-1,n-k)\),所到的点为 \((n-1,n+1)\)。这个翻折保证了计数的双射性,且对于到 \((n-1,n+1)\) 没有任何限制,每种方案都可以对应一个初始触碰点。那么这些非法情况的计数就是 \(\begin{pmatrix}2n\\n-1\end{pmatrix}\) 或者 \(\begin{pmatrix}2n\\n+1\end{pmatrix}\) 的。

所以得到

\[T_n=\begin{pmatrix}2n\\n\end{pmatrix}-\begin{pmatrix}2n\\n-1\end{pmatrix} \]

至于公式 \(3\) 我们平时不用我也不会证。

递推

  • 可以预处理 \(4n\) 范围内的乘法逆元后采用公式 \(3\)。

  • 可以预处理 \(2n\) 范围内的组合数后采用公式 \(1\)。

以上处理方法都是 \(\Theta(n)\) 的。

应用

上述 \((0,0)\to(n,n)\) 路径计数问题是比较经典的问题。

  • 括号计数问题

Statement:由 \(n\) 对括号构成的合法括号序列数 \(C_n\)。

将 \(x\) 坐标映射为前缀左括号数量,\(y\) 映射为右括号数量,前缀长度 \(x+y\)。

  • 三角剖分计数问题

Statement:对角线不相交的情况下,将一个凸 \((n+2)\) 边形区域分成三角形区域的方法数为 \(C_n\)。

同样通过公式 \(2\) 推导,给顶点编号 \(1\dots n+2\),枚举关于边 \((1,n+2)\) 的三角形第三个顶点 \(k\) 即可。

  • 出栈序列计数问题

Statement:一个栈(无穷大)的进栈序列为 \(1,2,3,\dots,n\),合法出栈序列的数目为 \(C_n\)。

和括号计数类似。

  • 数列计数问题

Statement:由 \(n\) 个 \(+1\) 和 \(n\) 个 \(−1\) 组成的数列 \(a_1,a_2, \ldots ,a_{2n}\) 中,部分和满足 \(a_1+a_2+ \ldots +a_k \geq 0~(k=1,2,3, \ldots ,2n)\) 的数列数目为 \(C_n\)。

和括号计数类似。

  • 圆内不相交弦计数问题:

Statement:圆上有 \(2n\) 个点,将这些点成对连接起来且使得所得到的 \(n\) 条线段两两不交的方案数是 \(C_n\)。

考虑点 \(1\) 只能和 \(2k(k\in [1,n]\cap \Z)\) 连边,否则无法分出合法子问题。同样枚举这个 \(k\) 然后可以由公式 \(2\) 推出。

相关新闻

  • 风险评估的流程和各阶段的工作内容
  • 稀疏离散分数阶傅里叶变换的MATLAB实现
  • 2025 年导轨丝杆源头厂家最新推荐榜,技术实力与市场口碑深度解析的优质企业榜单东莞/直线/滚珠/孚雷导轨丝杆厂家推荐

最新新闻

  • Onekey完整教程:一键解锁Steam游戏DLC的终极方案
  • 2026年南京知名3D效果图制作公司大盘点,你知道几家?
  • S12 MSCAN与SCI模块深度解析:低功耗、中断与安全初始化实战
  • MPV播放器懒人包:3分钟打造专业级视频播放体验
  • 2026年6月经验丰富的升降货梯生产公司哪家便宜,导轨式货梯升降机/厂房升降货梯/四柱液压货梯,升降货梯工厂平价推荐 - 品牌推荐师
  • 4.19周总结

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号