0
点赞
收藏
分享

微信扫一扫

Tarjan求割点和桥学习笔记

静鸡鸡的JC 2022-01-24 阅读 53

Tarjan求割点和割边

强连通分量:
若图 G G G 中的点两两可达,则称图 G G G 为强连通。
强连通分量的定义:极大的强连通子图。

割点:
在一个无向连通图图中,删掉顶点 u u u 及其相连的边以后,这个图不连通,点 u u u 为此图割点。

重连通图:
1.一个不含割点的连通图称为重联通图。

2.对于重联通的无向图来说,每对顶点至少存在两条路径。

3.在网络通信中,图中不应该有割点。

求割点:
1.暴力判断图连通性, O ( n ( n + e ) ) O(n(n+e)) O(n(n+e))

2.用Tarjan寻找割点时间复杂度为 O ( n + e ) O(n+e) O(n+e)
Tarjan:
首先 d f s dfs dfs 寻找一颗无向连通图 d f s dfs dfs 遍历后形成的深度优先生成树。
在深度优先生成树中的某个顶点 u u u 要么是根,要么不是根:

1.若顶点 u u u 为生成树的根:

1.1充要条件: u u u 是割点的充要条件: u u u 有两颗或以上的子树。
1.2判定:以 u u u 相连其中一个顶点 d f s dfs dfs 遍历,若能遍历完,则 u u u 不为割点

2.若顶点 u u u 不为根节点:

2.1充要条件:设 v v v u u u 的一个孩子, u u u 是割点的充要条件:在 v v v v v v 的子孙节点和 u u u 的祖先的节点之间不存在任何回边。

2.2判定条件:

2.2.1声明:
d f n i dfn_{i} dfni 为第 i i i 个点的 d f s dfs dfs 序。
l o w i low_{i} lowi 为第 i i i 个点出发能到达的点(双亲除外)的最小深度优先数,定义为:
l o w u = min ⁡ ( d f n u , min ⁡ ( l o w v ∣ v 是 u 的 孩 子 ) , min ⁡ ( d f n v ∣ 在 生 成 树 , ( u , v ) 是 一 条 回 边 ) ) low_{u}=\min(dfn_{u},\min(low_v|v是u的孩子), \min (dfn_v|在生成树,(u,v)是一条回边)) lowu=min(dfnu,min(lowvvu),min(dfnv(u,v)))

2.2.2定理:
u u u 不是深度优先生成树的根的前提下,若 u u u 存在一个孩子 v v v 使得 d f n u ≤ l o w v dfn_{u} \le low_{v} dfnulowv 成立,则 u u u 是割点(若 d f n u > l o w v dfn_{u}> low_{v} dfnu>lowv ,则证明以 v v v 为根节点的子树中必有一个节点与 u u u 的祖先相连,则 u u u 必定不是割点)。

求割边(桥):
1.割边定义:
当一个无向连通图 G G G 删去一条边 e e e 后剩下的点不能两两到达,则边 e e e 为图 G G G 的割边(即 G − e G-e Ge 不为连通图)。

2.求割边:
2.1定理:若边 ( u , v ) (u,v) (u,v) 为割边,则点 u u u 和点 v v v 为割点,若点 u u u 和点 v v v 为割点,边 ( u , v ) (u,v) (u,v) 不一定为割边。
2.2求解:假设当前求解的边为 ( u , v ) (u,v) (u,v) ,且 d f n u < d f n v dfn_{u}<dfn_{v} dfnu<dfnv (即点 v v v 为点 u u u 的儿子),若点 v v v 或点 v v v 的子孙节点有一条连向 u u u 的祖先的边,则边 ( u , v ) (u,v) (u,v) 不为割边,否则边 ( u , v ) (u,v) (u,v) 为割边,即:
l o w v > d f n u − − > 边 ( u , v ) 为 割 边 low_{v} >dfn_{u}-->边(u,v)为割边 lowv>dfnu>(u,v)

举报

相关推荐

0 条评论