兩類斯特林數的其中之一 還是要了解一下的。
一般形如\(\left[\begin{matrix}n\\m\end{matrix}\right]\)寫作\(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)!\times\sum_{i=1}^{n-1}\frac{1}{i}\)這個利用數學歸納法也很好證。
\(\sum\limits_{i=0}^ns(n,k)=n!\)證明:求n個數的所有排列方案數n! 對於某種排列其中必然有k個置換 而置換就是我們上述所說的環的概念。
對於有k個置換的方案數 其為s(n,k)所以可以得到\(\sum\limits_{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[\begin{matrix}n\\i\end{matrix}\right](-1)^{n-i} x^i\)
證明 這個式子可以利用數學歸納法 上面那個也同理。
update 7.25:當年寫的過於稚嫩。
其實關於 下降冪和第一類斯特林數的關系 可以利用 自然冪和第二類斯特林數的關系 進行斯特林反演得到。
不過這里直接列出等式進行數學歸納法證明了。詳細步驟如下:
\(x^{\underline{n+1}}\)
\(=x^{\underline{n}}\times (x-n)\)
\(=(x-n)\sum\limits_{i=0}^{n}(-1)^{n-i}s(n,i)x^i\)
\(=\sum\limits_{i=1}^{n+1}(-1)^{n+1-i}s(n,i-1)x^i+\sum\limits_{i=0}^{n}(-1)^{n+1-i}n\cdot s(n,i)x^i\)
左邊是枚舉從1開始 然后進行變換。右邊是乘以了(-n)進行變換。
因為 s(n,-1)=0,所以左式再做一個變換:
\(\sum\limits_{i=1}^{n+1}(-1)^{n+1-i}s(n,i-1)x^i=\sum\limits_{i=0}^{n+1}(-1)^{n+1-i}s(n,i-1)x^i\)
左式把第n+1項給提出來 和右邊進行合並。即:
\(=(-1)^0s(n,n)x^{n+1}+\sum\limits_{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}+\sum\limits_{i=0}^{n}(-1)^{n+1-i}s(n+1,i)x^i\)
\(=\sum\limits_{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.