Graph Traversal
BFS & DFS
Review of tree traversal methods
a
• Pre-order traversal
• In-order traversal b c
• Post-order traversal f
• Level traversal d e
g h i j
Graph Search Methods
• A vertex u is reachable from vertex v iff there is a
path from v to u.
2
3
8
1
4
5
9
10
6
7 11
Graph Search Methods
(traversal)
• A search method starts at a given vertex v and
visits/labels/marks every vertex that is reachable
from v.
2
3
8
1
4
5
9
10
6
7 11
Graph Search Methods
• Many graph problems solved using a search
method.
▪ Finding Path(shortest) from one vertex to another.
▪ Check if the graph is connected?
▪ Find a (minimum) spanning tree.
• Commonly used search (traversal) methods:
▪ Breadth-first search.
▪ Depth-first search.
Breadth-First Search
• Visit start vertex (selected by user) and put into
a FIFO queue.
• Repeatedly remove a vertex from the queue, visit
its unvisited adjacent vertices, put newly visited
vertices into the queue.
• BFS(G,1)
2
3
4
5
Breadth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Start search at vertex 1.
Breadth-First Search Example
2
3
FIFO Queue
8
1 1
4
5
9
10
6
7 11
Visit/mark/label start vertex and put in a FIFO queue.
Breadth-First Search Example
2
3
FIFO Queue
8
1 1
4
5
9
10 Blue vertex is
visited
6
7 11
Remove 1 from Q; visit adjacent unvisited vertices;
put in Q.
Breadth-First Search Example
2
3
FIFO Queue
8 2 4
1
4
5
9
10
6
7 11
Remove 1 from Q; visit adjacent unvisited vertices;
put in Q.
Breadth-First Search Example
2
3
FIFO Queue
8 2 4
1
4
5
9
10
6
7 11
Remove 2 from Q; visit adjacent unvisited vertices;
put in Q.
Breadth-First Search Example
2
3
FIFO Queue
8 4 3 5 6
1
4
5
9
10
6
7 11
Remove 2 from Q; visit adjacent unvisited vertices;
put in Q.
Breadth-First Search Example
2
3
FIFO Queue
8 43 5 6
1
4
5
9
10
6
7 11
Remove 4 from Q; visit adjacent unvisited vertices;
put in Q.
Breadth-First Search Example
2
3
FIFO Queue
8 356
1
4
5
9
10
6
7 11
Remove 4 from Q; visit adjacent unvisited vertices;
put in Q.
Breadth-First Search Example
2
3
FIFO Queue
8 356
1
4
5
9
10
6
7 11
Remove 3 from Q; visit adjacent unvisited vertices;
put in Q.
Breadth-First Search Example
2
3
FIFO Queue
8 679
1
4
5
9
10
6
7 11
Remove 5 from Q; visit adjacent unvisited vertices;
put in Q.
Breadth-First Search Example
2
3
FIFO Queue
8
1 79
4
5
9
10
6
7 11
Remove 7 from Q; visit adjacent unvisited vertices;
put in Q.
Breadth-First Search Example
2
3
FIFO Queue
8
1 9
4
5
9
10
6
7 11
Remove 9 from Q; visit adjacent unvisited vertices;
put in Q.
Breadth-First Search Example
2
3
FIFO Queue
8
1 8
4
5
9
10
6
7 11
Remove 9 from Q; visit adjacent unvisited vertices;
put in Q.
Breadth-First Search Example
2
3
FIFO Queue
8 8
1
4
5
9
10
6
7 11
Remove 8 from Q; visit adjacent unvisited vertices;
put in Q.
Breadth-First Search Example
2
3
FIFO Queue
8
1
4
5
9
10
6
7 11
Queue is empty. Search terminates.
Example
start from 2, 7 and 9
• 2
• 3
• 8
• 1
• 4
• 5
• 9
• 1
0
• 6
• 7 • 11
Breadth-First Search Property
• All vertices reachable from the start vertex
(including the start vertex) are visited.
Breadth-first-search
Example start at 1
• 2
• 3
• 8
• 1 • 1
• 4 0
• 5 • 9 • 11
• 6
• 7
Example start at 1
2
3
8
1 10
4
5 9 11
6
7
Example start at 2
• 2
• 3
• 8
• 1 • 1
• 4 0
• 5 • 9 • 11
• 6
• 7
Example start at 2
• 2
• 3
• 8
• 1 • 1
• 4 0
• 5 • 9 • 11
• 6
• 7
Finding a Path From Vertex v To
Vertex u
• Start a breadth-first search at vertex v.
• Terminate when vertex u is visited or when
Q becomes empty (whichever occurs first).
Is The Graph Connected?
• Start a breadth-first search at any vertex of
the graph.
• Graph is connected iff all n vertices get
visited.
Connected Components
• Start a breadth-first search at any as yet
unvisited vertex of the graph.
• Newly visited vertices (plus edges between
them) define a component.
• Repeat until all vertices are visited.
Connected Components
2
3
8
1
4
5
9
10
6
7 11
Spanning Tree
2
3
8
1
4
5
9
6
7
Breadth-first search from vertex 1.
Breadth-first spanning tree.
Spanning Tree
• Start a breadth-first search at any vertex of
the graph.
• If graph is connected, the n-1 edges used to
get to unvisited vertices define a spanning
tree (breadth-first spanning tree).
Depth-First Search
depthFirstSearch(v)
{
Label vertex v as reached.
for (each unreached vertex u
adjacenct from v)
depthFirstSearch(u);
}
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Start search at vertex 1.
Label vertex 1 and do a depth first search
from either 2 or 4.
Suppose that vertex 2 is selected.
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Label vertex 2 and do a depth first search
from either 3, 5, or 6.
Suppose that vertex 5 is selected.
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Label vertex 5 and do a depth first search
from either 3, 7, or 9.
Suppose that vertex 9 is selected.
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Label vertex 9 and do a depth first search
from either 6 or 8.
Suppose that vertex 8 is selected.
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Label vertex 8 and return to vertex 9.
From vertex 9 do a dfs(6).
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Label vertex 6 and do a depth first search from
either 4 or 7.
Suppose that vertex 4 is selected.
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Label vertex 4 and return to 6.
From vertex 6 do a
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Label vertex 7 and return to 6.
Return to
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Return to
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Do a
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Label 3 and return to
5.
Return to 2.
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Return to 1.
Depth-First Search Example
2
3
8
1
4
5
9
10
6
7 11
Return to invoking method.
Example
start from 2, 7 and 9
• 2
• 3
• 8
• 1
• 4
• 5
• 9
• 1
0
• 6
• 7 • 11
Depth-First Search Properties
• Same properties with respect to path
finding, connected components, and
spanning trees.
• Edges used to reach unlabeled vertices
define a depth-first spanning tree when the
graph is connected.
• There are problems for which bfs is better
than dfs and vice versa.
Depth-first-search
Graph Algorithms
Minimum Spanning Trees
54
Problem: Laying Telephone Wire
Central office
55
Wiring: Naïve Approach
Central office
Expensive!
56
Wiring: Better Approach
Central office
Minimize the total length of wire connecting the customers
57