容斥原理与反演相关
一些容斥原理
规定
本文中集合指代非可重集。
用大写字母记一个集合,例如 \(P, S\)。
在集合两侧加竖线表示集合的大小,例如 \(\left\lvert\{1,2,3,4,5\}\right\rvert = 5\)。
在有上下文信息的情况下,直接写出集合也可以表示该集合对应的一类贡献,其与集合内元素线性相关。
下文中在描述下标集合时常会看到 \(S, T\) 这两个用于枚举的中间量集合,这里记 \(S\) 表示下标全集,\(T\) 表示当前枚举到的 \(S\) 的一个子集。
规定 \(0^0 = 1\),这也是有实际意义的。
容斥原理
就是最普适的容斥原理了。我们需要计算一系列集合的并,但又不希望重叠部分的贡献计入多次,这时就需要通过多次计数,每次[把先前没有计算的部分容纳进来/把先前重复计算的部分排斥出去],定量地加以容斥系数来实现不重不漏的计数,这样的做法就叫容斥原理。
假设我们需要计数集合列 \(\langle P_n \rangle\) 的贡献,容易得到
该式子描述了容斥原理的核心,其他的容斥可以说都是从这个式子上衍生的。
证明也是比较方便的。考虑一个元素在集合列中的 \(m\) 个集合中出现,则可以发现,选择 \(k\) 个其出现的集合有 \(C_m^k\) 种可能,每种可能的系数是 \((-1)^{k - 1}\)。最后能写出
也可以通过归纳法证明。
集合的交的问题可以转化成集合的并来解决,就是全集减去补集的并。
\(\text{Min-Max}\) 容斥
对于一个元素之间满足全序关系且有加减性的元素列 \(\{x_i\}\),设其大小为 \(n\),则我们有以下关系:
证明就是讨论元素贡献。取 \(m\in S\),假设 \(x_m\) 是第 \(k\) 大的元素,则可以讨论 \(x_k\) 会作为哪些集合的元素出现。
- \(k = 1\)
我们需要的就是 \(x_m\),容易发现它只会在 \(\{x_m\}\) 这一个集合中作为最小值出现。
所以它的贡献就是 \((-1)^{0} x_m = x_m\)。 - \(k > 1\)
最小的元素是第 \(k\) 大的元素,那其余元素只能是第 \(l < k\) 大的元素了,这样的元素一共有 \(k - 1\) 个。
可以写出选择 \(i + 1\) 个的贡献系数,也就是\[\sum_{i = 0}^{k - 1} \binom{k - 1}{i} (-1)^{i - 1} = (1 - 1)^{k - 1} = 0 \]
因此最后的贡献是第一小的数,即 \(\max_{i\in S} x_i\)。最小值可以如上地证明。
因此得证。
\(\text{Min-Max}\) 容斥之所以有用,其中一个原因是它在期望上也成立:众所周知在期望意义下的 \(\max, \min\) 是不像普通的 \(\max, \min\) 那么好求的,需要做转化。写出式子:
证明:
可以通过枚举可能的 \(y\) 序列写出一种期望的表示方法:
可以发现后面的部分就可以直接施上面的 \(\text{Min-Max}\) 容斥公式了。也就是
因此得证。
考虑到上面的容斥,我们不难想到,是否通过一些其他的容斥系数来转化到组合数求和上,从而指向性地得到第 \(k\) 大和第 \(k\) 小。这是可行的,而且我们也可以通过对应公式转化到期望上。这个东西又叫做拓展 \(\text{Min-Max}\) 容斥。
写出:
不妨设 \(x_i \le x_{i + 1}\)。我们化式子:
可以发现 \(C_{n - i}^{k - 1} 0^{n - k + 1 - i} = 1\) 当且仅当 \(i = n - k + 1\),其余情况都是 \(0\)。这就是第 \(k\) 大值。
其余三个可以类似上面地证明,不再赘述。
因此得证。
可以发现这个东西能够应用到一个数字质因子的指数上,这自然引出了质因子取 \(\min, \max\) 的操作:\(\gcd, \text{lcm}\)。
我们类比地转化操作,有:
这个式子可以叫 \(\gcd\text{-lcm}\) 容斥/反演。
例题:
[HAOI2015] 按位或 - 期望上的 \(\text{Min-Max}\) 容斥;
bzoj4833 最小公倍佩尔数 - \(\gcd\text{-lcm}\) 容斥;
重返现世 - 拓展 \(\text{Min-Max}\) 容斥;
[PKUWC2018] 随机游走 - 对顺序进行期望上的 \(\text{Min-Max}\) 容斥;
Become Big For Me - \(\gcd\text{-lcm}\) 容斥(以及出题人的推荐.
一些反演
规定
记一个元素列 \(f\) 的第 \(i\) 个元素为 \(f[i]\)。记一个矩阵 \(A\) 第 \(i\) 行第 \(j\) 列的元素为 \(A[i, j]\)。
一个元素列 \(f\) 对应的向量为 \(\bm f\)。
反演是什么?
我们考虑两个元素列 \(f, g\) 之间的双向关系,这一对关系就叫做反演关系。例如前缀和与差分、倍数求和与倍数差分等。一般地,这类关系是线性的,可以采用一个矩阵 \(A\) 和它的逆来描述,这矩阵又叫做关系矩阵。
一般地,我们可以得到一个关系对应的矩阵 \(A\),则 \(f\to g\) 的关系可以经由
来描述,也就是 \(\bm f = A\bm g\)。
我们已经可以通过 \(g\) 计算 \(f\) 了,而现在需要用 \(f\) 计算 \(g\)。这样一个过程就叫做反演。不难想到求 \(A\) 的逆矩阵 \(A^{-1}\),则 \(\bm g = A^{-1}\bm f\)。
例如前缀和矩阵是 \(A[i, j] = [i \ge j]\),而我们通过求逆能看到 \(A^{-1}[i, j] = [i = j] - [i = j + 1]\)。由定义不难发现两个互为反演关系的关系矩阵互逆。
我们也可以通过这类定义来从原有的反演上得到新的反演。具体地,有以下几条方法:
- 应用转置,容易发现一对互逆矩阵的转置也互逆。
- 可以对两个矩阵分别乘以 \(c \neq 0\),容易发现这两个矩阵仍然互逆。(这里是一个乘 \(c\) 一个除 \(c\) 的意思吗?)
- 移动 \((-1)^k\) 的指数。我们有\[\sum_{i\ge 0}(-1)^{n - i} A[n, i]\times B[i, m] = [n = m] \quad \Leftrightarrow \quad \sum_{i\ge 0}(-1)^{i} A[n, i]\times (-1)^m B[i, m] = [n = m] \]可以用在一些出现了 \((-1)^{n - k}\) 的时候,比方说二项式反演。
由一维情况可以拓展到二维情况。假设我们有两个关系矩阵 \(A, B\),他们分别描述了 \(i, j\) 两维的反演信息。我们有这两个关系上矩阵 \(F, G\) 的二维反演:
发现这就是各维反演系数的乘积。
证明可以构造四维矩阵。
不妨构造 \(C[(i, k), (j, l)] = A[i, j]\times B[k, l]\),\(D[(i, k), (j, l)] = A^{-1}[i, j]\times B^{-1}[k, l]\)。我们需要证明的就是 \(C\times D = I\),也就是 \((C\times D)[(i, j), (k, l)] = [(i, j) = (k, l)]\)。
因此得证。
由二维情况可以拓展到多维情况,证明类似,不再赘述。
二项式反演
最基础也最常见的反演。
首先写出第一种形式:
这依赖着 \(A[n, m] = (-1)^mC_m^n\) 这个矩阵是自逆的。
证明可以写一下 \(A\times A\) 的形式。也就是
我这个证法挺简洁?
然后用上面提过的移动 \((-1)^{n - k}\) 可以得到
这个东西也可以 egf 来证。也就是
DNA 动了嘛?构造 \(f, g\) 的 egf \(F, G\),则 \(F = e^{x}\times G\),也就能导出 \(G = e^{-x}\times F\),化一下就能到右边了。
然后用上面提过的转置可以得到
然后用上面提过的移动 \((-1)^{n - k}\) 可以得到
这也就是经典的四种式子了。
例题(难度大概逐渐递增?看出题时间和来源也是):
[NOI Online #2 提高组] 游戏;
已经没有什么好害怕的了
[HAOI2018] 染色;
[TJOI2019] 唱、跳、rap和篮球;
[MtOI2018] 情侣?给我烧了!;
[CTS2019] 随机立方体.
莫比乌斯反演
这个东西是数论相关知识。
我们现在想要研究一个函数在某一点值的所有因数处的取值,也就是转移矩阵 \(A[n, d] = [d | n]\)。对这个转移矩阵求逆可以得到 \(A^{-1}[n, d] = [d | n]\times \mu\left(\frac{n}{d}\right)\)。这个东西的证明是数论知识,具体着眼于这样一个结构上。
我们定义 \(\mu\) 函数为满足 \(\sum_{d|n} \mu(d) = [n = 1]\) 的函数。我们可以通过这个定义写出 \(\mu(n)\) 的取值:
这个定义的导出参见 \(\text{Min-Max}\) 容斥的容斥系数设计。
于是我们可以写出反演关系:
然后用上面提过的转置可以得到
斯特林反演
这一点用到了两类斯特林数之间的关系。
首先介绍一下两类斯特林数以及他们的一些性质。前置性质;前置(后置?)性质。
第一类斯特林数 \(\begin{bmatrix} n \\ m \end{bmatrix}\):\(n\) 个元素分为 \(m\) 个环的方案数(旋转后相同的算一个环)。
递推公式:\(\begin{bmatrix} n \\ m \end{bmatrix} = \begin{bmatrix} n - 1 \\ m - 1 \end{bmatrix} + (n - 1) \begin{bmatrix} n - 1 \\ m \end{bmatrix}\)
可以考虑如何插入一个新的元素,也就是[自己成新的环/插入原有的环],每个环的插入点和环大小相同,因此总共有 \(n - 1\) 个彼此不同的插入点,乘 \((n - 1)\)。
行的 ogf:\(x^{\overline n} = \sum_{k\ge 0} \begin{bmatrix} n \\ k \end{bmatrix} x^k\)
归纳法即得。从其中我们还能知道当 \(x = 1\) 时有 \(n! = \sum_ {k\ge 0} \begin{bmatrix} n \\ k \end{bmatrix}\)
列的 egf:\(\dfrac{\left(-\ln (1 - x)\right)^k}{k!} = \sum_{n\ge 0}\begin{bmatrix} n \\ k \end{bmatrix} \dfrac{x^n}{n!}\)
对 \(k\) 个环排列做一下直接组合即得。
二元 gf(上标 egf,下标 ogf):
推导仍然可以考虑对环排列组合,再用一个额外的占位元记录组合进来的个数。
容易写出环排列的 egf 是 \(-\ln (1 - x)\),那不妨记录单个环排列是 \(-y\ln(1 - x)\)。对它做 \(\exp\) 即得 \((1 - x)^{-y}\)。
第二类斯特林数 \(\begin{Bmatrix} n \\ m \end{Bmatrix}\):\(n\) 个不同元素放入 \(m\) 个相同的盒子,无空盒的方案数。
递推公式:\(\begin{Bmatrix} n \\ m \end{Bmatrix} = \begin{Bmatrix} n - 1 \\ m - 1 \end{Bmatrix} + m \begin{Bmatrix} n - 1 \\ m \end{Bmatrix}\)
可以考虑如何插入一个新的元素,也就是[自己成新的环/插入原有的环],每个盒的插入等价,因此总共有 \(m\) 个彼此不同的插入点,乘 \(m\)。
列的 egf:\(\dfrac{(e^x - 1)^k}{k!} = \sum_{n\ge k} \begin{Bmatrix} n \\ k \end{Bmatrix}\dfrac{x^n}{n!}\)
和上面类似的做法。
二元 gf(上标 egf,下标 ogf):
这个形式就更显然了是吧。
有一个生成单位元的公式,在一些情况下有用:
都说到这了就再说说斯特林数参与的普通幂和阶乘幂的转换吧。
直接给出公式:
然后就是斯特林反演的经典形式了。
这里当然能用单位元替代的性质来做,但是直接用 egf 代换也行。由第一个式子是可以推出 \(f, g\) 的 egf 的关系的,设二者是 \(F, G\),则我们能得到 \(F(x) = G(e^x - 1)\),然后就是 \(G(x) = F(\ln(1 + x))\),展开即可得到右边。
繁而不难,留作读者练习。
然后就是几个由移动 \(-1\) 和转置矩阵得到的公式:
例题:
明明的随机数(校内题(弱化版;
CF932E(不是很反演;
CF960G(不是很反演;
bzoj4671 异或图;
[HEOI2016/TJOI2016] 求和;
[国家集训队] Crash 的文明世界.
单位根反演
单位根是啥?
注意:我们这里的讨论是在 \(\mathbb C\) 上的,其也可以通过一些方式映射到 \(\mathbb F_p\) 上,其中 \(p\) 是质数。
记 \(i = \sqrt{-1}\),虚数单位。
\(n\) 次单位根,是 \(x^n = 1\) 在复数域上的 \(n\) 个解,第 \(k\in [0, n)\) 个解可以写作
我们记第 \(i\) 个 \(n\) 次单位根为 \(\omega_n^i\)。\(\omega_n^0 = 1\);任意单位根都是 \(\omega_n^1\) 的倍数,它常省略右上角角标 \(1\)。
扔到 \(\mathbb F_p\) 上的话就是 \(x^n \equiv 1\pmod p\) 的 \(n\) 个解,但有可能不成立,具体判断方法看下面的构造。
我们设 \(p\) 的一个原根是 \(g\),则我们有 \(\omega_n = g^{(p - 1)/n}\)。可以发现这样构造出来的 \(\omega_n\) 是满足要求的。
单位根反演的公式如下:
证明考虑分讨。
当 \(a\not\equiv 0 \pmod n\) 时我们可以等比数列求和,得到右侧就是 \(\dfrac{1}{n} \dfrac{\omega_n^{an} - 1}{\omega_n^a - 1} = \dfrac{1}{n} \dfrac{1 - 1}{\omega_n^a - 1} = 0\)
当 \(a\equiv 0 \pmod n\) 时发现等比数列公比为 \(1\),能得到右侧就是 \(\frac{1}{n} \sum_{k = 0}^{n - 1} \omega_n^{0} = 1\)。
可以导出下式:
例题:
LJJ 学二项式定理;
小猪佩奇学数学;
[集训队作业2018] 复读机;
[HNOI2019] 白兔之舞.
参考资料:
炫酷反演魔术, command_block ;
Min-Max 容斥小记, command_block ;
多项式计数杂谈, command_block ;
浅谈斯特林数及斯特林反演, y2823774827y ;
单位根反演小记, command_block ;
容斥与反演, juju527 ;
容斥原理 - \(\text{Min-Max}\) 容斥, oi-wiki, Peanut-Tang et al. .
以下是博客签名,与正文无关。
请按如下方式引用此页:
本文作者 joke3579,原文链接:https://www.cnblogs.com/joke3579/p/incl-excl-inversion.html。
遵循 CC BY-NC-SA 4.0 协议。
请读者尽量不要在评论区发布与博客内文完全无关的评论,视情况可能删除。