我不明白这个算法如何告诉我图是否是双连的

时间:2016-12-22 00:13:14

标签: algorithm graph connected-components

我正在为即将进行的采访做一些练习,我发现了一个练习题,要求用O(V + E)算法来判断一个图是否是双连的。普林斯顿的This页面说,如果图形没有关节顶点,则图形是双连的,其中关节顶点是顶点,其移除将增加连通分量的数量(因为双连通图应该有一个连通分量)。 / p>

这个问题的一个常见解决方案是使用额外的跟踪进行DFS,以查看是否有任何顶点是关节顶点。 This页面表示如果

,顶点是关节顶点
  • V是一个至少有2个孩子的根节点 OR
  • V有一个孩子无法达到V
  • 的祖先

但是,根节点的条件对我来说没有意义。以下是双连接图的示例:enter image description here

如果我们选择任何节点作为根节点,它们都有2个或更多个子节点,那么它将是一个铰接顶点,从而使图形不被连接。这是查找连接组件的常用算法,因此假设我误解了某些内容。我实际需要检查根节点以查看图形是否是双连接的?

1 个答案:

答案 0 :(得分:2)

你应该进行深度优先搜索,这意味着DFS树总是看起来像

1   4
|   |
2---3

因为您无法浏览1--4链接,直到您完成了2无需通过1即可到达的所有内容,并且您赢了&# 39; t添加1--4因为它与树边缘形成一个循环。此树中没有节点有两个子节点(1是根)。