1. 程式人生 > >第二類Stirling數

第二類Stirling數

超過 asc 推公式 原理 三角形 pascal 計數 集合 stiring數

第二類斯特林數

第二類Stirling數:S2(p, k) 1.組合意義:第二類Stirling數計數的是把p個互異元素劃分為k個非空集合的方法數 2.遞推公式: S2(0, 0) = 1 S2(p, 0) = 0 ( p >= 1) 顯然p >= 1時這種方法不存在 S2(p, p) = 1 顯然這時每個元素看為一個集合 S2(p, k) = k * S2(p - 1, k) + S2(p - 1, k - 1) 考慮將1,2,3,...,p劃分為k個非空集合,考慮p ⑴將p單獨劃分為一個集合,此時的方案數等於將1,2,3,...,p -1劃分為k - 1個非空集合的方案樹,及S2(p - 1, k - 1)。
⑵將p和其他元素放一塊,先考慮將1,2,3,..., p - 1劃分為k個非空集合,此時p有k種放法,即k * S2(p - 1, k)。 故 S2(p, k) = k * S2(p - 1, k) + S2(p - 1, k - 1) 3.類pascal三角形:如二項式那樣,可以構造這些Stiring數S2(p, k)的類pascal三角形。
0 1 2 3 4 5 6 ...
0 1
1 0 1
2 0 1 1
3 0 1 3 1
4 0 1 7 6 1
5 0 1 15 25 10 1
6 0 1 31 90 65 15 1
...
4.通項公式: 先把這k個集合看為互異的,則可以通過容斥原理計算將p個元素放入k個互異集合的個數,再除以k!即可(公式不好打。。。) bell數: 1.組合意義:將p個元素劃分為若幹集合的方法數。 2.B(p) = S2(p, 0) + S2(p, 1) + S2(p, 2) + ... + S2(p, p) 集合數顯然不能超過p,故bell數即為Stirling數求和 3.遞推公式:其中C(n, m)表示n元集中m元子集的個數 B(p) = C(p - 1, 0) * B(0) + C(p - 1, 1) * B(1) + ... + C(p - 1, p - 1) * B(p - 1) 把集合{1, 2, 3, 4, ..., p}劃分為若幹集合的方法數,考慮元素p 若令p所在集合有p - k個元素,則剩下的元素為k個,在p - 1個元素中選k個,故此時有C(p - 1, k) * B(k) 個方案,求和即可 第一類Stirling數為把p個元素劃分為k個非空循環排列的方案數。 S1(p, k) = (p - 1) * S1(p - 1, k) + S1(p - 1, k - 1) //沒有代碼

第二類Stirling數