双连通分量解释

双连通分量

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

先说说一些定义。

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

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

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

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

点-双连通

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

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

边-双连通

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

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

 

下面进入正题:

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

​ 而边-双连通的极大子图称为边-双连通分量(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是割顶的结论。

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

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

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

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值