0% found this document useful (0 votes)
20 views

Graph Traversal

The document discusses different graph search methods like depth-first search and breadth-first search. It provides details on how depth-first search works by traversing the graph in a depthward motion from the starting vertex. It also explains properties like visiting all reachable vertices and how it can be used to find paths between vertices or check if a graph is connected. Breadth-first search is defined as visiting all neighbors of a vertex before moving to the unexplored neighbors of its neighbors.

Uploaded by

Aditya Agarwal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Graph Traversal

The document discusses different graph search methods like depth-first search and breadth-first search. It provides details on how depth-first search works by traversing the graph in a depthward motion from the starting vertex. It also explains properties like visiting all reachable vertices and how it can be used to find paths between vertices or check if a graph is connected. Breadth-first search is defined as visiting all neighbors of a vertex before moving to the unexplored neighbors of its neighbors.

Uploaded by

Aditya Agarwal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 47

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
• 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.
 Path from one vertex to another.
 Is the graph connected?
 Find a spanning tree.
 Etc.
• Commonly used search methods:
 Depth-first search.
 Breadth-first search.
Depth-First Search

dfs(v)
{
Label vertex v as reached.
for (each unreached vertex u
adjacenct from v)
dfs(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 dfs(7).


Depth-First Search Example
2
3
8
1

4
5
9
10

6
7 11

Label vertex 7 and return to 6.


Return to 9.
Depth-First Search Example
2
3
8
1

4
5
9
10

6
7 11

Return to 5.
Depth-First Search Example
2
3
8
1

4
5
9
10

6
7 11

Do a dfs(3).
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.


Depth-First Search Property

• All vertices reachable from the start vertex


(including the start vertex) are visited.
Path From Vertex v To Vertex u

• Start a depth-first search at vertex v.


• Terminate when vertex u is visited or when
dfs ends (whichever occurs first).
• Time
 O(n2) when adjacency matrix used
 O(n+e) when adjacency lists used (e is number
of edges)
Is The Graph Connected?

• Start a depth-first search at any vertex of the


graph.
• Graph is connected iff all n vertices get
visited.
• Time
 O(n2) when adjacency matrix used
 O(n+e) when adjacency lists used (e is number
of edges)
Connected Components
• Start a depth-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
Time Complexity
 O(n2) when adjacency matrix used
 O(n+e) when adjacency lists used (e
is number of edges)
Breadth-First Search

• Visit start 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.
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

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 5 3 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 4 5 3 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 5 3 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 5 3 6
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 3 6 9 7
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 3 6 9 7
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 6 9 7
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 6 9 7
1

4
5
9
10

6
7 11

Remove 6 from Q; visit adjacent unvisited vertices;


put in Q.
Breadth-First Search Example

2
3
FIFO Queue
8 9 7
1

4
5
9
10

6
7 11

Remove 6 from Q; visit adjacent unvisited vertices;


put in Q.
Breadth-First Search Example

2
3
FIFO Queue
8 9 7
1

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 7 8
1

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 7 8
1

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 8
1

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 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.


Time Complexity
• Each visited vertex is put on (and so
removed from) 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(mn), where m is number of vertices in the
component that is searched (adjacency matrix)
Time Complexity

 O(n + sum of component vertex degrees) (adj.


lists)
= O(n + number of edges in component)
Breadth-First Search Properties
• Same complexity as dfs.
• 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.

You might also like