0% found this document useful (0 votes)
64 views50 pages

Topics: Depth First Search (DFS) Breadth First Search (BFS)

The document discusses graph search algorithms depth-first search (DFS) and breadth-first search (BFS). DFS traverses a graph by exploring as far as possible along each branch before backtracking. BFS explores all neighbors of the starting node first before moving to the next level. Both algorithms are used to search graphs in O(V+E) time where V is the number of vertices and E is the number of edges. Examples of each algorithm are provided along with pseudocode.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views50 pages

Topics: Depth First Search (DFS) Breadth First Search (BFS)

The document discusses graph search algorithms depth-first search (DFS) and breadth-first search (BFS). DFS traverses a graph by exploring as far as possible along each branch before backtracking. BFS explores all neighbors of the starting node first before moving to the next level. Both algorithms are used to search graphs in O(V+E) time where V is the number of vertices and E is the number of edges. Examples of each algorithm are provided along with pseudocode.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 50

Lecture 8

Topics
Depth First Search (DFS)
Breadth First Search (BFS)

Reference: Introduction to Algorithm by Cormen Chapter 23: Elementary Graph Algorithm

Data Structure and Algorithm

1.1

Graph Search (traversal)


How do we search a graph? At a particular vertices, where shall we go next? Two common framework:
the depth-first search (DFS) the breadth-first search (BFS) and

In DFS, go as far as possible along a single path

until reach a dead end (a vertex with no edge out or no neighbor unexplored) then backtrack In BFS, one explore a graph level by level away (explore all neighbors first and then move on)

Data Structure and Algorithm

1.2

Depth-First Search (DFS)


The basic idea behind this algorithm is that it traverses

the graph using recursion Go as far as possible until you reach a deadend Backtrack to the previous path and try the next branch The graph below, started at node a, would be visited in the following order: a, b, c, g, h, i, e, d, f, j

c e

d f

i
1.3

Data Structure and Algorithm

DFS: Color Scheme

Vertices initially colored white Then colored gray when discovered Then black when finished

Data Structure and Algorithm

1.4

DFS: Time Stamps

Discover time d[u]: when u is first

discovered
Finish time f[u]: when backtrack from

u
d[u] < f[u]

Data Structure and Algorithm

1.5

DFS Example
source vertex

Data Structure and Algorithm

1.6

DFS Example
source vertex

d
1 |

f
| |

Data Structure and Algorithm

1.7

DFS Example
source vertex

d
1 |

f
| |

2 |

Data Structure and Algorithm

1.8

DFS Example
source vertex

d
1 |

f
| |

2 |

3 |

Data Structure and Algorithm

1.9

DFS Example
source vertex

d
1 |

f
| |

2 |

3 | 4

Data Structure and Algorithm

1.10

DFS Example
source vertex

d
1 |

f
| |

2 |

3 | 4

5 |

Data Structure and Algorithm

1.11

DFS Example
source vertex

d
1 |

f
| |

2 |

3 | 4

5 | 6

Data Structure and Algorithm

1.12

DFS Example
source vertex

d
1 |

f
| |

2 | 7

3 | 4

5 | 6

Data Structure and Algorithm

1.13

DFS Example
source vertex

d
1 |

f
8 | |

2 | 7

3 | 4

5 | 6

Data Structure and Algorithm

1.14

DFS Example
source vertex

d
1 |

f
8 | |

2 | 7

9 |

3 | 4

5 | 6

Data Structure and Algorithm

1.15

DFS Example
source vertex

d
1 |

f
8 | |

2 | 7

9 |10

3 | 4

5 | 6

Data Structure and Algorithm

1.16

DFS Example
source vertex

d
1 |

f
8 |11 |

2 | 7

9 |10

3 | 4

5 | 6

Data Structure and Algorithm

1.17

DFS Example
source vertex

f
8 |11 |

1 |12

2 | 7

9 |10

3 | 4

5 | 6

Data Structure and Algorithm

1.18

DFS Example
source vertex

f
8 |11 13|

1 |12

2 | 7

9 |10

3 | 4

5 | 6

Data Structure and Algorithm

1.19

DFS Example
source vertex

f
8 |11 13|

1 |12

2 | 7

9 |10

3 | 4

5 | 6

14|

Data Structure and Algorithm

1.20

DFS Example
source vertex

f
8 |11 13|

1 |12

2 | 7

9 |10

3 | 4

5 | 6

14|15

Data Structure and Algorithm

1.21

DFS Example
source vertex

f
8 |11 13|16

1 |12

2 | 7

9 |10

3 | 4

5 | 6

14|15

Data Structure and Algorithm

1.22

DFS: Algorithm

DFS(G) for each vertex u in V, color[u]=white; p[u]=NIL

time=0;
for each vertex u in V if (color[u]=white) DFS-VISIT(u)
1.23

Data Structure and Algorithm

DFS: Algorithm (Cont.)


DFS-VISIT(u) color[u]=gray; time = time + 1; d[u] = time; for each v in Adj(u) do source vertex

if (color[v] = white)
p[v] = u; DFS-VISIT(v);

color[u] = black;
time = time + 1; f[u]= time;
Data Structure and Algorithm
1.24

DFS: Complexity Analysis

Initialization complexity is O(V)


DFS_VISIT is called exactly once for each vertex And DFS_VISIT scans all the edges which causes cost of O(E) Overall complexity is O(V + E)

Data Structure and Algorithm

1.25

DFS: Application

Topological Sort

Strongly Connected Component

Data Structure and Algorithm

1.26

Breadth-first Search (BFS)

Search for all vertices that are directly

reachable from the root (called level 1 vertices) After mark all these vertices, visit all vertices that are directly reachable from any level 1 vertices (called level 2 vertices), and so on. In general, level k vertices are directly reachable from a level k 1 vertices

Data Structure and Algorithm

1.27

BFS: the Color Scheme

White vertices have not been discovered


All vertices start out white

Grey vertices are discovered but not fully

explored
They may be adjacent to white vertices

Black vertices are discovered and fully

explored
They are adjacent only to black and gray vertices

Explore vertices by scanning adjacency

list of grey vertices


Data Structure and Algorithm
1.28

An Example
A B C D

M
Data Structure and Algorithm

N
1.29

M
Data Structure and Algorithm

N
1.30

B 1

M
Data Structure and Algorithm

N
1.31

B 1

C 2

M
Data Structure and Algorithm

N
1.32

B 1

C 2

F 3

M
Data Structure and Algorithm

3
1.33

B 1

C 2

F 3

M
Data Structure and Algorithm

3
1.34

B 1

C 2

F 3

M
Data Structure and Algorithm

3
1.35

B 1

C 2

F 3

M
Data Structure and Algorithm

3
1.36

B 1

C 2

F 3

M
Data Structure and Algorithm

3
1.37

BFS: Algorithm
BFS(G, s) For each vertex u in V {s},

color[u] = white; d[u] = infinity; p[u] = NIL

color[s] = GRAY; d[s] = 0; p[s] = NIL; ENQUEUE(Q,s) while (Q not empty) u = DEQUEUE(Q) for each v Adj[u] if color[v] = WHITE then color[v] = GREY d[v] = d[u] + 1; p[v] = u ENQUEUE(Q, v); color[u] = BLACK;

Q = empty queue

Data Structure and Algorithm

1.38

Example

Data Structure and Algorithm

1.39

Example

0
w

Q: s
Data Structure and Algorithm
1.40

Example

1
v

0 1
w

Q: w
Data Structure and Algorithm

r
1.41

Example

1
v

0 1
w

2 2
x

Q: r
Data Structure and Algorithm

x
1.42

Example

1 2
v

0 1
w

2 2
x

Q:
Data Structure and Algorithm

v
1.43

Example

1 2
v

0 1
w

2 2
x

3
y

Q: x
Data Structure and Algorithm

u
1.44

Example

1 2
v

0 1
w

2 2
x

3 3
y

Q: v
Data Structure and Algorithm

y
1.45

Example

1 2
v

0 1
w

2 2
x

3 3
y

Q: u
Data Structure and Algorithm

y
1.46

Example

1 2
v

0 1
w

2 2
x

3 3
y

Q: y
Data Structure and Algorithm
1.47

Example

1 2
v

0 1
w

2 2
x

3 3
y

Q:
Data Structure and Algorithm
1.48

BFS: Complexity Analysis

Queuing time is O(V) and scanning all

edges requires O(E) Overhead for initialization is O (V) So, total running time is O(V+E)

Data Structure and Algorithm

1.49

BFS: Application

Shortest path problem

Data Structure and Algorithm

1.50

You might also like