图G的关节顶点是删除的顶点 断开G.设G是具有n个顶点和m个边的图。给一个 用于求G的顶点的简单O(n + m)算法 关节顶点 - 即。 ,其删除不会断开G.
让首先没有。顶点为n,然后在移除顶点后,我们应该有n-1个边。 我使用dfs遍历图表并计算否。顶点。如果计数小于n-1,则它是关节顶点,所以我将其添加回来。 否则它不是,我增加一个柜台。
找到非关节顶点的更好方法,因为这种方法非常慢,我需要O(n + m)。
答案 0 :(得分:3)
使用DFS(深度优先搜索)是一种很好的开始方式,因为它本身已经是O(V + E)。因此,我们的想法是遍历图表一次,并能够找出其属性。旁注:每当进行图形算法时认为 循环!
证明清晰度顶点的条件(在DFS的心态下):
根节点是一个关联点 iff 它有多个孩子
Leaf 永远不是一个发音点
非叶子,非根节点 u
是一个关节点 iff 没有非树边缘超过u
来自某个u
这涵盖了所有情况:根节点,叶子和其间的任何其他节点。
对于非关节顶点,我们只需要找到证明相反的条件:
u
是非关节点 iff 非树边缘超过{{1} }来自u
数字3可以理解为:如果节点u
, a.k.a。之间的两个分裂树之间存在另一个连接。
Here is some articulation vertex code。你可能想要调整一下。