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

2022-03-20 07:13:02 字數 1256 閱讀 1351

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\sum_^(-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_^s(n,i)*i!*c(m,i)

\]回來回來,,

如果要算第二類斯特林數,除了\(n^2\)的遞推有沒有別的方法呢?

顯然是有的

重新看看上面用容斥和組合意義得到的式子

\[s(n,m)=\frac\sum_^(-1)^kc(m,k)(m-k)^n

\]整理一下

\[s(n,m)=\frac\sum_^(-1)^k\frac(m-k)^n

\]\[s(n,m)=\frac\sum_^m!\frac\frac

\]\[s(n,m)=\sum_^\frac\frac

\]這樣的話,是不是想到了多項式的卷積啦?

於是乎,可以用多項式卷積求出\(s(n,x)\)

複雜度\(o(nlogn)\)

第二類斯特林數總結

標籤 第二類斯特林數 最近做題的時候遇到了一些跟第二類斯特林數有關的東西,發現網上的資料不是很多,於是寫一篇部落格來總結一下。第二類斯特林數 s n,m 表示的是把n個不同的小球放在m個相同的盒子裡方案數。upd 為了看得清楚,有時候我們也用 begin n m end 來表示 s n,m 一般有兩...

演算法 第二類斯特林數Stirling

第二類stirling數實際上是集合的乙個拆分,表示將n個不同的元素拆分成m個集合的方案數,記為 或者。第二類stirling數的推導和第一類stirling數類似,可以從定義出發考慮第n 1個元素的情況,假設要把n 1個元素分成m個集合則分析如下 1 如果n個元素構成了m 1個集合,那麼第n 1個...

學習筆記 第二類斯特林數

在組合數學中,有幾個重要的 遞推數 而筆者今天要介紹的,就是其中的第二類斯特林數。第二類斯特林數 即斯特林子集數 beginn k end 也記作 s n,k 它表示將 n 個兩兩不同的元素,劃分為 k 個互不區分的非空子集的方案數。每次加入乙個新元素時,有兩種方案 根據加法原理,即可得出遞推式 b...