第一类斯特林数

两类斯特林数的其中之一 还是要了解一下的。

一般形如(left[egin{matrix}n\mend{matrix} ight])写作(s(n,k))

组合意义:(s(n,k))表示把n个数分成k组 每组是一个环 求分成的方案数。

环的意思其实是类似于圆排列的东西。

递推式:(s(n+1,k)=s(n,k-1)+s(n,k)cdot n)

有边界 (s(0,0)=1).

性质:(s(n,1)=(n-1)!) 这个看起来挺显然不正了 当然可以相当于圆排列来理解。

(s(n,2)=(n-1)! imessum_{i=1}^{n-1}frac{1}{i})这个利用数学归纳法也很好证。

(sumlimits_{i=0}^ns(n,k)=n!)证明:求n个数的所有排列方案数n! 对于某种排列其中必然有k个置换 而置换就是我们上述所说的环的概念。

对于有k个置换的方案数 其为s(n,k)所以可以得到(sumlimits_{i=1}^ns(n,k)=n!)因为s(n,0)=0所以原式成立。

这里先规定一下上升幂和下降幂。

定义下降幂为(x^{underline{n}} = x(x-1)cdots (x-n+1).)

上升幂为(x^{overline{n}} = x(x+1)cdots (x+n-1).)

有等式 (sum_{i=0}^ns(n,i)x^i=x^{overline{n}})

上面那个还不够重要 再来一个(x^{underline{n}}=sum_{i=0}^{n}left[egin{matrix}n\iend{matrix} ight](-1)^{n-i} x^i)

证明 这个式子可以利用数学归纳法 上面那个也同理。

update 7.25:当年写的过于稚嫩。

其实关于 下降幂和第一类斯特林数的关系 可以利用 自然幂和第二类斯特林数的关系 进行斯特林反演得到。

不过这里直接列出等式进行数学归纳法证明了。详细步骤如下:

(x^{underline{n+1}})

(=x^{underline{n}} imes (x-n))

(=(x-n)sumlimits_{i=0}^{n}(-1)^{n-i}s(n,i)x^i)

(=sumlimits_{i=1}^{n+1}(-1)^{n+1-i}s(n,i-1)x^i+sumlimits_{i=0}^{n}(-1)^{n+1-i}ncdot s(n,i)x^i)

左边是枚举从1开始 然后进行变换。右边是乘以了(-n)进行变换。

因为 s(n,-1)=0,所以左式再做一个变换:

(sumlimits_{i=1}^{n+1}(-1)^{n+1-i}s(n,i-1)x^i=sumlimits_{i=0}^{n+1}(-1)^{n+1-i}s(n,i-1)x^i)

左式把第n+1项给提出来 和右边进行合并。即:

(=(-1)^0s(n,n)x^{n+1}+sumlimits_{i=0}^{n}(-1)^{n+1-i}(s(n,i-1)+ns(n,i))x^i)

接下来做的变换是 由于(s(n,i-1)+ns(n,i)=s(n+1,i),s(n,n)=s(n+1,n+1))

(=s(n+1,n+1)x^{n+1}+sumlimits_{i=0}^{n}(-1)^{n+1-i}s(n+1,i)x^i)

(=sumlimits_{i=0}^{n+1}(-1)^{n+1-i}s(n+1,i)x^i)

证毕.

注意 这里讨论的是无符号第一类斯特林数 (有符号了一般很少使用

这个证明也比较简单 可以发现斯特林数和下降幂有关 也就是说我们求出下降幂的生成函数 其对应的系数的绝对值就是某一行的斯特林数。

很简便吧 我们可以更快的求斯特林数了。

可以考虑分治FFT 这样的话长度是递增的 每次合并两个多项式可以发现log层 每层FFT nlogn 总复杂度nlog^2

为了避免-1系数的一些问题 可以利用上升幂来求斯特林数 上面的公式也有提到 证明就不证了 数归即可。

(f(x)=x^{overline{n}},g(x)=(x+n)^{overline{n}}) 则有(f(x)g(x)=x^{overline{2n}})

(f(x)=sum_{i=0}^{n}a_ix^i,则g(x)=sum_{i=0}^na_i(x+n)^i=sum_{i=0}^n(sum_{j=i}^nC(j,i)n^{j-i}a_j)x^i)

倍增+NTT 可以做到nlogn.

原文地址:https://www.cnblogs.com/chdy/p/12546979.html