算法简介:求图的割边

算法简介

算法简介

图割边

相关概念

  • 连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图.
  • 图的割点:如果去掉一个点以及与它连接的边,该点原来所在的图被分成两部分(不连通),则称该点为割点.
  • 图的割边:在一个无向连通图中,如果删掉某条边后,该图不在连通,则称该边为割边.

相关算法

代码示例图
  • 原图
    在这里插入图片描述

  • 深度遍历示意图
    在这里插入图片描述

1. tarjan算法
* 时间复杂度:
  1. 深度优先遍历或广度优先遍历:O(N(N+M))
  2. tarjan算法:
    用邻接矩阵存储:O(N^2)
    用邻接表存储:O(N+M)
* 算法特点:
  1. 需要用DFS遍历图的所有顶点,记录num[顶点编号] = 顶点深度遍历时间戳
  2. 当遍历到顶点u时,枚举顶点u的所有出边,比如v,如何知道v不经过父节点u能否回到祖先节点呢?对子节点v再次DFS
  3. 需要记录每个子节点v在不经过父节点u的情况下,能够回到的最小时间戳(若存在v的父节点不止u一个的情况下):lows[v] = min(lows[v],nums[f])
  4. v回溯的时候获取当前节点的最小时间戳low[u]=min(low[u],low[v]),如果low[v]>=num[u],表示v不能不经过u回到祖先,即u为割点,如果low[v]>num[u],表示v不经过u,也没有其他的父节点,即u<->v是割边
* 代码示例

图割边–tarjan

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值