90 likes | 223 Views
Depth First Search Neil Tang 4/1/2010. Class Overview. Breadth First Search (BFS) Depth First Search (DFS) DFS on an undirected graph DFS on a digraph Strong connected components. BFS.
E N D
Depth First Search Neil Tang4/1/2010 CS223 Advanced Data Structures and Algorithms
Class Overview • Breadth First Search (BFS) • Depth First Search (DFS) • DFS on an undirected graph • DFS on a digraph • Strong connected components CS223 Advanced Data Structures and Algorithms
BFS • Visit the nodes that are one-hop away from the starting node one by one, then the nodes that are two-hop away, then …, i.e., layer by layer. • A queue should be used to implement the BFS. • Make sure each node is visited exactly once. CS223 Advanced Data Structures and Algorithms
DFS • A generalized pre-order traversal Time Complexity: O(|V|+|E|) CS223 Advanced Data Structures and Algorithms
DFS on An Undirected Graph DFS(A): A,B,C,D,E CS223 Advanced Data Structures and Algorithms
DFS on An Undirected Graph • DFS can be used to find if an undirected graph is connected or not. • DFS can also be used to find all the connected components. CS223 Advanced Data Structures and Algorithms
DFS on A Digraph DFS(B): B,C,A,D,E,F; DFS(H): H,J,I; DFS(G): G. CS223 Advanced Data Structures and Algorithms
Strongly Connected Components • Perform DFS until all nodes are visited. • Construct an auxiliary graph Gr. • Perform DFS on Gr in the reverse order of the index numbers. CS223 Advanced Data Structures and Algorithms
Strongly Connected Components DFS(G): G; DFS(H): H,I,J; DFS(B): B,A,C,F; DFS(D): D; DFS(E): E. Strongly Connected Components: (G), (H,I,J), (B,A,C,F),(D),(E) Gr The forest after the first DFS CS223 Advanced Data Structures and Algorithms