Graph Search Methods
Spring 2007CSE, POSTECH
Graph Search Methods
A vertex u is reachable from vertex v iff there is a path from v to u.
A search method starts at a given vertex v and visits/labels/marks every vertex that is reachable from v.
23
5
4
1
8
9
67
11
10
Graph Search Methods
Many graph problems solved by a search method– Finding a path from one vertex to another.– Determining whether a graph is connected– Find a spanning tree– Finding a minimum-cost path/spanning tree
Commonly used search methods– Breadth-first search (BFS)– Depth-first search (DFS)
Breadth-First Search (BFS) Algorithm
BFS algorithm is the method of starting at a vertex and identifying all vertices reachable from it
Read Section 16.8.1 and the pseudo-code of BFS in Figure 16.7
Similar to the level-order traversal of a binary tree
Breadth-First Search (BFS) Algorithm
Visit the starting vertex 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
All vertices reachable from the start vertex (including the start vertex) are visited
When the queue becomes empty, the search is terminated
Breadth-First Search Example
Start search at vertex 1.
23
5
4
1
8
9
67
11
10
Breadth-First Search Example
Mark/label start vertex and put in a FIFO queue. Remove 1 from Queue;
Visit adjacent unvisited vertices;Put the visited vertices in Queue.
23
5
4
1
8
9
67
11
10
FIFO queue1
Breadth-First Search Example
Remove 2 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue.
Are there any newly visited vertices?
23
5
4
1
8
9
67
11
10
FIFO queue2 4
Breadth-First Search Example
Remove 4 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue.
Are there any newly visited vertices?
23
5
4
1
8
9
67
11
10
FIFO queue4 5 3 6
Breadth-First Search Example
Remove 5 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue.
Are there any newly visited vertices?
23
5
4
1
8
9
67
11
10
FIFO queue5 3 6
Breadth-First Search Example
Remove 3 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue.
Are there any newly visited vertices?
23
5
4
1
8
9
67
11
10
FIFO queue3 6 9 7
Breadth-First Search Example
Remove 6 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue.
Are there any newly visited vertices?
23
5
4
1
8
9
67
11
10
FIFO queue6 9 7
Breadth-First Search Example
Remove 9 from Queue;Visit adjacent unvisited vertices;Put the visited vertices in Queue.
Are there any newly visited vertices?
23
5
4
1
8
9
67
11
10
FIFO queue9 7
Breadth-First Search Example
Remove 7 from Queue;Visit adjacent unvisited vertices;Put in Queue.
23
5
4
1
8
9
67
11
10
FIFO queue7 8
Breadth-First Search Example
23
5
4
1
8
9
67
11
10
FIFO queue8
Remove 8 from Queue;Visit adjacent unvisited vertices;Put in Queue.
Breadth-First Search Example
Queue is empty, thus the search terminates.
23
5
4
1
8
9
67
11
10
FIFO queue
Breadth-First Search Example
What was the order of visited vertices?
1, 2, 4, 5, 3, 6, 9, 7, 8 What is the subgraph formed by the edges used to reach n
ew vertices during the BFS? 2
3
5
4
1
8
9
67
Time Complexity
Each visited vertex is put on the queue exactly once. When a vertex is removed from the queue,
we examine its adjacent vertices.– O(n) if adjacency matrix used.– O(vertex degree) if adjacency lists used.
Total time– O(n2) if adjacency matrix used– O(n+e) if adjacency lists used
where e is the sum of vertex degrees andtherefore e is also the number of edges.
Path Finding Problem from vertex u to vertex v
Start a breadth-first search at vertex u. Terminate if either of the following occurs
– successfully when vertex v is visited or– unsuccessfully when queue becomes empty but v is not visited
Time– O(n2) when adjacency matrix used– O(n+e) when adjacency lists used
(e is number of edges)
Is a Graph Connected?
Start a breadth-first search at any vertex of the graph. A graph is connected iff all n vertices are visited. Time
– O(n2) when adjacency matrix used– O(n+e) when adjacency lists used
(e is number of edges)
Connected Components
Start a breadth-first search at any unvisited vertex of the graph.
Newly visited vertices (plus edges between them)define a component.
Repeat until all vertices are visited. Time
– O(n2) when adjacency matrix used– O(n+e) when adjacency lists used
(e is number of edges)
Connected Components
23
5
4
1
8
9
67
11
10
Breath-First Spanning Tree
Start a breadth-first search at any vertex of the graph. If a graph is connected, the n-1 edges used to get to
unvisited vertices define a spanning tree breadth-first spanning tree
Time– O(n2) when adjacency matrix used– O(n+e) when adjacency lists used
(e is number of edges)
Breadth-First Spanning Tree
Digraph Example BF Spanning Tree of Digraph (a)
Depth-First Search (DFS) Algorithm
DFS algorithm is an alternative to BFS Similar to the pre-order traversal of a binary tree See Figure 16.18 for the pseudo-code of DFS
Visit the starting vertex v and mark it as reached Select an unreached vertex u adjacent from v If such a vertex does not exist, the search terminates, other
wise a depth-first search from u is initiated When this search is completed, we select another unreach
ed vertex adjacent to from v If such a vertex does not exist, then the search terminates,
otherwise a depth-first search starts from this vertex and so on…..
Depth-First Search (DFS) Algorithm
Start search at vertex 1. Label vertex 1 as reached and do a depth-first search
from either 2 or 4.
23
5
4
1
8
9
67
11
10
Depth-First Search Example
Label vertex 2 and do a depth-first searchfrom either 3, 5 or 6.
23
5
4
1
8
9
67
11
10
Depth-First Search Example
Label vertex 5 and do a depth-first searchfrom either 3, 7 or 9.
23
5
4
1
8
9
67
11
10
Depth-First Search Example
Label vertex 9 and do a depth-first searchfrom either 6 or 8.
23
5
4
1
8
9
67
11
10
Depth-First Search Example
Label vertex 8 and return to vertex 9. From vertex 9 do a DFS(6).
23
5
4
1
8
9
67
11
10
Depth-First Search Example
Label vertex 6 and do a depth-first searchfrom either 4 or 7.
23
5
4
1
8
9
67
11
10
Depth-First Search Example
Label vertex 4 and return to 6. From vertex 6 do a DFS(7).
23
5
4
1
8
9
67
11
10
Depth-First Search Example
Label vertex 7 and return to 6. Return to 9.
23
5
4
1
8
9
67
11
10
Depth-First Search Example
Return to 5.
23
5
4
1
8
9
67
11
10
Depth-First Search Example
Do a DFS(3).
23
5
4
1
8
9
67
11
10
Depth-First Search Example
Label 3 and return to 5. Return to 2. Return to 1.
23
5
4
1
8
9
67
11
10
Depth-First Search Example
DFS is done and return to invoking method.
23
5
4
1
8
9
67
11
10
Depth-First Search Example
Depth-First Search Example
What was the order of visited vertices?
1, 2, 5, 9, 8, 6, 4, 7, 3 What is the subgraph formed by the edges used to reach n
ew vertices during the BFS? 2
3
5
4
1
8
9
67
Same complexity as BFS. Same properties with respect to path finding,
connected components, and spanning trees. Edges used to reach unlabeled vertices
define a depth-first spanning treewhen the graph is connected.
Depth-First Search Properties
1
2
6
4
5
37
10
28
1416
25 24
22
1812
Exercise 16.41 – for graph of Figure 16.4(a)
Draw a linked adjacency-list representation
Starting from vertex 4, the order of visited vertices using BFS are?
Show the subgraph formed in part (b)
Redo parts (b) & (c) using DFS
(a) Draw a linked adjacency-list representation
Exercise 16.41 – solution (a) & (b)
(b) Starting from vertex 4, the order of visited vertices are
4,3,5,7,2,6,1
(c) Show the subgraph formed in part (b)
Exercise 16.41 – solution (c) & (d)
(d) Redo parts (b) & (c) using DFS
DFS order: 4,3,2,1,6,5,7
Do Exercise 16.41 using Figure 16.16(a) starting from vertex 1
Read Chapter 16
READING