卡特兰数&斯特林数
1|0卡特兰数
引入
不妨从找规律开始。
下标从开始,卡特兰数的前几项为:
1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845,35357670,129644790…
那么通过认真的瞪眼观察,会发现它们满足递推关系。
关于
卡特兰数是一个很常见的数列。它并没有一个足够具体的意义,但诸多问题中都出现了与之相符的数学规律。
比起组合数的用形式规范问题,它更像是用诸多例子来勾勒出的形式。
下面根据几个实际的问题模型来讨论卡特兰数。
1|1通项公式
问题
- 给定的网格图。问,从左下角走到右上角,且不越过对角线的方案数。
等价问题
-
个左括号和个右括号的括号匹配的方案数。
括号匹配:任意前缀中,左括号数量不小于右括号数量。 -
到依次入栈,可能的不同出栈序列数量。
-
个无编号节点构成的区别左右儿子的有根二叉树数量。
-
个无编号节点构成的左右儿子有区别的有根真二叉树数量。
证明:因为懒得写了(其实是不会),所以推荐参考%%%sto这篇otz%%%
变形
1|2递推公式
对于,有:
问题
尤其是一些凸多边形问题
-
已知一个凸边形,将其三角剖分,问可能的方案数。
-
已知一个凸边形,在其顶点上插入钉子,在钉子间缠绕若干橡皮筋,问使橡皮筋不相交的方案数。
等价问题
-
个无编号节点构成的区别左右儿子的有根二叉树数量。
-
用若干个矩形构成级楼梯,且每个矩形的右下角都作为一级楼梯的组成,问可能的方案数。
证明
类似动态规划中的转移方程,略。
另一个递推公式
2|0斯特林数
就是斯特林数。
2|1第一类斯特林数
记作,或者。
表示将个不同元素划分为个相同的非空轮换的方案数。
轮换:首尾相接的环形排列,例如。
性质
考虑等式左边表示排列数,右边表示轮换数。
一个排列可以唯一对应一个置换(也就是唯一对应一组轮换),故等式成立。
递推式
对于,有:
特别地,
- 当,则;
- 当,则。
通过考虑第个元素的状况来推导:
Case1:第个元素为单独的一个轮换。
Case2:第个元素加入前面某个轮换,此时有种加入方式。
计算同行
构造出一行中斯特林数的生成函数。
也就是的次上升幂。
关于写这篇的时候,还不太会NTT,所以先放博客在这里,学会了回来补充细节,。
计算同列
类似求同行的办法,单个轮换的生成函数为:
2|2第二类斯特林数
记作,或者。
表示将个不同的元素划分为个相同非空集的方案数。
性质
考虑等式左边表示个不同元素放入个不同集合
等式右边枚举非空集的数量为,再区分非空集,然后把个元素放入个“相同”非空集。
故等式成立。
递推式
特别地,
- 当,则;
- 当,则。
类似第一类斯特林数的递推式推导:
考虑第个元素是否单独为一个非空集合。
通项公式
也就是:
利用容斥原理。
枚举空集的数目,剩下的集合可以随意放置。
考虑到集合相同,最后要除。
__EOF__

本文链接:https://www.cnblogs.com/meteor2008/p/17882189.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:_kilo-meteor,转载请注明原文链接:https://www.cnblogs.com/meteor2008/p/17882189.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具