造价通

反馈
取消

热门搜词

造价通

取消 发送 反馈意见

点双连通分量

2018/06/19138 作者:佚名
导读: 若一个无向图中的去掉任意一个节点都不会改变此图的连通性,即不存在割点,则称作点双连通图。一个无向图中的每一个极大点双连通子图称作此无向图的点双连通分量。注意一个割点属于多个点双连通分量。 为什么点连通分量必须存边 这是初学者常见的问题,证明如下:首先要明确边双连通分量和点双连通分量的区别与联系1.二者都是基于无向图2.边双连通分量是删边后还连通,而后者是删点3.点双连通分量一

若一个无向图中的去掉任意一个节点都不会改变此图的连通性,即不存在割点,则称作点双连通图。一个无向图中的每一个极大点双连通子图称作此无向图的点双连通分量。

注意一个割点属于多个点双连通分量。

为什么点连通分量必须存边

这是初学者常见的问题,证明如下:

首先要明确边双连通分量和点双连通分量的区别与联系

1.二者都是基于无向图

2.边双连通分量是删边后还连通,而后者是删点

3.点双连通分量一定是边双连通分量(除两点一线的特殊情况),反之不一定

4.点双连通分量可以有公共点,而边双连通分量不能有公共边

由于4,显然,求解边双连通分量只需先一遍dfs求桥,在一遍dfs求点(不经过桥即可)

但如果求点双连通分量,就要更复杂:

1.如果存边

根据dfs的性质,每条边都有且只有一次入栈,而由于性质3和性质4,点双连通分量没有公共边,所以弹出这个点双连通分量里的所有边就一定包含这里面的所有点,而且一定不含其他点双连通分量的边。因此求解时只需弹出这个点双连通分量里的所有边,并记录这些边的点即可(要判重,一个点可出现多次),正确。

2.如果存点

根据dfs的性质,每个点同样有且只有一次入栈。但注意,由于性质4,你将一个点出栈后,还可能有别的点双连通分量包含它,错误。

*文章为作者独立观点,不代表造价通立场,除来源是“造价通”外。
关注微信公众号造价通(zjtcn_Largedata),获取建设行业第一手资讯

热门推荐

相关阅读