「學習筆記」歐拉數


定義

記一個排列 \(P\) 的升高為 \(k\) 當且僅當存在 \(k\) 個位置 \(i\) 使得 \(P_i<P_{i+1}\)

那么定義歐拉數 \(\left\langle\begin{matrix}n\\k\end{matrix}\right\rangle\) 表示長度為 \(n\) 且有 \(k\) 個上升的排列的數量。

遞推式

通過討論 \(n\) 在最左邊,最右邊還是中間可以得出轉移:

\[\left\langle\begin{matrix}n\\k\end{matrix}\right\rangle = (k + 1)\left\langle\begin{matrix}n - 1\\k\end{matrix}\right\rangle + (n - k) \left\langle\begin{matrix}n - 1\\k - 1\end{matrix}\right\rangle \]

計算

高妙的組合意義

考慮計算 \(\left\langle\begin{matrix}n\\k\end{matrix}\right\rangle / n!\) 也就是概率,可以發現,對於 \(n\) 個實數的均勻分布 \((a_1, a_2, \cdots, a_n) \in (0, 1)^n\) 產生和排列 \(P\) 相同的偏序關系的概率是 \(\frac 1{n!}\),這樣我們就可以將問題轉化為 \(a_i < a_{i + 1}\)\(k\) 個的概率。

\(a\) 進行差分,定義 \(a_0 = 0,\ b_i = (a_i - a_{i - 1}) \bmod 1\),顯然 \(b_i \in (0, 1)\)

考慮 \(b_i\) 的實際意義,發現當 \(a_{i - 1} < a_i\) 時,\(b_i = a_i - a_{i - 1}\),否則 \(b_i = 1 + a_i - a_{i - 1}\),而 \(a_{i - 1} < a_{i}\)\(k + 1\) 個(\(a_0 = 0\)),所以說 \(\sum b_i = n - k - 1 + a_n \in (n - k - 1, n - k)\)。這樣,問題就變為了給定 \(n\)\((0, 1)\) 之間的實數 \(x_1, x_2, \cdots, x_n\),求滿足 \(\sum x_i \in (n - k - 1, n - k)\) 的概率,可以轉化為 \(\sum x_i < n - k\) 的概率然后差分,設其為 \(F(n - k)\)

使用幾何概型,由於樣本空間的“體積”是 \(1\),所以答案就是滿足條件的區域的“體積”。

\(G(k)\) 表示 \(n\) 個隨機變量沒有限制的情況下的滿足 \(\sum x_i < k\) 的區域的“體積”。

考慮容斥有多少個 \(x_i > 1\),能夠列出式子:

\[F(k) = \sum_{i = 0}^k (-1)^i \binom ni G(k - i) \]

接下來只需要知道如何計算 \(G(k)\) 即可。

\(n\) 個變量做前綴和,設為 \(t_i\),那么只需要滿足 \(t_i < t_{i + 1}\)\(t_n < k\) 的條件即可,由最開始的性質,可以將其對應到排列上得出概率為 \(\frac 1 {n!}\)。又因為 \(G(k)\) 是“體積”,所以 \(G(k) = \frac {k^n}{n!}\),即:

\[F(k) = \frac 1 {n!} \sum_{i=0}^k (-1)^i \binom ni (k - i)^n \]

於是 \(\left\langle\begin{matrix}n\\k\end{matrix}\right\rangle\) 可以做到計算一個 \(\mathcal O(n)\),計算一行 \(\mathcal O(n \log n)\)

直接容斥

廣告

\(F(n, k)\) 表示長度為 \(n\) 的排列,欽定有 \(k\)< 的方案數。

考慮將 < 看成邊,那么排列中將會形成 \(n - k\) 個連通塊,而連通塊內部必須有序,連通塊之間可以任意打亂順序,所以方案數就是 \((n - k)!\begin{Bmatrix} n\\n - k \end{Bmatrix}\)

由二項式反演:

\[\begin{aligned} \left\langle\begin{matrix}n\\k\end{matrix}\right\rangle &= \sum_{i = k}^n (-1)^{i - k} \binom ik (n - i)!\begin{Bmatrix} n\\n - i \end{Bmatrix}\\ &=\sum_{i = k}^n (-1)^{i - k} \binom ik \sum_{j = 0}^{n - i} \binom{n - i} j (-1)^{n - i - j} j^n\\ &=\sum_{j = 0}^{n - k} j^n (-1)^{n - k - j} \sum_{i} \binom ik \binom {n - i}j\\ &= \sum_{j = 0}^{n - k} (-1)^{n - k - j} j^n \binom {n + 1} {k + j + 1} \end{aligned} \]

解釋一下最后一步吧,由於 \(\binom ik = [x^{i - k}] \frac 1{(1 - x)^{k + 1}}, \ \binom {n - i}j = [x^{n - i - j}] \frac 1{(1 - x)^{j + 1}}\),所以 \(\sum_i \binom ik \binom {n - i}j = [x^{n - j - k}] \frac 1 {(1 - x)^{k + j + 2}} = \binom {n + 1}{k + j + 1}\)

同樣可以直接卷積求出一行歐拉數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM