下降冪及斯特林數雜談

Imcaigou發表於2024-06-10

定義

第一類斯特林數

\[c(n,k)=|s(n,k)|=(-1)^{n-k}s(n,k) \]

給出定義:

\[x^{\bar n}=\sum_{k=0}^k c(n,k)x^k \\ x^{\underline n}=\sum_{k=0}^n s(n,k)x^k=\sum_{k=0}^n(-1)^{n-k}c(n,k)x^k \]

通常把 \(c(n,k)\) 稱為無標號第一類斯特林數,\(s(n,k)\) 稱為有標號第一類斯特林數。

會發現容易推出遞推公式:

\[s(n+1,k)=-n s(n,k)+s(n,k-1) \\ c(n+1,k)=nd(n,k)+c(n,k-1) \]

而實際上 \(c(n,k)\) 也存在組合意義,即長度為 \(n\) 的排列中輪換個數為 \(k\) 的排列個數。

這是很容易從遞推公式中推匯出來的。

第二類斯特林數

\(S(n,k)\) 表示 \(n\) 個不同的元素分成 \(k\) 個互不區分的非空集合的方案數,稱之為第二類斯特林數。

至於和斯特林數沾邊的原因,則是因為有:

\[x^n=\sum_{k=0}^nS(n,k)x^{\underline k} \]

這裡從組合的意義考慮可以從下式(其實也等於上式)出發:

\[x^n=\sum_{k=0}^n S(n ,k) {x \choose k} k! \]

考慮 \(x^n\) 的組合意義其實是對於一個長度為 \(n\) 的序列,每個位置上可以取 \(\{1,2,\cdots,x\}\) 時總共的序列數。

考慮序列中只包含 \(k\) 個不同的數,那麼數集有 \({n\choose k}\) 種,而要把這 \(k\) 個互不相同的數填入 \(n\) 個不同的位置上,要求每個數至少出現一次,那麼方案數有 \(k!S(n,k)\) 種。因此透過列舉 \(k\) 得到上式。

可以發現和第一類斯特林數有種對應的感覺,實際上它們之間的聯絡非常緊密。

\(S(n,k)\) 的組合意義可以輕易推匯出它的遞推公式:

\[S(n,k)=kS(n-1,k)+S(n-1,k-1) \]

另外很明顯,從組合意義上來說第一類是包含了第二類,因此有 \(c(n,k)\ge S(n,k)\)

性質

順序與內容無關。

P-1 第二類斯特林數的通項公式

\[S(n,m)= \frac{1}{m!} \sum_{k=1}^{m} (-1)^{m-k} {m\choose k} k^n \]

上式透過容斥得到。考慮組合意義,若我們把 \(n\) 個不同的元素放入 \(m\) 個互相區分的集合中,且允許存在空集,那麼方案數為 \(m^n\),然後為了去掉空集而減去 \(m\) 個互相區分的集合中欽定存在某個空集的情況,這樣容斥,最後得到上述的和式。除以 \(m!\) 就可以得到集合互不區分的情況。

P-2 上升/下降冪對素數 p 取模

\[x^{\bar p}\equiv x^{\underline p}\equiv x^p-x \mod p \]

上式中 \(p\) 為素數。證明非常巧妙。

考慮費馬小定理,對於 \(x\in\{0,1,\cdots,p-1\}\)\(x^p-x\equiv 0\mod p\)

\(x^{\underline p}=x(x-1)(x-2)\cdots(x-p+1),x^{\bar p}=x(x+1)(x+2)\cdots (x+p-1)\),兩者在 \(x\in\{0,1,\cdots,p-1\}\) 時均被 \(p\) 整除。

所以明顯同餘。

P-3 普通冪和下降冪的轉換

\[x^{\underline n}=\sum_{k=0}^n s(n,k)x^k=\sum_{k=0}^n(-1)^{n-k}c(n,k)x^k \\ x^n=\sum_{k=0}^nS(n,k)x^{\underline k} \]

這裡在上文提到過,這裡不過多介紹。

P-4 多項式的正常係數表示和上升/下降冪表示

對於多項式 \(f(x)=f_0+f_1x+f_2x^2+\cdots\),應該有唯一的 \(g\) 使得 \(f(x)=g_0x^{\underline 0}+g_1x^{\underline 1}+g_2x^{\underline 2}\cdots\)。考慮可以從 \(f(x)\) 的最高項開始分別除本次項的 \(x\) 的下降冪,發現會除出唯一的多項式。

而且也可以使用第二類斯特林數來求。

上升冪同理。

這裡的唯一表示可以繼續推廣,記 \(h_x(i)\) 是關於 \(x\) 的恰好 \(i\) 次多項式,則任何多項式 \(f(x)\) 一定可以被唯一表示成:

\[f(x)=\sum_{n\ge 0} a_n\cdot h_x(n) \]

基於除法很容易得到上述性質。

P-5 第一類和第二類斯特林數的聯絡

一件感覺很對的事是第一類斯特林數和第二類斯特林數各自構成的矩陣是互逆的。這是兩類斯特林數定義的自然推論。

\[(S_1S_2)_{nk}=\sum_{j\ge 0} s(n,j)S(j,k)=\delta_{nk} \]

因為 \(\sum_j s(n,j)S(j,k)\) 實際上是求出了 \(x^{\underline n}\) 這一多項式中 \(x^{\underline k}\) 的係數,明顯若 \(n\ne k\) 則為 \(0\),否則為 \(1\)

反過來乘:

\[(S_2S_1)_{nk}=\sum_{j\ge 0}S(n,j)s(j,k)=\delta_{nk} \]

也是一樣,是求 \(x^n\)\(x^k\) 的係數。

P-6 反轉公式

就是 P-5 中的兩個式子。

P-7 下降冪-組合數的常用公式

\[k^{\underline i}{n\choose k}=n^{\underline i}{n-i\choose k-i} \]

應用

求某一行的第一類斯特林數

考慮可以分治或者多項式平移等等多項式手段求得 \(x^{\overline n}\)\(x^{\underline n}\),時間複雜度 \(O(n\log_2 n)\)

EX. 求某一行的一段連續的第一類斯特林數之和

要求模數 \(p\) 較小。

如果 \(n<p\),存在 \(O(p)\) 的做法:

使用下述公式:

\[\sum_{l=0}^m f_l \equiv -\sum_{l=0}^{p-2} \left( f(g^l)\sum_{t=0}^m g^{-lt}\right) \mod p \]

\(f(g^l)\) 的求值可以很快地求出。

\(n\ge p\),則需要用到 P-2,具體參考 QOJ #1285.Stirling Number

求某一行的第二類斯特林數

套用 P-1 通項公式:

\[S(n,m)= \frac{1}{m!} \sum_{k=1}^{m} (-1)^{m-k} {m\choose k} k^n \]

可以使用多項式乘法在 \(O(n\log_2 n)\) 時間複雜度內解決。

求某一列的第一類斯特林數

考慮求無標號的第一類斯特林數,因此考慮組合意義。

考慮環的指數生成函式為 \(f(x)=\sum_{j\ge 0} \frac{(j-1)!}{j!}x^j=\sum_{j\ge 0} \frac{1}{j}x^j=\ln (\frac{1}{1-x})\)

因此要求恰好 \(k\) 個環,生成函式為 \(g(x)=\frac{f^k(x)}{k!}\)

均為簡單多項式操作,時間複雜度 \(O(n\log_2 n)\)

求某一列的第二類斯特林數

考慮非空集合指數生成函式為 \(f(x)=e^x-1\)

同理,要求恰好 \(k\) 個集合,生成函式為 \(g(x)=\frac{f^k(x)}{k!}\)

可以做到 \(O(n\log_2 n)\)

第二類斯特林數對冪次期望的妙用

\[\begin{aligned} E[x^n]=&E\left[\sum_{k=0}^n S(n ,k) {x \choose k} k!\right] \\ =&\sum_{k=0}^n S(n ,k) E\left[{x \choose k}\right] k! \end{aligned} \]

因此考慮 \(E\left[{x\choose k}\right]\) 的組合意義即可。

當然,如果要繼續代數方面的考慮,也可以使用:

\[\begin{aligned} E[x^n]=&E\left[\sum_{k=0}^n S(n,k)x^{\underline k}\right] \\ =& \sum_{k=0}^n S(n,k) E\left[x^{\underline k}\right] \end{aligned} \]

然後另一方面有關於 \(x\) 整數取值的機率生成函式 \(g(x)\),則存在以下結論:

\[E[x^{\underline k}] = g^{(k)}(1) \]

可以在某些時候派上用場。

透過點值快速得到多項式的下降冪冪級數形式

對於一個 \(m\) 次多項式 \(f\),已知 \(f(0),f(1),\cdots f(m)\),求 \(g_i\) 使得 \(f(x)=\sum_{k=0}^m g_k x^{\underline k}\)

根據定義:

\[f(x)=\sum_{k=0}^m g_k x^{\underline k}=\sum_{k=0}^m g_k \frac{x!}{(x-i)!} \\ \frac{f(x)}{x!}=\sum_{k=0}^{m}\frac{g_k}{(x-i)!} \]

這是典型的卷積形式,因此有:

\[\sum_{k=0}^m \frac{f(k)}{k!}x^k\equiv g(x)\mathrm e^x\mod x^{m+1} \]

因此對應點值的指數生成函式 \(F_f(x)\equiv g(x) \mathrm e^x\mod x^{m+1}\)

\(\mathrm e^x\) 移到另一邊可以求出 \(g(x)\),反之也可以快速求點值。

斯特林反演

性質中的 P-5 已經提到了兩類斯特林數的關係是在矩陣上互為逆矩陣,這點是斯特林數定義的自然推論。

而更進一步,有:

\[\begin{aligned} &f(n)=\sum_{i=0}^n S(n,i)g(i)\Leftrightarrow g(n)=\sum_{i=0}^n s(n,i)f(i) \\ &f(n)=\sum_{i=0}^n (-1)^{n-i} c(n,i)g(i)\Leftrightarrow g(n)=\sum_{i=0}^n s(n,i)f(i) & (1) \\ &f(n)=\sum_{i=0}^n c(n,i)g(i)\Leftrightarrow g(n)=\sum_{i=0}^n (-1)^{n-i} s(n,i)f(i) & (2) \end{aligned} \]

這點其實也是自然推論,但為什麼說是更進一步,則是因為他們具有的相似性。

\[\begin{aligned} &\sum_{i=0}^n S(n,i) g(i) \\ =&\sum_{i=0}^n S(n,i)\sum_{j=0}^i s(i,j)f(j) \\ =&\sum_{i=0}^n\sum_{j=0}^i S(n,i)s(i,j) f(j) \\ =&\sum_{j=0}^n f(j) \sum_{i=j}^n S(n,i)s(i,j) \end{aligned} \]

而在 P-5 中已經提到 \(\sum_i S(n,i)s(i,j)=\delta _{nj}\),因此有:

\[\begin{aligned} &\sum_{i=0}^n S(n,i) g(i) \\ =&\sum_{j=0}^n f(j)\delta_{nj} \\ =&f(n) \end{aligned} \]

反之亦然。

\((1)(2)\) 式則是根據證明做的額外形式,但是本質都是一樣的。

而另一方面,和許多反演一樣,還存在另一種形式:

\[f(n)=\sum_{i=0}^{m}S (i,n) g(i) \Leftrightarrow g(n)=\sum_{i=0}^m s(i,n) f(i) \]

其實這個和上式是一樣的,考慮:

\[\begin{aligned} &\sum_{i=n}^m S(m,i)g(i) \\ =& \sum_{i=0}^m S(i,n)\sum_{j=0}^m s(j,i) f(j) \\ =& \sum_{i=0}^m\sum_{j=0}^m s (j,i) S(i,n) f(j) &(3) \\ =& \sum_{i=0}^m\sum_{j=0}^m \delta_{nj} f(j) \\ =& f(n) \end{aligned} \]

而同樣地,可以拆開 \(S(k,n)\) 得到下兩式:

\[\begin{aligned} &f(n)=\sum_{i=0}^m (-1)^{n-i} c(i,n)g(i)\Leftrightarrow g(n)=\sum_{i=0}^m s(i,n)f(i) & (4) \\ &f(n)=\sum_{i=0}^m c(i,n)g(i)\Leftrightarrow g(n)=\sum_{i=0}^m (-1)^{n-i} s(i,n)f(i) & (5) \end{aligned} \]

本質上還是來源於 \((3)\) 的變換,或者說是反轉公式。


舉一個最基礎的例子,存在不同元素之間的二元等價關係 \(R\),我們需要求出 \(f(n)\) 表示有多少種 \(n\) 個不同元素的排列使得兩兩元素均不滿足等價關係 \(R\)

那可以記 \(g(n)\) 表示有多少種 \(n\) 個不同元素的排列,並不做其它限制。

而根據等價關係可以在排列中劃分等價類,因此列舉 \(i\) 表示排列可以劃分成 \(i\) 個等價類,則有:

\[g(n)=\sum_{i=0}^n S(n,i) f(i) \]

然後進行反演,得到:

\[f(n)=\sum_{i=0}^n s(n,i) g(i) \]

就可以進行計算了。