Depth First Search Neil Tang 4/1/2010

Download Report

Transcript Depth First Search Neil Tang 4/1/2010

Depth First Search
Neil Tang
4/1/2010
CS223 Advanced Data Structures and Algorithms
1
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
2
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
3
DFS
 A generalized pre-order traversal
Time Complexity: O(|V|+|E|)
CS223 Advanced Data Structures and Algorithms
4
DFS on An Undirected Graph
DFS(A): A,B,C,D,E
CS223 Advanced Data Structures and Algorithms
5
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
6
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
7
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
8
Strongly Connected Components
Gr
DFS(G): G;
DFS(H): H,I,J;
DFS(B): B,A,C,F;
The forest after the first DFS
DFS(D): D; DFS(E): E.
Strongly Connected Components: (G), (H,I,J), (B,A,C,F),(D),(E)
CS223 Advanced Data Structures and Algorithms
9