「学习笔记」斯特林数
第一类斯特林数
\[ {n\brack m}={n-1\brack m-1}+(n-1){n-1 \brack m} \]
把它写成生成函数的形式
\[ f_n(x)=\sum_{i=0}^n {n \brack i} x^i \]
表示第 \(i\) 行第一类斯特林数的生成函数,根据递推式可以得到。
\[ f_{n+1}(x)=f_n(x)(x+n) \\ f_n =\prod_{i=0}^{n-1}(x+i) =x^{\overline n} \]
分治 \(\text{NTT}\) 可以 \(\mathcal O(n\log^2n)\) 求解一行。
转化成下降幂 \(x^{\underline{n}}=\prod_{i=0}^{n-1}(x-i)\),相当于某几项改变一下符号。
\[ x^{\underline{n}} =\sum_{i=0}^{n} (-1)^{n-i}{n \brack i}x^i \]
第二类斯特林数
\[ {n \brace m}={n -1\brace m -1}+m{n - 1\brace m} \]
可以根据二项式反演得到展开式,枚举有多少个盒子是空的即可,这样算是有序的,还要除掉一个 \(m!\) 。
\[ {n \brace m}=\dfrac{1}{m!}\sum_{i=0}^m (-1)^{i} {m \choose i}(m-i)^{n} \]
可以写成卷积形式
\[ {n \brace m}=\dfrac{1}{m!}\sum_{i=0}^m (-1)^{i} {m \choose i}(m-i)^{n} \\ = \sum_{i=0}^m \dfrac{(-1)^{i}}{i!} \frac{(m-i)^{n}}{(m-i)!} \]
直接 \(\text{NTT}\) 一次 \(\mathcal O(n\log n)\) 求一整行。
第二类斯特林数存在将下降幂转为通常幂的对应关系,可以用归纳法证明
\[ x^{n} =\sum_{i=0}^n {n \brace i}x^{\underline{i}} \]
斯特林反演
现在我们有
\[ x^{\underline{n}} =\sum_{i=0}^{n} (-1)^{n-i}{n \brack i}x^i \\ x^{n} =\sum_{i=0}^n {n \brace i}x^{\underline{i}} \]
把 \(x^{i}\) 用下降幂代替
\[ x^{\underline{n}} =\sum_{i=0}^{n} (-1)^{n-i}{n \brack i}\sum_{k=0}^i {i \brace k}x^{\underline{k}} \\ = \sum_{k=0}^{n}x^{\underline{k}} \sum_{i=0}^n (-1)^{n-i}{n \brack i}{i \brace k} \]
显然当 \(k \neq n\) 时后面的式子都是 \(0\) ,当 \(k =n\) 时后面的式子是 \(1\) ,所以有
\[ \sum_{i=0}^n (-1)^{n-i}{n \brack i}{i \brace k}=[n=k] \]
类似的可以得到
\[ \sum_{i=0}^n (-1)^{i-k}{i \brack k}{n \brace i}=[n=k] \]
接下来就可以做反演了,现在有
\[ f(n)=\sum_{i=0}^n {n \brace i} g(i) \\ g(n)=\sum_{k=0}^n[k=n]g(k) \\ g(n) =\sum_{k=0}^n\sum_{i=0}^n (-1)^{n-i}{n \brack i}{i \brace k}g(k) \\ g(n) =\sum_{i=0}^n (-1)^{n-i}{n \brack i}\sum_{k=0}^i{i \brace k}g(k) \\ \\ g(n) = \sum_{i=0}^n (-1)^{n-i}{n \brack i}f(i) \]
只需要求一行第一类斯特林数的值就能做了。
变式,相当于用另外一个反转公式代进去
\[ f(n)=\sum_{i=n}^m {i \brace n} g(i) \\ g(n)=\sum_{i=n}^m(-1)^{i-n}{i \brack n}f(i) \]