我們都知道二項式的生成函式:
\[ f(x) = (1+x)^n = \sum_^\dbinomx^k
\]當我們帶入\(x=-1\)時,會得到這樣的式子:
\[ f(-1) = (1 - 1)^n = \sum_^\dbinom(-1)^k
\]當\(n=0\)時,左邊的部分沒有意義。但右邊算出來恰好為\(\binom=1\)。因此我們得到了乙個恒等式:
\[ \sum_^\dbinom(-1)^ = [n = 0] = \epsilon(n + 1)
\]假設我們知道\(f(n) = \sum_^\binomg(k)\),那麼我們如何用\(f(k)\)來表示\(g(n)\)呢?
我們首先拼湊出乙個二項式的形式:
\[ g(n) = \sum_^[n = m]g(m) = \sum_^\epsilon(n - m + 1)g(m)
\]然後代入上面那個恒等式:
\[ g(n) = \sum_^\sum_^(-1)^\dbinom\dbinomg(m)
\]根據組合的意義,不難得到:
\[ g(n) = \sum_^\sum_^(-1)^\dbinom\dbinomg(m)
\]接下來需要交換求和號。為了方便理解,我這裡令\(s_ = (-1)^\dbinom\dbinomg(m)\),那麼原式就變成了\(\sum_^\sum_^s_\)。
\[\begin
s_ & s_ & \cdots & s_ & s_\\
s_ & s_ & \cdots & s_\\
\vdots & \cdots & \vdots\\
s_ & s_\\
s_\end
\]顯然,之前的求法是一行一行,從左往右求和。我們同樣以一列一列,從上往下求和。因此:
\[ g(n) = \sum_^\sum_^(-1)^\dbinom\dbinomg(m)
\]提出和\(m\)無關的係數:
\[ g(n) = \sum_^(-1)^k \dbinom\sum_^\dbinomg(m)
\]注意到\(\sum_^\dbinomg(m)\)就是\(f(n-k)\)。因此:
\[ g(n) = \sum_^(-1)^k\dbinomf(n-k)
\]把它改寫成更加直觀的形式:
\[ g(n) = \sum_^(-1)^\dbinomf(k)
\]這就是二項式反演了。通過它,我們可以利用二項式求和推出不好計算的答案。
說到底,反演還是和容斥脫不了干係。
二項式反演代數證明
前幾天學了一下二項式反演的證明,咕了幾天後覺得還是發一篇部落格比較好。二項式反演,就是這麼個式子 f n sum c g i leftrightarrow g n sum 1 c f i 代數證明如下 begin g n sum 1 c sum c g j sum sum c c g j 1 end...
二項式反演
先從反演原理出發,假如存在兩個數列 f,g 我們知道 f n sum limits n a times g i 則 g n sum limits n b times f i 恆成立,那麼我們由 f 推出 g 的過程叫做反演。下面我們來 一下上面兩個式子恆成立的條件,將左邊帶入右邊,那麼有 begin...
二項式反演
形式與多步容斥相似,公式與多步容斥類似,多步容斥公式為 a 1 cup a 2 cup.cup a n sum limits a i sum limits n 1 ig i g n sum limits n 1 if i 顯然這兩個公式是等價,也是相互推導的關係,因此我們得到了二項式反演的形式1 形...