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

Graph Search Methods

This document describes graph search methods such as depth-first search (DFS) and breadth-first search (BFS). It explains that a search method starts at a given vertex and visits every reachable vertex. Many graph problems can be solved using search methods to find paths between vertices, determine connectivity, or find spanning trees. DFS and BFS are commonly used search methods, with DFS prioritizing exploring vertices at deeper levels and BFS prioritizing exploring neighbors. Examples of applying DFS to a graph are provided.

Uploaded by

aryakabir22
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views

Graph Search Methods

This document describes graph search methods such as depth-first search (DFS) and breadth-first search (BFS). It explains that a search method starts at a given vertex and visits every reachable vertex. Many graph problems can be solved using search methods to find paths between vertices, determine connectivity, or find spanning trees. DFS and BFS are commonly used search methods, with DFS prioritizing exploring vertices at deeper levels and BFS prioritizing exploring neighbors. Examples of applying DFS to a graph are provided.

Uploaded by

aryakabir22
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 51

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

1
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
2
Graph Search Methods
• Many graph problems are 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(DFS).
 Breadth-first search(BFS).

3
Depth-First Search

dfs ( v )
{
Label vertex v as reached.
for (each unreached vertex u
adjacenct from v )
dfs( u );
}

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


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

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

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

8
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).
9
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.
10
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).


11
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.
12
Depth-First Search Example

2
3
8
1

4
5
9
10

6
7 11

Return to 5.
13
Depth-First Search Example

2
3
8
1

4
5
9
10

6
7 11

Do a dfs(3).
14
Depth-First Search Example

2
3
8
1

4
5
9
10

6
7 11

Label 3 and return to 5.


Return to 2.
15
Depth-First Search Example

2
3
8
1

4
5
9
10

6
7 11

Return to 1.
16
Depth-First Search Example

2
3
8
1

4
5
9
10

6
7 11

Return to invoking method.

17
Depth-First Search Property

All vertices reachable from the

start vertex (including the start


vertex) are visited.

18
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)
19
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
when adjacency lists used (e is
 O(n+e)
number of edges)
20
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.

21
22
Connected Components

2
3
8
1

4
5
9
10

6
7 11

23
Time Complexity

 O(n2) when adjacency matrix used

 O(n+e) when adjacency lists used

(e is number of edges)

24
Spanning Tree

2
3
8
1

4
5
9

6
7

Depth-first search from vertex 1.

Depth-first spanning tree.


25
Spanning Tree
 Start a depth-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
(depth-first spanning tree).
 Time
 O(n2) when adjacency matrix used
 O(n+e) when adjacency lists used (e is
number of edges)

26
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.
27
Breadth-First Search Example
2
3
8
1

4
5
9
10

6
7 11

Start search at vertex 1.


28
Breadth-First Search Example

2 FIFO Queue
3

1
8 1

4
5
9
10

6
7 11

Visit/mark/label start vertex and put in a FIFO queue.

29
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.
30
Breadth-First Search Example

2
3
8 FIFO Queue
1
2 4
4
5
9
10

6
7 11

Remove 1 from Q; visit adjacent unvisited vertices;


put in Q.
31
Breadth-First Search Example

2
3
8 FIFO Queue
1
2 4
4
5
9
10

6
7 11

Remove 2 from Q; visit adjacent unvisited vertices;


put in Q.
32
Breadth-First Search Example

2
3
8
FIFO Queue
1
4 5 3 6
4
5
9
10

6
7 11

Remove 2 from Q; visit adjacent unvisited vertices;


put in Q.
33
Breadth-First Search Example

2
3
8 FIFO Queue
1
4 5 3 6
4
5
9
10

6
7 11

Remove 4 from Q; visit adjacent unvisited vertices;


put in Q.
34
Breadth-First Search Example

2
3

1
8 FIFO Queue
5 3 6
4
5
9
10

6
7 11

Remove 4 from Q; visit adjacent unvisited


vertices; put in Q.
35
Breadth-First Search Example

2
3 FIFO Queue
8
1 5 3 6

4
5
9
10

6
7 11

Remove 5 from Q; visit adjacent unvisited


vertices; put in Q.
36
Breadth-First Search Example

2
3 FIFO Queue
8
1 3 6 9 7

4
5
9
10

6
7 11

Remove 5 from Q; visit adjacent unvisited


vertices; put in Q.
37
Breadth-First Search Example

2
3
8
FIFO Queue
1
36 97
4
5
9
10

6
7 11

Remove 3 from Q; visit adjacent unvisited vertices;


put in Q.
38
Breadth-First Search Example

2
3 FIFO Queue
8
1 6 9 7
4
5
9
10

6
7 11

Remove 3 from Q; visit adjacent unvisited


vertices; put in Q.
39
Breadth-First Search Example

2
3
8
FIFO Queue
1
6 9 7
4
5
9
10

6
7 11

Remove 6 from Q; visit adjacent unvisited vertices;


put in Q.

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

41
Breadth-First Search Example

2
3 FIFO Queue
8
1 9 7
4
5
9
10

6
7 11

Remove 9 from Q; visit adjacent unvisited vertices;


put in Q.

42
Breadth-First Search Example

2 FIFO Queue
3
8 7 8
1

4
5
9
10

6
7 11

Remove 9 from Q; visit adjacent unvisited vertices;


put in Q.
43
Breadth-First Search Example

2
3 FIFO Queue
8
1 7 8
4
5
9
10

6
7 11

Remove 7 from Q; visit adjacent unvisited vertices;


put in Q.

44
Breadth-First Search Example

2
3 FIFO Queue
8
1 8
4
5
9
10

6
7 11

Remove 7 from Q; visit adjacent unvisited vertices;


put in Q.

45
Breadth-First Search Example

2
3
FIFO Queue
8
1 8
4
5
9
10

6
7 11

Remove 8 from Q; visit adjacent unvisited vertices;


put in Q.

46
Breadth-First Search Example

2
3 FIFO Queue
8
1

4
5
9
10

6
7 11

Queue is empty. Search terminates.


47
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)
48
Time Complexity

 O(n + sum of component vertex

degrees) (adj. lists)

= O(n + number of edges in


component)

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


50
BFS and DFS
• More suitable for finding the • More suitable for finding the
shortest path or the closest longest path or the farthest
node to the starting node in node from the starting node.
an unweighted graph • DFS is often used to find a
• Web Crawling: When path from the entrance to the
crawling websites or exit in a maze.
searching for resources in a • DFS can identify cycles in a
network, BFS is more suitable graph.
because it explores resources
at the current level (e.g., • DFS is used in AI algorithms,
webpages) before going such as game-playing
deeper, ensuring a algorithms (e.g., chess and tic-
systematic and tac-toe) and problem-solving
comprehensive search. agents, to explore possible
states or game trees.

51

You might also like