關於第二類斯特林數的一丟丟東西


關於第二類斯特林數的一丟丟東西

第二類斯特林數

S(n,m)表示有\(n\)個有區別小球,要放進\(m\)個相同盒子里,且每個盒子非空的方案數
考慮一個很容易的遞推:

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

考慮組合意義:
假設前面的\(n-1\)個球丟進了\(m-1\)個組,因為每個組非空,所以這個球只有一種選擇——自己一組
如果前面的球已經分成了\(m\)組,那么,這個球就有\(m\)種放法
所以這個遞推式就是這樣來的


那么,只考慮組合意義可不可以算?
當然是可以的啦
寫式子:

\[S(n,m)=\frac{1}{m!}\sum_{k=0}^{m}(-1)^kC(m,k)(m-k)^n \]

為啥呢?
假設盒子有區別,並且我們允許空盒的存在
顯然的,\(m^n\)就是答案
但是我們當然就是不允許空盒存在啊
所以容斥一下
枚舉我當前有幾個空盒子存在
那么先把這幾個盒子選出來,也就是\(C(m,k)\)
然后剩下\(m-k\)個盒子,\(n\)個球可以隨便放,也就是\((m-k)^n\)
最后退出來,我們盒子是沒有區別的,所以除以一個\(m!\)
這樣就是直接考慮了


那么,我們來想想一個東西怎么算?
\(m^n\)怎么算?
考慮一下組合意義,把\(n\)個有區別的小球分給有區別的\(m\)個盒子里,允許空盒的方案數
挺好呀,第二類斯特林數是啥意思?
\(S(n,m)\)表示\(n\)個球丟進\(m\)個相同盒子里,不允許空盒
好吧,那我枚舉一下有\(i\)個盒子不是空的
再把球丟進盒子不就是\(S(n,i)*i!\)
所以不就推出來啦?

\[m^n=\sum_{i=0}^{m}S(n,i)*i!*C(m,i) \]


回來回來,,
如果要算第二類斯特林數,除了\(n^2\)的遞推有沒有別的方法呢?
顯然是有的
重新看看上面用容斥和組合意義得到的式子

\[S(n,m)=\frac{1}{m!}\sum_{k=0}^{m}(-1)^kC(m,k)(m-k)^n \]

整理一下

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

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

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

這樣的話,是不是想到了多項式的卷積啦?
於是乎,可以用多項式卷積求出\(S(n,X)\)
復雜度\(O(nlogn)\)


免責聲明!

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



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