双连通分量

本文深入解析了图论中的点双连通和边双连通概念,阐述了点双连通分量与割点的关系,以及边双连通分量的计算方法。介绍了使用Tarjan算法求解点双连通分量的过程,以及通过DFS计算边双连通分量的技巧。

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

概念

点双连通: 在一个连通图中选任意两点,如果它们之间至少存在两条“点不重复”的路径,成为点双连通。

点双连通分量: 一个图中的点双连通极大子图。点双连通分量是一个“可靠”的图,去掉任意一个点,其他点仍然是连通的。也就是说,点双连通分量中没有割点。

边双连通: 在一个连通图中任意选两点,如果它们之间至少存在两条“边不重复”的路径,成为边双连通。

边双连通分量: 一个图中的边双连通极大子图。边双连通图中没有割边。


点双连通分量

  求解点双连通分量和求割点密切相关。不同的点双连通分量最多只有一个公共点,即某一个割点;任意一个割点都是至少两个点双连通分量的公共点。
   一条边相连的两个点视为一个点双。
  计算点双连通分量一般用Tarjan算法,下面是算法的思路。
  进行割点计算的DFS,在找到一个割点的时候已经完成了一次对某个极大双连通子图的访问。那么在进行DFS的过程中,把遍历过的点保存起来,就可以得到这个点双连通分量。
  DFS的访问过程用栈来保存是最合理的,所以,在求解割点的过程中,用一个栈保存遍历过的边,然后每当找到一个割点,即满足关系low[v] >= num[u]的点,就将栈里的边拿出来。
  注意,放入栈中的不是点,而是边。 因为一个边只属于一个点双连通分量,而一个割点属于多个点双连通分量。如果进入栈中的是点,这个割点弹出来之后就只能给一个点双连通分量,它连接的其他双连通分量就会少了这个点。
  练习:POJ 1523 SPF


边双连通分量

  边双连通分量的计算用到了缩点的技术。
  找出图G的所有边双连通分量。在DFS过程中,图G所有的点都生成一个low值,low值相同的点必定在同一个边双连通分量中。DFS结束后,有多少low值就有多少个边双连通分量。
  单个点视为一个边双。
  练习:POJ 3352 Road Construction

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值