Search 移除顶点后检查图形是否连接

Search 移除顶点后检查图形是否连接,search,graph,dynamic-programming,graph-algorithm,depth-first-search,Search,Graph,Dynamic Programming,Graph Algorithm,Depth First Search,对于以下问题,我将非常感谢您的建议/算法: 考虑一个图,其中V个顶点由E个边连接(V,E对于每个步骤,存储分区图的数量。对于初始图,它是通过执行完全遍历(DFS或BFS)来完成的从初始顶点开始,而不是从尚未覆盖的顶点重复遍历。如果分区数是在移除顶点的次数大于1的情况下,您能否更详细地了解如何找到分区数的变化,也许可以提供伪代码?我不太明白此解决方案的复杂性如何作为DFS的小于E^V的上限。遍历连接到一个邻居的所有节点。如果访问了所有其他邻居,则删除顶点不会分割图。如果未访问某些邻居,则将分区数增

对于以下问题,我将非常感谢您的建议/算法:


考虑一个图,其中V个顶点由E个边连接(V,E对于每个步骤,存储分区图的数量。对于初始图,它是通过执行完全遍历(DFS或BFS)来完成的从初始顶点开始,而不是从尚未覆盖的顶点重复遍历。如果分区数是在移除顶点的次数大于1的情况下,您能否更详细地了解如何找到分区数的变化,也许可以提供伪代码?我不太明白此解决方案的复杂性如何作为DFS的小于E^V的上限。遍历连接到一个邻居的所有节点。如果访问了所有其他邻居,则删除顶点不会分割图。如果未访问某些邻居,则将分区数增加1,并从一些未访问的邻居开始重复遍历过程。请注意,如果只有一个邻居如果未被访问,则无需进行最后一次遍历(从它开始)
void dfs(int start, int curr, int end):
    if (curr == 0): // start condition, i.e. curr not yet initialized
        curr = start
    if (curr == end):
        return true
    else:
        for (int v : edges[curr]):
            dfs(start, v, end)
    return false