无向图中的tarjan 算法及其割点、割边

本文介绍了无向图中Tarjan算法的应用,主要用于判断割点和割边。割点是在去掉后导致图不连通的点,割边则是删除后会导致图分裂的边。文章详细解释了割点和割边的定义,并提供了相应的判定算法。此外,还提供了一个实际问题——Poj1144的案例,说明如何运用这些概念解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Dfn数组记录搜索到该点的时间。

Low数组是一个标记数组,记录该点所在的强连通子图所在搜索子树的根节点的Dfn值。

以上是有向图的low、dfn定义,实际上无向图与其类似。

在实际运用之前,先看下列一些定义:

割点:在一连通图内(无向),去掉一点,则该连通图不再连通,而化成数个子图,则该点被称为割点;,有时必须去掉两个或更多的点连通图才能不再连通,达到割点的效果,这些点被称为割点集合

割边:若删掉某边后,原连通图分裂为多个子图;如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合

一般来说,无向图中的tarjan主要围绕这两个问题进行,而判断割点和割边的方程可以通过low与dfn求出

割点的判定:

判定原理:

在一棵DFS树中

根root是割顶当且仅当它至少有两个儿子

其他点v是割顶当且仅当它有一个儿子u,从u或者u的后代出发没有指向v祖先(不含v)的B边, 则删除v以后u和v的父亲不连通, 故为割顶

割点判定算法:

对于DFS树根, 判断度数是否大于1

对于其他点u, 如果不是根的直接儿子,且low[u] >= dfn[P[u]], 则它的父亲v=P[u]是割点

割边的判定:

原理

发现T边(u,v)时若发现v和它的后代不存在一条连接u或其祖先的B边

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值