反演原理及二項式反演


反演魔術:反演原理及二項式反演

 g_n = \sum_{i=0}^n a_{ni}f_i

反演過程就是利用 g_0, g_1, \cdots, g_n來表示出 f_n

 f_n = \sum_{i = 0}^n b_{ni}g_i

這樣的話,我們只需要知道\{g_n\}的求解方法和\{g_n\}\{f_n\}的關系,就可以快速求解\{f_n\}

本質上來說,反演其實是一個解線性方程組的過程,但是你觀察后發現,這個矩陣實際上是一個三角矩陣,那必然存在着快捷的方法。對於使得這兩個反演公式成立的這些系數應該滿足什么條件呢?我們現在就來探討一番!

我們首先討論一下在什么情況下能夠比較容易建立反演公式,之后介紹二項式反演以及它的兩個應用,其中一個是錯位排列問題

反演原理

首先我來介紹一個 \delta_{ij}函數,這個函數被稱為 Kronecker's delta,它是這樣定義的

 \delta_{ij}
=
\left \{
\begin{eqnarray*}
0 ~ ~ ~ ,i \neq j\\
1 ~ ~ ~ ,i = j
\end{eqnarray*}
\right .

這個函數的定義非常簡單,我介紹它完全是為了后面敘述的方便

好,我們現在來考慮一下上面的式子,假設對於任意 0 \leq n \leq N都滿足

 g_n = \sum_{i=0}^n a_{ni}f_i

那么我們來考慮一下下面這個式子成立應該要滿足什么條件

 \begin{equation} \label{inversion-2} \sum_{i = 0}^n b_{ni}g_i = f_n \end{equation}                           $(1)$

我們可以直接將 g_i代入上式來計算左邊的求和

 \begin{eqnarray*}
& & \sum_{i=0}^n b_{ni}g_i \\
&=& \sum_{i=0}^n b_{ni} \sum_{j=0}^i a_{ij}f_j \\
&=& \sum_{i=0}^n f_i \sum_{j=i}^n b_{nj}a_{ji}
\end{eqnarray*}

對於最后一步,實際上是變換了求和順序,為了更容易理解,我按照矩陣的形式寫出來

那么,前一個求和是先對行進行,再將各行加起來,后一個就是先對列進行,再將各列加起來

這樣的話,等式$1$成立的充要條件就是

 \sum_{j=i}^n b_{nj}a_{ji} = \delta_{ni}

同樣地,我們反過來也能知道,整個反演公式要成立還需要滿足一個必要條件

 \sum_{j=i}^n a_{nj}b_{ji} = \delta_{ni}

也就是,如果你發現某個數列滿足上面這個條件,那么你就可以直接建立起反演公式!

事實上,在快速傅立葉變換和逆變換你也可以認為是一個反演的過程,具體可以看這一步的推導,你會發現它和這個很相似。此外,第一類 Stirling 數和第二類 Stirling 數也滿足這個條件,不過我暫時沒有發現它們建立起的反演公式有什么應用。我下面來介紹一個比較有用的反演公式

二項式反演

下面就來介紹二項式反演(binomial inversion),這可以表示成

 f_n = \sum_{i=0}^n (-1)^i {n \choose i} g_i \Leftrightarrow g_n = \sum_{i=0}^n (-1)^i {n \choose i} f_i

你會發現這個式子具有極強的對稱性!另外一個更加常見的形式是

 f_n = \sum_{i=0}^n {n \choose i} g_i \Leftrightarrow g_n = \sum_{i=0}^n (-1)^{n-i} {n \choose i} f_i

現在我們先來給出這個公式的一個容斥解釋,之后從代數角度證明一下這個式子,最后介紹兩個它的應用

 

代數證明

 

根據文章開頭反演原理部分的討論,加上這個公式的對稱性,我們只需要證明

 

 \sum_{i=j}^n (-1)^{i+j} {n \choose i}{i \choose j} = \delta(i, j)

 

這里 a_{ni} = (-1)^i { n \choose i }, b_{ij} = (-1)^j { i \choose j }

 

好,現在我們來證明它,首先需要一個二項式系數的知識

 

如果運用組合推理就相當於是,你有一個 n元素集 U,現在對 (A, B)進行計數,其中 B \subseteq A \subseteq U且 |A| = i, |B| = j,首先對 A計數,U的 i子集有 n \choose i,然后對 B計數,A的 j子集有 i \choose j

 

接下來換一種方式,先對 B進行計數,B顯然是 U的子集,有 n \choose j種方案,由於要求 B \subseteq AB中 j個元素必須在 A中,A還剩下 i - j個不確定的元素,U還有 n - j個可以用的元素,一共有 {n - j} \choose {i - j}種,於是就得到上面的恆等式,那么可以得到

 

這樣最后就可以得到

 

於是,反演公式就建立了!

 

容斥原理證明

實際上,二項式反演是容斥原理(inclusion-exclusion principle)的一種最常見的特例子,讓我們先來回憶一下容斥原理

設集合 S中具有性質 P_1, P_2, \cdots, P_n的對象的集合為 A_1, A_2, \cdots, A_n,那么不具有這些性質的對象的集合大小為

那么,考慮這樣一種特殊的情況,若對於集族 \mathcal{U} = \{A_1, A_2, \cdots, A_n\}中任意 i個集合的並集的大小都是 g_i,我們不妨設

 g_i = |A_1 \cap A_2 \cap \cdots \cap A_n|

明顯的,在 \mathcal{U}中一共有 n \choose i個這樣的不同交集。另外,我們定義 g_0 = |S|

這樣一來,上面的容斥結果就是

 \begin{eqnarray*}
& &|\overline{A_1} \cap \overline{A_2} \cap \cdots \cap \overline{A_n}| \\
&=& g_0 - {n \choose 1} g_1 + {n \choose 2} g_2 + \cdots + (-1)^n {n \choose n} g_n
\end{eqnarray*}

由於 \mathcal{U}中任意 i個集合的交集大小都是 g_i,上面的公式左邊的項也只和集合個數有關,我們可以設

 f_i = |\overline{A_1} \cap \overline{A_2} \cap \cdots \cap \overline{A_i}|

同樣令 f_0 = |S|,那么同樣使用容斥原理

這也正是 g_n的表達式,因此,整個證明就完成了!

應用

錯位排列問題

求有多少個長度為 n的排列 a_1, a_2, \cdots, a_n,滿足對於所有的 1 \leq i \leq n,使得 i \neq a_i

這個問題有很多解法,我們來介紹一個有意思的解法:

為了敘述方便,我們稱位置 i不變的當且僅當 a_i = i

首先我們知道,如果不考慮 i \neq a_i這個條件,問題是很簡單的,長度為 n的排列一共有 n! 種。並且這些排列是由恰好有 k(k = 0, 1, 2, \cdots, n)個位置是不變的排列組成,也就是,如果我們設 f_i恰好有 i個位置是不變的排列的個數,那么可以得到

 n! = \sum_{i=0}^n {n \choose i} f_i

是否覺得和剛剛的反演公式很相似?這里的 g_i就是  i! ,那么,使用二項式反演可以得到


\begin{eqnarray*}
f_n &=& \sum_{i=0}^n (-1)^{n+i} {n \choose i} i! \\
&=& \sum_{i=0}^n (-1)^{n+i} \frac{n!}{(n-i)!} \\
&=& n!\sum_{i=0}^n \frac{(-1)^{i}}{i!} \\
\end{eqnarray*}

這也就是我們熟悉的錯位排列

球染色問題

有 n個球排成一行,你有 k種顏色,要求給每一個球染色,相鄰兩個球顏色不可以相同,並且每種顏色至少使用一次

這是經常在高中數學組合那個部分見到的一個問題,只不過高中題目中數都很小

還是和剛剛的想法一樣,如果沒有每種顏色至少一次這個條件,那么問題很簡單,答案是 k(k-1)^{n-1}。這些方案是由恰好使用了 i(i=0, 1, 2, \cdots, k)種顏色的方案組成的,那么設 f_i恰好使用了 i種顏色的方案數,可以得到

 k(k-1)^{n-1} = \sum_{i=0}^k {k \choose i} f_i

經過反演得到

 f_k = \sum_{i=2}^k (-1)^{k+i} {k \choose i} i(i-1)^{n-1}

 

例題

【題解】Luogu P5400 [CTS2019]隨機立方體


免責聲明!

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



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