首先我們先來了解什么叫做斯特林數。
第一類斯特林數
\(\left[n\atop m \right]\) 或者 \(s(n,m)\) 表示從 \(n\) 個元素中選出 \(m\) 個圓排列的方案數。
什么是圓排列,對於兩個排列,如果循環相同,那么這兩個排列就被視為相同的圓排列,不難發現,\(n\) 個元素的圓排列個數為 \((n-1)!\)。
遞推式
考慮遞推斯特林數。我們考慮第 \(n\) 個元素放在哪個圓排列中,首先是考慮新放一個圓排列,這樣的方案數為 \(s(n-1,m-1)\),考慮把第 \(n\) 個元素放進之前的某個圓排列中,不難發現,把一個元素放入一個 \(4\) 個元素的圓排列中有 \(4\) 種放法,所以我們把第 \(n\) 個元素放在之前的某個圓排列中一共有 \(n-1\) 中放法,由此可以得到這樣一個式子:
這就是第一類斯特林數的遞推式。
遞推邊界:\(s(n,n)=1(n\ge 0),s(n,0)=0(n\ge 1)\)
性質
- \(s(n,1)=(n-1)!\)
由 \(n\) 個元素的圓排列個數為 \((n-1)!\) 可以得到。
- \(s(n,n-1)=\binom{n}{2}\)
讓 \(n\) 個元素組成 \(n-1\) 個圓排列,實際上是從這 \(n\) 個元素里面選出來兩個組成一個大小為 \(2\) 的圓排列,其余元素單獨組成員排列。由此可知,性質成立。
- \(s(n,2)=(n-1)!\sum_{i=1}^{n-1}\frac{1}{i}\)
首先我們考慮設第一個圓排列的元素個數為 \(i\) ,第二個圓排列的元素個數為 \(n-i\),那么根據 \(s(n,1)=(n-1)!\) 我們可以得到 \(\binom{n}{i}(i-1)!(n-i-1)!\),同時我們需要注意到,因為在第一類斯特林數的定義中圓排列相互之間是沒有順序的,但是我們在計數的過程中卻區分了第一個圓排列,第二個圓排列,所以我們算重了 \(2\) 遍,由此我們可以得到:
容易發現 \(\frac{1}{i}\) 與 \(\frac{1}{n-i}\) 的貢獻相同,所以原式得證。
- \(s(n,n-2)=2\times \binom{n}{3}+3\times \binom{n}{4}\)
我們分兩種情況討論:第一種情況,我們把 \(n-3\) 個元素分給 \(n-3\) 個圓排列,其余 \(3\) 個元素自成一個排列,這樣的方案數為 \(2\times \binom{n}{3}\),前者是 \(3\) 元素圓排列個數,后者是從 \(n\) 個元素中選出三個當圓排列。
第二種情況,我們把 \(n-4\) 個元素分給 \(n-4\) 個圓排列,然后剩下兩個圓排列每個圓排列兩個元素,首先 \(\binom{n}{4}\) 選出 \(4\) 個元素,然后再 \(\binom{4}{2}\) 選出兩個元素給第一個圓排列,考慮到我們又給排列定了順序,所以乘上 \(\frac 12\) 。由此可以得到原式。
- \(\sum_{k=0}^ns(n,k)n^k=n!\)
通過下文中的第一類斯特林數的生成函數可以得到這個性質。
符號
第一類斯特林數分為有符號斯特林數和無符號斯特林數,有符號斯特林數通常表示為 \(s_s\),無符號斯特林數通常表示為 \(s_u\),我們有 \(s_s(n,k)=(-1)^{n-k}s_u(n,k)\),在本文中,若無特殊說明,第一類斯特林數通常都指的是無符號斯特林數。
第二類斯特林數
\(\left\{n\atop m\right\}\) 或 \(S(n,m)\) 表示把 \(n\) 個元素划分成 \(m\) 個非空集合的方案數,其中 \(m\) 個集合兩兩相同。
通項公式
我們考慮容斥來計算第二類斯特林數的通項公式,首先不管兩個限制:非空和集合兩兩相同。
我們欽定有 \(i\) 個集合是空的,然后把所有的球隨意的放進剩下的盒子,這里盒子兩兩不同,這樣的方案數應該為 \(\binom{n}{i}(m-i)^n\),然后我們容斥一下,就可以得到非空的方案數,再乘上 \(\frac{1}{m!}\) 就可以得到盒子兩兩相同的方案數。由此,我們可以得到:
遞推式
我們一樣考慮第 \(n\) 個元素怎么放。
第一種情況,把第 \(n\) 個元素放在最后一個盒子里,其余的元素放在其他的盒子里,這樣的方案數為 \(S(n-1,m-1)\)。第二種情況,把第 \(n\) 個元素和其他元素放在一起,注意這里元素兩兩不同而盒子兩兩相同,所以說我們關注的是元素的組合情況,對於每一種方案,我們把第 \(n\) 個元素加入一個新的組合都會產生一種情況,所以方案數為 \(mS(n-1,m)\),由此,我們可以得到 \(S(n,m)=S(n-1,m-1)+mS(n-1,m)\)。
邊界條件:\(S(n,n)=1(n\ge 0),S(n,0)=0(n>1)\)。
性質
- \(S(n,1)=1\)
根據第二類斯特林數的定義不難的出這個結論。
-
\(S(n,2)=2^{n-1}-1\)
兩個集合我們考慮第一個集合放哪些數,這樣的計數結果為 \(\sum_{i=1}^{n-1}\binom ni\),考慮到我們給集合定順序但集合間並沒有順序,所以我們算重了兩邊,最終結果為:
- \(S(n,n-1)=\binom n2\)
不難想到這個東西實際上是從 \(n\) 個元素中選出 \(2\) 個放到一個集合里去,由此可以得到上面這個式子。
- \(\left\{ n\atop m \right\}\equiv 0\bmod n\) 當 \(n\) 是質數且 \(1<m<n\) 時成立。
證明:
當 \(n\) 是質數且 \(1<m<n\) 時,我們可以得到:
我們對上面這個東西建立生成函數:
發現這個東西是由兩個生成函數卷積得到:
發現這個是因為關注到 \(F(x)\) 的系數本身就是一個卷積形式。
發現前面這個東西的封閉形式是 \(e^{-x}\),證明可以通過寫出 \(e^ {-x}\) 在原點處的泰勒展開得到。
而后面那個式子,不難發現 \(i=0\) 時式子值為 \(0\),所以能夠得到:
由此我們可以得到 \(F(x)\) 的封閉形式 \(F(x)=x\)。
注意到 \(F(x)\) 的第 \(m\) 次項為 \(0\) ,而第 \(m\) 項的系數為 \(\left\{ n\atop m \right\}\),由此可知原式成立。
- \(n^k=\sum_{i=0}^kS(k,i)i!\binom ni\)
第三類斯特林數
第三類斯特林數也稱作拉赫數,因為和第一二類斯特林數比較類似,所以有這兩個名字。
拉赫數可以通過上升冪與下降冪之間的轉化來定義,即:
由此我們可以得到 \(L(n,k)\) 的通項公式:
有這個通項公式可以知道第三類斯特林數的遞推公式:
這個定西可以簡單的通過代入來證明。
各種冪之間的轉換
這里先給出上升冪與下降冪的公式:
上升冪與下降冪之間的轉換關系:
二項式系數與下降冪之間的關系:
證明比較顯然,這里不再贅述。
- 上升冪與通常冪之間的轉換:
證明:
- 通常冪與下降冪之間的轉換:
- 上升冪與下降冪之間的轉換:
以上性質可以通過歸納以及上升冪與下降冪之間的轉換來證明,這里不再贅述。
記憶上面的實際只需要注意什么時候添加 \(-1\),給定序列 \(x^{\underline{n}},x^n,x^{\overline{n}}\),從左往右轉換時需要加,從右往左轉換時不需要加,然后注意從上升下降冪轉換到通常冪用第一類斯特林數,從通常冪轉換到上升下降冪用第二類斯特林數。
通過以上式子,我們通過把上升冪用第三類斯特林數直接轉化成下降冪,和先用第一類斯特林數轉化成通常冪,再用第二類斯特林數轉化成下降冪兩種方式,通過比較下降冪系數,我們可以得到第三類斯特林數和兩個斯特林數之間的關系:
生成函數
第一類斯特林數的生成函數就是上升冪。
設 \(B_k(x)=\sum_{i\ge k} S(i,k)x^i\),通過觀察,我們可以知道:
由此我們可以得到:
設 \(F_k(x)=\sum_{i\ge k}S(i,k)\frac{x^i}{i!}\) 則我們可以得到:
斯特林反演
斯特林反演公式:
要證明上面這個式子,我們首先引入一個反轉公式:
比較兩邊系數你就可以得到:
注意這里 \(-1\) 的系數也可以是 \(n-i\),容易發現當 \(n-m=0\) 時這兩個數奇偶性相同,當奇偶性不同的時候這兩個數絕對不相等,也就是說是 \(0\),這並不影響我們這個式子的恆等。
用同樣的方法,我們可以得到另一個反轉公式:
現在我們來證明斯特林反演。
同理,從右往左也可以證明,於是原式得證。
和二項式反演一樣,這個式子也有許多變式。由反轉公式對稱性可以知道,我們交換等號兩邊的斯特林數仍然成立。我們讓和式從 \(n\) 開始枚舉,枚舉的量變成第一個數,式子仍然成立。只需要注意證明的時候不用 \(n-j\) 而是用 \(j-m\)。這里不再贅述其他的幾種斯特林反演。