2023 集训队论文第一篇。
发现好像存在很多我不会 / 见过但是从来没记住过的结论之类的,所以这篇主要是背结论用的。
目录记 \(u \rightsquigarrow v\) 为 \(u\) 到 \(v\) 的路径,\(u \to v\) 为 \(u\) 向 \(v\) 的连边,同时用前者表示 \(u\) 到 \(v\) 是连通的。
无向图
- 点/边割集:对于一对点 \(u, v\),若删去一个点集 \(S\) 后 \(u \not \rightsquigarrow v\),那么称 \(S\) 为 \(u, v\) 的点割集,同理对边集 \(E\) 定义边割集。
- 点/边连通度:对于一对点 \(u, v\),若任意 \(u, v\) 的点割集大小大于等于 \(s\),则称 \(u, v\) 是 \(s\)-点联通的,同理定义 \(s\)-边联通。图的连通度是任意点对之间的连通度的最小值。
- Menger 定理:对于任意 \(u \ne v\),
\(u, v\) 是 \(k\)-边连通的,当且仅当存在 \(k\) 条 \(u \rightsquigarrow v\) 的两两边不交的路径;
\(u, v\) 是 \(k\)-点连通的,当且仅当存在 \(k\) 条 \(u \rightsquigarrow v\) 的除端点外两两点不交的路径。
这可以通过最大流最小割定理得到。
双连通性
即上述定义中的 \(2\)-边/点连通。
点双连通分量的性质
- 对于点双连通分量中任意不同两点 \(u, v\),存在经过 \(u, v\) 的简单环。
直接应用 Menger 定理即可得到。 - 对于点 \(u\) 和边 \(e\),存在同时经过点 \(u\) 与边 \(e\) 的简单环;对于任意两条边 \(e_1, e_2\),存在经过 \(e_1, e_2\) 的简单环。
可以将边 \(x \to y\) 拆成 \(x \to z \to y\),这样包含 \(e\) 就变成了包含 \(z\),于是就和上一个定理相同了。 - 共环:若存在一个简单环同时包含 \(e_1, e_2\),则称它们是共环的。这是一种等价关系,由此可以得到点双连通分量中的边为共环关系得到的等价类。由此其实可以得到,边双是对点集的划分,点双是对边集的划分。
- 对于点 \(u, v\) 和边 \(e\),存在经过 \(e\) 的简单路径 \(u \rightsquigarrow v\)。
我们可以找到一个包含 \(u, e\) 的简单环,并找到一条 \(u \rightsquigarrow v\) 的路径,满足这条路径与环的交大于 \(1\)(若不存在则 \(u\) 为割点),然后把环与路径拼起来,删掉环上一段就能得到一条路径了。
耳分解
耳分解是对双连通图的另一种刻画。
- 耳/开耳:对于无向图 \(G=(V, E)\) 与其子图 \(G'=(V', E')\),若存在简单路径或简单环 \(P: x_1 \to x_2 \to \cdots \to x_{k - 1} \to x_k\),满足 \(x_1, x_k \in V'\),\(x_2, \cdots, x_{k - 1} \not \in V'\),称 \(P\) 是 \(G\) 关于 \(G'\) 的耳。特别的,如果是简单路径,也称 \(P\) 是 \(G\) 关于 \(G'\) 的开耳。
- 耳分解/开耳分解:对于无向连通图 \(G\),若存在子图序列 \((G_0, G_1, \cdots, G_k)\) 满足:
- \(G_0\) 是简单环(可以是单点),\(G_k = G\);
- \(G_{i - 1}\) 是 \(G_i\) 的子图;
- 设 \(G_i = (V_i, E_i)\),则 \(E_i \setminus E_{i-1}\) 构成 \(G_{i-1}\) 的一个耳(开耳);
则称 \((G_0, G_1, \cdots, G_k)\) 是 \(G\) 的一个耳分解(开耳分解)。
- 无向连通图 \(G\) 存在耳分解当且仅当 \(G\) 边双连通;至少三个点的无向连通图 \(G\) 存在开耳分解当且仅当 \(G\) 点双连通。
边双的证明:必要性直接归纳可得,充分性考虑在 DFS 树上先随意找一个环,然后每次找到一个不在点集但父亲在点集的点,然后根据边双连通性,一定存在一条返祖边覆盖这条边,然后找到这条边构造一个耳,一直重复这个过程一定会使得点集等于全集,然后再依次加入每一条边即可。
点双的证明是完全一样的,找返祖边时改成找覆盖这条边与其父亲的边即可。 - 双极定向:给定一张无向图,给边定向,使得这张图成为一张 DAG,且只有一个入度为 \(0\) 的点 \(s\) 与一个出度为 \(0\) 的点 \(t\)。存在这样的方案,当且仅当连一条 \(s \to t\) 的边后,这张图点双连通。
充分性:点双连通等价于存在开耳分解,考虑首先得到一个 \(G_0\) 为 \(s \rightsquigarrow t\) 加上 \(s \to t\) 的环,根据上述构造证明容易发现存在这样的方案,然后去掉 \(s \to t\) 的边,然后每次加入一个开耳,只需要判断首尾的偏序关系,然后进行定向即可。
必要性:考虑反证,如果不是点双那么存在割点,删除一个后一定存在一个包含 \(s, t\) 和一个不包含 \(s, t\) 的连通块,考虑这个割点与两个连通块的连边方式,发现要不然会出环,要不然无法满足双极性。
对于实际的构造来说,判断首尾偏序关系是比较困难的,有一个好做法是找出一棵 DFS 树,然后每次只保留叶子的最浅的返祖边,这显然不影响点双连通性,然后此时所有叶子都是二度点,二度点可以直接缩起来,这样一只删叶子即可,于是这样就能得到一个简单的构造方法了。
割空间与环空间
- 割集:定于无向图的割集为,对于无向图 \(G = (V, E)\) 的二划分 \(V_1, V_2\),其割集为 \(\{e \in E \mid e = (x, y), x \in V_1, y \in V_2\}\),记做 \(C(V_1, V_2)\)。
- 树的任意一个边集都是割集。更多的,如果两个点之间经过了奇数条割集中的边,则两个点不在同一集合内,否则在同一集合内。
- 图的割集与其生成树的割集一一对应。生成树的割集与点集划分是一一对应的,而点集划分又与图的割集一一对应。
- 割空间:若将割看作 \(F_2\) 上的 \(|E|\) 维向量,那么一张图的所有割集构成 \(n-c\) 维线性空间,其中 \(c\) 为连通块数。
对于单个连通块来说,树的情况显然,对于非树边来说,其是否在割集中取决于路径上有多少边在割集上,这是取决于奇偶性的,而维度可以由一组基来决定,显然在生成树上每一条边可以构成一组基。那么容易证明这是一个 \(n-1\) 维线性空间。多个连通块容易得到是 \(n-c\) 维。 - 环空间:考虑所有满足每个点度数都是偶数的子图 \(G'=(V, E')\),其中把 \(E'\) 看作 \(F_2\) 上的 \(|E|\) 维向量,这也构成一个线性空间,称为环空间,维度为 \(|E|-n+c\),其中 \(c\) 为连通块数。
线性空间的证明显然,对于基来说,考虑 DFS 树上所有非树边形成的环,这些环就是环空间的一组基。 - 同一张图的割空间与环空间互为正交补。
考虑证明任意两个基正交,考察树边 \(e_1\) 与非树边 \(e_2 = (x, y)\),若 \(e_1\) 不在路径 \(x \rightsquigarrow y\) 上,那么两者无交;否则,交只有 \(e_1, e_2\) 两条边,两种情况均正交,而两者的维度之和等于 \(|E|\),所以两者互为正交补。 - 判断一组边集是否为割集:对于每一条边,我们给他赋一个向量作为权值,对于非树边,其权值只有这条边的位置为 \(1\),对于树边,其权值的所有的跨过它的非树边为 \(1\),其它为 \(0\)。发现,对于一条非树边来说,其对应的割集的权值之和恰好等于 \(0\),那么由于割集是线性空间,所有割集的权值之和就都是 \(0\)。于是我们只需要判断边集的权值和是不是 \(0\) 即可。实际上我们并不好直接对向量进行操作,于是一半我们会给每一位赋一个随机权值,判断异或和是不是等于 \(0\)。
- 切边等价:对于上述定义中的权值,如果两条边的权值等价,那么就说这两条边切边等价。
\(e_1, e_2\) 切边等价与下述几个条件等价:- \(e_1, e_2\) 均是割边;或者 \(e_1, e_2\) 在同一边双连通分量,且删除 \(e_1, e_2\) 后这个边双连通分量不再连通;
- 对于任意一个环,要不然同时包含 \(e_1, e_2\),要不然同时不包含 \(e_1, e_2\)。
切边等价与第一个条件直接由定义可以得出,考虑证明后两者等价。
前者推后者:假如此时有某一个环包含 \(e_1\) 而不包含 \(e_2\),那么由于 \(e_1\) 不是割边,根据前者,\(e_2\) 也不是割边,故可以删去 \(e_2\),此时图仍然连通,由于 \(e_1\) 在环中,删去一定仍然连通,此时边双仍然连通,矛盾;
后者推前者:假如删除 \(e_1\) 后 \(e_2\) 不是割边,那么说明存在一个环包含 \(e_2\) 而不包含 \(e_1\),矛盾,所以前者一定满足。
- 非割边的切边等价类能被环空间线性表出(P6914 [ICPC2015 WF] Tours)。
有向图
可达性问题
就是传递闭包。
静态可达性有经典的 Floyd,bitset 优化即可 \(O(\frac{n^3}{w})\)。缩强连通分量后在 DAG 上 bitset 优化 DP 可以做到 \(O(\frac{nm}{w})\),具体设 \(f(u, v)\) 表示从 \(u\) 能否到达 \(v\),将 \(f(u, *)\) 压成 bitset 然后每次从出边转移过来就行了。
区间可达性查询:给定一个 DAG,边有编号。\(q\) 组询问,每次询问只保留 \([l, r]\) 内的边时,\(u\) 能否到达 \(v\)。
类似上一个做法,我们设 \(f(x, i)\) 表示在只保留 \([l_i, r_i]\) 的边时能否从 \(x\) 到 \(v_i\),则第 \(i\) 次询问的答案是 \(f(u_i, i)\)。
考虑每次转移一条边 \(c\) 的时候,若 \(l_i \le c \le r_i\),则转移 \(f(x, i) \gets f(y, i)\)。用 bitset 表示,设 \(S_c\) 为包含 \(c\) 的询问集合,那么就是 \(f(x) \gets f(x) \mathrm{or} (f(y) \mathrm{and} S_c)\),\(S_c\) 可以扫描线得到。时间复杂度 \(O(\frac{q(n+m)}{w})\),但是此时空间复杂度难以接受。
有经典做法:把询问分块,然后每次只考虑一个块内的所有询问,这样时空复杂度就是 \(O(\frac{B(n+m)}{w})\),对每一块做一遍,总时间复杂度仍然是 \(O(\frac{q(n+m)}{w})\),但空间复杂度降低为 \(O(\frac{B(n+m)}{w})\)。块长可以设为 \(w\),这样可以直接用一个 long long 存下,可以不使用 bitset。
动态可达性:给定有向图,每条边为黑色或白色,初始时所有边均为黑色,\(q\) 次操作,每次反转一条边颜色,或给定 \(u, v\) 询问 \(u\) 仅通过黑色边能否到达 \(v\)。
考虑询问分块,块内所有修改与查询涉及到的点至多有 \(2B\) 个,我们记这些点为关键点 \(u_1, u_2, \cdots, u_k\)。然后考虑找出每一对关键点之间仅通过不改变的边能否到达,还是直接上 bitset 的做法就行了,复杂度 \(O(\frac{B(n+m)}{w})\),然后考虑加上若干条边后,\(u_i\) 能否到达 \(u_j\),这里我们直接搜索就行了,但是直接搜是 \(O(B^2)\) 的,稍微有点差,不过我们可以使用 bitset 优化这个过程,就可以 \(O(\frac{B^2}{w})\) 了,这样总复杂度是 \(O(\frac{q(n+m)}{w} + \frac{qB^2}{w})\),取 \(B = \frac{w}{2} = 32\) 即可 \(O(\frac{q(n+m)}{w} + qw)\),且可以用 long long 直接存下 \(2B = w\) 个关键点。
总结来说,常见做法就是 bitset 加询问分块。
强连通性
- 若 \(u\) 能到达 \(v\) 且 \(v\) 能到达 \(u\),那么称 \(u, v\) 强连通。由这样的等价关系形成的等价类称为强连通分量。
- 耳分解:在有向图上,有同样定义的耳与耳分解,同样的,有向图 \(G\) 可耳分解,当且仅当 \(G\) 强连通。
必要性仍然是直接归纳可证的,充分性继续考虑 DFS 树上构造。考虑 Tarjan 算法的过程,容易发现强连通当且仅当对于 \(x \ne 1\),\(low_x < dfn_x\)。
那么按照 \(dfn\) 从小到大考虑每一个点,初始 \(G_0\) 只包含 \(1\),每次考虑一个点,此时 \(G_i\) 包含 \([1, dfn_x)\) 内的所有点,由于 \(low_x < dfn_x\),说明 \(x\) 一定存在后代连向 \([1, dfn_x)\) 的路径,于是这条路径就是一个耳,加入这条路径。然后再依次加入没有加入的边即可。 - 无向图 \(G\) 可以被定向为强连通图,当且仅当 \(G\) 边双连通。
必要性显然,充分性可以考虑耳分解然后定向。 - App 管理器:混合图 \(G\) 可以被定向为强连通图,当且仅当将有向边变为无向边时,图边双连通,且将无向边拆成一对有向边时,图强连通。
证明咕了。
有向环
这里我们研究的是有向图中的所有环的边权和在模意义下的性质,下面的 \(m\) 可以是任意正整数,且这里考察的都是非简单环,即点边可以重复经过。
- 可环覆盖图:若有向图 \(G\) 的每个点的入度等于出度,则称 \(G\) 是可环覆盖的。可环覆盖的有向图的边集可以表示成若干个简单环的不相交并。
- 强连通图中,若存在一条路径 \(P : x \rightsquigarrow y\) 的边权和为 \(S\),则存在路径 \(y \rightsquigarrow x\) 使得其边权和 \(S'\) 满足 \(S' \equiv -S \pmod m\)。
如果 \(m = 1\) 结论显然,否则我们可以任意找一条路径 \(Q:y \rightsquigarrow x\),然后进行 \(Q \to P \to Q \cdots \to P \to Q\),一共进行 \(m-1\) 次 \(P\) 与 \(m\) 次 \(Q\),这样模意义下边权和就是 \(-S\)。 - 强连通图 \(G\) 中,对于每条边 \(x \to y\),边权为 \(z\),建立一条新边 \(y \to x\),边权 \(-z\)。这样会得到一张边权具有反对称性的新图 \(G'\)。\(G\) 和 \(G'\) 的所有可环覆盖子图边权和的集合在 \(\bmod m\) 意义下等价。
于是,我们在考虑这样的图的环时,只需要考虑其对应的具有反对称性的新图即可。在这张图上,我们求出 DFS 树后,可以看作能够在树上双向行走,而容易发现,树上路径 \(x \rightsquigarrow y\) 的路径长度必定是 \(dep_y - dep_x\)。 - 在边权具有反对称性的图 \(G\) 上,将仅包含一条非树边的简单环(这里树边的反向边不算作非树边)称为基本环。则任何一个 \(G\) 的可环覆盖子图的边权和等于一些基本环的边权和的整系数线性组合。
考虑任意一个环依次经过的非树边 \(e_i = (x_i, y_i, z_i)\),其环长应当等于 \(\sum (z_i + dep_{y_{i + 1}} - dep_{x_i})\),变换一下即可得到 \(\sum (z_i + dep_{y_i} - dep_{x_i})\),这就等于所有基本环的和。 - 强连通图 \(G\) 的所有可环覆盖子图的边权和的最大公因数,等于所有 \(z+dep_y−dep_x\) 的最大公因数,其中 \((x,y,z)\) 是所有非树边。
- 有向图的周期:我们定义一张有向图的周期为,从任意一个点开始,在走有限次后,每走 \(g\) 条边一定会走回原来的位置,称最小的 \(g\) 为周期,走的有限次为幂敛指数。
后者没有直接的方法计算,我们考虑周期。对于强连通图来说,这其实就是在说所有环长的 \(\gcd\),也就是上述的所有基环的 \(\gcd\)。对于一般图来说,我们取所有强连通分量的 \(\mathrm{lcm}\) 即可,这些内容感性理解比较显然。
实际上上述性质并不止在 \(\bmod m\) 意义下存在,在一些性质类似的运算下仍然满足,例如异或空间或 \(k\) 进制不进位加法。
CF1515G Phoenix and Odometers:我们只需要找出 \(v\) 所在的强连通分量的 \(\gcd\),然后看同余方程是否有解即可。
术树数:这里可以把无向边拆成有向边,然后就可以用上述做法来考虑了。我们做一个 \(k\) 进制线性基,然后加入所有的环,然后查询是否存在即可。所有路径可以表成一条路径与任意多环的异或和。注意树边上每一条边都是一个环,所有 \(2w\) 都要加入线性基。
竞赛图
竞赛图就是一个 \(n\) 个点的完全图,并将所有边进行定向。
- 竞赛图有哈密顿路。
考虑归纳证明。\(n=1\) 显然,假设现在有 \(n-1\) 的竞赛图,假设其哈密顿路径为 \(1 \to 2 \to \cdots \to n-1\),加入第 \(n\) 个点:- 若有边 \(n \to 1\),那么直接接到开头即可;
- 若有边 \(n-1 \to n\),那么直接接到结尾即可;
- 否则有边 \(1 \to n, n \to n - 1\),那么一定存在一个 \(x \in [1, n - 2]\) 使得 \(x \to n, n \to x + 1\)(可以二分找到),将 \(n\) 插到两者之间即可。
- 强连通竞赛图有哈密顿回路。
证明咕了。 - 竞赛图缩点后形成一条链,满足前面的所有点连向后面的所有点。
考虑到缩点后一定是一张 DAG,而必须是一个完全图,所以一定可以形成一条链。 - 竞赛图求强连通分量:首先找到一条哈密顿路径,那么强连通分量一定是这条链上的若干个连续区间,我们可以通过将链上的反边覆盖的所有点全部合并起来,得到所有的强连通分量。
- Landau 定理:设竞赛图中所有点按照出数从小到大排序为 \(p_1, p_2, \cdots, p_n\),\(p_i\) 的出度为 \(d_i\),则对于 \(k \in [1, n]\),有 \(\sum_{i=1}^k d_i \ge \binom{k}{2}\)。
扩展:\(G\) 的每个强连通分量都是 \(p_i\) 的连续段,且 \(p_k\) 是一个强连通分量的右端点当且仅当 \(\sum_{i=1}^k d_i = \binom{k}{2}\)。