《再谈图连通性相关算法》阅读笔记

news/2025/11/30 12:20:32/文章来源:https://www.cnblogs.com/tigerchen/p/19289012

from 虞皓翔 2021 年的论文

0 引言

图论是组合数学中一个历史悠久的分支,以图为研究对象。图的连通性是图论中基础且重要的理论,更是图论中的奠基石。

OI 种的图论主要以数据结构为主,对连通性等的考察并不多。本文结合图论、dfs 树、网络流等多种算法,使用传统和较现代的图论理论来对这些基本问题做一个介绍。

1 相关定义

1.1 图

定义 1.1.1(图). 图是一个二元组 \(G=(V,E)\),其中 \(V,E\) 为集合或可重集,分别表示图的点集和边集,\(V\) 中的元素称为顶点,\(E\) 中的元素称为边。每条边是一个二元组 \((u,v)\),其中 \(u,v\in V\)。若所有边均为无序二元组,则 \(G\) 是无向图;若所有边均为有序二元组,则称 \(G\) 是有向图。

一般地,用 \(V(G)\)\(E(G)\) 表示 \(G\) 的点集和边集。

定义 1.1.2(自环,重边,简单图). 对无向图 \(G=(V,E)\),若 \(e=(u,v)\in E\) 满足 \(u=v\),则称 \(e\) 是自环;若 \(E\) 中存在相同元素 \((u,v)\)\((u,v)\)\((v,u)\) 视为相同),则它们是一组重边;若 \(G\) 中不存在自环和重边,则 \(G\) 是简单图。

定义 1.1.3(关联,相邻). 无向图 \(G\) 中,若 \(v\)\(e\) 的一个端点,则称 \(v,e\) 是关联的,若两个顶点 \(u,v\) 是同一条边 \(e\) 的两个端点,则称 \(u,v\) 是相邻的。

定义 1.1.4(邻域,度). 对于一个顶点 \(v\),所有与之相邻的顶点集合(可重集)称为 \(v\) 的邻域,用 \(N(v)\) 表示;与 \(v\) 关联的边的条数称为该点的度数,用 \(d(v)\) 表示。对于无向图 \(G\),记 \(\delta(G)=\min d(v),\Delta(G)=\max d(v)\),分别表示 \(G\) 的最小度和最大度。

定义 1.1.5(子图). 对于无向图 \(G=(V,E)\),若存在另一个无向图 \(H=(V',E')\) 满足 \(V'\subseteq V\)\(E'\subseteq E\),则称 \(H\)\(G\) 的子图,记作 \(H\subseteq G\)

定义 1.1.6(导出子图). 若 \(H=(V',E')\)\(G=(V,E)\) 的子图且 \(\forall u,v\in V'\),只要 \((u,v)\in E\) 就有 \((u,v)\in E'\),则称 \(H\)\(G\) 的导出子图。

容易发现,一个图的导出子图只由它的点决定,因此点集为 \(V'\) 的导出子图称为 \(V'\) 导出的子图,记作 \(G[V']\)

1.2 连通性

定义 1.2.1(途径,迹,路径).

  • 对于无向图 \(G\) 中一个点和边的交错序列 \(w=[v_0,e_1,v_1,e_2,v_2,\dots,e_k,v_k]\),其中首尾是点,且 \(e_i=(v_{i-1},v_i)\) 则称 \(w\) 是一条途径,简记作 \(w=v_0\to v_1\to\dots\to v_k\) 或者 \(w=v_0\rightsquigarrow v_k\)
  • 对于一条途径 \(w\),若 \(e_1\sim e_k\) 两两不同,则称 \(w\) 是一条迹。
  • 对于一条迹 \(w\),若满足 \(v_i=v_j(i\neq j)\)\((i,j)\) 只有 \((0,k)\) 或没有,则称 \(w\) 是一条路径。

定义 1.2.2(回路和圈). 闭合的迹称为回路,闭合的路径称为圈,也称环。

定义 1.2.3(连通性). 对于一张无向图 \(G=(V,E)\)\(u,v\in V\),若存在途径 \(u\rightsquigarrow v\),则称 \(u,v\) 连通。若 \(G\) 中任意两个顶点连通,则称 \(G\) 是连通图。

定理 1.2.1. 对无向图 \(G=(V,E)\),“连通”是 \(V\) 上的等价关系。

根据定理 1.2.1,我们可以根据顶点的连通关系将 \(V\) 划分为若干个等价类,每个等价类被称作 \(G\) 的一个连通分量,即连通块。

1.3 割集和连通度

定义 1.3.1(点割集). 对于无向图 \(G=(V,E)\),其中 \(u,v\in V\) 满足 \(u\neq v\)\((u,v)\notin E\),若存在 \(S\subseteq V-\{u,v\}\) 使得 \(G[V-S]\)\(u,v\) 不连通,则称 \(S\)\(u,v\) 的点割集。若 \(S\) 是某对 \((u,v)\) 的点割集,则称 \(S\)\(G\) 的点割集。

定义 1.3.2(边割集). 对于无向图 \(G=(V,E)\)\(u,v\in V\) 满足 \(u\neq v\),如果存在边集 \(F\subseteq E\) 使得 \(G-F\)\(u,v\) 不连通,则称 \(F\)\(u,v\) 的边割集。如果 \(F\) 是某对 \((u,v)\) 的边割集,则称 \(F\)\(G\) 的边割集。

定义 1.3.3(点连通度). 对于无向图 \(G\) 中不相邻顶点 \(u,v\),定义其点连通度为 \((u,v)\) 的点割集大小的最小值,记为 \(\kappa(u,v)\)。对于非完全图 \(G\),定义其点连通度为全局点割集大小的最小值,记为 \(\kappa(G)\)

定义 1.3.4(边连通度). 对于无向图 \(G\) 中不同顶点 \(u,v\),定义其边连通度为 \((u,v)\) 的边割集大小的最小值,记为 \(\lambda(u,v)\),若 \(|G|\ge 2\),则定义其边连通度为全局边割集大小的最小值,记为 \(\lambda(G)\)\(|G|=1\)\(\lambda(G)=+\infty\)

定义 1.3.5(k-连通性). 若 \(\kappa(G)\ge k\)\(\lambda(G)\ge k\),则称 \(G\)\(k\)-点连通图或 \(k\)-边连通图。

容易发现点连通性与图是否是简单图无关,而边连通性与其有关。

2 \(k\)-连通性及其性质

2.1 Menger 定理

关于点连通度和边连通度,最重要的结论或许是下面的定理:

定理 2.1.1(Menger).

  • 对于无向图 \(G\) 中一对不相邻顶点 \(u,v\)\(\kappa(u,v)\ge k\) 当且仅当存在 \(k\)\(u\rightsquigarrow v\) 的路径,两两之间公共点只有 \(\{u,v\}\)
  • 对于无向图 \(G\) 中一对顶点 \(u,v\)\(\lambda(u,v)\ge k\) 当且仅当存在 \(k\)\(u\rightsquigarrow v\) 的路径,两两之间无公共边。

事实上,Menger 定理是最大流最小割定理的不带权版本,点连通和边连通分别对应限制点容量和边容量。

2.2 连通度的界

关于图的连通度有非常多结论,给出一个最基本结论:

定理 2.2.1. 对于无向图 \(G\) 中一对不相邻顶点 \(u,v\),有 \(\kappa(u,v)\le \lambda(u,v)\le\min(d(u),d(v))\),于是有 \(\kappa(G)\le\lambda(G)\le\delta(G)\)

证明:设 \(F\)\(u,v\) 的边割集。对于 \(F\) 中的每一条边,显然至少存在一个端点不是 \(u\)\(v\)。对所有的边都取这样一个点,得到一个点集 \(S\),显然 \(|S|\le |F|\)\(S\)\(u,v\) 的局部点割集,所以 \(\kappa(u,v)\le\lambda(u,v)\)。设 \(d(u)\le d(v)\),则与 \(u\) 关联的所有边构成 \(G\) 的一个边割集,所以 \(\lambda(u,v)\le\min(d(u),d(v))\)。由全局连通度和最小度的定义有 \(\kappa(G)\le\lambda(G)\le\delta(G)\)\(\square\)

结合握手定理,有 \(|V|\delta(G)\le\sum d(v)=2|E|\),得

推论 2.2.1. 对于非完全图 \(G=(V,E)\),有 \(\kappa(G)\le\lambda(G)\le\dfrac{2|E|}{|V|}\)

在图中添加或删除一条边,对图的连通度影响如下:

定理 2.2.2.

  • 点连通(默认点连通有意义,即图不算完全图). 设 \(\kappa(G)=A\),则:
    • \(\forall v\in G\)\(\kappa(G-\{v\})\ge A-1\)
    • \(\forall e\in G\)\(\kappa(G-\{e\})\le A\)
  • 边连通. 设 \(\lambda(G)=B<+\infty\),则 \(\forall e\in G\)\(B-1\le\lambda(G-\{e\})\le B\)

这些结论由定义不难得到。

2.3 局部 \(k\)-边连通性

2.3.1 \(k\)-边连通关系

对于无向图 \(G\) 和正整数 \(k\),在 \(V\) 上定义二元关系 \(\rho_k\),其中 \((a,b)\in\rho_k\) 当且仅当 \(\lambda(a,b)\ge k\)\(a=b\) 时定义 \(\lambda(a,b)=+\infty\)),称该关系为图的 \(k\)-边连通关系。则:

定理 2.3.1. \(\rho_k\)\(V\) 上的等价关系。

证明:显然 \(\rho_k\) 具有自反性和对称性。只需要证明传递性。

\((a,b),(b,c)\in\rho_k\)。设 \(F\)\(a,c\) 的边割集,则 \(G-F\)\(a,c\) 不连通,由连通的传递性可知 \(b\) 至少与其中之一不连通,不妨设 \(a,b\) 不连通。那么此时 \(F\) 也是 \(a,b\) 的边割集,因此 \(\lambda(a,c)\ge\lambda(a,b)\ge k\),即 \((a,c)\in\rho_k\)\(\square\)

2.3.2 \(k\)-边连通分量

由定理 2.3.1,\(\rho_k\)\(V\) 划分为若干个等价类 \(V_1\sim V_n\),其中每个等价类为 \(G\) 的一个 \(k\)-边连通分量。注意 \(k\ge 3\) 时一个 \(k\)-边连通分量的导出子图不一定连通。

2.3.3 \(k\)-边连通判定

由定理 2.1.1,判断两个点 \(u,v\) 是否 \(k\)-边连通,只需要判断是否存在 \(u\to v\)\(\ge k\) 的流即可。因此如果只需要判两个点可以直接使用最大流算法。

由于最大流算法实现方法较多,需要合理衡量算法的时间复杂度以及实现难度,用 \(O(flow(v,e))\) 表示在一个 \(v\) 个点 \(e\) 条边的图做最大流的时间复杂度。

2.3.4 \(k\)-边连通分量划分

考虑如何求出 \(G\)\(k\)-边连通分量划分。

一个简单的实现是对每一个点对之间做一遍最大流,时间复杂度 \(O(|V|^2flow(|V|,|E|))\)。不过实际上并不需要做那么多次最大流。

考虑取一对顶点 \(u,v\),我们可以在 \(O(flow(|V|,|E|))\) 的时间内判断是否有 \(\lambda(u,v)\ge k\)

  • \(\lambda(u,v)\ge k\),则 \(u\)\(v\) 应该在同一个 \(k\)-边连通分量中,因此下面的过程中不需要再考虑 \(v\) 点。
  • \(\lambda(u,v)<k\),则说明存在一个局部边割集 \(F\) 满足 \(u,v\)\(G-F\) 中不连通。令 \(C_u\)\(u\) 所在的连通分量,\(C_v=V-C_u\)。此时 \(\forall u'\in C_u,v'\in C_v\)\(F\) 也是 \(u'\)\(v'\) 的边割集,即 \((u',v')\notin \rho_k\)。这说明 \(C_u\)\(C_v\) 分别是若干个 \(k\)-边连通分量的并。也就是说我们将这个问题转化为了它的子问题。

于是我们每次从操作要么“删除”一个点,要么将一个集合拆成若干个小集合,当最后每个集合中的点都只剩下一个的时候我们就得到了 \(G\)\(k\)-边连通分量划分,只需要跑 \(O(|V|)\) 次最大流。

总时间复杂度 \(O(|V|flow(|V|,|E|))\)

2.4 边连通度

2.4.1 局部边连通度

判定是否为 \(k\)-边连通的一个自然推广就是计算任意点之间的局部边连通度。最小割有一个性质:

定理 2.4.1. 设 \(G=(V,E)\),有 \(u,v\in V\)。设 \(F\)\(u,v\) 的最小割,\(u,v\) 所在连通分量为 \(S,T\)。则 \(\forall u'\in S,v'\in T\),均有 \(\lambda(u',v')\le\lambda(u,u')\)

证明:设 \(G\)\(u,u'\) 的最小割,其中 \(u,u'\) 所在连通分量为 \(P,Q\)。由最小割的 Submodular 性质,不妨设 \(T\subseteq P\)\(T\subseteq Q\)

  • \(T\subseteq P\),则 \(G\) 也是 \(u',v'\) 的边割集,因此 \(\lambda(u',v')\le |G|=\lambda(u,u')\)
  • \(T\subseteq Q\),则 \(G\) 也是 \(u,v\) 的边割集,而 \(G\) 也是 \(u',v'\) 的边割集,所以 \(\lambda(u',v')\le |F|=\lambda(u,v)\le |G|=\lambda(u,u')\)

综上,有 \(\lambda(u',v')\le\lambda(u,u')\)\(\square\)

推论 2.4.1. 条件同上,有 \(\lambda(u',v')\le\min(\lambda(u',u),\lambda(u,v),\lambda(v,v'))\)

又由定理 2.3.1,\(\lambda(a,c)\ge\min(\lambda(a,b),\lambda(b,c))\),结合推论 2.4.1 有:

推论 2.4.2. 条件同上,有 \(\lambda(u',v')=\min(\lambda(u',u),\lambda(u,v),\lambda(v,v'))\)

于是,不难得到一个计算任意点对的局部边连通度的算法:

  1. 定义函数 \(EFT(U)\) 其中 \(U\subseteq V\),返回一棵带权的树。\(EFT\) 函数具体过程如下:
  2. \(|U|=1\),返回树 \((U,\varnothing)\)
  3. 否则,任取 \(U\) 中不同两点 \(u,v\),使用一次最大流算法得到 \(\lambda(u,v)\) 以及对应边割集,设对应两个连通分量为 \(S^*,T^*\),其中 \(u\in S^*,v\in T^*\)
  4. \(S=S^*\cap U,T=T^*\cap U\)。令 \((S,E_S)=EFT(S),(T,E_T)=EFT(T)\)
  5. 最后令边 \(e=(u,v)\),边权为 \(\lambda(u,v)\),函数返回树 \((U,E_S\cup E_T\cup e)\)

注意运行最大流算法时一定要在原图上运行而非导出子图。

上述过程得出的树被称为等价流树,下面证明它的主要性质:

定理 2.4.3. \(\forall u,v\in V(u\neq v)\)\(\lambda(u,v)\) 等于 \(EFT(T)\) 中路径 \(u\rightsquigarrow v\) 中最小的边权。

证明:固定 \(G\),按照算法流程对 \(U\) 归纳证明。假设 \(EFT(S),EFT(T)\) 满足定理的结论,那么对于 \(EFT(U)\) 中的点对,只需要考虑 \(u'\in S\)\(v'\in T\) 的情况。由定理 2.4.2,有 \(\lambda(u',v')=\min(\lambda(u',u),\lambda(u,v),\lambda(v,v'))\)。由归纳假设和树的性质,\(\lambda(u',v')\) 恰好等于路径 \(u'\rightsquigarrow u\to v\rightsquigarrow v'\) 中最小的边权。\(\square\)

不难证明这个算法的时间复杂度也是 \(O(|V|flow(|V|,|E|))\),且预处理完毕后我们将一次局部边连通度的询问转化为树上权值 \(\min\),达到 \(O(\log |V|)\) 甚至 \(O(1)\) 询问。

2.4.2 Gusfield 算法

Gusfield 算法是上述算法的一种实现,由于其不需要递归,因此显得比较有优势。算法流程如下:

  1. 任取 \(r\in V\),令 \(R=V-\{r\},E_T=\varnothing,B_r=R,B_v=\varnothing(v\neq r)\)
  2. \(R=\varnothing\),返回 \((V,E_T)\)
  3. \(v\in R\),令 \(R=R-\{v\}\)
  4. \(u\) 满足 \(v\in B_u\),使用最大流算法得到 \(\lambda(u,v)\) 以及对应边割集,假设对应的两个连通分量为 \(S^*,T^*\),其中 \(u\in S^*,v\in T^*\)
  5. \(B_v=B_u\cap T^*,B_u=B_u\cap S^*\)
  6. 令边 \(e=(u,v)\),边权为 \(\lambda(u,v)\),令 \(E_T=E_T\cup\{e\}\),回到第二步。

容易证明该算法与前面的算法是等价的,时间复杂度也是相同的。

2.4.3 全局边连通度

对于一张图,其全局边连通度为所有边连通度的 \(\min\),因此可以在 \(O(|V|flow(|V|,|E|))\) 的复杂度内得到,不过如果我们只需要知道它的全局边连通度的话,由专门的算法解决这类问题,如确定性的 Stoer-Wagner 算法(时间复杂度 \(O(|V|^2\log |V|+|V||E|)\))以及基于随机化的 Karger 算法(时间复杂度 \(O(|V|^2\log^3|V|)\))。限于篇幅,这里不对这两种算法进行展开。

2.5 点连通度

与边连通度相对应的一个问题就是点连通度。容易发现 \(k\)-点连通性没有传递性,所以处理点连通度会比处理边连通度更为麻烦。

2.5.1 局部点连通度

计算两个点的点连通是容易的,由定理 2.1.1 得我们只需要计算在限制点容量为 \(1\) 的条件下 \(u\)\(v\) 的最大流大小,而这可以通过拆点的思想解决。

时间复杂度 \(O(flow(|V|,|E|))\)

2.5.2 全局点连通度

由定义,\(\kappa(G)=\min\kappa(u,v)\)。按照定义直接计算,复杂度 \(O(|V|^2flow(|V|,|E|))\)

和边连通度类似,我们并不需要运行 \(|V|^2\) 次最大流,因为很多操作都是冗余的。

\(G=(V,E)\) 是非完全图的连通无向简单图,\(\kappa(G)=c\),则 \(1\le c\le |V|-2\)。于是 \(G\) 存在大小为 \(c\) 的点割集,设为 \(S\)

\(V=\{1,2,\dots,|V|\}\)。由于 \(|S|=c\),因此必定存在元素 \(v\in\{1,2,\dots,c+1\}\) 满足 \(v\notin S\)。又因为 \(G-S\) 中至少有两个连通分量,从而存在 \(u\in V-S\)\(u,v\) 在两个不同连通分量。显然 \((u,v)\neq E\)

于是 \(S\)\((u,v)\) 的一个点割集,从而 \(\kappa(u,v)=c\)。这说明:

定理 2.5.1. 若非完全图的连通无向简单图 \(G=(V,E)\) 的点连通度为 \(c\),则对于 \(V\) 的任意一个 \(c+1\) 元子集 \(X\),一定存在 \(v\in X,u\in V,(u,v)\notin E\) 满足 \(\kappa(u,v)=c\)

于是我们得到一个时间复杂度为 \(O(\kappa(G)|V|flow(|V|,|E|))\) 的算法:

  1. \(V=\{1,2,\dots,|V|\}\)
  2. \(u=1,c=+\infty\)
  3. \(u>c\),则返回 \(\kappa(G)=c\),程序结束。
  4. 否则令 \(U=\{v|u<v,(u,v)\notin E\}\),使用网络流计算 \(c_u=\min\limits_{v\in U}\kappa(u,v)\)
  5. \(c=\min(c,c_u),u=u+1\),回到第二步。

由推论 2.2.1,其时间复杂度也等于 \(O(|E|flow(|V|,|E|))\)

2.5.3 \(k\)-点连通分量

我们之前并没有给 \((u,v)\in E\)\(u,v\) 定义 \(\kappa(u,v)\),因此再次额外给出它的定义:

定义 2.5.1. 对于无向简单图 \(G=(V,E)\)\((u,v)\in E\),定义 \(\kappa(u,v)\) 为从 \(u\)\(v\) 的路径条数的最大值(含 \(u\to v\)),满足两两之间公共点只有 \(\{u,v\}\)

为了方便区分,我们记这个函数为 \(\kappa^*\)。这个函数在 \((u,v)\notin E\) 时取值与 \(\kappa(u,v)\) 相同。

下面给出 \(k\)-点连通分量的定义。

定义 2.5.2\(k\)-点连通分量). 对于无向简单图 \(G=(V,E)\),若集合 \(S\subseteq G\) 满足 \(\forall u,v\in S(u\neq v)\) 均有 \(\kappa^*(u,v)\ge k\) 且不存在 \(S\) 的一个真超集满足上述性质,则称 \(S\)\(G\) 的一个 \(k\)-点连通分量。

考虑建立一张辅助图 \(H=(V,E_H)\),其中 \(E_H=\{(u,v)|u\neq v,\kappa^*(u,v)\ge k\}\)

对边连通建图时,由于 \(k\)-边连通是等价关系,所以得到的图是若干个不相交完全图的并,而 \(G\) 中的一个边连通分量对应辅助图中的一个连通块。

而对点连通建图时,由于 \(k\)-点连通没有传递性,因此不同的点连通分量之间可能有交集,同样的,\(k\ge 3\) 时一个 \(k\)-点连通分量并不一定能导出一个连通子图。

根据定义,\(G\) 的一个 \(k\)-点连通分量对应辅助图 \(H\) 中的一个极大团。因此 \(G\)\(k\)-点连通分量结构可以由 \(H\) 的极大团结构得到。

定理 2.5.2. \(n\) 阶无向图至多有 \(n\)\(k\)-点连通分量。

对于建立辅助图的过程,除了暴力对每一对点跑最大流以外,笔者尚未获得低于 \(O(|V|^2flow(|V|,|E|))\) 的算法。

考虑 \(H\) 中两个极大团 \(A,B\),它们的交集大小是有限制的。

定理 2.5.3. 对于 \(H\) 中任意两个不同极大团 \(A,B\)\(|A\cap B|\le k-1\)

证明:若 \(|A\cap B|\ge k\),则由 \(A,B\) 的极大性有 \(A\nsubseteq B,B\nsubseteq A\),所以存在 \(u\in A-B,v\in B-A\),此时 \((u,v)\notin H\)。由定义知 \(\kappa^*(u,v)\le k-1\),那么分两种情况讨论:

  • \((u,v)\notin E\):存在大小不超过 \(k-1\) 的集合 \(S\) 割掉 \(u,v\),从而存在 \(x\in (A\cap B)-S\)。因为 \(\kappa^*(u,x)\ge k\)\(\kappa^*(v,x)\ge k\)。因此在 \(G[V-S]\)\(u,x\)\(v,x\) 连通,矛盾。
  • \((u,v)\in E\):存在大小不超过 \(k-2\) 的集合 \(S\) 使得 \(G[V-S]\)\((u,v)\) 是大小为 \(1\) 的边割集,从而存在 \(x\in (A\cap B)-S\)。因为 \(\kappa^*(u,x)\ge k\),所以 \(G[V-S]\)\(\kappa^*(u,x)\ge 2\),于是删除 \((u,v)\)\(u,x\) 仍然连通,\(v,x\) 同理。因此 \(u,v\) 仍然连通,矛盾。

于是任意两个极大团的交至多有 \(k-1\) 个顶点。

2.6 总结

本节主要介绍了对于一般的正整数 \(k\)\(k\)-点(边)连通性的判定以及点(边)连通分量的一些可行方法。

对于无向图边连通所建立的网络,边权为 \(1\),因此使用 Dinic 就有 \(O(flow(|V|,|E|))=O(|E|^{\frac 32})\)。如果只需要判定最大流是否 \(\ge k\),第一项还可以对 \(k\)\(\min\),即 \(O(\min(k,\sqrt{|E|})|E|)\)

对于点连通所建立的网络,发现形如 \(x\) 的点只有一条出边,形如 \(x'\) 的点只有一条入边,此时使用 Dinic 就有 \(O(flow(|V|,|E|)=O(\sqrt{|V|}|E|))\)。同理,如果只需要判定最大流是否 \(\ge k\),第一项也可以和 \(k\)\(\min\)

将上述所有算法列成一张表,其中假设所有网络流使用最常见的 Dinic 算法:

注意,其中某些问题学术界可能存在更优做法,但由于实现过于复杂或者实际意义不大就不给出,这里讨论的算法都是相比之下较为实用的算法。另外对于一些问题,可能需要通过具体的 \(k,|V|,|E|\) 得出复杂度,因为对应的界比较多(如 \(\kappa=O(\dfrac{|E|}{|V|}),flow(|V|,|E|)=O(min(k,\sqrt{|V|})|E|)\) 等)。

3 1-连通与 2-连通

接下来着重讨论 \(k\) 较小的情形。

本文将讨论 \(k=1,2,3\) 的情形。对于 \(k=4\) 的情形,虽然学术界有对应算法,不过由于实用性不大且实际表现不一定比上面的算法优秀,这里就暂时略去。

\(k=3\) 的情形相较于 \(k=1,2\) 更为复杂,所以本节先讨论 \(k=1,2\) 的情形。

3.1 1-连通

由定义即可知,对于无向图 \(G\)\(G\) 是连通图当且仅当 \(G\) 是 1-点连通图,当且仅当 \(G\) 是 1-边连通图。

问题等价于连通性问题,使用 dfs、bfs 或并查集等均可完成,不再赘述。

3.2 2-连通

2-连通分为 2-点连通和 2-边连通。在讨论 2-连通之前,需要先讨论一下图的 dfs 树:

定义 3.2.1(dfs 生成树). 对于一张连通无向图 \(G=(V,E)\),任取一个点 \(r\) 为根进行 dfs,则每个点 \(v\in V-\{r\}\) 在 dfs 时都有一个前驱节点,记为 \(p_v\)。则所有形如 \((v,p_v)\) 的边构成一棵以 \(r\) 为根的 dfs 生成树,记为 \(T_r\)。dfs 树上的边称为树边,其他边称为非树边。

dfs 树也可以认为是无根树,不过为了方便起见一般认为是以 \(r\) 为根的有根树。通常情况下 dfs 树也可以看成是外向树(根指向叶子)、内向树(叶子指向根)和无向树,具体根据上下文决定。

对于不连通的图 \(G\),需要对于每个连通分量进行 dfs 得到 dfs 森林。

下面的定理是无向图 dfs 树的重要性质:

定理 3.2.1. 设 \(T_r\) 为无相如 \(G\) 的一棵 dfs 树,则所有非树边都连接 \(T_r\) 中某个顶点和其祖先。

因此,我们也称无向图的非树边为返祖边。

3.3 2-边连通

本小节默认图是连通图。

先来看 2-边连通,即边双连通。

3.3.1 边双连通分量和桥边

定义 3.3.1(桥边). 若单边集 \(\{e\}\) 为图 \(G\) 的某个边割集,则称 \(e\)\(G\) 的桥边,也称割边。

边双连通有如下性质:

定理 3.3.1. 若 \(B\) 是图 \(G\) 的一个边双连通分量,则 \(G[B]\) 是边双连通图。

证明:取 \(u,v\in B\),由 \(\kappa(u,v)\ge 2\) 有存在从 \(u\)\(v\) 的两条边不相交的路径。考虑得到经过 \(u,v\) 的有向回路,从而回路上的所有点两两边双连通,因此 \(u,v\)\(G[B]\) 中连通且边双连通。\(\square\)

推论 3.3.1. \(B\)\(G\) 的边双连通分量当且仅当 \(G[B]\)\(G\) 的极大边双连通子图。

考虑图 \(G\) 的 dfs 树,对于每条非树边 \(e\),由定理 3.2.1 有他是返祖边,连接某个点 \(v\) 和其祖先顶点 \(u\)。这时我们称 \(e\) 覆盖了所有路径 \(u\rightsquigarrow v\) 上所有树边。

定理 3.3.2. 对于图 \(G\)\(e\) 是桥边当且仅当 \(e\) 是树边且 \(e\) 没有被任何一条非树边覆盖。

于是我们可以通过树上差分的技巧计算出每条边是否被返祖边覆盖,来得到所有桥边。

考虑所有被覆盖的树边构成的图,它们是一个森林。容易发现,森林中的每个连通分量对应 \(G\) 的一个边双连通分量。

于是找出所有桥边并去掉后,剩下的边(或树边)构成的连通分量就是原图的边双连通分量。

上述算法的时间复杂度为 \(O(|V|+|E|)\)

我们尝试发掘更深的性质。考虑有根树上的一个连通子图 \(S\),则 \(S\) 中有唯一顶点具有最小深度。

对于一个边双连通分量,其在 dfs 树上是一个连通子图,因此它存在深度最小的顶点。

对于 \(v\in G\),定义 \(low_v\) 表示以 \(v\) 为根的子树的点 \(u\) 中通过返祖边 \((u,w)\) 能到达的深度最小的 \(w\)

根据上述定义,每个边双连通分量都有且仅有一个点满足 \(v=low_v\),且这个 \(v\) 就是深度最小的顶点。

为了快速完成这个任务,同时避免记录二元组,我们可以引入 dfs 序——dfs 时顶点的访问顺序。用 \(seq_i\) 表示 dfs 时访问的第 \(i\) 个顶点,\(id_i\)\(dfn_i\) 表示第 \(i\) 个点访问的时刻(第几个被访问)。容易发现 \(seq\)\(id\) 互为逆置换。

dfs 序的一个重要性质是:

定理 3.3.3. 若 \(u\) 在 dfs 树中是 \(v\) 的祖先,则 \(id_u\le id_v\)

发现 \(low_v\) 一定是 \(v\) 的祖先,因此可以把定义换为标号最小者。为了方便起见,不妨设 dfs 序就是 \(1\sim n\)。现在对每个 \(v\) 求出 \(low_v\),可以树形 dp:

  • 考虑和 \(v\) 关联的所有返祖边,对于每个 \((v,u)\)\(low_v=\min(low_v,u)\)
  • 对于每个 \(v\) 的子节点 \(c\),令 \(low_v=\min(low_v,low_c)\)

遇到 \(v=low_v\) 时,将以 \(v\) 为根的子树取出来作为一个边双连通分量并将其在树上删除。同时如果 \(v\) 存在父节点 \(p_v\) 则边 \((p_v,v)\) 是桥边。

这就是 Tarjan 算法,时间复杂度 \(O(|V|+|E|)\)

3.3.2 应用——Robbins 定理

边双连通图的一个实际应用就是 Robbins 定理:边双连通图的强连通定向。

定理 3.3.4(Robbins). 无向简单图 \(G\) 能定向成强连通(有向)图的充分必要条件是 \(G\) 是边双连通图。

证明:必要性:若 \(G\) 不是边双连通图则存在桥边 \((u,v)\),显然无法同时存在 \(u\rightsquigarrow v\)\(v\rightsquigarrow u\) 的有向路径,矛盾。

充分性:设 \(G\) 是边双连通图,其一棵 dfs 树为 \(T\),那么将所有树边按照外向树定向(父节点指向子节点),所有返祖边定向为“后代指向祖先”。首先由外向树的性质可知根能到达所有节点,而因为 \(G\) 是双连通图,在 Tarjan 算法中有 \(low[low[\dots low[v]\dots]]=1\),而 \(v\) 可以到达 \(low_v\),所以每个点也可以到达 \(1\),因此图为强连通图。\(\square\)

上述证明同时也给出了简单且容易实现的构造,时间复杂度 \(O(|V|+|E|)\)

3.4 2-点连通

和边连通类似,2-点连通被称为点双连通。

定义 3.4.1(割点). 若单点集 \(\{v\}\) 为连通图 \(G\) 的某个点割集,则称 \(v\)\(G\) 的割点。

3.4.1 2-点连通分量和点双连通分量

由于对 2 阶完全图 \(K_2\) 点连通度的定义问题,点双连通分量的定义会有少许区别。为了方便起见,人为规定 \(K_2\) 是 2-点连通图,即 \(\kappa(K_2)=2\)

定义 3.4.2(点双连通分量). 对于连通无向图 \(G=(V,E)\),对于 \(B\subseteq V\),若 \(G[B]\)\(G\) 的极大 2-点连通子图,则 \(B\)\(G\) 的点双连通分量。

\(\kappa(K_2)=1\) 时点双连通分量的定义和 2-点连通分量是完全一致的,但是 \(\kappa(K_2)=2\) 时所有 2-点连通分量仍然是点双,但所有桥边 \((u,v)\) 对应二元集 \(\{u,v\}\) 会是新的点双。\(|V|>1\) 时所有点双都有至少两个点。

在后面的过程中会发现这么定义是对算法流程有益的。

定理 2.5.2 告诉我们 \(n\) 个点的图至多有 \(n\) 个 2-点连通分量,也可以证明 \(n\) 个点的图至多有 \(n\) 个点双连通分量。

3.4.2 边的等价性

点连通对点来说不是等价关系,但 2-点连通对边来说是等价关系。

\(E\) 上定义二元关系 \(\rho_c\),其中 \((e,f)\in \rho_c\) 当且仅当它们可以同时在一个圈中。

定理 3.4.1. \((e,f)\in\rho_c\) 当且仅当 \(e,f\) 在同一个点双中。

证明:若 \((e,f)\in\rho_c\)\(e,f\) 同时在一个圈中,于是 \(e,f\) 的所有端点都是两两 2-点连通的,所以这些端点在同一个点双中。

考虑点双连通图中的两条边 \(e=(u,v),f=(u',v')\)。将 \(e\) 换成 \((u,x),(x,v)\)\(f\) 换成 \((u',x'),(x',v')\),则新图仍然是点双连通的,于是至少存在两条 \(x\rightsquigarrow x'\) 的路径,它们拼起来可以构成一个圈,显然这个圈经过边 \(e\)\(f\)\(\square\)

回到 dfs 树。根据上面的结论,dfs 树上的 \(n-1\) 条树边可以根据 \(\rho_c\) 划分为若干个等价类。

考虑一个等价类,根据之前的结论有它是一个点双中的所有树边,因此它必然对应 dfs 树上的一个连通块。

于是对于每条返祖边 \((v,u)\)\(u\)\(v\) 的祖先),将这些路径上的所有边设为等价,最终树上每一种等价类对应连通子图就是原图的一个点双。

对于每一个点双 \(B\),在 dfs 树上仍然是一个连通子图,且其中有唯一顶点具有最小深度。

设其为 \(v\),则 \(v\) 的子节点中至多一个属于 \(B\)。否则设 \(c_1,c_2\in B\),则 \((c_1,v)\)\((c_2,v)\) 等价,那么它们也应该与 \((v,p_v)\) 等价,与 \(v\) 的深度最小性矛盾。

假设这个唯一的子节点为 \(u\),则 \(v\le low_u\),反之如果一个点 \(v\) 和其子节点 \(u\) 满足 \(v\le low_u\) 则此时 \(u\) 所在子树以及边 \((u,v)\) 共同构成 \(\rho_c\) 的等价类,即我们得到了一个点双。于是将以 \(u\) 为根的子树删去,然后重复运行即可。

这就是 Tarjan 求点双,时间复杂度 \(O(|V|+|E|)\)

3.4.3 割点

定理 3.4.2. 点 \(v\) 不是割点当且仅当所有与其关联的边在同一个 \(\rho_c\) 等价类中。

于是如果这些边不全在一个等价类中,则必然有一条边 \((u,v)\)\((v,p_v)\) 不在一个等价类,所以存在 \(u\) 满足 \(v\le low_u\)

不过要注意根节点是一个例外。根节点在 dfs 树中关联的边两两在 \(\rho_c\) 中不等价,只需要判断是否有两棵及以上的子树即可。

时间复杂度 \(O(|V|+|E|)\)

3.4.4 应用:块割树和圆方树

不同的点双可能有交,因此在求解时必须使用边的等价类来处理。

但是点双的主角还是点,对于点来说又有哪些性质呢?

首先由定理 2.5.3 能得到,两个点双的交集至多有一个点,而且必定是割点。

定义 3.4.3(块割树). 对无向连通图 \(G\),我们可以定义图 \(H=(B\cup C,J)\) 满足:

  • \(B\)\(G\) 中所有点双(作为点集)构成的集合。
  • \(C\)\(G\) 中所有割点构成的集合。
  • \(J=\{(b,c)|b\in B,c\in b\cap C\}\)

此时 \(H\) 就是 \(G\) 的块割树。

即由割点和点双构成的树。容易证明无向连通图的块割树一定是树。

得到一张图的块割树也不难。由于割点一定在块割树上,所以以任意一个割点为根开始 dfs,每次找到一个点双就把其中所有割点向它连一条边,再把它连上找到它的那个点。

在实际应用中,我们不仅仅需要割点,所以我们一般会使用块割树的广义版本圆方树。

定义 3.4.4(圆方树). 对连通无向图 \(G=(V,E)\),定义图 \(H=(B\cup V,J)\) 满足:

  • \(B\)\(G\) 中所有点双(作为点集)构成的集合。
  • \(J=\{(b,v)|b\in B,v\in b\}\)

此时 \(H\)\(G\) 的圆方树。\(B\) 中的点称为方点,\(V\) 中的点称为圆点。

根据定义,有

定理 3.4.3. 块割树是圆方树中所有非叶节点的导出子图,它们的每条边连接一个圆点和一个方点。

类似的,圆方树也可以用一次 Tarjan 算法在 \(O(|V|+|E|)\) 的时间得到。圆方树可以将许多图上路径相关问题转化为对应树上问题,从而使用传统树上算法进行处理。

4 3-连通及其应用

3-连通是图论中较为现代的理论,同样分为 3-边连通和 3-点连通。它们有各自的算法和应用。

4.1 3-边连通

本小节默认图是 2-边连通图,允许重边但是不允许自环。

4.1.1 切边和切边对

定义 4.1.1(切边,切边对). 对于无向图 \(G\),若某个二元边集 \(\{e_1,e_2\}(e_1\neq e_2)\)\(G\) 的边割集,则称 \((e_1,e_2)\) 是一对切边对,两条边都被称为切边。

切边对具有如下性质:

定理 4.1.1. 对于无向图 \(G=(V,E)\)\(e_1,e_2\in E,e_1\neq e_2\),则 \((e_1,e_2)\) 为切边对当且仅当对于 \(G\) 中的每个圈 \(C\)\((e_1\in C)\Leftrightarrow(e_2\in C)\)

证明:充分性:若 \(e_1,e_2\) 满足在所有圈中同时出现或同时不出现,这说明删去 \(e_1\)\(e_2\) 不能出现在任何一个圈上,所以 \(e_2\)\(G-\{e_1\}\) 的桥,即 \((e_1,e_2)\) 是切边对。

必要性:若 \((e_1,e_2)\) 是切边对,则 \(e_2\)\(G-\{e_1\}\) 的桥边。

这说明在 \(G\) 中经过 \(e_2\) 的圈必定经过 \(e_1\),反过来同理,因此它们在所有圈中要么同时出现,要么同时不出现。

4.1.2 切边等价

我们可以引入切边等价的概念:

定义 4.1.2(切边等价). 对于 2-边连通无向图 \(G=(V,E)\)\(e_1,e_2\in E\)\(e_1\neq e_2\),如果对 \(G\) 中的每个圈 \(C\) 都有 \((e_1\in C)\Leftrightarrow(e_2\in C)\)\(e_1,e_2\) 切边等价。记作 \(e_1\stackrel c\sim e_2\)

由定理 4.1.1,\(e_1\neq e_2\) 时,\(e_1\stackrel c\sim e_2\) 当且仅当 \((e_1,e_2)\) 是切边对。

定理 4.1.2. 切边等价是等价关系。

证明:显然切边等价具有自反性和对称性。设 \(e_1\stackrel c\sim e_2\)\(e_2\stackrel c\sim e_3\),那么对于每一个圈 \(C\)\((e_1\in C)\Leftrightarrow(e_2\in C)\Leftrightarrow(e_3\in C)\),根据 \(\Leftrightarrow\) 的传递性可得 \(e_1 \stackrel c\sim e_3\)\(\square\)

于是切边等价关系将边集 \(E\) 划分为若干个等价类 \(E_1\sim E_n\)

4.1.3 和 3-边连通的关系

定义 4.1.3(收缩). 对于 \(G=(V,E)\) 和边 \(e=(u,v)\in E\),定义 \(G\)\(e\) 收缩所得的图为 \(H=(V',E')\),其中:

  • 定义一个新的点 \(w\),则 \(V'=(V-\{u,v\})\cup\{w\}\)
  • 对于 \(E\) 中的边 \((x,y)\),若 \(x,y\notin\{u,v\}\)\((x,y)\) 也在 \(E'\) 中,否则设 \(x\in\{u,v\}\),把对应边换成 \((w,y)\)
  • 最终去掉图中所有自环。

\(G\)\(e\) 收缩的图记为 \(G\cdot e\)\(G/e\)

简单来说就是把一条边的两个端点缩到一个点上。

注意简单图经过收缩后可能成为非简单图(可能有重边)。

切边等价和 3-边连通的关系由下面两个定理建立:

定理 4.1.3. 设 \(G\) 中的边 \(e=(u,v)\) 满足它所在的 \(\stackrel c\sim\) 等价类大小为 \(1\),则 \(u,v\) 在同一个 3-边连通分量中。

同时令 \(H=G\cdot e\),则 \(H\) 的 3-边连通分量划分就是将 \(G\) 的 3-边连通分量划分将 \(u,v\) 替换为 \(w\) 的结果,而且此时 \(G\)\(H\) 中对应边由相同的切边等价关系。

证明:上述定理包含三个命题,我们逐一证明。

  1. \(e=(u,v)\) 所在等价类大小为 \(1\),说明 \(e\) 不是切边。由切边的定义,\(\lambda(u,v)\ge 3\),所以 \(u,v\) 在同一个 3-边连通分量中。
  2. \(\lambda(x,y)\ge 3\),如果 \(x,y\) 都不在 \(\{u,v\}\) 中那么根据定理 2.1.1,存在三条从 \(x\)\(y\) 的边不相交的路径。同时根据收缩过程可得对应路径仍然存在(收缩保留重边),所以此时 \(H\) 中仍然存在 \(3\)\(x\to y\) 的边不相交的路径,即 \(\lambda(x,y)\ge 3\Rightarrow \lambda(x',y')\ge 3\)\(x,y\in\{u,v\}\) 时同理。若 \(\lambda(x',y')\ge 3\) 而且 \(\lambda(x,y)<3\) 那么 \(x,y\) 存在大小为 \(2\) 的边割集,由于 \((u,v)\) 不可能作为切边,所以这两条边在 \(H\) 中都对应存在。
  3. \(G\) 中的每个圈可以通过收缩操作对应到 \(H\) 中的每个圈,反之亦然。于是 \(G,H\) 具有相同的切边等价关系。\(\square\)

定理 4.1.4. 图 \(G\)\(d(v)=2\),设 \(N(v)=\{u,w\}\),其中 \(u,w\) 可以相等,那么 \(\{v\}\) 为一个单独的 3-边连通分量。
同时令 \(H\) 为在 \(G-\{v\}\) 中加入边 \((u,w)\) 的图(如果 \(u=w\) 就不添加自环),那么 \(H\) 的 3-边连通分量划分就是 \(G\) 的 3-边连通分量划分去掉 \(\{v\}\) 的结果,而且此时对应边有相同的切边等价关系。

证明:同样依次证明三个命题。

  1. \(\forall x\in V-\{v\}\),由于 \((u,v),(w,v)\) 均为 \(v\)\(x\) 的大小为 \(2\) 的点割集,因此 \(\lambda(v,x)\le2\),于是 \(v\) 自己是一个 3-边连通分量。
  2. \(\lambda(x,y)\ge 3(x\neq v,y\neq v)\),根据定理 2.1.1,存在三条 \(x\to y\) 的边不相交的路径。将 \((u,v)\)\((v,w)\) 替换为 \((u,w)\) 即可找到 \(3\)\(H\) 中对应的路径,反之亦然。于是 \(\lambda_G(x,y)\ge 3\Leftrightarrow\lambda_H(x',y')\ge 3\)
  3. \(G\) 中的每个圈仍然可以通过将 \((u,v),(v,w)\) 换为 \((u,w)\) 对应到 \(H\) 中的每个圈,反之亦然,所以切边等价关系不变。\(\square\)

4.1.4 一个想法

反复利用定理 4.1.3 和定理 4.1.4,我们可以将一张图的规模不断缩小,从而得到原图的 3-边连通分量划分。

事实上这个思路时可行的,需要依赖如下定理:

定理 4.1.5. 设 \(G\) 满足 \(\delta(G)\ge 3\),则必定存在一条边 \((u,v)\) 满足 \((u,v)\) 不与其他边切边等价(等价类大小为 \(1\))。

在证明这个定理之前,我们需要介绍切边等价和 dfs 树的关系。设 \(T\) 为 2-边连通无向图 \(G\) 的 dfs 树,由前面的部分可知每条返祖边覆盖了若干条树边。对于每条边,定义一个集合 \(C(e)\)

  • \(e\) 是返祖边,则 \(C(e)=e\)
  • \(e\) 是树边,则 \(C(e)\) 表示所有覆盖它的返祖边的集合。

显然 \(C(e)\) 中只有返祖边。由于 \(G\) 是 2-边连通图,根据定理 3.3.2,\(\forall e\in E,C(e)\neq\varnothing\)

事实上,集合 \(C(e)\) 和切边等价有着密切的关系:

定理 4.1.6. 对于 2-边连通无向图 \(G=(V,E)\)\(e_1,e_2\in E\)\(e_1\stackrel c\sim e_2\) 当且仅当 \(C(e_1)=C(e_2)\)

证明:考虑任意一条返祖边 \((u,v)\)。根据定义,所有满足 \((u,v)\in C(e)\) 的边 \(e\) 构成一个圈 \(C\)

如果 \(e_1\stackrel c\sim e_2\),那么对于该圈 \(C\)\((e_1\in C)\Leftrightarrow(e_2\in C)\),所以 \((u,v)\in C(e_1)\Leftrightarrow (u,v)\in C(e_2)\),所以 \(C(e_1)=C(e_2)\)

反之,如果 \(C(e_1)=C(e_2)\),那么对于每条只含一条返祖边的圈 \(C\) 都有 \((e_1\in C)\Leftrightarrow(e_2\in C)\)。注意到对于边集 \(A,B\),如果 \((e_1\in A)\Leftrightarrow(e_2\in A)\) 那么对于 \(A\oplus B\)(这里 \(\oplus\) 表示对称差),也有 \((e_1\in A\oplus B)\Leftrightarrow(e_2\in A\oplus B)\)

根据连通图的圈空间的性质,\(G\) 中的每一个圈都可以表示称若干个只包含一条返祖边的圈的对称差,因此对于每个圈 \(C\) 都有 \((e_1\in C)\Leftrightarrow(e_2\in C)\),即 \(e_1\stackrel c\sim e_2\)\(\square\)

引理 4.1.1. 对于图 \(G\),若树边 \(e_1,e_2\) 切边等价,则它们一定是祖先-后代关系。

证明:因为 \(e_1\stackrel c\sim e_2\),所以根据定理 4.1.6,\(C(e_1)=C(e_2)\neq\varnothing\)

任取 \(e\in C(e_1)\),那么非树边 \(e\) 一定覆盖 \(e_1,e_2\),而定理 3.2.1 又告诉我们 \(e\) 是返祖边,所以 \(e_1,e_2\) 一定是祖先-后代关系。\(\square\)

引理 4.1.2. 设 \(P\) 是 dfs 树上一条根到某个顶点的路径,那么以下情形不会出现:\(P\) 中按顺序存在四条边 \(e_1\sim e_4\) 满足 \(e_1\stackrel c\sim e_3,e_2\stackrel c\sim e_4\)\(e_1\stackrel c\nsim e_2\)

证明:反设存在这种情况。考虑 \(e\in C(e_1)\),那么 \(e\in C(e_3)\),而 \(e\) 覆盖 \(e_1,e_3\) 说明 \(e\) 覆盖 \(e_2\),所以 \(e\in C(e_2)\Rightarrow e\in C(e_4)\),反过来同理。于是 \(e\in C(e_1)\Leftrightarrow e\in C(e_4)\)\(C(e_1)=C(e_4)\)\(e_1\stackrel c\sim e_2\),矛盾。\(\square\)

下面就可以证明定理 4.1.5 了。

证明(4.1.5):考虑所有 \(\stackrel c\sim\) 等价类中最浅的树边上端顶点最深的那个等价类,假设这个等价类中最浅树边 \(e=(v,p_v)\),那么依次证明:

  • 树上没有其它边 \(f\) 满足 \(e\stackrel c\sim f\)
    反之,\(f\) 在以 \(v\) 为根的子树中。设 \(f=(u,p_u)\),如果 \(p_u\neq v\),根据引理 4.1.2 可以得到中间其他边会在一个新的等价类当中,其最浅的树边会更深。如果 \(p_u=v\),由于 \(d(v)\ge 2\),因此 \(v\) 不能引其他返祖边,则 \(v\) 还有其他子节点 \(y\)。于是 \((v,y)\) 所在等价类中,\((v,y)\) 作为最浅树边,与深度的最大性矛盾。
  • 没有返祖边 \(f\) 满足 \(e\stackrel c\sim f\)
    否则说明只有返祖边 \(f=(a,b)\) 覆盖了 \(e\),若 \(b\neq u\)\((b,p_b)\) 所在等价类深度比 \(e\) 大,若 \(b=u\),因为 \(d(v)\ge 2\) 所以 \(v\) 还有其他子节点 \(y\),而 \((v,y)\) 所在等价类深度比 \(e\) 大,矛盾。

于是 \(e\) 所在等价类大小为 \(1\),结论成立。\(\square\)

定理 4.1.5 告诉我们,在任意时可,要么有一个点的度数为 \(2\),要么存在一个大小为 \(1\) 的边等价类。这两种情况,我们可以利用定理 4.1.4 和定理 4.1.3,将问题不断化为规模更小的子问题。

4.1.5 实现

下面介绍如何实现这个算法。

首先需要能够快速判断两条边是否切边等价,由定理 4.1.6,我们只需要判断它们对应的 \(C(e)\) 是否相同。

获取每条边的 \(C(e)\) 需要 \(O(|E|)\) 的时间,又只有树边定义的 \(C(e)\) 元素个数才会 \(\ge 1\),所以获取所有边的 \(C(e)\) 需要 \(O(|V||E|)\) 的时间。

这个显然是我们无法接受的。考虑利用经典随机化技巧:对每一条非树边 \(e\),随机一个 64 位权值 \(w(e)\),然后定义 \(c(e)=\bigoplus\limits_{f\in C(e)}w(f)\)。当 \(C(e_1)=C(e_2)\) 时一定有 \(c(e_1)=c(e_2)\),而 \(C(e_1)\neq C(e_2)\)\(c(e_1)=c(e_2)\) 的概率只有 \(\frac 1{2^{64}}\) 量级,可以忽略不计。

现在问题变成了对树上的一条链异或上一个数,最终询问每条边的值。这是一个静态问题,直接树上差分即可在 \(O(|V|+|E|)\) 时间内解决。

\(G=(V,E)\) 是 2-边连通图,算法流程如下:

  1. 对于每条边 \(e\) 求出 \(c(e)\) 以判断两条边是否切边等价。
  2. \(A=\{e|e\in E,e 所在切边等价类大小为 1\},D=\{v|v\in V,d(v)=2\}\)(默认边集可重,点集不可重)
  3. 对于每个顶点 \(v\) 维护其当前点度 \(d_v\) 以及所在的“3-边连通分量” \(L_v\),最初 \(d_v=d(v),L_v=\{v\}\),用并查集维护辅助图 \(H\)
  4. 如果 \(A=\varnothing,D=\varnothing\),去步骤 15。
  5. 如果 \(A\neq\varnothing\),去步骤 6,否则去步骤 10。
  6. 任取 \(e=(u_0,v_0)\in A\),令 \(A=A-\{e\}\)
  7. \(u,v\) 分别为 \(u_0,v_0\)\(H\) 中所在的连通分量。
  8. \(u=v\),则说明这两边的连通分量已经处理,因此直接令 \(d_u=d_u-2\) 即可。否则令 \(L_u=L_u\cup L_v,L_v=\varnothing,d_u=d_u+d_v-2\),在 \(H\) 中将 \(u,v\) 所在连通分量合并。
  9. 如果此时有 \(d_u=2\),则令 \(D=D\cup \{u\}\),去步骤 4。
  10. 任取 \(x\in D\),令 \(D=D-\{x\}\)。如果 \(d_x\neq 2\) 则去步骤 4。
  11. 枚举 \(L_x\) 中的顶点,找到当前与它关联的两条边,记为 \((x,u)\)\((x,v)\)
  12. 如果 \(u,v\) 已经在 \(H\) 的一个连通分量中则回到步骤 4。
  13. \((x,u)\)\((x,v)\) 合并为 \((u,v)\)
  14. 检查此时 \((u,v)\) 所在切边等价类大小是否为 \(1\),如果是则令 \(A=A\cup\{(u,v)\}\),回到步骤 4。
  15. 此时所有非空的 \(L_i\) 构成 \(G\) 的 3-边连通分量的一个划分。

4.1.6 演示

下面用粉色点表示 2 度点,不同颜色边表示不同 \(\stackrel c\sim\) 等价类,黑色边表示大小为 \(1\) 的等价类,紫色表示已经完成划分的 3-边连通分量。


4.1.7 时间复杂度

分析上述算法的时间复杂度。

根据算法流程,每次应用定理 4.1.3 或 4.1.4 时图的点数就会减小 1,因此步骤 4 的总运行次数为 \(O(|V|)\)

考虑步骤 8 中集合的合并。用链表维护每个 \(v\)\(L_v\),因为只需要枚举 \(L_v\) 的所有顶点以及合并两个集合。于是步骤 8 总时间复杂度 \(O(|V|)\)

考虑步骤 11 中的枚举顶点。当我们枚举 \(L_x\) 的顶点后,点 \(x\) 就会被单独拿出来,而 \(L_x\) 中的点自己形成一个 3-边连通分量。这说明 \(G\) 中一个顶点至多被枚举到一次,故这部分总时间复杂度为 \(O(\sum d(v))=O(|E|)\)

所有步骤中并查集调用总次数为 \(O(|E|)\),故这部分总时间复杂度为 \(O(|E|\alpha(|V|))\)

剩下的步骤时间复杂度均为单次操作 \(O(1)\),总时间复杂度 \(O(|V|)\)

综上,整个算法的时间复杂度为 \(O(|E|\alpha(|V|))\)

实际上 3-边连通算法有现行做法,不过限于篇幅原因就不再介绍。上面的做法所需引理较少,解法也比较自然,实际测试中运行效率也很高。

4.2 3-点连通

4.2.1 引入

在 2-点连通时,我们引入了描述点双连通分量的树结构——块割树和圆方树。在研究 3-点连通时,我们也有对应的树结构——SPQR 树。

在引入 SPQR 树的定义之前,利用定理 2.5.3 可得任意两个 3-点连通分量至多交于两个点。这两个点可以有边相连,也可以无边相连。

4.2.2 边的等价性

定义 4.2.1(割点对). 对于 2-点连通无向简单图(下略)\(G\),若某个二元点集 \(\{u,v\}\)\(G\) 的点割集,则称 \((u,v)\) 是一对割点对。

在处理 2-点连通分量时,我们利用了边的等价性。在 3-点连通分量时,边仍然具有类似等价性。

我们取两个顶点 \(u,v\),考虑顶点 \(u,v\) 定义的局部关系 \(\rho_{u,v}\)

对于 \(e,f\in E\),称 \((e,f)\in\rho_{u,v}\),当且仅当存在一条经过 \(e,f\) 的路径除了路径端点外不能是 \(u\)\(v\)

定理 4.2.1. \(\rho_{u,v}\) 是等价关系。

证明:若 \((e_1,e_2)\in\rho_{u,v},(e_2,e_3)\in\rho_{u,v}\),则我们将对应两段路径接起来能得到一个经过 \(e_1,e_3\) 的端点非 \(u,v\) 的路径。\(\square\)

考虑 \(\rho_{u,v}\)\(E\) 划分的等价类 \(E_1\sim E_n\),称如下情况为平凡情形:

  1. \(n=1\)
  2. \(n=2\),且其中一个等价类只包含边 \((u,v)\)

定理 4.2.2. 设 \(|G|\ge 4\),对于 \(u,v\in V\)\(\rho_{u,v}\) 是平凡等价关系当且仅当 \((u,v)\) 不是割点对。

证明:若 \(u,v\) 是平凡等价关系,则 \(\forall a,b\in V-\{u,v\}\),显然 \(a,b\) 有不连接 \(u,v\) 的邻边(否则与平凡矛盾),于是这两条边必然是 \(\rho_{u,v}\) 等价的,即 \(a,b\)\(G-\{u,v\}\) 中连通。

\(u,v\) 不是平凡等价关系,于是存在两条不等价的边,根据定义有这两条边在 \(G-\{u,v\}\) 中不连通,于是 \(u,v\) 是割点对。\(\square\)

对于所有非平凡等价关系,我们通过取交能够得到一个全局关系 \(\rho_t\)\(\forall e_1,e_2\in E\),称 \((e_1,e_2)\in\rho_t\),当且仅当对于所有非平凡 \(\rho_{u,v}\),均有 \((e_1,e_2)\in\rho_{u,v}\)

4.2.3 用割点对划分图

\((u,v)\) 是一个割点对。设关系 \(\rho_{u,v}\) 将边集划分为等价类 \(E_1\sim E_n\),设 \(A,B\) 为若干等价类的并,满足 \(A\cap B=\varnothing,A\cup B=E,\min(|A|,|B|)\ge 2\)

定义两张新图 \(G_A,G_B\),其中 \(G_A\) 包含 \(A\) 中所有边再加上 \((u,v)\)\(G_B\) 同理。我们加上的新边被称为虚边,用来表示划分过程。无论原图中是否存在对应的边,虚边是可以有重边的。

不断执行上述划分操作直到无法操作,这样就得到了一张图的原始点三连通分量。

注意到一个环 \(C_n\) 有很多划分方法,本质上是一个 \(n\) 边形的三角剖分。这是我们不希望看到的,我们需要合并这些环。

具体的,对于划分后的两个小图 \(A,B\),如果它们有共同的虚边,那么我们定义 \(A,B\) 合并的结果是将点集合并,将边集合并然后去掉共同虚边。容易发现这是划分的拟过程。

我们将所有可合并的环合并成若干个大环,将所有可合并的偶极图(只有两个点且两点之间连接很多条重边的图)合并成一个大偶极图,最终结果就是 \(G\) 的点三连通分量。

4.2.4 SPQR 树

所有点三连通分量可以分为四类:

  • Q(Trivial):2 个点一对重边的图,作为边界情况讨论。由于我们设 \(G\) 是简单图,所以我们这里忽略 Q 情形。
  • S(Serial):至少 3 个点的环。环中的每一条边可以是原图中的边,也可以是虚边。
  • P(Parallel):至少 3 条边的偶极图。由于简单图的假设,因此其中至多一条边是原图的边,其余边均为虚边。
  • R(Rigid):3-点连通子图,其中每条边可以是原图中的边或者虚边。

定义 4.2.2(SPQR 树). SPQR 树 \(T=(V,E)\),其中 \(V\) 表示所有点三连通分量的集合,根据上面的结论可以分为四类。 对于 \(u,v\in T\)\((u,v)\in E\) 当且仅当 \(u,v\) 具有共同虚边,即它们是可合并的。

定理 4.2.3. 对于 2-点连通无向图 \(G\),其 SPQR 树是一棵树。

定理 4.2.3. 对于 2-点连通无向图 \(G\),其 SPQR 树是唯一确定的。

4.2.5 构造

根据定义,我们可以得到一个 \(O(|V||E|^2)\) 的做法——不停寻找原图的割点对,将原图划分为更小的三连通分量。

事实上 SPQR 树可以线性时间内构造,限于篇幅就不展开。

4.2.6 应用

SPQR 树有较为广泛的应用,下面举两个例子:

. 给定 2-点连通无向简单图 \(G\),找出其所有割点对。

考虑 \(G\) 的 SPQR 树,注意到 \((u,v)\) 是割点对当且仅当 \(\rho_{u,v}\) 不平凡,而不平凡的 \(\rho_{u,v}\) 在最终 SPQR 树中的表现只有两种:

  • 作为 SPQR 树中的一条虚边。
  • 作为圈图的虚边被合并。

因此我们可以得到:\((u,v)\) 是割点对,当且仅当 \((u,v)\) 是 SPQR 树上的虚边,或 \(u,v\) 是 SPQR 树中 \(S\) 型顶点(环)中的不相邻顶点(因为它们被合并了)。

. 3-点连通平面图,又称多面体图,是表示凸多面体结构的图,可以理解为凸多面体的球极投影。

定理 4.2.5(Steinitz). \(G\) 为表示凸多面体结构的图,当且仅当 \(G\) 是 3-点连通平面图。

定理 4.2.6. 若 \(G\) 是多面体图,则当选定无穷平面后,在拓扑意义下 \(G\) 具有唯一平面嵌入。

这些定理和本文关系不大,这里不做展开。

5 总结

本文介绍了图的连通性理论,从连通性的定义出发,介绍了 \(k\)-连通问题的一般解法,以及 \(k\) 较小时的特殊做法和应用。本文挑选的做法在 OI 中都是有实际应用的。

同时,本文对大家熟悉的 2-点/边连通问题作了更本质的讲解,并作了一个自然的推广——3-点/边连通问题。希望大家再阅读本文后能对 2-连通问题有更深入的了解,对 3-连通问题有一定的认知。

不过,对于 \(k\)-点连通分量的问题,目前并没有高效实用的做法。希望本文能起到一个抛砖引玉的作用,吸引更多读者研究图论以及组合数学类的问题。

感谢大家阅读!

50KB 巨著

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/981795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026高考艺术文化课辅导机构推荐:宁夏五大诚信艺考文化课培

在2026年高考艺术生文化课冲刺的关键阶段,选择一家靠谱的辅导机构直接关乎升学成败。艺术生往往面临专业集训后文化课断层、时间紧任务重、考点抓不准等痛点,急需针对性强、提分效率高的解决方案。以下结合宁夏本地及…

《网络流的一些建模方法》阅读笔记

from 姜志豪 2016 年的论文 1 引言 网络流是一种在 OI 种应用广泛的算法,常见网络流问题有最大流、最小费用最大流、上下界网络流等。网络流问题的巧妙之处一般不在于算法实现过程,而是建模的方法。本文将常见的网络…

2025年有哪些知名的四川水库大坝安全监测热门品牌榜

2025年四川水库大坝安全监测热门品牌榜:技术与服务并重的五大推荐行业背景与市场趋势随着我国水利基础设施建设的不断推进,水库大坝安全监测已成为水利工程管理中的核心环节。四川省作为我国水利资源大省,拥有众多大…

markdown 详解

Markdown 是由约翰・格鲁伯(John Gruber)与亚伦・斯沃茨(Aaron Swartz)于 2004 年设计的轻量级标记语言,核心目标是 “易读易写”—— 既可以用纯文本格式快速编写,又能通过简单标记语法转换为结构化的 HTML 等格…

2025年质量好的PC/ABS改性工程塑料/PC/PBT改性工程塑料TOP品牌厂家排行榜

2025年质量好的PC/ABS改性工程塑料/PC/PBT改性工程塑料TOP品牌厂家排行榜行业背景与市场趋势随着全球制造业向高端化、智能化方向发展,工程塑料作为关键基础材料,在汽车、电子电器、新能源等领域的应用日益广泛。PC/…

2025年知名的苏式仿古铝瓦实力厂家TOP推荐榜

2025年知名的苏式仿古铝瓦实力厂家TOP推荐榜 行业背景与市场趋势 随着中国传统建筑文化的复兴与现代建筑技术的融合,苏式仿古建筑在文旅地产、商业街区、园林景观等领域的需求持续增长。作为仿古建筑的重要材料,苏…

2025年靠谱的ENF级生态板厂家推荐及采购指南

2025年靠谱的ENF级生态板厂家推荐及采购指南行业背景与市场趋势随着消费者环保意识的不断提升和家居健康需求的日益增长,ENF级(≤0.025mg/m)生态板已成为2025年家居建材市场的热门选择。作为目前全球最严格的甲醛释…

2025年比较好的直立锁边金属屋面/铝镁锰金属屋面厂家最新推荐排行榜

2025年比较好的直立锁边金属屋面/铝镁锰金属屋面厂家推荐排行榜行业背景与市场趋势随着建筑行业对轻量化、耐久性和美观性要求的不断提高,直立锁边金属屋面和铝镁锰金属屋面系统在2025年迎来了更广阔的市场空间。这类…

2025年热门的F4星板材厂家推荐及选购参考榜

2025年热门的F4星板材厂家推荐及选购参考榜 开篇:行业背景与市场趋势 随着消费者对家居环保和健康需求的不断提升,F4星板材作为目前全球最严格的环保标准之一,正逐渐成为高端家装市场的。F4星标准源自日本,其甲醛…

2026年十大口碑不错的高考艺术文化课辅导机构推荐,实力强的

在2026年高考艺术生文化课冲刺的关键阶段,一个专业的辅导机构是艺考生实现专业+文化双上线的核心保障。面对宁夏及周边地区众多的艺考文化课辅导机构,如何避开填鸭式教学不分层辅导的坑?以下依据机构特色与教学成效…

2025年知名的水泵控制配电箱厂家最新推荐权威榜

2025年知名的水泵控制配电箱厂家推荐权威榜行业背景与市场趋势随着工业自动化水平的不断提升和智慧水务建设的加速推进,水泵控制配电箱作为关键电气设备,市场需求持续增长。2025年,全球水泵控制配电箱市场规模预计将…

XTOOL Anytoyo SK1: Simplify Toyota 8A/4A Smart Key Programming with X100 PAD3 KC501

Solving Toyota Smart Key Programming Challenges: Introducing the XTOOL Anytoyo SK1 The Frustration of Smart Key Programming for 2013+ Toyota Models For European and American automotive professionals an…

2025年知名的实木板用户好评厂家排行

2025年知名的实木板用户好评厂家排行实木板行业背景与市场趋势随着消费者对家居环保和健康需求的不断提升,实木板材市场近年来呈现出蓬勃发展的态势。2025年,中国实木板材市场规模预计将达到2000亿元,年增长率保持在…

2025年银川十大艺考文化课冲刺班排行榜,新测评精选艺术生文

为帮助艺考生及家长高效锁定适配自身需求的文化课辅导机构,避免选型走弯路,我们从教学针对性(如考点精准度、分层方案适配性)、提分效果数据(含短期提分幅度、录取率)、全周期服务质量(覆盖学情评估到志愿填报)…

2025年宜兴露营基地排名:今夕何夕客栈自然度假新体验

在城市生活的快节奏中,越来越多的人渴望逃离喧嚣,投身自然怀抱。宜兴凭借得天独厚的山水资源,成为长三角地区露营爱好者的热门目的地。本文将为你盘点2025年宜兴值得推荐的三大露营基地,带你领略自然与休闲的融合。…

2025年中国液压龙门剪服务厂商十大排名:液压龙门剪制造企业

本榜单基于全维度市场调研与真实用户口碑,深度筛选出十家专注液压龙门剪领域的标杆企业,从技术实力、服务覆盖、案例沉淀等维度综合评估,为废钢回收、金属加工企业精准匹配适配的设备供应商,助力降本增效与合规生产…

2025年比较好的耐酸涂料厂家最新实力排行

2025年比较好的耐酸涂料厂家实力排行行业背景与市场趋势随着化工、冶金、电力等工业领域的快速发展,耐酸涂料作为特种防护材料的重要性日益凸显。2025年,全球耐酸涂料市场规模预计将达到85亿美元,年复合增长率保持在…

深入解析 TCP 协议:从细节到实践的全方位解读 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

大模型预训练过程中的 MinHash 学习笔记

大模型预训练过程中的 MinHash 学习笔记 背景:为什么要学这玩意儿? 之前在做大模型训练数据清洗的时候,遇到了一个很头疼的问题:10 亿条文本,怎么快速找出重复的? 一开始想得很简单,直接用 Python 的 set() 去重…

2025年靠谱的钢木实验台/全钢实验台厂家最新热销排行

2025年靠谱的钢木实验台/全钢实验台厂家热销排行实验室家具行业现状与市场趋势随着我国科研投入持续增加和教育体系不断完善,实验室设备行业迎来了快速发展期。2023年数据显示,国内实验室家具市场规模已突破200亿元,…