图的连通性

1、无向图的连通性

连通分量:无向图中,互通的点组成一个连通分量;

性质:所有点都可以互相到达;

割点:将此点删除,会产生至少两个连通分量;

割边:将此边删除,会产生至少两个连通分量;

双连通分量:

点双连通分量:任意两点之间存在至少两条“点不重复”的路径;

边双连通分量:任意两点之间存在至少两条“边不重复”的路径;

性质:点双一定是边双,(充分不必要,除两点一线的特殊情况,此时是点双,但不是边双);

因为不同点之间的边一定不同,不同边所连的点可能相同;

2、有向图的连通性

强连通图:任意两点可以互相到达;

强连通分量:图不是强连通图,将其分为多个子图,子图内部强连通,且已经扩展到最大,这样的子图为强连通分量。

3、tarjan

一般用tarjan算法解决连通问题;

割点,割边:

dfn:时间戳,即dfs的访问顺序;

low[x] : x及其后代所能到达的所有点中最小的dfn;

num[x] : 记录x的时间戳;

注意dfs后,所有点以树的形式储存,可能存在回退边将子代与祖先相连;

记v是x的子节点;

显然当存在low[v] >= num[x]时,x是割点,因为v及其子代最多只能到x,无法到达x的祖先;

显然low[v] > num[x]时,v到x的这条边是割边,因为v及其子代只能通过v到x这条边到x,将此边删除,出现更多的连通分量;

 特殊情况是根结点,当且仅当根节点有至少两个子结点时,才是割点,这是因为根节点的low值永远最小,注意这里的子结点是指树上的子结点,而不是在图上根结点直接连接的点;

点双,边双:

两个点双最多只有一个公共点,这个点是割点,同样,一个割点至少连接两个点双;在求解割点时就已经访问了一个点双,可以将访问的边储存在栈中,每当找到一个割点,就将栈中的所有边弹出,注意不能储存点,因为割点可以属于不同的点双,储存点会使割点只能存在于一个点双之中。

所有low值相同的点在一个边双里面,不同边双之间没有公共边;这是因为,边双里面所有点都可以从一个点出发并再次到达该点,而这个起始点与他父亲的连边是个桥。注意该起始点可以是割点;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值