斯特林數學習筆記


定義

第一類斯特林數\(s(n,m)\)表示把\(n\)個不同元素放到\(m\)個相同圓排列里的方案數。

有轉移方程:

\[s(n,m)=s(n-1,m-1)+(n-1)\times s(n-1,m) \]

第二類斯特林數\(S(n,m)\)表示把\(n\)個不同元素放到\(m\)個相同集合里的方案數。

有轉移方程:

\[S(n,m)=S(n-1,m-1)+m\times S(n-1,m) \]

還有一些我自己的定義:

\(x\)\(n\)次下降冪\(x_{(n)}=\prod_{i=0}^{n-1} (x-i)\)

\(x\)\(n\)次上升冪\(x^{(n)}=\prod_{i=0}^{n-1} (x+i)\)

(只是因為我不會LaTeX寫這東西而已)

求法

第一類斯特林數

求一行

有一個式子:

\[\sum_{k=0}^n s(n,k)x^k=\prod_{i=0}^{n-1}(x+i)=x^{(n)} \]

利用數學歸納法來證明:

\[\begin{align*} &x^{(n+1)}\\ =&(x+n)\sum_{i=0}^n s(n,i)x^i\\ =&\sum_{i=0}^{n+1}(s(n,i-1)+n\times s(n,i))x^i\\ =&\sum_{i=0}^{n+1}s(n+1,i)x^i \end{align*} \]

直接暴力分治FFT可以做到\(O(n\log^2 n)\),但還可以更好。

\[F_n(x)=\prod_{i=0}^{n-1}(x+i)=x^{(n)} \]

由於\(F_{2n}(x)=F_n(x)F_n(x+n)\),所以求解\(F_{2n}(x)\)時,可以先求出

\[F_n(x)=\sum_{i=0}^n a_ix^i \]

那么就有

\[\begin{align*} F_n(x+n)&=\sum_{i=0}^n a_i(x+n)^i\\ &=\sum_{i=0}^n a_i\sum_{k=0}^i x^kn^{i-k}{i\choose k}\\ &=\sum_{k=0}^nx^k\frac{1}{k!}\sum_{i=k}^n a_i i!n^{i-k}\frac 1{(i-k)!} \end{align*} \]

后面顯然是個卷積的形式,可以FFT求出來。

兩邊都有之后就可以乘在一起了。復雜度\(O(n\log n)\)

求一列

同樣是生成函數,把\(n\)個球丟進一個圓排列的方案數的質數生成函數是

\[\sum_{n>0} (n-1)!\frac{1}{n!}x^n \]

那么丟進\(m\)個無序圓排列就是

\[\frac 1 {m!}(\sum_{n>0} (n-1)!\frac{1}{n!}x^n)^m \]

然后多項式快速冪。

第二類斯特林數

求一行

由組合意義可得

\[n^m=\sum_{k=0}^m k!{n\choose k} S(m,k) \]

等價於

\[n^m=\sum_{k=0}^n k!{n\choose k} S(m,k) \]

二項式反演,得

\[k!S(m,k)=\sum_{i=0}^k i^m(-1)^{k-i}{k\choose i} \]

(上式直接容斥也可以得到相同結果)

可以發現展開之后就是一個卷積,暴力FFT即可。

求一列

等價於分成\(m\)個集合不變,丟\(n\)個球進去,使得集合非空。

考慮\(n\)個球放入一個集合中的方案數的指數生成函數,就是

\[\sum_{n} [n\ne 0]\frac{1}{n!}x^n \]

也就是

\[e^x-1 \]

那么\(m\)個不同集合,生成函數就是

\[(e^x-1)^m \]

由於集合無序,所以變成

\[\frac 1 {m!}(e^x-1)^m \]

然后可以多項式快速冪。

斯特林反演

這里丟個式子,並不打算證明qwq

\[f_n=\sum_{k=0}^n s(n,k)g_k\Leftrightarrow g_n=\sum_{k=0}^n (-1)^{n-k}S(n,k)f_k \]

斯特林數與上升、下降、普通冪的關系

首先有上升下降冪之間的轉化:

\[x^{(n)}=(-1)^n (-x)_{(n)}\\ x_{(n)}=(-1)^n(-x)^{(n)} \]

較為顯然,不證明。

然后有上面一個式子:

\[x^{(n)}=\sum_{i=0}^n s(n,i)x^i \]

反演得到

\[x^n=\sum_{i=0}^n (-1)^{n-i}S(n,i)x^{(i)} \]

上升和下降轉化一下得到

\[x_{(n)}=\sum_{i=0}^n s(n,i)x^{i}(-1)^{n-i} \]

\(x\)替換為\(-x\)又可以得到

\[x^n=\sum_{i=0}^n S(n,i)x_{(i)} \]

諸如此類……

總結一下,應該都是普通轉上升/下降時用第二類,上升/下降轉普通時用第一類。這也許和斯特林數最基本的定義有關。

其他一些可能有用的東西

\[S(n+1,m+1)=\sum_k{n\choose k}S(k,m) \]

利用組合意義很容易理解。

\[s(n+1,m+1)=\sum_k s(n,k){k\choose m} \]

這個學長不知道怎么組合意義,那我更不會了qwq

update:會了。

考慮后面的式子的意義,就是選出一些元素組成 \(m\) 個圓排列,剩下的隨便搞。

那么就等價於加入一個特殊元素,分成 \(m+1\) 個圓排列,其中沒有特殊元素的圓排列就是需要的 \(m\) 個圓排列,剩下的從特殊元素這里斷開,可以對應到一個排列,而眾所周知一個排列即可對應到任意組合的圓排列。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM