//https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190806114008215-138720377.jpg

斯特林数

斯特林数

第二类斯特林数

我们在日常生活中遇到的,求把 \(n\) 个不同的苹果分为 \(m\) 组,且每组至少一个苹果的方案数,即为最经典的第二类斯特林数

第二类斯特林数 \({n \brace k}\),也可以记作 \(S(n, k)\),表示将 \(n\) 个两两不同的元素,划分为 \(k\) 个互不区分的非空子集的方案数。

递推式

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

边界是 \({n\brace 0} = [n = 0]\)

证明:

我们在插入一个新的元素时,有两种方案:

  • 将新元素单独放入一个子集,有 \({n - 1\brace k - 1}\) 种方案。

  • 将新元素放入一个现有的非空子集,有 \(k{n - 1\brace k}\) 种方案。

根据加法原理,两个相加即可得到递推式。

通项公式

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

证明需要用到容斥:

设将 \(n\) 个两两不同的元素,划分到 \(i\) 个两两不同的集合(允许空集)的方案数为 \(G_{i}\),将 \(n\) 个两两不同的元素,划分到 \(i\) 个两两不同的非空集合(不允许空集)的方案数为 \(F_{i}\)

显然:

\[G_{i} = i^{n} \]

\[G_{i} = \sum_{j = 0}^{i}\binom{i}{j}F_{j} \]

根据二项式反演:

\[F_{i} = \sum_{j = 0}^{i}(-1)^{i - j} \binom{i}{j}G_{j} \]

\[F_{i} = \sum_{j = 0}^{i} (-1)^{i-j}\binom{i}{j}j^{n} \]

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

此外还有同一行或同一列的第二类斯特林数计算方法,可以自行到 OI Wiki 查询。

第一类斯特林数

第一类斯特林数 \({n\brack k}\),也可以记作 \(s(n,k)\),表示将 \(n\) 个两两不同的元素,划分为 \(k\) 个互不区分的非空轮换的方案数。

一个轮换就是一个首位相接的环形排列,如 \([A,B,C,D]\),并且我们认为 \([A,B,C,D] = [B,C,D,A] = [C,D,A,B] = [D,A,B,C]\),即,两个可以通过旋转而互相得到的轮换是等价的。

两个通过翻转能互相的得到的轮换不一定等价:\([A,B,C,D]\ne [D,C,B,A]\)

递推式

\[{n\brack m}={n-1\brack m-1}+(n - 1){n - 1\brack m} \]

边界是 \({n\brack 0} = [n = 0]\)

证明:

我们在插入一个新的元素时,有两种方案:

  • 将该新元素置于一个单独的轮换当中,共有 \({n - 1 \brack m - 1}\) 种方案。

  • 将该元素置于任何一个现有的轮换中,共有 \((n - 1){n - 1\brack k}\) 种方案。

根据加法原理,两个相加即可得到递推式。

通项公式

没有。

习题

我 * 最简单的都是紫,还要用 NTT(?

鸽了。

参考文献

https://oi-wiki.org/math/combinatorics/stirling/

posted @ 2023-08-29 10:05  北烛青澜  阅读(15)  评论(1编辑  收藏  举报