卡特兰数&斯特林数

卡特兰数

引入

不妨从找规律开始。
下标从\(0\)开始,卡特兰数的前几项为:

1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845,35357670,129644790…

那么通过认真的瞪眼观察,会发现它们满足递推关系。

关于

卡特兰数是一个很常见的数列。它并没有一个足够具体的意义,但诸多问题中都出现了与之相符的数学规律。
比起组合数的用形式规范问题,它更像是用诸多例子来勾勒出的形式。

下面根据几个实际的问题模型来讨论卡特兰数。

通项公式

\[C(n) = \tbinom{2n}{n}-\tbinom{2n}{n+1} \]

问题

  1. 给定\(n\times n\)的网格图。问,从左下角走到右上角,且不越过\(x=y\)对角线的方案数。
等价问题
  1. \(n\)个左括号和\(n\)个右括号的括号匹配的方案数。
    括号匹配:任意前缀中,左括号数量不小于右括号数量。

  2. \(1\)\(n\)依次入栈,可能的不同出栈序列数量。

  3. \(n\)个无编号节点构成的区别左右儿子的有根二叉树数量。

  4. \(2n+1\)个无编号节点构成的左右儿子有区别的有根真二叉树数量。

证明:因为懒得写了(其实是不会),所以推荐参考%%%sto这篇otz%%%

变形

\[C(n) = \frac{1}{n+1} \tbinom{2n}{n} \\ C(n) = \frac{1}{n+1} \sum_{i=0}^{n}\tbinom{n}{i}^2 \]

递推公式

对于\(n \ge 2\),有:

\[C(n)=\sum_{i=1}^{n} C(i-1)C(n-i) \]

问题

尤其是一些凸多边形问题

  1. 已知一个凸\(n\)边形,将其三角剖分,问可能的方案数。

  2. 已知一个凸\(n\)边形,在其顶点上插入钉子,在钉子间缠绕若干橡皮筋,问使橡皮筋不相交的方案数。

等价问题
  1. \(n\)个无编号节点构成的区别左右儿子的有根二叉树数量。

  2. 用若干个矩形构成\(n\)级楼梯,且每个矩形的右下角都作为一级楼梯的组成,问可能的方案数。

证明

类似动态规划中的转移方程,略。

另一个递推公式

\[C(n) = \frac{4n-2}{n+1}\times C(n-1) \]

斯特林数

就是斯特林数。

第一类斯特林数

记作\(s(n,m)\),或者\({n}\brack{m}\)
表示将\(n\)个不同元素划分为\(m\)个相同的非空轮换的方案数。

轮换:首尾相接的环形排列,例如\([A,B,C,D]=[B,C,D,A]\)

性质

\[n! = \sum_{i=0}^{n} {n\brack i} \]

考虑等式左边表示排列数,右边表示轮换数。

一个排列可以唯一对应一个置换(也就是唯一对应一组轮换),故等式成立。

递推式

对于\(m>0\),有:

\[{n\brack m} = \sum \begin{cases} {n-1 \brack m-1} &,Case1\\ (n-1)\times {n-1\brack m }&,Case2 \end{cases} \]

特别地,

  • \(n>0\),则\({n\brack 0} = 0\)
  • \(n=0\),则\({0\brack 0} = 0\)

通过考虑第\(n\)个元素的状况来推导:

Case1:第\(n\)个元素为单独的一个轮换。
Case2:第\(n\)个元素加入前面某个轮换,此时有\(n-1\)种加入方式。

计算同行

构造出一行中斯特林数的生成函数。

\[F_n(x) = \prod_{i=0}^{n-1}(x+i) = \frac{(x+n-1)!}{(x-1)!} \]

也就是\(x\)\(n\)次上升幂。

关于写这篇的时候,还不太会NTT,所以先放博客在这里,学会了回来补充细节,。

计算同列

类似求同行的办法,单个轮换的生成函数为:

\[F(x) = \sum_{i=1}^n (i-1)!\frac{x^i}{i!} \]

第二类斯特林数

记作\(S(n,m)\),或者\(n\brace m\)
表示将\(n\)个不同的元素划分为\(m\)个相同非空集的方案数。

性质

\[n^m = \sum_{i=0}^m i!\times{m\brace i}{n\choose i} \]

考虑等式左边表示\(m\)个不同元素放入\(n\)个不同集合
等式右边枚举非空集的数量为\(i\),再\(i!\)区分非空集,然后把\(m\)个元素放入\(i\)个“相同”非空集。
故等式成立。

递推式

\[{n\brace m} = {n-1\brace m-1} + m{n-1\brace m} \]

特别地,

  • \(n>0\),则\({n\brace 0} = 0\)
  • \(n=0\),则\({0\brace 0} = 0\)

类似第一类斯特林数的递推式推导:
考虑第\(n\)个元素是否单独为一个非空集合。

通项公式

\[{n\brace m} = \frac{1}{m!}\sum_{i=0}^m (-1)^k (m-i)^n {m\choose i}\\ \]

也就是:

\[{n\brace m}=\sum_{i=0}^m \frac{(-1)^{m-i}i^n}{i!(m-i)!} \]

利用容斥原理。

枚举空集的数目\(i\),剩下的集合可以随意放置。
考虑到集合相同,最后要除\(m!\)

posted @ 2023-12-07 16:51  _kilo-meteor  阅读(123)  评论(0)    收藏  举报