斯特林數相關

最近聽說了小道消息:XC要求初一的同學們學好各種東西,其中包括斯特林數。
我笑掉大牙!
聯合省選的D1T2放出了一道裸的斯特林數,幸虧之前推過第二類斯特林數求自然數冪和,所以很幸運地切了。
這次比賽之後dyp和gmh77瘋狂學斯特林數,從此免疫。
驚得我也系統地學一下斯特林數做做樣子。


概念

第一類斯特林數:記爲s(m,n)s(m,n)(也可以用中括號表示),組合意義爲mm個數形成nn個圓排列的方案數。
有個比較系統的定義:s(m,n)=[xn]i=0m1(x+i)s(m,n)=[x^n]\prod_{i=0}^{m-1}(x+i)
性質:
s(m,n)=(m1)s(m1,n)+s(m1,n1)s(m,n)=(m-1)*s(m-1,n)+s(m-1,n-1)
組合意義可證。
k=0ns(n,k)=n!\sum_{k=0}^ns(n,k)=n!
每一種排列,對應着一種輪換。意思記排列爲ppiipip_i連邊,這樣就會形成若干個環。
s(m,n)=[xm]m!(ln(1x))ns(m,n)=[x^m]m!(-\ln(1-x))^n
簡單生成函數即可。

第二類斯特林數:記爲S(m,n)S(m,n)(也可以用大括號表示),組合意義爲mm個數形成nn個集合的方案數。
性質:
S(m,n)=nS(m1,n)+S(m1,n1)S(m,n)=n*S(m-1,n)+S(m-1,n-1)
組合意義可證。
S(m,n)=[xm]m!(ex1)n=1n!k=0n(1)kC(n,k)(nk)mS(m,n)=[x^m]m!(e^x-1)^n=\frac{1}{n!}\sum_{k=0}^{n}(-1)^kC(n,k)(n-k)^m
前面這個簡單生成函數即可,後面那個可以將生成函數展開,或者反演得到(下面有提及)。
k=0nS(n,k)=Bn\sum_{k=0}^nS(n,k)=B_n
BB表示貝爾數。

有符號斯特林數:顧名思義就是有符號的斯特林數。
ss(m,n)=(m1)ss(m1,n)+ss(m1,n1)s_s(m,n)=-(m-1)*s_s(m-1,n)+s_s(m-1,n-1)
Ss(m,n)=nSs(m1,n)+Ss(m1,n1)S_s(m,n)=-n*S_s(m-1,n)+S_s(m-1,n-1)

下標ss意思爲“signed”

打個表出來可以發現
ss(m,n)=(1)mns(m,n)s_s(m,n)=(-1)^{m-n}s(m,n)
Ss(m,n)=(1)mnS(m,n)S_s(m,n)=(-1)^{m-n}S(m,n)


性質

s(m,n)S(m,n)s(m,n)\geq S(m,n)
排列數大於等於集合數。

普通冪、上升冪、下降冪相關:(這個在推式子的時候經常能夠用到!)
xn=k=0nS(n,k)xkx^n=\sum_{k=0}^nS(n,k)x^{\underline k}
xn=k=0nS(n,k)(1)nkxk=k=0nSs(n,k)xkx^n=\sum_{k=0}^nS(n,k)(-1)^{n-k}x^{\overline k}=\sum_{k=0}^nS_s(n,k)x^{\overline k}
xn=k=0ns(n,k)xkx^{\overline n}=\sum_{k=0}^ns(n,k)x^k
xn=k=0ns(n,k)(1)nkxk=k=0nss(n,k)xkx^{\underline n}=\sum_{k=0}^ns(n,k)(-1)^{n-k}x^k=\sum_{k=0}^ns_s(n,k)x^k
具體證明嘛,各種歸納,各種組合意義。


快速求斯特林數

第一類斯特林數:
把定義式搬下來:s(m,n)=[xn]i=0m1(x+i)s(m,n)=[x^n]\prod_{i=0}^{m-1}(x+i)
sm(x)=i=0m1(x+i)s_m(x)=\prod_{i=0}^{m-1}(x+i)
考慮倍增求這個東西。從sm(x)s_m(x)推到s2m(x)s_{2m}(x)時:
s2m(x)=sm(x)sm(x+m)s_{2m}(x)=s_{m}(x)s_m(x+m)
快速求出sm(x+m)s_m(x+m)。設sm(x)=i=0msm,ixis_m(x)=\sum_{i=0}^ms_{m,i}x^i。之前已經求出sm,is_{m,i}
sm(x+m)=i=0msm,i(x+m)is_m(x+m)=\sum_{i=0}^ms_{m,i}(x+m)^i
二項式展開一下,推一波式子,就可以發現一個卷積。
於是計算sm(x+m)s_m(x+m)的時間複雜度是O(mlgm)O(m\lg m)的。
由於mm是兩倍兩倍地擴大,所以總的時間複雜度也是O(mlgm)O(m \lg m)

第二類斯特林數:
把上面那個普通冪轉下降冪的式子搬下來,簡單反演一下,得到:
n!S(m,n)=k=0n(1)kC(n,k)(nk)mn!S(m,n)=\sum_{k=0}^{n}(-1)^kC(n,k)(n-k)^m
把後面的那個組合數拆開,可以發現這是個很明顯的卷積形式。
時間複雜度O(nlgn)O(n \lg n)


斯特林反演

f(n)=k=0nS(n,k)g(k)g(n)=k=0n(1)nks(n,k)f(k)f(n)=\sum_{k=0}^n S(n,k)g(k) \Longleftrightarrow g(n)=\sum_{k=0}^n(-1)^{n-k}s(n,k)f(k)
有個叫反轉公式的東西:
ks(n,k)S(k,m)(1)nk=[m=n]\sum_ks(n,k)S(k,m)(-1)^{n-k}=[m=n]
kS(n,k)s(k,m)(1)nk=[m=n]\sum_kS(n,k)s(k,m)(-1)^{n-k}=[m=n]
關於這個怎麼證明……最嚴謹的方法應該是歸納。

寫公式太麻煩,直接口胡一下證明的思路(挺好推的)。
比如上面這條式子:ks(n,k)S(k,m)(1)nk=[m=n]\sum_ks(n,k)S(k,m)(-1)^{n-k}=[m=n]
先將s(n,k)s(n,k)用遞推式拆開,展開一下。
再將S(k,m)S(k,m)用遞推式拆開,展開一下。
照着這麼做就可以很自然地歸納證明出來了。
另一條式子也可以類似地推出來。
看了一些博客,有些博客裏面寫了一種不是很嚴謹的證明方法:
具體就是取一個普通冪nmn^m,將它先用第二類斯特林數表示成下降冪多項式,然後將這個下降冪用第一類斯特林數表示成普通冪。
推推式子就會得到這樣:nm=j=0mnjk=jmS(m,k)s(k,j)(1)jkn^m=\sum_{j=0}^mn^j\sum_{k=j}^mS(m,k)s(k,j)(-1)^{j-k}
然後誰告訴我,這怎麼就能直接得到k=jmS(m,k)s(k,j)(1)jk=[j=m]\sum_{k=j}^mS(m,k)s(k,j)(-1)^{j-k}=[j=m]了???
這種方法只能解釋假設反轉公式成立,這個東西也成立;但不能反過來推啊……

如果設矩陣Fi,j=S(i,j)F_{i,j}=S(i,j)Gi,j=(1)ijs(i,j)G_{i,j}=(-1)^{i-j}s(i,j)
(或者Fi,j=s(i,j)F_{i,j}=s(i,j)Gi,j=(1)ijS(i,j)G_{i,j}=(-1)^{i-j}S(i,j)
不難發現FG=EF*G=E,即FFGG互逆。

拉赫數(第三類斯特林數?)

似乎只有維基上略有提及,所以不夠詳細請見諒。
有錯誤請指出。

無符號拉赫數:
上升冪和下降冪定義:
xn=k=0nL(n,k)xnx^{\overline n}=\sum_{k=0}^nL(n,k)x^{\underline n}
xn=k=0n(1)nkL(n,k)xnx^{\underline n}=\sum_{k=0}^{n}(-1)^{n-k}L(n,k)x^{\overline n}
遞推式定義:L(m,n)=L(m1,n1)+(n1+m)L(m,n1)L(m,n)=L(m-1,n-1)+(n-1+m)L(m,n-1)
矩陣乘法定義:L(m,n)=ks(m,k)S(k,n)L(m,n)=\sum_k s(m,k)S(k,n)

有符號拉赫數:
上升冪和下降冪定義:
xn=(1)nk=0nLs(n,k)xnx^{\overline n}=(-1)^n\sum_{k=0}^nL_s(n,k)x^{\underline n}
xn=(1)kk=0nLs(n,k)xnx^{\underline n}=(-1)^k\sum_{k=0}^{n}L_s(n,k)x^{\overline n}
Ls(m,n)=(1)mL(m,n)L_s(m,n)=(-1)^mL(m,n)

性質:
L(m,n)=C(m1,n1)m!n!L(m,n)=C(m-1,n-1)\frac{m!}{n!}
歸納可證:
kLs(m,k)Ls(k,n)=k(1)mkL(m,k)L(k,n)=[m=n]\sum_kL_s(m,k)L_s(k,n)=\sum_k(-1)^{m-k}L(m,k)L(k,n)=[m=n]
L(n,k)=n![xn]1k!(x1x)kL(n,k)=n![x^n]\frac{1}{k!}(\frac{x}{1-x})^k


參考資料

https://www.cnblogs.com/Wuweizheng/p/8638858.html
https://www.cnblogs.com/hchhch233/p/10016543.html
https://www.cnblogs.com/owenyu/p/6724661.html
https://www.cnblogs.com/gzy-cjoier/p/8426987.html
百度百科
維基百科

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章