双连通分量

来源:互联网 发布:地下城与勇士300k网络 编辑:程序博客网 时间:2024/04/30 04:23

双连通分量

无向图的双连通分量跟有向图的连通分量有点像。

先说说一些定义。

时间戳:以某个点vi为起点,dfs到的其他点vj的时间。通常用pre表示

连通图:每两个点间都有路径存在的无向图就叫连通图。

割顶(cut vertex):也叫割点。在某个连通图G中,若去掉某个点i,该图G无法保持所有点连通,那这个点就是割顶。

桥(bridge):类似的,在某个连通图G中,若去掉某个边e,该图G无法保持所有点连通,那这个边就叫桥。

点-双连通

若一个无向图的点两两间都有两条不相交(经过的点不一样)的路径,那么我们就称这个无向图是点-双连通的。条件等价于任意两条边都在一个简单环内。

不难发现,若一个无向图是点-双连通图,那么就代表这个图内部无割顶(既然有两条不相交的路径,去掉任何一个点都还是可以连通的)。

边-双连通:

类似的,若一个无向图的点两两间都有两条不重合(这个要求低一点,点可以重复,但边不行)的路径,那么我们就称这个无向图是边-双连通的。

在边-双连通图中,去掉任何一条边,这个图都还是连通的。

下面进入正题:

​ 对于一张无向图,它的点-双连通的极大子图称为双连通分量(Biconnected Component,BCC)。

​ 而边-双连通的极大子图称为边-双连通分量(edge-biconnected component)。

双连通

​ 如上图:虽然{3,4,5}也是点-双连通的,但{3,4,5,6,7}才叫双连通分量,这就是极大子图的意义。另外一个双连通分量是{1,2,3}。还有,整个图{1,2,3,4,5,6,7,8}是边-双连通分量。

​ 还如上图:对于整个图来说,3是割顶。不难发现作为割顶的点会同时存在于多个双连通分量里。而其他点只可能存在于一个双连通分量里。

​ 找连通分量首先要会找割顶。

​ 随便找一个点作为根,强行把无向图转换为一棵树。连回祖先的边我们叫它反向边(要与有向图的反向边区分开)。

​ 不难发现:若某个点v的后代都没有反向边连回v的祖先,那么就可以得出v是割顶的结论。

​ 用时间戳就可以知道祖孙关系。

​ 若发现某个点的后代最多只能连回它自己,则说明这个点及它的后代就是一个双连通分量。

注意:用反向边更新时,不能用连回父亲的边,这条边没意义。

例题:UVaLive3523(这里题解)

0 0
原创粉丝点击