图论
dfs 树
无向图 dfs 树上只存在树边和返祖边。
若存在横叉边,则横叉边一定在 dfs 时被优先访问,与它是横叉边不符。
用于无向图 Tarjan 算法的证明及部分构造题。
无向图连通性
- 割点:删去后使连通分量个数增加的节点;
- 割边(桥):删去后使连通分量个数增加的边。
割点和割边都定义在无向图上。
无重边时,\(n\le 2\) 的无向连通图无割点,但 \(n=2\) 的无向连通图有割边。
-
割点:
- 对应点双连通图,定义为不存在割点的无向连通图。
- 无向图的极大点双连通子图称为点双连通分量(V-BCC)。
-
割边:
- 对应边双连通图,定义为不存在割边的无向连通图。
- 无向图的极大边双连通子图称为边双连通分量(E-BCC)。
-
孤立点是点双连通图,也是边双连通图;
-
一条边连接的点对是点双连通图,但不是边双连通图。
一张图是边双连通图的充要条件是每条边都属于至少一个简单环。
- 充分性:删去一条边后,不会影响环上点的可达性,图仍然连通。
- 必要性:若一条边 \((u,v)\) 不在任意简单环上,删去这条边后,\(u\) 不可达 \(v\),图不再连通。
性质
- 点双连通分量:
- 点双不具有传递性;
- 一个节点可能在多个点双中;
- 缩点时,将节点与所在的点双连边,得到一棵树(圆方树)。
- 边双连通分量:
- 边双具有传递性;
- 一个节点只会在一个边双中;
- 缩点时,将有连边节点所在的边双连边,得到一棵树。
求解割点(Tarjan 算法)
\(u\) 为割点,当且仅当存在 \(v\in {\rm subtree}(u)\),\({\rm subtree}(v)\) 内节点不经过 \(u\),无法访问到 \(\mathcal{T}\setminus ({\rm subtree}(v)\cup \{u\})\)。
通过维护 \(\rm low\) 判断,\(u\) 是割点的充要条件为:
\[\sum_{v\in {\rm son}(u)}[{\rm dfn}(u)\le {\rm low}(v)]-[u={\rm root}(\mathcal{T})]\ge 1
\]
证明略。
求解割边(Tarjan 算法)
一条边为割边的必要条件为它是树边。
树边 \((u,v)\) 为割边,当且仅当 \({\rm subtree}(v)\) 内节点不经过 \((u,v)\),无法访问到 \(\mathcal{T}\setminus {\rm subtree}(v)\)。
通过维护 \(\rm low\) 判断,\((u,v)\) 是割边的充要条件为:
\[{\rm dfn}(u)<{\rm low}(v)
\]
证明略。
考虑重边,dfs 时需要记录来源边的编号。
求解点双连通分量
见圆方树。
求解边双连通分量
dfs 时维护一个栈,遇到割边 \((u,v)\) 时,栈顶到 \(v\) 的所有节点构成一个边双。
证明略。
有向图连通性
- 有向图 \(\mathcal{G}\) 中,若 \(u,v(u\ne v)\) 互达,则称 \(u,v\) 是强连通的,他们之间有强连通性。
- 若 \(\mathcal{G}\) 中任意两点都是强连通的,则 \(\mathcal{G}\) 是强连通图。
- \(\mathcal{G}\) 的极大强连通子图称为强连通分量。
性质
- 强连通性具有传递性;
- 强连通分量缩点后得到一张有向无环图。
求解强连通分量
TODO...
圆方树
TODO...
浙公网安备 33010602011771号