斯特林数

第二类斯特林数

第二类斯特林数 \(\begin{Bmatrix} n \\m \end{Bmatrix}\) 表示把 \(n\) 个不同元素划分成 \(m\) 个相同的集合中(不能有空集)的方案数。

求法:

  1. 递推式

\[\begin{Bmatrix} n \\m \end{Bmatrix}=m\begin{Bmatrix} n-1 \\m \end{Bmatrix}+\begin{Bmatrix} n-1 \\m-1 \end{Bmatrix} \]

证明:

考虑第 \(n\) 个元素放在哪个集合。它要么在已经有的 \(k\) 个非空集合里选一个放进去,要么自己单开一个新的集合。

  1. 通项公式

\[\begin{Bmatrix} n \\m \end{Bmatrix}=\sum\limits_{i=0}^m\frac{(-1)^{m-i}i^n}{i!(m-i)!} \]

证明:

\(f_{n,m}=\begin{Bmatrix} n \\m \end{Bmatrix},g_{n,m}\) 表示允许空集的方案数。

显然,\(g_{n,m}=\frac{n^m}{m!}\)

钦定非空集合个数知:

\[g_{n,m}=\sum\limits_{i=1}^m\binom{m}{i}f_{n,i} \]

对其二项式反演可得:

\[f_{n,m}=\sum\limits_{i=1}^m(-1)^{m-i}\binom{m}{i}g_{n,i} \]

带入 \(g_{n,i}\) 可得:

\(\begin{aligned}\begin{Bmatrix} n \\m \end{Bmatrix}&=f_{n,m}\\&=\sum\limits_{i=1}^m(-1)^{m-i}\binom{m}{i}\frac{m^n}{m!}\\&=\sum\limits_{i=1}^m\frac{(-1)^{m-i}i^n}{i!(m-i)!}\end{aligned}\)

第一类斯特林数

第一类斯特林数 \(\begin{bmatrix} n \\k \end{bmatrix}\) 表示将 \(n\) 个元素排成 \(k\) 个轮换的方案数。也即所有 \(n!\) 个排列中,构成的置换有 \(k\) 个环的排列数。

递推式

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

证明:

考虑第 \(n\) 个元素放在哪个轮换里。要么在已经有的 \(k\) 个轮换里选一个位置插进去,方案数是 \(n-1\);要么自己单开一个新的轮换。

注意:第一类斯特林数无实用通项公式。

斯特林数的特殊值

  1. 第二类

\[{n\brace 0}=[n=0]\ ,\ {n\brace 1}={n\brace n}=1(n>0) \]

\[{n\brace 2}=2^{n-1}-1(n>0)\ ,\ {n\brace n-1}=\binom{n}{2} \]

  1. 第一类

\[{n\brack 0}=[n=0]\ ,\ {n\brack n}=1(n>0) \]

\[{n\brack 1}=(n-1)!(n>0)\ ,\ {n\brack n-1}=\binom{n}{2} \]

斯特林数的一些恒等式

\[{n+1\brace m+1}=\sum\limits_{k}\binom{n}{k}{k\brace m} \]

证明:

使用组合意义:枚举 \(k\) 表示 \(n+1\) 号节点所在的集合之外剩下了 \(k\) 个节点,这 \(k\) 个节点构成了 \(m\) 个集合。

\[{n\brace m}=\sum\limits_k\binom{n}{k}{k+1\brace m+1}(-1)^{n-k} \]

证明:

把 1 中的式子二项式反演即可。

\[{m+n+1\brace m}=\sum\limits_{k=0}^mk{n+k\brace k} \]

证明:

\(\begin{aligned}\sum\limits_{k=0}^mk{n+k\brace k}&=\sum\limits_{k=0}^m\left({n+k+1\brace k}-{n+k\brace k-1}\right)\\&={m+n+1\brace m}\end{aligned}\)

同理可得:

\[{m+n+1\brack m}=\sum\limits_{k=0}^m(n+k){n+k\brack k} \]

\[\sum\limits_{k=0}^n{n\brack k}=n! \]

证明:

一个有 \(n\) 个元素的排列和一个 \(n\) 个元素的置换一一对应,于是枚举所有置换中的轮换个数,求和即为排列个数 \(n!\)

斯特林数与上升幂、下降幂

  1. 普通幂转下降幂

\[x^n=\sum\limits_{k=0}^n\begin{Bmatrix} n \\k\end{Bmatrix}x^{\underline{k}}=\sum_{k=0}^n{{n\brace k}\binom xkk!} \]

证明(组合意义):

\(x^n\) 的组合意义是把 \(n\) 个不同的元素放进 \(x\) 个不同的可空集合中。

那么先从 \(x\) 个集合中选 \(k\) 个,然后再把 \(n\) 个元素有序划分为 \(k\) 个部分,每个部分依次放进每个集合,组合意义与 \(x^n\) 相同。

证明(代数):

一个重要的观察:\(x^{\underline{k+1}}=x^{\underline{k}}(x-k)\)\(x\cdot x^{\underline{k}}=x^{\underline{k+1}}+k\cdot x^{\underline{k}}\)

使用数学归纳法:

\(\begin{aligned}x\cdot x^{n-1}&=x\cdot \sum\limits_{k=0}^{n-1}{n-1\brace k}x^{\underline{k}}\\&=\sum\limits_{k=0}^{n-1}{n-1\brace k}x^{\underline{k+1}}+\sum\limits_{k=0}^{n-1}{n-1\brace k}k\cdot x^{\underline{k}}\\&=\sum\limits_{k=1}^n{n-1\brace k-1}x^{\underline{k}}+\sum\limits_{k=1}^{n-1}{n-1\brace k}k\cdot x^{\underline{k}}\\&=\sum\limits_{k=1}^n\left(k{n-1\brace k}+{n-1\brace k-1}\right)x^{\underline{k}}\\&=\sum\limits_{k=1}^n{n\brace k}x^{\underline{k}}\end{aligned}\)

故得证。

  1. 上升幂转普通幂

\[x^{\overline{n}}=\sum\limits_{i=0}^n{n\brack k}x^k \]

证明:

同样使用数学归纳法即可。

注意此时的观察为 \((x+n-1)x^k=x^{k+1}+(n-1)x^k\)

  1. 下降幂转普通幂

\[x^{\underline{n}}=\sum\limits_{k=0}^n(-1)^{n-k}{n\brack k}x^k \]

证明:

观察可知,上升和下降幂有交错的符号,如:

\[x^{\underline{4}}=x^4-6x^3+11x^2-6x \]

\[x^{\overline{4}}=x^4+6x^3+11x^2+6x \]

则根据上升幂转普通幂公式可得,原式成立。

  1. 普通幂转上升幂

\[x^n=\sum\limits_{k=0}^n{n\brace k}(-1)^{n-k}x^{\overline{k}} \]

证明:

\(x^n=\sum\limits_{k=0}^n{n\brace k}x^{\underline{k}}\) 中两边带入 \(-x\),得:

\[(-1)^nx^n=\sum\limits_{k=0}^n{n\brace k}(-x)^{\underline{k}} \]

同时:

\[x^{\underline{n}}=(-1)^n(-x)^{\overline{n}} \]

故得证。

  1. 反转公式

\[\sum\limits_{k=m}^n{n\brace k}{k\brack m}(-1)^{k-m}=[m=n] \]

证明:

普通幂转下降幂,再下降幂转普通幂,得到:

\(\begin{aligned}x^n&=\sum\limits_{k=0}^n{n\brace k}x^{\underline{k}}\\&=\sum\limits_{k=0}^n{n\brace k}\sum\limits_{j=0}^k(-1)^{k-j}{k\brack j}x^j\\&=\sum\limits_{j=0}^n\sum\limits_{k=j}^n{n\brace k}(-1)^{k-j}{k\brack j}x^j\end{aligned}\)

对比两侧多项式的系数,即可得到原式。

类似地,下降幂转普通幂,再普通幂转下降幂,可以得到:

\[\sum\limits_{k=m}^n{n\brack k}{k\brace m}(-1)^{n-k}=[m=n] \]

斯特林反演

\[f(n)=\sum\limits_{k=0}^n{n\brace k}g(k)\Leftrightarrow g(n)=\sum\limits_{k=0}^n(-1)^{n-k}{n\brack k}f(k) \]

\[f(n)=\sum\limits_{k=m}^n{k\brace m}g(k)\Leftrightarrow g(n)=\sum\limits_{k=m}^n(-1)^{k-m}{k\brack m}f(k) \]

这里证明第一个式子,与二项式反演相似:

\(\begin{aligned}f(n)&=\sum\limits_{k=0}^n{n\brace k}\sum\limits_{j=0}^k(-1)^{k-j}{k\brack j}f(j)\\&=\sum\limits_{j=0}^nf(j)\sum\limits_{k=j}^n{n\brace k}{k\brack j}(-1)^{k-j}\\&=\sum\limits_{j=0}^nf(j)[j=n]=f(n)\end{aligned}\)

故得证。

斯特林数例题

  1. Team Work

给定 \(n,k\),求:\(\sum\limits_{i=1}^n\binom{n}{i}i^k\)

sol:

\(\begin{aligned}\sum\limits_{i=1}^n\binom{n}{i}i^k&=\sum\limits_{i=0}^n\binom{n}{i}\sum\limits_{j=1}^k{k\brace j}i^{\underline{j}}\\&=\sum\limits_{j=1}^k{k\brace j}j!\sum\limits_{i=0}^n\binom{n}{i}\binom{i}{j}\\&=\sum\limits_{j=1}^k{k\brace j}j!\binom{n}{j}\sum\limits_{i=0}^n\binom{n-j}{i-j}\\&=\sum\limits_{j=1}^k{k\brace j}j!\binom{n}{j}\sum\limits_{i=0}^{n-j}\binom{n-j}{i}\\&=\sum\limits_{j=1}^k{k\brace j}\binom{n}{j}2^{n-j}j!\end{aligned}\)

预处理斯特林数,即可 \(O(k^2)\) 计算。

  1. 组合数问题

给定多项式 \(f(k)=a_0+a_1k+a_2k^2+\cdots+a_mk^m\) 以及 \(n,x,p\),求:

\[\sum\limits_{k=0}^nf(k)x^k\binom{n}{k} \]

sol:

首先把 \(f(k)\) 转下降幂多项式 \(f(k)=b_0+b_1k^{\underline{1}}+\cdots+b_mk^{\underline{m}}\)

\[\sum\limits_{i=0}^ma_ik^i=\sum\limits_{i=0}^ma_i\sum\limits_{j=0}^i{i\brace j}k^{\underline{j}}=\sum\limits_{i=0}^m\left(\sum\limits_{j=i}^m{j\brace i}a_j\right)k^{\underline{i}} \]

则取 \(b_i=\sum\limits_{j=i}^m\begin{Bmatrix}j\\i\end{Bmatrix}a_j\) 即可。

则原式化为:

\[\sum\limits_{k=0}^n\sum\limits_{i=0}^mb_ik^{\underline{i}}x^k\binom{n}{k} \]

观察到:

\[k^{\underline{i}}\binom{n}{k}=n^{\underline{i}}\binom{n-i}{k-i} \]

带入原式得到:

\(\begin{aligned}\sum\limits_{k=0}^n\sum\limits_{i=0}^mb_ik^{\underline{i}}x^k\binom{n}{k}&=\sum\limits_{k=0}^n\sum\limits_{i=0}^mb_ix^kn^{\underline{i}}\binom{n-i}{k-i}\\&=\sum\limits_{i=0}^mb_in^{\underline{i}}\sum\limits_{k=0}^n\binom{n-i}{k-i}x^k\\&=\sum\limits_{i=0}^mb_in^{\underline{i}}x^i\sum\limits_{k=0}^{n-i}\binom{n-i}{k}x^k\\&=\sum\limits_{i=0}^mb_in^{\underline{i}}x^i(x+1)^{n-i}\end{aligned}\)

即可 \(O(m^2)\) 计算。

  1. Crash 的文明世界

给定一棵 \(n\) 个点的树,以及一个常数 \(k\),对每个 \(i=1,2,\cdots,n\),求:

\[S(i)=\sum\limits_{j=1}^n\operatorname{dist}(i,j)^k \]

sol:

利用普通幂转下降幂,原式即为:

\(\begin{aligned}S(u)&=\sum\limits_{v=1}^n\sum\limits_{i=0}^k{k\brace i}\binom{\operatorname{dist}(u,v)}{i}i!\\&=\sum\limits_{i=0}^k{k\brace i}i!\sum\limits_{v=1}^n\binom{\operatorname{dist}(u,v)}{i}\end{aligned}\)

考虑使用树形 dp,设 \(f_{u,i}\) 表示 \(u\) 子树内所有点 \(v\)\(\binom{\operatorname{dist}(u,v)}{i}\) 之和。

转移方程:

\(\begin{aligned}f_{u,i}&=\sum\limits_{v\in \operatorname{sub}(u)}\binom{\operatorname{dist}(u,v)}{i}\\&=\sum\limits_{v\in \operatorname{sub}(u)}\left(\binom{\operatorname{dist}(u,v)-1}{i-1}+\binom{\operatorname{dist}(u,v)-1}{i}\right)\\&=\sum\limits_{v\in \operatorname{sub}(u)}f_{v,i-1}+f_{v,i}\end{aligned}\)

做换根 dp 即可得到每个点的答案。

  1. 幼儿园篮球题

给定 \(L\)\(T\) 次询问,每次给 \(n,m,k\),求 \(\sum\limits_{i=0}^k\binom{m}{i}\binom{n-m}{k-i}i^L\)

sol:

因为 \(x^L=\sum\limits_{i=0}^x\binom{x}{i}i!\begin{Bmatrix} L \\j \end{Bmatrix}\)

所以:
\(\begin{aligned}\sum\limits_{i=0}^k\binom{m}{i}\binom{n-m}{k-i}i^L&=\sum\limits_{i=0}^k\binom{m}{i}\binom{n-m}{k-i}\sum\limits_{j=0}^i\binom{i}{j}j!\begin{Bmatrix} L \\j \end{Bmatrix}\\&=\sum\limits_{j=0}^k\sum\limits_{i=j}^k\binom{m}{i}\binom{n-m}{k-i}\binom{i}{j}j!\begin{Bmatrix} L \\j \end{Bmatrix}\\&=\sum\limits_{j=0}^kj!\begin{Bmatrix} L \\j \end{Bmatrix}\sum\limits_{i=j}^k\binom{m}{i}\binom{n-m}{k-i}\binom{i}{j}\\&=\sum\limits_{j=0}^kj!\begin{Bmatrix} L \\j \end{Bmatrix}\binom{m}{j}\sum\limits_{i=j}^k\binom{m-j}{i-j}\binom{n-m}{k-i}\\&=\sum\limits_{j=0}^kj!\begin{Bmatrix} L \\j \end{Bmatrix}\binom{m}{j}\sum\limits_{i=0}^{k-j}\binom{m-j}{k-i-j}\binom{n-m}{i}\end{aligned}\)

发现可以使用范德蒙德卷积,化简得:

\[=\sum\limits_{j=0}^kj!\begin{Bmatrix} L \\j \end{Bmatrix}\binom{m}{j}\binom{n-j}{k-j} \]

求出一行第二类斯特林数,即可 \(O(L)\) 计算。

posted @ 2025-01-31 15:56  O_v_O  阅读(30)  评论(0)    收藏  举报