卡特兰数及相关应用场景

卡特兰数(Catalan numbers)是一类在组合数学中频繁出现的整数序列,以比利时数学家欧仁·查理·卡特兰(Eugène Charles Catalan)的名字命名。这个数列在许多看似无关的问题中都会自然出现,具有丰富的组合解释。


一、卡特兰数的定义

第nnn 个卡特兰数 CnC_nCn 的公式为:

Cn=1n+1(2nn)=(2n)!(n+1)! n! C_n = \frac{1}{n+1} \binom{2n}{n} = \frac{(2n)!}{(n+1)! \, n!} Cn=n+11(n2n)=(n+1)!n!(2n)!

其中(n≥0)( n \geq 0 )(n≥0),且 (C0=1)( C_0 = 1 )(C0=1)。

前几项卡特兰数为:

C0=1,C1=1,C2=2,C3=5,C4=14,C5=42,C6=132,... C_0 = 1,\quad C_1 = 1,\quad C_2 = 2,\quad C_3 = 5,\quad C_4 = 14,\quad C_5 = 42,\quad C_6 = 132,\quad \dots C0=1,C1=1,C2=2,C3=5,C4=14,C5=42,C6=132,...


二、递推关系

卡特兰数满足以下递推公式:

C0=1,Cn+1=∑i=0nCiCn−i(n≥0) C_0 = 1,\quad C_{n+1} = \sum_{i=0}^{n} C_i C_{n-i} \quad (n \geq 0) C0=1,Cn+1=i=0∑nCiCn−i(n≥0)

也可以写成:

Cn=∑i=0n−1CiCn−1−i C_n = \sum_{i=0}^{n-1} C_i C_{n-1-i} Cn=i=0∑n−1CiCn−1−i

此外,还有更高效的线性递推形式:

Cn+1=2(2n+1)n+2Cn C_{n+1} = \frac{2(2n+1)}{n+2} C_n Cn+1=n+22(2n+1)Cn


三、卡特兰数的典型应用(组合解释)

卡特兰数出现在大量组合结构的计数问题中,例如:

  1. 合法括号序列
    CnC_nCn 表示由 nnn 对括号组成的合法(即正确匹配)括号序列的个数。

  2. 二叉树的个数
    CnC_nCn 表示有 nnn 个内部节点的不同构的满二叉树(或有 n+1n+1n+1 个叶节点的二叉树)的数目。

  3. 凸多边形三角剖分

    将一个凸 (n+2)(n+2)(n+2)边形用不相交的对角线划分为三角形的方法数是 CnC_nCn。

  4. Dyck 路径

    从 (0,0)(0,0)(0,0) 到 (2n,0)(2n,0)(2n,0) 的路径,每步向上 (1,1)(1,1)(1,1) 或向下 (1,−1)(1,-1)(1,−1),且不穿过 x 轴下方的路径数为 CnC_nCn。

  5. 出栈序列

    一个栈的进栈序列为 (1,2,...,n)( 1,2,\dots,n )(1,2,...,n),可能的出栈序列总数为 CnC_nCn。

  6. 非交叉划分

    在圆上标出 2n2n2n个点,将其两两配对且连线不相交的方式数为 CnC_nCn。


四、生成函数

卡特兰数的普通生成函数 C(x)=∑n=0∞CnxnC(x) = \sum_{n=0}^{\infty} C_n x^nC(x)=∑n=0∞Cnxn 满足:

C(x)=1+xC(x)2 C(x) = 1 + x C(x)^2 C(x)=1+xC(x)2

解得:

C(x)=1−1−4x2x C(x) = \frac{1 - \sqrt{1 - 4x}}{2x} C(x)=2x1−1−4x


五、小结

为什么这么多问题都归结为卡特兰数?

因为它们共享以下组合结构特征
递归可分 :整体可分解为两个独立的子问题。
非交叉/不越界 :子结构之间不能"交错"或"穿透"。
平衡性 :如括号匹配中的左右平衡、路径中的上下步平衡。
一一对应:这些问题之间存在双射(bijection),即可以互相转换。

卡特兰数因其简洁的形式和广泛的应用,成为组合数学中的经典对象。如果你在算法、数据结构、离散数学或编程竞赛中遇到"合法配对"、"不交叉"、"不越界路径"等限制条件下的计数问题,很可能就与卡特兰数有关。

相关推荐
初夏睡觉25 分钟前
原创题目 - 空壳恋爱
c++·算法·dp·oi·信息学·原创题目·值得挑战的题目
Buke..43 分钟前
【APP 逆向】哔哩哔哩 sign 参数逆向(下):OLLVM 混淆还原 sign 算法
java·javascript·爬虫·python·算法
闲研随记1 小时前
【文献阅读 ICLR 2026】RL算法:DECS
算法·llm·强化学习·iclr·rl
量化小c1 小时前
一行代码查 BTCUSDT 和 AAPL 最新价?QuantDash 统一多市场实时行情接口实战
后端·算法·github
机器人梦想家2 小时前
具身机器人视觉服务的异步回调与并发控制
数据库·算法·机器人
我命由我123453 小时前
人脸识别 - 人脸识别选帧
java·人工智能·python·算法·安全·java-ee·人脸识别
时针滴滴答啊3 小时前
最大子数组和
算法·leetcode·职场和发展
五月底_4 小时前
LIS算法
python·算法·最长子序列
Yfhonier4 小时前
【素数定理】素数个数的位数
c++·算法·素数
学学酱快乐4 小时前
2026年PMP考试生命周期选择决策树精讲:从需求判断到混合型统一框架的应试全攻略
算法·决策树·机器学习·pmp新版考试大纲·pmp新题型·pmp培训哪家好·pmp培训机构推荐