兩類斯特林數 組合數學

2022-04-30 10:00:11 字數 1457 閱讀 9307

斯特林數是組合數學中的乙個重要內容,有許多有用的性質.它由十八世紀的蘇格蘭數學家james stirling首先發現並說明了它們的重要性.

斯特林數主要處理的是把n個不同的元素分成k個集合或環的個數問題.現在我們說的斯特林數可以指兩類數,分為第一類斯特林數和第二類斯特林數,其中第一類斯特林數還分成有符號和無符號兩種.

將 n 個不同的元素全部放入 m 個環中,不允許有空環出現,求方案數.

定義:

\[s(i,j)

\]為 i 個人分成 j 組做環排列的方法數目.

對於每乙個s( i , j )我們考慮第 i 個物品,有兩種情況:

1. i 可以單獨構成乙個非空迴圈排列,這樣前 i-1 種物品構成 j-1 個非空迴圈排列,方法數為s(i-1,j-1);

2.也可以前 i-1 種物品構成 j 個非空迴圈排列,而第 i 個物品插入第 i 個物品的左邊,這有( i-1)*s( i-1 , j )種方法;

於是我們可以得到s(i,j)的遞推公式:

\[s(i,j)=(i-1)*s(i-1,j)+s( i-1 , j-1 ) ,1<=i<=j-1

\]邊界條件:$$s(i,0)=0 ,p>=1$$

$$ s(i,i)=1 ,p>=0$$

時間複雜度為 o(n^2).

將 n 個不同的元素全部放入 m 個集合中,不允許有空集出現,求方案數.

定義:$$s(n,m)$$

為把n個元素劃分成m個無序集合的方案數.

根據這個定義我們不難寫出遞推式

設狀態s(i,j),對於第i個元素我們則有兩種情況:

1.若單獨乙個集合,則方案數等價於s(i-1,j-1).

2.若不是單獨乙個集合,則他可以在之前任意j個集合裡,方案為j x s(i-1,j)

於是可以得到遞推公式:

\[s(i,j)=s(i-1,j-1)+s(i-1,j)*j

\]邊界條件:$$s(p,p)=1,(p>=0)$$

$$s(p,0)=0,(p>0)$$

時間複雜度為 o(n^2).

假設集合沒有非空的限制,則答案顯然是m^n

之後我們可以利用容斥原理,列舉至少有幾個集合是空的,在套上容斥係數我們有(注意集合是無序的,所以最後要消序)

\[s(n,m)=\frac*\sum^_ (-1)^k*c_m^k)*(m-k)^n)

\]直接根據這個式子暴力求解某一行的斯特林數的複雜度是o(n^2)的

這是乙個卷積形式,利用fft我們可以將時間複雜度優化成o(nlogn).

然後這裡有一道 二類斯特林的裸題 .給出第二類斯特林數的遞推部分**,add 函式為高精度加法.(我不想打高精度,貼了別人的哈..)

void add(int u,int v)

}

組合數學 斯特林數

斯特林數包括第一類斯特林數和第二類斯特林數 第一類斯特林數 定義 n個不同的元素構成m個圓排列 迴圈排列 的方法數 分成兩種情況 1 前n 1個元素已經構成了m個圓排列,只要將第n個元素插入1 n 1個元素中任意乙個元素的左邊即可 n 1 s n 1,m 2 前n 1個元素已經構成了m 1個圓排列,...

組合數學之斯特林數 貝爾數

斯特林數經常和組合數學中的上公升下降問題聯絡到一起。第一類斯特林數 將n個不同的元素構成m個不同的環的方案數目 兩環不想等當且僅當任一不能通過旋轉得到另一環 dp i j 表示i個元素構成j個環 有兩種情況可以得到dp i j 1.前i 1個元素構成了j 1個不同的環,第i個元素單獨成環 共有 dp...

模板 數學 組合數學 第二類斯特林數

記 s n,m 表示,把 n 個不同的小球,放在 m 個相同的盒子裡,且每個盒子至少有 1 個球,的方法數。記 s n,m 表示,把 n 個不同的元素,劃分為 m 個非空集合的方法數。顯然 s 0,0 1 而 s n,0 當 n geq 1 時顯然是不合法的方案,s 0,m 當 m geq 1 時因...