我正在为即将进行的采访做一些练习,我发现了一个练习题,要求用O(V + E)算法来判断一个图是否是双连的。普林斯顿的This页面说,如果图形没有关节顶点,则图形是双连的,其中关节顶点是顶点,其移除将增加连通分量的数量(因为双连通图应该有一个连通分量)。 / p>
这个问题的一个常见解决方案是使用额外的跟踪进行DFS,以查看是否有任何顶点是关节顶点。 This页面表示如果
,顶点是关节顶点如果我们选择任何节点作为根节点,它们都有2个或更多个子节点,那么它将是一个铰接顶点,从而使图形不被连接。这是查找连接组件的常用算法,因此假设我误解了某些内容。我实际需要检查根节点以查看图形是否是双连接的?
答案 0 :(得分:2)
你应该进行深度优先搜索,这意味着DFS树总是看起来像
1 4
| |
2---3
因为您无法浏览1--4
链接,直到您完成了2
无需通过1
即可到达的所有内容,并且您赢了&# 39; t添加1--4
因为它与树边缘形成一个循环。此树中没有节点有两个子节点(1
是根)。