这是 Steven Skiena 的算法设计中的一个问题(用于面试准备):
图 G 的一个关节顶点是一个其删除断开 G 的顶点。设 G 是一个具有 n 个顶点和 m 个边的图。给出一个简单的 O(n + m) 找到 n 个顶点的删除顺序,这样没有删除会断开图的连接。
这就是我的想法:
在图上运行 DFS 并不断更新每个节点最旧的可达祖先(根据它我们决定它是桥切节点、父可爱节点还是根切节点)
如果我们找到叶节点(顶点)或不是关节顶点的节点,则将其删除。
在 DFS 结束时,我们将在图中留下所有那些被发现是关节顶点的节点
由于关节顶点完好无损,该图将保持连接状态。我已经在几个图表上进行了尝试,它似乎有效,但对于这本书来说感觉太简单了。