日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第一类斯特林数学习记录

發布時間:2024/4/11 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一类斯特林数学习记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

簡單介紹

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

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

有無符號Stirling數分別表現為其升階函數和降階函數的各項系數[類似于二項式系數],形式如下:
xn↓=x(x?1)(x?2)???(x?n+1)=∑k=0nss(n,k)xkx^{n\downarrow}=x(x-1)(x-2)···(x-n+1)=\sum_{k=0}^ns_s(n,k)x^kxn=x(x?1)(x?2)???(x?n+1)=k=0n?ss?(n,k)xk
xn↑=x(x+1)(x+2)???(x+n?1)=∑k=0nsu(n,k)xkx^{n\uparrow}=x(x+1)(x+2)···(x+n-1)=\sum_{k=0}^ns_u(n,k)x^kxn=x(x+1)(x+2)???(x+n?1)=k=0n?su?(n,k)xk

這是一個很煩的式子,但其實呢,有符號和無符號斯特林數之間的關系其實很簡單ss(n,m)=(?1)n+msu(n,m)s_s(n,m)=(-1)^{n+m}s_u(n,m)ss?(n,m)=(?1)n+msu?(n,m)
另外,這個式子的推導可以見我的另一篇博客:第二類斯特林數學習記錄

計算公式

第一類斯特林數有個遞推式很好想
想一下對于su(n,m)s_u(n,m)su?(n,m)
n=0n=0n=0m=0m=0m=0那么顯然就一種方案
n≠0n\neq0n??=0m=0m=0m=0那么肯定分配不了,有0種方案
n≠0n\neq0n??=0m≠0m\neq0m??=0
那么考慮轉移
倘若由su(n?1,m?1)s_u(n-1,m-1)su?(n?1,m?1)轉移而來,則說明新來的一個點自成一個環只有一倍的貢獻
倘若由su(n?1,m)s_u(n-1,m)su?(n?1,m)轉移而來,則說明新來的一個點插入到m個環中的n-1個空格的任何一個位置,那么就有n-1倍的貢獻,遞推式為su(n,m)=su(n?1,m?1)+(n?1)?su(n?1,m)s_u(n,m)=s_u(n-1,m-1)+(n-1)*s_u(n-1,m)su?(n,m)=su?(n?1,m?1)+(n?1)?su?(n?1,m)
有符號的第一類斯特林數的遞推式為ss(n,m)=ss(n?1,m?1)?(n?1)?ss(n?1,m)s_s(n,m)=s_s(n-1,m-1)-(n-1)*s_s(n-1,m)ss?(n,m)=ss?(n?1,m?1)?(n?1)?ss?(n?1,m)
證明是前面那個公式∑k=0ns(n,k)xk=xn↓=xn?1↓?(x?n+1)=∑k=0n?1s(n?1,k)xk+1?n?∑k=0n?1s(n?1,k)xk\sum_{k=0}^ns(n,k)x^k=x^{n\downarrow}=x^{n-1\downarrow}*(x-n+1)=\sum_{k=0}^{n-1}s(n-1,k)x^{k+1}-n*\sum_{k=0}^{n-1}s(n-1,k)x^kk=0n?s(n,k)xk=xn=xn?1?(x?n+1)=k=0n?1?s(n?1,k)xk+1?n?k=0n?1?s(n?1,k)xk
依次把xmx^mxm在左右兩邊的系數提取出來得到
另外有這個式子:(證明在第二類斯特林數的博客里)
xn↓=∑i=0n[ni]sxix^{n\downarrow}=\sum_{i=0}^n\begin{bmatrix}n\\i\end{bmatrix}_sx^ixn=i=0n?[ni?]s?xi
我們可以通過這個公式在Θ(nlog2n)\Theta(nlog^2n)Θ(nlog2n)的復雜度內用分治+FFT求出某個nnn對應的所有su(n,m)s_u(n,m)su?(n,m)

性質

除了一些比較容易想到的性質外,第一類斯特林數還有如下性質
su(n,2)=(n?1)!?∑i=1n?11is_u(n,2)=(n-1)!*\sum_{i=1}^{n-1}\frac{1}{i}su?(n,2)=(n?1)!?i=1n?1?i1?
∑k=0nsu(n,k)=n!\sum_{k=0}^ns_u(n,k)=n!k=0n?su?(n,k)=n!
容易發現,每一個排列都對應著一個輪換(相當于i到ai連一條邊的一副圖),然后枚舉輪換里環的數量就好了

應用

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

總結

以上是生活随笔為你收集整理的第一类斯特林数学习记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。