斯特林数

CV自skyh博客

第一类斯特林数

定义

(S_1(n,m))(n)个数形成(m)个环的方案数

元素元素之间区分,环与环直接不区分

递推公式

(egin{bmatrix}n\mend{bmatrix}=egin{bmatrix}n-1\m-1end{bmatrix}+(n-1)*egin{bmatrix}n-1\mend{bmatrix})

考虑第(n)个数单独成环还是放进之前的环里就可以了

性质

  1. 第一类斯特林数第(n)行的和等于(n!)

(sum limits_{i=0}^negin{bmatrix}n\iend{bmatrix}=n!)

考虑(n)个元素的排列(p),建立(i ightarrow p_i)的置换,发现会形成若干个环,这和第(n)行的第一类斯特林数的方案是一一对应的




  1. 可以用普通幂表示上升幂

(x^{overline n}=sum limits_{i=0}^n egin{bmatrix}n\iend{bmatrix}x^i)

证明可以通过数学归纳法:

(n=0)时原式显然成立

设原式在(n)时成立

则在(n+1)时,有

[x^{overline {n+1}}=x^{overline n}*(x+n) ]

[x^{overline {n+1}}=sum limits_{i=0}^n egin{bmatrix}n\iend{bmatrix}x^i*(x+n) ]

后面的式子将((x+n))乘出来,发现正好符合第一类斯特林数转移

[x^{overline {n+1}}=sum limits_{i=0}^{n+1} egin{bmatrix}n+1\iend{bmatrix}x^i ]




  1. 用普通幂表示下降幂可以用类似的方法求出,这里给出一种更妙的求法

首先对于普通幂 显然有(x^n=(-x)^n*(-1)^n)

对于下降幂与上升幂同样有

(x^{overline n}=(-x)^{underline n}*(-1)^n)

(x^{underline n}=(-x)^{overline n}*(-1)^n)

将该式代入(x^{overline n}=sum limits_{i=0}^n egin{bmatrix}n\iend{bmatrix}x^i)

整理得到(x^{underline n}=sum limits_{i=0}^n egin{bmatrix}n\iend{bmatrix}(-1)^{n-i}x^i)




同一行第一类斯特林数

套用第二个性质可以分治(FFT)做到(nlog^2)




第二类斯特林数

定义

(S_2(n,m))表示(n)个数形成(m)个集合的方案数

其中元素与元素之间区分,集合与集合不区分

递推公式

(egin{Bmatrix}n\mend{Bmatrix}=egin{Bmatrix}n-1\m-1end{Bmatrix}+m*egin{Bmatrix}n-1\mend{Bmatrix})

还是按照实际含义去考虑第(n)个数单独作为一个集合还是放进之前的集合

性质

1.下降幂表示普通幂

(x^n=sum limits_{i=0}^n egin{Bmatrix}n\iend{Bmatrix}x^{underline i})

证明(1):类似第一类斯特林数,数学归纳法

证明(2):(x^n=sum_{i=0}^negin{Bmatrix}n\iend{Bmatrix}inom{x}{i} i!)

考虑(x^n)的实际含义,有(n)个元素,每次有(x)个集合可选择

所以即(x)个集合中选出(i)个集合然后将(n)个元素放入这(i)个集合,又因为第二类斯特林数中的集合是无差别的,所以要乘上(i!)

整理可得上面式子

2.同样代入负数形式,可以得到上升幂表示普通幂

(x^n=sum limits_{i=0}^n egin{Bmatrix}n\iend{Bmatrix}(-1)^{n-i}x^{overline i})

求法

求单点第二类斯特林数:

设将(n)个元素放入至少(x)个集合的方案数为(g_x)(也就是允许空集

(n)个元素放入恰好(x)个集合的方案数为(f_x)(也就是不允许空集

(g_i = i^n)

(g_i = sum_{j=1}^{i} f_j inom{i}{j})

根据二项式反演得到

(f_i = sum_{j=1}^{i} g_j inom{i}{j} (-1)^{i-j})

(f_i = sum_{j=1}^{i} j^n inom{i}{j} (-1)^{i-j})

然后就可以(O(n))求单点第二类斯特林数的值了




设有(n)个不同的元素,(m)个不同集合

(g_x)为恰好x个集合为空的方案数

(f_x)为至少x个集合为空的方案数

(f_x=inom{m}{x}(m-x)^n)

(f_x=sum limits_{i=x}^{m}inom{i}{x}g_i)

二项式反演得到:

(g_x=sum limits_{i=x}^{m}(-1)^{i-x}inom{i}{x}f_i)

代入(x=0),得到

(egin{Bmatrix}n\mend{Bmatrix}=frac{1}{m!}*sum limits_{i=0}^{m}(-1)^iinom{m}{i}(m-i)^n)

发现是个卷积式,所以求一行第二类斯特林数可以(nlog_n)

如初见 与初见
原文地址:https://www.cnblogs.com/HISKrrr/p/14607790.html