无向图的割点(关节点)

本文介绍了无向图中割点(关节点)的概念,即对于任意两点u,v,如果必须经过点w才能构成从u到v的路径,则w是割点。通过一次深度优先遍历(DFS),可以确定割点。遍历过程中,记录每个点的a,b表,并根据树边和回边的概念判断割点。提供了一段伪代码详细解释了DFS算法的过程,用于找出所有割点。

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

无向图的割点,也称关节点。对于无向图中不同的两点u,v,如果必须经过点w,才能构成一条从u到v的路径,那么称该w点就是割点(关节点)。关节点的求解只需要一次关于图的深度优先遍历(完成一次DFS等于生成一棵树,第一个访问的节点是根结点)。在这次DFS中,按照遍历的顺序记录每个点i的a,b表。其中,a表和b表的计算如下:


a[i]=predfn ; //predfn是点的深度遍历访问顺序,在深度遍历中一次确定

b[i]=min(a[i], b[j], a[j]);  // (i,j)属于图的边


另外,还需要明白两个“边”概念:

1. 树边:(i,j)边,i已被访问,j未被访问。

2. 回边: (i,j)边,i和j均被访问,但j的访问顺序先于i,即a[j]>a[i]。同时,j不能是i的父节点,即a[j]-a[i]!=1.


清楚了上面的概念后,请看下面的伪代码(出自《算法设计与分析》中第九章中的9.3.3小结,免费书的链接http://download.youkuaiyun.com/detail/u010232171/8484509

ps:书中的伪代码可能因为排版的问题,容易造成对代码的误解。现在将伪代码重新编辑一

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值