其他分享
首页 > 其他分享> > 双连通域分解

双连通域分解

作者:互联网

对于无向图G。若删除顶点v后G所包含的连通图增多,则称v为切割节点(cut vertex)或关节点(articulation point)。不含任何关节点的图被称为双连通图。任一无向图都都可以看做是若干个极大的双连通子图组合而成,这样的子图被称为双连通域(bi-connected component)。

下图中c就为关节点

蛮力算法

先通过BFS或者DFS搜索出图G所含连通域的数目;然后逐一枚举每一个顶点v,暂时将它从图G中删除。在此搜索统计出此时的图G\{v}所含连通域的数目。如果顶点v是关节点,当且仅当图G\{v}包含的连通域多于图G。

但算法非常耗时,为O(n(n+e))

可行算法

在经过DFS搜索的搜索树中,DFS树中的叶节点,不可能成为原图中的关节点。如DFS树的根节点若至少有两个分支,则必是一个关节点。

 

内部节点的判定铜过通过判断某节点的真子树和真祖先。如下图如节点c的移除导致其某一课(比如以D为根的)真子树与其真祖先(比如A)之间无法连通,则C必为关节点。反之,若C的所有真子树都能(如以E为根的子树那样)与C的某一真祖先连通,则C就不可能是关节点。

 

 

标签:连通,关节点,DFS,真子,分解,搜索,节点
来源: https://blog.csdn.net/qq_37291934/article/details/89682256