特殊计数数列
斐波那契数列
斐波那契数列的定义与基本性质
历史背景 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。
定义 斐波那契数列 Fn 有递推定义
Fn=⎧⎪⎨⎪⎩0,n=01,n=1Fn−1+Fn−2,n≥2
列举参照
0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,⋯
性质1 n∑i=1Fi=Fn+2−1 。
性质2 n∑i=1F2i−1=F2n 。
性质3 n∑i=1F2i=F2n+1−1 。
性质4 n∑i=1F2i=FnFn+1 。
性质5 Fn+m=Fn−1Fm−1+FnFm 。
性质6 F2n=(−1)n−1+Fn−1Fn+1 。
性质7 F2n−1=F2n−F2n−2 。
性质8 Fn=Fn−2+Fn+23 。
性质9 limn→∞Fn+1Fn=√5−12 。
性质10 Fn=(1+√52)n−(1−√52)n√5 。
卡特兰数
卡特兰数的定义与基本性质
历史背景 卡特兰数(Catalan number),又称卡塔兰数、明安图数,是组合数学中一种常出现于各种计数问题中的数列。以比利时的数学家欧仁·查理·卡特兰的名字来命名。1730年左右被蒙古族数学家明安图使用于对三角函数幂级数的推导而首次发现,1774年被发表在《割圜密率捷法》。
定义 卡特兰数 Hn 有递推定义
Hn=⎧⎪
⎪⎨⎪
⎪⎩1,n=0 or 1n−1∑i=0HiHn−i−1,n≥2
列举参照
1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845,35357670,129644790,477638700,1767263190,6564120420,⋯
性质1 Hn=1n+1(2nn) 。
性质2 Hn=(2nn)−(2nn−1) 。
性质3 Hn=4n−2n+1Hn−1 。
性质1的证明:
我们设卡特兰数的生成函数为 G(x)=∞∑i=0Hixi ,可得
G2(x)=H20+(H0H1+H1H0)x+(H0H2+H21+H2H0)x2+⋯=H1+H2x+H3x2+⋯
于是有 xG2(x)−G(x)+1=0 ,解得 G(x)=1−√1−4x2x 并且 G(0)=1,limx→0G(x)=1 。
我们对 G(x) 在 x=0 处泰勒展开 (1+x)α=∞∑i=0(αi)xi ,有
G(x)=12x∞∑i=1(−1)(1/2i)(−4x)i=12x∞∑i=1(−1)(1/2)(1/2−1)⋯(1/2−i+1)i!(−4x)i=12x(1+∞∑i=2(2i−3)!!i!(2x)i)=12x(1+∞∑i=2(2i−2)!i!⋅2⋯(2i−2)(2x)i)=12x∞∑i=1(2i−2)!i!⋅(i−1)!xi=12x∞∑i=0(2i)!(i+1)!⋅i!xi+1=∞∑i=01i+1(2i)!i!⋅i!xi=∞∑i=01i+1(2ii)xi
综上,根据 G(x) 的 xn 系数可得 Hn=1n+1(2nn) 。
性质2的证明:
由性质1可得,Hn=1n+1(2nn)=(2nn)−nn+1(2nn)=(2nn)−(2nn−1) 。
性质3的证明:
由性质1可得, Hn=1n+1(2nn)=1n+1(2n)!n!n!=4n−2n+11n(2n−2)!(n−1)!(n−1)!=4n−2n+1Hn−1 。
卡特兰数的应用
这里只列举了几个经典的情况,还有许多就不一一列举了,解释都是大同的。
这些问题的共同点就是,有具有前缀限制的两种操作,或可以划分为多个子问题的和。
满足通项关系的情况
-
网格图路径
在 n×n 的网格图中,从 (0,0) 走到 (n,n) ,满足每次可以向上或向右走一格,且任意时刻向右次数不少于向上次数的路径方案数。
方法:
限制可理解为不能越过(可以碰到)直线 y=x 的方案数。
不考虑 y=x 的限制,共有 (2nn) 种方案。
考虑不合法的方案,即越过 y=x 的方案,等价于碰到 y=x+1 的方案。每个不合法的方案,找到其碰到 y=x+1 的第一个交点,将此之后的路径沿 y=x+1 对称翻折,会得到唯一对应的一条 (0,0) 到 (n−1,n+1) 的路径。同时对于 (0,0) 到 (n−1,n+1) 的每条路径,也可以找到第一个与 y=x+1 的交点,将此之后的路径沿 y=x+1 对称翻折,也会得到唯一对应的一条 (0,0) 到 (n,n) 的不合法的路径。
综上, (0,0) 到 (n,n) 的不合法路径和 (0,0) 到 (n−1,n+1) 的路径是一一对应的,因此 (0,0) 到 (n,n) 的合法路径方案数为 Hn=(2nn)−(2nn−1) 。
当 y=x+k 时,可以同样分析。
-
括号匹配
有 n 个左括号和 n 个右括号,求长度为 2n 的合法括号序列个数。
方法:
限制是任意前缀序列中,左括号个数不少于右括号个数。
可以同网格图路径中的方法类似,翻折操作变成左右括号互换。
-
不相交弦问题
一个圆周上有 2n 个点,两两配对并在两点间连一条弦,要求所连的 n 条弦没有交点,求有多少种配对数。
方法:
我们规定逆时针方向为正,从其中一个点开始,限制是任意前缀序列中,左端点个数不少于右端点个数。
可以同网格图路径中的方法类似,翻折操作变成左右端点互换。
-
出栈序列
一个栈(无穷大)的进栈序列为 1,2,⋯,n 有多少个不同的出栈序列?
方法:
同括号匹配。
满足递推关系的情况
-
阶梯矩形的矩形划分数
求 n 层矩形阶梯分为 n 个矩形的方案数。
-
凸多边形的三角划分
一个凸的 n+2 边形,用 n−1 条直线连接它的两个顶点使之分成 n 个三角形,每条直线不能相交,求划分方案数。
-
二叉树计数
二叉树有 n 个节点,求不同的二叉树的个数。
斯特林数
贝尔数
分拆数
伯努利数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧