斯特林數 斯特林反演

2022-08-17 15:54:13 字數 4087 閱讀 6393

第一類stirling數\(s(n,m)\),也可記為\(\beginn\\m\end\)。

第一類stirling分為無符號第一類stirling數\(s_u(n,m)\)和帶符號第一類stirling數\(s_s(n,m)\)。

他們分別表現為其公升階函式和降階函式的各項係數,形式如下:

\[x^=x\cdot (x-1)\cdot (x-2)\cdots (x-n+1)=\sum_^ns_s(n,k)\cdot x^k\\

x^=x\cdot (x+1)\cdot (x+2)\cdots(x+n-1)=\sum_^ns_u(n,k)\cdot x^k

\]無符號stirling數更為常用,表示將\(n\)個不同元素構成\(m\)個圓排列的數目。

有無符號stirling之間有關係式\(s_s(n,m)=(-1)^\cdot s_u(n,m)\)。

設元素有編號\(1,2,...,n\),則將\(n\)個元素構成\(m\)個圓有兩種情況:

①把第\(n\)個元素單獨作為乙個圓,用前\(n-1\)個元素構成\(m-1\)個圓,方案數\(\beginn-1\\m-1\end\)。

②用前\(n-1\)個元素構成\(m\)個圓,把第\(n\)個元素插在前\((n-1)\)個元素任意乙個之前,方案數\((n-1)\cdot \beginn-1\\m\end\)。

綜上:\[\beginn\\m\end=\beginn-1\\m-1\end+(n-1)\cdot \beginn-1\\m\end

\]賦初值\(s(0,0)=1\)。

可以從其表示的降階函式歸納證明:

\[\sum_^s_s(n,k)\cdot x^k=x^=x^\cdot(x-(n-1))=\sum_^s_s(n-1,k)\cdot x^-(n-1)\cdot\sum_^s_s(n-1,k)\cdot x^k

\]依次把\(x^m\)的左右兩邊的係數提取出來得:

\[s_s(n,m)=s_s(n-1,m-1)-n\cdot s_s(n-1,m-1)

\]以求無符號第一類stirling數為例:

因為可以表示為公升階函式的各項係數,即:

\[x^=x\cdot (x+1)\cdot (x+2)\cdots(x+n-1)=\sum_^ns_u(n,k)\cdot x^k

\]我們可以用分治的思想,每次處理一半的多項式來ntt,時間複雜度\(o(n\log^2n)\)。

int rev[n];

void ntt(int *a,int x,int k)n\\m\end\) 。

第二類stirling數實際上是集合的乙個拆分,表示將n個不同的元素拆分成m個集合的方案數。

常常用於解決組合數學中幾類放球模型;

描述為:將n個不同的球放入m個無差別的盒子中,要求盒子非空,有幾種方案?

由容斥原理可以得到其通項公式:

\[\beginn\\m\end=\frac 1 \sum_^m(-1)^i\binom mi(m-i)^n

\]設元素有編號\(1,2,...,n\),則將\(n\)個元素構成\(m\)個集合有兩種情況:

①把第\(n\)個元素單獨作為乙個集合,用前\(n-1\)個元素構成\(m-1\)個集合,方案數\(\beginn-1\\m-1\end\)。

②用前\(n-1\)個元素構成\(m\)個集合,把第\(n\)個元素插入任意乙個集合之中,方案數\(m\cdot \beginn-1\\m\end\)。

綜上:\[\beginn\\m\end=\beginn-1\\m-1\end+m\cdot \beginn-1\\m\end

\]賦初值:\(s(0,0)=1\)。

\[\sum_^ns(n,i)s(i,m)=\sum_^ns(n,i)s(i,m)

\]對原式二項式反演可得

\[m^n=\sum_^m\binom mi\beginn\\i\endi!=\sum_^m\beginn\\i\endm^

\]等價於

\[m^n=\sum_^n\binom mi\beginn\\i\endi!=\sum_^n\beginn\\i\endm^

\]可以用於計算其他式子。

比如:\[\begin

&\sum_^ni^k=\sum_^k\begink\\i\endi!\binom\\

&\sum_^ni^k\binom ni=\sum_^k\begink\\i\endi!\binom ni2^

\end

\]例題

【tjoi2018】教科書般的褻瀆

codeforces 932e team work

將通項公式再化一下:

\[\beginn\\m\end=\sum_^m\frac\cdot\frac

\]這是乙個形如\(\sum_^mf(i)*g(m-i)\)的卷積的形式,可以用fft快速計算。

第乙個多項式的第\(i\)項係數為\(\frac \);第二個多項式的第\(i\)項係數為\(\frac \)。

兩式相乘,第\(i\)項的係數即為\(s(n,i)\)。

例題【bzoj5093】圖的價值

【tjoi/heoi2016】求和

\[\displaystyle f(n)=\sum_^n \beginn\\k \endg(k)

\iff g(n)=\sum_^n(-1)^\begin n\\k \endf(k)

\]首先,我們需要考慮如何建立上公升階乘冪與下降階乘冪之間的關係。

結論:\[x^=(-1)^n(-x)^\\

x^=(-1)^n(-x)^

\]證明:

\[\begin

(-1)^n(-x)^&=(-1)^n(-x)(-x+1)\cdots(-x+n-1)\\

&=(-1)^n(-x)(-(x-1))\cdots(-(x-n+1))\\

&=x(x-1)\cdots(x-n+1)\\

&=x^

\end

\]同理可證\(x^=(-1)^n(-x)^\)。

接下來,我們需要證乙個叫反轉公式的東西:

還是先給出結論:

\[\sum_^n(-1)^\beginn\\i\end\begini\\m\end=[m=n]\\

\sum_^n(-1)^\beginn\\i\end\begini\\m\end=[m=n]

\]證明:

\[\begin

n^m&=\sum_^m\beginm\\i\endn^\\

&=\sum_^m\beginm\\i\end(-1)^i(-n)^

\end

\]將\(x^=\sum\limits_^ns_u(n,k)\cdot x^k​\)帶入:

\[\begin

n^m&=\sum_^m\beginm\\i\end(-1)^i\sum_^i\begini\\j\end(-n)^j\\

&=\sum_^mn^j\sum_^m\beginm\\i\end\begini\\j\end(-1)^

\end

\]即:

\[\sum_^m\beginm\\i\end\begini\\j\end(-1)^=[j=m]

\]這個與上面的式2等價,於是我們就證出了其中乙個反轉公式。

\[\begin

m^&=\sum_^n(-1)^\beginn\\i\endm^i\\

&=\sum_^n(-1)^\beginn\\i\end\sum_^i\begini\\j\endm^\\

&=\sum_^nm^\sum_^n(-1)^\beginn\\i\end\begini\\j\end

\end

\]即:

\[\sum_^n(-1)^\beginn\\i\end\begini\\j\end=[j=n]

\]由此證出了式1。

然後,我們就可以證明斯特林反演了:

若滿足\(g(n)=\sum\limits_^n(-1)^\beginn\\j\endf(j)\),則

\[\begin

f(n)&=\sum_^n[j=n]f(j)\\

&=\sum_^n\sum_^n\beginn\\k\end\begink\\j\end(-1)^f(j)\\

&=\sum_^n\beginn\\k\end\sum_^k(-1)^\begink\\j\endf(j)\\

&=\sum_^n\beginn\\k\endg(k)

\end

\]

Square(斯特林反演)

給出乙個 n m 大小的矩形,每個位置可以填上 1,c 中的任意乙個數,要求填好後任意兩行互不等價且任意兩列互不等價,兩行或兩列等價當且僅當對應位置完全相同,求方案數 n,m le 5000 這題是 wearry 出的神題,根本不會做。把題解搬過來了。首先我們有乙個很簡單的方式使得列之間互不等價,對...

知識點簡單總結 斯特林數 斯特林反演

第一類斯特林數 n 元置換分解為 k 個獨立輪換的方案數,即 begin n k end n 1 begin n 1 k end begin n 1 k 1 end.第二類斯特林數 n 個元素分成 k 個非空集合的方案數,即 begin n k end k begin n 1 k end begin...

二項式反演 斯特林數 斯特林反演 學習筆記

從錯排數講起,考慮乙個有n個元素的排列,若乙個排列中所有的元素都不在自己原來的位置上,那麼這樣的排列就稱為原排列的乙個錯排。用容斥來解決這個問題,不難發現錯排數即為g n i 1n 1 i ni n i 考慮二項式定理,1 1 n i 0n 1 i ni 0 上式當n 0時值為1,所以有 i 0n ...