Graph 无向图复杂性的DFS研究

Graph 无向图复杂性的DFS研究,graph,time-complexity,depth-first-search,Graph,Time Complexity,Depth First Search,假设我有一个有V个节点和E个边的无向图,如果我用邻接列表表示这个图,如果我有一个在x和y之间的边的表示,我还必须在邻接列表中有一个在y和x之间的边的表示 我知道有向图的DFS有V+E复杂性。对于无向图,它不是有V+2*E复杂性,因为每个边访问了2次吗?如果这是一个不切实际的问题,我很抱歉。我真的想理解这个想法。谢谢,复杂性通常表示为O(| V |+| E |),这不受2的因素影响 但是因子2实际上是存在的。一条无向边仅作用于第2条定向边。例如,(对于连通无向图)的算法是 循环将考虑每一个顶点入射

假设我有一个有V个节点和E个边的无向图,如果我用邻接列表表示这个图,如果我有一个在x和y之间的边的表示,我还必须在邻接列表中有一个在y和x之间的边的表示


我知道有向图的DFS有V+E复杂性。对于无向图,它不是有V+2*E复杂性,因为每个边访问了2次吗?如果这是一个不切实际的问题,我很抱歉。我真的想理解这个想法。谢谢,

复杂性通常表示为O(| V |+| E |),这不受2的因素影响

但是因子2实际上是存在的。一条无向边仅作用于第2条定向边。例如,(对于连通无向图)的算法是

循环将考虑每一个顶点入射到每个顶点一次。由于每个无向边都与两个顶点相关,因此显然会考虑两次


注意,无向DFS不必担心从所有源重新启动。您可以选择任何顶点。

请参见此处的答案。如果图是非循环的,则成本为θ(|V|)。也可以说,在无向图中检测循环需要O(| V |)时间。
visit(v) {
  mark(v)
  for each unmarked w adjacent to v, visit(w)
}