do_while_true

一言(ヒトコト)

耳分解 双极定向 竞赛图

抄论文 抄 JCY

耳分解

对于图 \(G=(V,E)\) 的子图 \(G'=(V',E')\),若一条简单路径或者简单环 \(x_1,x_2,\cdots x_k\) 满足 \(x_1,x_k\in V',x_2,\cdots,x_{k-1}\notin V'\),那么称之为一个耳,如果是简单路径则称之为开耳。

如果能将图分为一个子图序列 \(G_0,G_1,\cdots G_k\),其中 \(G_0\) 为一个环,且 \(G_{i+1}\setminus G_i\) 是一个(去掉首尾的)耳,那么称之为一个耳分解。如果全是开耳则为开耳分解。

在有向图中也能类似地定义。

  • 无向图边双连通 \(\Longleftrightarrow\) 存在耳分解;
  • 无向图点双连通 \(\Longleftrightarrow\) 存在开耳分解;
  • 有向图强连通 \(\Longleftrightarrow\) 存在耳分解。

\(\Longleftarrow\) 显然。\(\Longrightarrow\) 构造耳分解,考虑从某个点作为根 \(r\) 开始,时刻维护当前子图是个包含 \(r\) 的连通块 \((V,E)\)。对于以 \(r\) 为根的 dfs 树,一定存在一个点 \(x\) 满足 \(x\notin V,fa_x\in V\),那么一定存在一条非树边覆盖 \((fa_x,x)\) 这条边,从 \(fa_x\) 的某个祖先 \(u\) 出发,到 \(x\) 的某个后代 \(v\),那么即找到一个 \(u,x\) 为两端点的耳,可以将其加入。最后 \(V\) 为全集时即可直接将剩余还不在 \(E\) 中的边加入。(开耳分解就是 \(u\) 可以为 \(fa_x\)

对于有向图,\(\Longleftarrow\) 直接归纳;\(\Longrightarrow\) 考虑以 \(1\) 为根求出 dfs 树以及 dfs 序,按照 dfs 序从小到大加点,(为了方便表述按照拓扑序重标号)如果 \(x\) 已经在当前子图 \(G'\) 中则跳过,否则考虑此时 \(1,2,\cdots x-1\) 均在 \(G'\) 中,而 \(low_x<dfn_x\) 说明 \(x\) 存在后代 \(y\) 使得存在边 \(y\to p\) 其中 \(p<x\),那么加入 \(fa_x\to x\leadsto y\to p\) 这个耳即可。

将无向图 \(G\) 定向为强连通图当且仅当 \(G\) 边双连通

若存在割边则不合法。否则考虑将耳分解中的所有耳均定向为有向环或者有向路径即可。

双极定向

对于无向图 \(G\) 和两个点 \(s,t\),以下四个命题等价:

  1. 连接 \((s,t)\) 之后点双连通。
  2. \(G\) 中圆方树方点构成一条链,\(s\leadsto t\) 是圆方树的一条直径。
  3. 能将 \(G\) 定向为一个 DAG,使得 \(s\) 无入度且 \(t\) 无出度,其余点出入度均不为 0。(双极定向)
  4. 存在一个排列 \(p_1=s,p_2,\cdots,p_n=t\) 使得任意前缀以及任意后缀的导出子图是连通的。

其中 1. 2. 等价显然;4. 的排列就是 3. 中的拓扑序。

由 1. 推 3.:初始时挑出包含 \(s,t\) 的环,定向。开耳分解时根据两端点的拓扑序来确定耳上边的方向。(实现的话复杂度是平方的)

由 4. 推 2.:考虑逆否命题。将排列看成不断将白点染成黑点,时刻保证黑色白色内部连通。存在一个割点周围有至少三个点双,那么在染黑它之前至少有两个白色点双连通,染黑它之后这两个白色点双就不连通了。

如何简易地给出双极定向的构造(P9394 白鹭兰):

对于一个点只保留父边以及子树最浅返祖边(也就是 \(low\) 记录的那个)不会影响点双。对于叶子 \(u\) 可以在这两个点任意之一被染黑后立刻染黑 \(u\),所以在这两个点的记录的列表 \(L_x\) 中 push_back \(u\),将 \(u\) 删去,不断剥叶子即可。从根开始遍历列表递归染黑即得到一个合法构造。

\(s\) 为根,不去剥 \(t\),这样子求出所有 \(L\) 之后,对 \(s\)\(t\) 路径上的每个 \(L\) 依次进行递归染色即可。染 \(t\)\(t\) 就是最后一个染完的(否则那个没被染的点并没有往上连的返祖边,也就是存在割点)。

求出拓扑序之后便可求出双极定向。

例题:洛谷 P9394 白鹭兰,QOJ 7805。

竞赛图

竞赛图构造哈密顿路径:时刻维护一条链,尝试整合。

强连通竞赛图构造哈密顿回路:对于哈密顿路径从前往后,时刻维护一个环以及后缀一条链,保证环全都是连向链。往链后面 push_back 点的时候如果该点有连向环的边,那么就将链整合进环中。

强连通竞赛图是泛圈的:对于 \(3\leq i\leq n\)\(G\) 均存在长度为 \(i\) 的简单环。

由于已经有长度为 \(n\) 的环,只需证明存在长度为 \(n-1\) 的环,从而其导出子图是大小为 \(n-1\) 的强连通竞赛图,即可完成归纳。考虑构造哈密顿回路的过程,如果加入最后一个点之前已经是一个 \(n-1\) 的环那么直接就找到了,否则将链的开头去掉,结尾 push_back 最后一个点,再将这个链整合进环中即可,

Landau 定理:竞赛图出度序列 \(p_1\leq p_2\leq p_3...\leq p_n\) 合法当且仅当 \(\sum_{i=1}^np_i=\binom{n}{i}\),且 \(\sum_{i=1}^{t}p_i\geq \binom{t}{2}\),并且取等处的 \(t\) 即为缩点后的 scc 划分处。

\(s\to t\) 的最小割:初始 \(S=\{s\},T=V\setminus \{s\}\),此时割的大小就是 \(S\)\(T\) 的边数。考虑将一个点 \(x\)\(T\) 扔到 \(S\) 的时候,最小割的变化量为:\(\sum_{i\in T}[(x, i)\in E]-\sum_{i\in S}[(i,x)\in E]=\sum_{i\in T}[(x,i)\in E]-(|S|-\sum_{i\in S}[(x,i)\in E])=out_x-|S|\)。所以将出度从小到大排序,一定是扔一个前缀。

posted @ 2024-04-27 16:06  do_while_true  阅读(8)  评论(0编辑  收藏  举报