Depth First Search Neil Tang 4/1/2010

9
CS223 Advanced Data Structures and Algorithms 1 Depth First Search Depth First Search Neil Tang Neil Tang 4/1/2010 4/1/2010

description

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. - PowerPoint PPT Presentation

Transcript of Depth First Search Neil Tang 4/1/2010

Page 1: Depth First Search  Neil Tang 4/1/2010

CS223 Advanced Data Structures and Algorithms 1

Depth First Search Depth First Search

Neil TangNeil Tang4/1/20104/1/2010

Page 2: Depth First Search  Neil Tang 4/1/2010

CS223 Advanced Data Structures and Algorithms 2

Class OverviewClass Overview

Breadth First Search (BFS)

Depth First Search (DFS)

DFS on an undirected graph

DFS on a digraph

Strong connected components

Page 3: Depth First Search  Neil Tang 4/1/2010

CS223 Advanced Data Structures and Algorithms 3

BFSBFS

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.

Page 4: Depth First Search  Neil Tang 4/1/2010

CS223 Advanced Data Structures and Algorithms 4

DFSDFS

A generalized pre-order traversal

Time Complexity: O(|V|+|E|)

Page 5: Depth First Search  Neil Tang 4/1/2010

CS223 Advanced Data Structures and Algorithms 5

DFS on An Undirected GraphDFS on An Undirected Graph

DFS(A): A,B,C,D,E

Page 6: Depth First Search  Neil Tang 4/1/2010

CS223 Advanced Data Structures and Algorithms 6

DFS on An Undirected GraphDFS 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.

Page 7: Depth First Search  Neil Tang 4/1/2010

CS223 Advanced Data Structures and Algorithms 7

DFS on A DigraphDFS on A Digraph

DFS(B): B,C,A,D,E,F;

DFS(H): H,J,I;

DFS(G): G.

Page 8: Depth First Search  Neil Tang 4/1/2010

CS223 Advanced Data Structures and Algorithms 8

Strongly Connected ComponentsStrongly 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.

Page 9: Depth First Search  Neil Tang 4/1/2010

CS223 Advanced Data Structures and Algorithms 9

Strongly Connected ComponentsStrongly 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