1. 程式人生 > >第一類斯特林數學習記錄

第一類斯特林數學習記錄

最近做題有時會碰到斯特林數(Stirling數),就覺得好好的學習一番,於是呢,寫下這篇部落格,來記錄一些知識

簡單介紹

第一類斯特林數表示表示將 n 個不同元素構成m個圓排列的數目。——百度百科

第一類斯特林數,可以表示為 s(n,m) ,注意這裡是小寫
,要與大寫的第二類斯特林數區分開來,定義上面也講到了,但是呢,其實那句話最好改成第一類斯特林數的絕對值,因為第一類斯特林數是分正負的,分為無符號斯特林數 su(n,m) 和有符號斯特林數 ss(n,m)

有無符號Stirling數分別表現為其升階函式和降階函式的各項係數[類似於二項式係數],形式如下:

xn=x(x1)(x2)(xn1)=k=0nss(n,k)xk
xn=x(x+1)(x+2)(x+n1)=k=0nsu(n,k)xk

這是一個很煩的式子,但其實呢,有符號和無符號斯特林數之間的關係其實很簡單 ss(n,m)=(1)n+msu(n,m)

計算公式

第一類斯特林數有個遞推式很好想
想一下對於 su(n,m)
n=0 m=0 那麼顯然就一種方案
n0 m=0 那麼肯定分配不了,有0種方案
n0 m

0
那麼考慮轉移
倘若由 su(n1,m1) 轉移而來,則說明新來的一個點自成一個環只有一倍的貢獻
倘若由 su(n1,m) 轉移而來,則說明新來的一個點插入到m個環中的n-1個空格的任何一個位置,那麼就有n-1倍的貢獻,遞推式為 su(n,m)=su(n1,m1)+(n1)su(n1,m)
有符號的第一類斯特林數的遞推式為 ss(n,m)=ss(n1,m1)(n1)ss(n1,m)
證明是前面那個公式

k=0ns(n,k)xk=xn=xn1(xn+1)=k=0n1s(n1,k)xk+1nk=0n1s(n1,k)xk
依次把 xm 在左右兩邊的係數提取出來得到

性質

除了一些比較容易想到的性質外,第一類斯特林數還有如下性質

su(n,2)=(n1)!i=1n11i
k=0nsu(n,k)=n!

應用

第一類斯特林數是一種在組合方面比較有用的數,很多問題都可通過它來解決,熟悉它的性質,才能熟練的運用到公式推導的過程中去