二项式反演

算法核心

二项式反演与莫比乌斯反演类似,都可以用于在给定的条件式实现两个函数之间的相互推算。二项式反演适用于,其核心反演式子有二:

  • \[f(n) = \sum_{i=0}^n (-1) ^ iC_n^i g(i) \iff g(n) = \sum_{i=0}^n (-1)^i C_n^if(i) \]

  • \[f(k) = \sum_{i = k} ^ nC_i^k g(i) \iff g(k) = \sum_{i=k}^n(-1)^{i-k}C_i^kf(i) \]

\((1)\) 式类似于容斥原理的一个小变形,这一式也非常符合我们对容斥的认识。事实上,这也不难用原集和补集之间的转化来证明。

\((2)\) 式看起来就相当的奇怪了。我们先来尝试证明它的正确性。我们将等式右边带入等式左边:

\[f(k) = \sum_{i = k}^n C_i^k g(i) \]

\[f(k)= \sum_{i=k}^n C_i^k \sum_{j=i}^n (-1)^{j-i}C_j^if(j) \]

\[f(k) = \sum_{j = k}^n f(j)\sum_{i=k}^n(-1)^{j-i}C_i^kC_j^i \]

\[f(k) = \sum_{j=k}^n C_k^jf(k) \sum_{i=k}^jC_{j - i}^{j - k}(-1)^{j-i} \]

\[f(k) = \sum_{j=k}^n C_j^kf(k) \sum_{t=0}^{j - k}C_{j - k}^{t}(-1)^{t}1^{j - i -t} \]

\[f(k) = \sum_{j=k}^nf(j)C_j^k(1-1)^{j-k} \]

\[f(k) = f(k) \]

我们惊奇的发现,它确实是正确的。但他有什么用呢?

它的用途就在于钦定与恰好的相互转化,具体可以见下面的例题。

例题:

posted @ 2024-05-04 18:22  Little_corn  阅读(10)  评论(0编辑  收藏  举报