Graph Search:: Breadth-First Search (BFS) Depth-First Search (DFS)
Graph Search:: Breadth-First Search (BFS) Depth-First Search (DFS)
In both DFS and BFS, the nodes of the undirected graph are
visited in a systematic manner so that every node is visited
exactly one.
r s t u
v w x y
BREADTH-FIRST SEARCH: EXAMPLE
r s t u
0
v w x y
Q: s
BREADTH-FIRST SEARCH: EXAMPLE
r s t u
1 0
1
v w x y
Q: w r
BREADTH-FIRST SEARCH: EXAMPLE
r s t u
1 0 2
1 2
v w x y
Q: r t x
BREADTH-FIRST SEARCH: EXAMPLE
r s t u
1 0 2
2 1 2
v w x y
Q: t x v
BREADTH-FIRST SEARCH: EXAMPLE
r s t u
1 0 2 3
2 1 2
v w x y
Q: x v u
BREADTH-FIRST SEARCH: EXAMPLE
r s t u
1 0 2 3
2 1 2 3
v w x y
Q: v u y
BREADTH-FIRST SEARCH: EXAMPLE
r s t u
1 0 2 3
2 1 2 3
v w x y
Q: u y
BREADTH-FIRST SEARCH: EXAMPLE
r s t u
1 0 2 3
2 1 2 3
v w x y
Q: y
BREADTH-FIRST SEARCH: EXAMPLE
r s t u
1 0 2 3
2 1 2 3
v w x y
Q: Ø
BFS (ALGORITHM)
BFS(V,E,s)
For all nodes except s
d[v]=∞
d[s]=0
Q= s
While Q ≠ Ø
u= Dequeue(Q)
for all adjacent nodes v of u
if d[v]= ∞
then d[v]=d[u]+1
Enqueue(Q,v)
BFS (TIME COMPLEXITY)
BFS(V,E,s)
For all nodes except s O(|V|)
d[v]=∞
d[s]=0
Q= Ø
While Q ≠ Ø
u= Dequeue(Q)
O(V2) = |E|).
for all adjacent nodes v of u
if d[v]= ∞
then d[v]=d[u]+1
Enqueue(Q,v)
| |
| | |
DFS EXAMPLE
source
vertex
d f
1 | | |
2 | |
| | |
DFS EXAMPLE
source
vertex
d f
1 | | |
2 | |
3 | | |
DFS EXAMPLE
source
vertex
d f
1 | | |
2 | |
3 | 4 | |
DFS EXAMPLE
source
vertex
d f
1 | | |
2 | |
3 | 4 5 | |
DFS EXAMPLE
source
vertex
d f
1 | | |
2 | |
3 | 4 5 | 6 |
DFS EXAMPLE
source
vertex
d f
1 | 8 | |
2 | 7 |
3 | 4 5 | 6 |
DFS EXAMPLE
source
vertex
d f
1 | 8 | |
2 | 7 |
3 | 4 5 | 6 |
DFS EXAMPLE
source
vertex
d f
1 | 8 | |
2 | 7 9 |
3 | 4 5 | 6 |
DFS EXAMPLE
source
vertex
d f
1 | 8 | |
2 | 7 9 |10
3 | 4 5 | 6 |
DFS EXAMPLE
source
vertex
d f
1 | 8 |11 |
2 | 7 9 |10
3 | 4 5 | 6 |
DFS EXAMPLE
source
vertex
d f
1 |12 8 |11 |
2 | 7 9 |10
3 | 4 5 | 6 |
DFS EXAMPLE
source
vertex
d f
1 |12 8 |11 13|
2 | 7 9 |10
3 | 4 5 | 6 |
DFS EXAMPLE
source
vertex
d f
1 |12 8 |11 13|
2 | 7 9 |10
3 | 4 5 | 6 14|
DFS EXAMPLE
source
vertex
d f
1 |12 8 |11 13|
2 | 7 9 |10
3 | 4 5 | 6 14|15
DFS EXAMPLE
source
vertex
d f
1 |12 8 |11 13|16
2 | 7 9 |10
3 | 4 5 | 6 14|15
DEPTH-FIRST SEARCH WITH
STACK
Initialization:
mark all vertices as unvisited,
visit(s)
Procedure visit(v)
mark v as visited
for each edge (v,w)
push (v,w) in the stack
RECURSIVE DFS
DepthFirst(Vertex v)
visit(v);
for each neighbor w of v
if (w is not visited)
add edge (v,w) to tree T
DepthFirst(w)
Visit(v)
mark v as visited
APPLICATIONS OF DFS
Trees: preorder traversal
Graphs:
Connectivity
Biconnectivity – articulation points
Euler graphs