特殊計數序列——第一類斯特林(stirling)數
第一類斯特林數
在這裏我因為懶所以還是用\(S(n,m)\)表示第一類斯特林數,但一定要和第二類斯特林數區分開來
遞推式
\(S(n,m)=S(n-1.m-1)+S(n-1,m)*(n-1)\)
其中\(S(0,0)=1,S(i,0)=0(i>0)\)
組合意義
\(n\)個元素組成\(m\)個圓排列的方案數
註意這裏圓排列指的是兩個排列經過旋轉能重合的算一種方案
那麽遞推式就可以這樣理解:對於當前的第\(n\)個元素,單獨成一個圓排列有\(S(n-1,m-1)\)種方案,放在其它的圓排列中有\(S(n-1,m)*(n-1)\)種方案,即放在每個元素的左側(右側等價於另一個元素的左側)
性質
1、\(S(n,1)=(n-1)!\)
圓排列定義
2、\(\sum_{i=1}^{n}S(n,i)=n!\)
我們知道\(1-n\)這\(n\)個元素能形成\(n!\)個個排列,也就是\(n!\)個置換,而將置換寫成循環的形式,這又對應著一個圓排列,於是就建立起了\(n\)排列和第一類斯特林數一一對應的關系
3、\(x^\underline{n}=\sum_{i=0}^nS(n.i)(-1)^{n-i}x^i\),\(x^\overline{n}=\sum_{i=0}^nS(n,i)x^i\)
證明的話考慮數學歸納法,這裏僅給出第一條的證明
\[
\begin{aligned}
x^{\underline{n+1}}=&(x-n)x^{\underline{n}}\=&(x-n)\sum_{i=0}^nS(n,i)(-1)^{n-i}x^i\=&\sum_{i=0}^nS(n,i)(-1)^{n-i}x^{i+1}-n\sum_{i=0}^nS(n,i)(-1)^{n-i}x^i\=&\sum_{i=1}^{n+1}S(n,i-1)(-1)^{n-i+1}x^i+n\sum_{i=0}^nS(n.i)(-1)^{n-i+1}x^i\=&\sum_{i=0}^{n+1}(S(n,i-1)+nS(n.i))(-1)^{n-i+1}x^i\=&\sum_{i=0}^{n+1}S(n+1,i)(-1)^{n-i+1}x^i
\end{aligned}
\]
求解第一類斯特林數
最普通的方法就是\(O(n^2)\)的遞推啦,考慮有沒有更優的方法
我們先丟結論:
\[
S(n,m)=[x^m]\prod_{i=0}^{n-1}(x+i)
\]
計算右式的話可以使用分治+NTT在\(O(nlog^2n)\)的時間內解決,但是這麽做的理由是什麽?
設現在求的是\(S(n+1,m)\)我們記\(f_n(x)=\prod_{i=0}^{n-1}(x+1)\),然後把這個式子寫成類似於遞推的形式:
\[
f_{n+1}(x)=(x+n-1)f_n(x)=xf_n(x)+(n-1)f_n(x)
\]
第一項\(xf_n(x)\)就相當於\(S(n+1,m-1)\)
特殊計數序列——第一類斯特林(stirling)數