反演笔记

反演

反演

若已知 \(f(n) = \sum g(k)\),用 \(f\) 表示 \(g\) 的过程就叫“反演”。

二项式反演

参考一下邓老师的 PPT。


经典题:\(n\) 个元素错排的方案数。要求线性。

考虑枚举有 \(k\) 个人非错排,可以得到这 \(k\) 个人一共有 \(\dbinom{n}{k}\) 种选法,剩下的人有 \((n - k)\) 个,都是随便站。总方案就是 \(\dbinom{n}{k} \times (n - k)!\) 但是显然会有重复。因此我们容斥,可以得到:

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

下面是重要的性质:

\(\mathbf{Important \ Lemma}\)

\[\sum_{k = 0}^{n} (-1)^k \binom{n}{k} = [n == 0] \]

这个引理也很好理解:杨辉三角带符号行求和,由于其对称性显然为 \(0\)


我们考虑设 \(f(n)\) 表示 \(n\) 个人随便站的方案数,这个显然是很好求的。设 \(g(n)\) 表示 \(n\) 个人错排的方案数,我们上面已经求了。用 \(f(n - k)\) 换掉 \((n - k)!\) 可以得到:

\[g(n) = \sum_{k = 0}^{n} (-1)^k \binom{n}{k} f(n - k) \]

我们不妨换一个角度考虑。我们用 \(g\) 表示 \(f\)。我们枚举有 \(k\) 个人错位了,可以得到:

\[f(n) = \sum_{k = 0}^{n} \binom{n}{k} g(k) \]

  • 这两个式子有什么关系呢?首先显然有:

\[g(n) = \sum_{m = 0}^{n} [n = m] \binom{n}{m} g(m) \]

  • 回忆 Important Lemma,有

\[g(n) = \sum_{m = 0}^{n} \sum_{k = 0}^{n - m}(-1)^{k}\binom{n - m}{k} \binom{n}{m} g(m) \]

  • 我们注意到 \(\dbinom{n - m}{k}\dbinom{n}{m}\)\(\dbinom{n}{k} \dbinom{n - k}{m}\) 实际上是等价的,因为都等价于将一个集合划分成两个不交子集。所以有:

\[g(n) = \sum_{m = 0}^{n} \sum_{k = 0}^{n - m}(-1)^{k}\binom{n - m}{k} \binom{n}{m} g(m)\\ = \sum_{m = 0}^{n} \sum_{k = 0}^{n - m}(-1)^{k}\binom{n}{k} \binom{n - k}{m} g(m)\\ = \sum_{k = 0}^{n} (-1)^{k}\binom{n}{k} \sum_{m = 0}^{n - k}\binom{n-k}{m} g(m) \]

我们惊奇的发现,右面的一坨就等于 \(f(n - k)\)​!

  • 把下标换的好看一点,就得到:

\[g(n) = \sum_{k = 0}^{n} (-1)^{n - k}\binom{n}{k} f(k) \]


二项式反演形式一

基于上面的推导,我们可以得到:

\[f(n) = \sum_{k = 0}^{n} \binom{n}{k} g(k) \Longleftrightarrow g(n) = \sum_{k = 0}^{n} (-1) ^ {n - k} \binom{n}{k} f(k) \]

这就是二项式反演?


二项式反演形式二

\[f(n) = \sum_{k = 0}^{n} (-1) ^ k\binom{n}{k} g(k) \Longleftrightarrow g(n) = \sum_{k = 0}^{n} (-1) ^ k \binom{n}{k} f(k) \]

这个式子非常对称。下面证明一下:不妨设 \(h(n) = (-1) ^ n g(n)\)。那么有:

\[f(n) = \sum_{k = 0}^{n} (-1) ^ k \binom{n}{k} h(k) \]

  • 根据形式一,可以得到:

\[h(n) = \sum_{k = 0}^{n} (-1) ^ {n - k} \binom{n}{k} f(k) \\ (-1) ^ n g(n)= \sum_{k = 0}^{n} (-1) ^ {n - k} \binom{n}{k} f(k) \]

  • \((-1) ^ k\) 除过去就可以得到:

\[g(n) = \sum_{k = 0}^{n} (-1) ^ k \binom{n}{k} f(k) \]


二项式反演形式三

\[f(n) = \sum_{k = n} \binom{k}{n} g(k) \Longleftrightarrow g(n) = \sum_{k = n} (-1)^{k - n} \binom{k}{n}f(k) \]


二项式反演形式四

\[f(n) = \sum_{k = n} (-1) ^ k \binom{k}{n} g(k) \Longleftrightarrow g(n) = \sum_{k = n} (-1)^{k} \binom{k}{n}f(k) \]

这两种形式大概不需要过多解释了。

例题

  1. P10596 集合选数

\(n\) 个集合,要选出子集集合 \(\{S_i\}\),使得 \(|S_1 \bigcap S_2 \bigcap \cdots \bigcap S_n| = k\)。求方案数。

  • 使用二项式反演的关键在于构造两个函数 \(f, g\),并且使得 \(f\) 比较好求。

  • 不妨设 \(f(x)\) 表示钦定 \(x\) 个数必须选,剩下的随便选,选出子集的方案数。显然,我们要选出这 \(x\) 个数,剩下的数选或不选构成子集,子集选或不选再构成方案。所以 \(f(x) = \dbinom{n}{x} \left(2 ^ {2 ^ {n - x}} - 1\right)\)

  • 不妨设 \(g(x)\) 表示选出子集交集大小为 \(x\) 的方案数。显然 \(g(k)\) 即为我们所求。我们寻求 \(f, g\) 之间的关系,可以得到:

\[f(x) = \sum_{k = x}^{n} \dbinom{k}{x} g(k) \]

根据二项式反演形式三,可以得到:

\[g(x) = \sum_{k = x}^{n} (-1)^{k - x}\dbinom{k}{x} f(k) \]

这样可以做到线性。

\(\mathcal{Tip}\):在做二项式反演相关问题时,一般会”钦定“、”恰好选择“或”选择大于若干个“。

  1. P4491 染色

长度为 \(n\) 个序列,每个位置可以染 \(1 \sim m\) 的颜色。若出现次数为 \(s\) 的颜色种数为 \(k\) 则获得 \(w_k\) 的代价。求所有染色方案的权值和。

按照套路,不妨设\(f(x)\)钦定\(x\) 中颜色必须选的方案数,\(g(x)\) 为出现次数为 \(s\) 的颜色种数恰好为 \(x\) 的方案数。首先不难得到:

\[f(x) = \sum_{k = x}^{m} \dbinom{k}{x} g(k) \]

根据二项式反演形式三不难得到:

\[g(x) = \sum_{k = x}^{m} (-1) ^ {k - x} \binom{k}{x} f(k) \]

现在关键是 \(f\) 怎么求。首先要从 \(m\) 中颜色中选出钦定的那些,然后从 \(n\) 个位置选出一些把他们填上,然后再算上顺序,可以得到:

\[f(x) = \binom{m}{x} \dbinom{n}{sx} \dfrac{(s \times x) !}{(s!) ^ x} (m - j) ^ {n - sx} \]

posted @ 2024-11-28 20:46  Link-Cut-Y  阅读(231)  评论(0)    收藏  举报