You are on page 1of 29

Breadth-First-Search

And
Depth-First-Search

Prepared by Madhurima Patra


Roll No: 14401062011
BFS:- Breadth first search
BFS is a graph search algorithm that begins at the root node and
explores all the neighbouring nodes. Then for each of those nearest
nodes, it explores their unexplored neighbour nodes, and so on, until it
finds the goal. It is implemented by using queue.

B C D

E F
Status=1(ready)

Status=2(waiting)

Status=3(processed)
L0 A

L1 B C D

E F
L2
Status=1
Status=2
Status=3
QUEUE

A
OUTPUT
L0 A

L1 B C D

E F
L2
Status=1

Status=2
Status=3
QUEUE

B C D
OUTPUT

A
L0 A

L1 B C D

E F
L2
Status=1

Status=2

Status=3
QUEUE

C D E
OUTPUT

A B
L0 A

L1 B C D

E F
L2
Status=1

Status=2

Status=3
QUEUE

D E F
OUTPUT

A B C
L0 A

L1 B C D

E F
L2
Status=1

Status=2

Status=3
QUEUE

E F
OUTPUT

A B C D
L0 A

L1 B C D

E F
L2
Status=1

Status=2

Status=3
QUEUE

F
OUTPUT

A B C D E
L0 A

L1 B C D

E F
L2
Status=1

Status=2

Status=3
QUEUE

OUTPUT

A B C D E F
A

B C D

E F

BFS of the graph


Algorithm of BFS
STEP 1:- Initialize the status of all nodes to ready
status (status =1).
STEP 2:- Insert the starting node into the queue
and set its status to waiting (status=2).
STEP 3:- Continue step 4 and 5 until the queue is
empty.
STEP 4:- Delete the front node from the queue
and set its status to processed (status=3).
STEP 5:- Insert all the neighboring nodes (whose
status is ready) of the deleted node into the queue
and set their status to waiting (status=2).
STEP 6:- Exit.
Features of BFS
Space complexity
Space complexity is proportional to the number of nodes at
the deepest level. Given a branching factor b and graph depth
d the space complexity is the number of nodes at the deepest
d
level, O(b ).
Time complexity
d
Time complexity of breadth-first search is O(b ).
Completeness
Breadth-first search is complete.
Proof of Completeness
If the shallowest goal node is at some finite depth say d,
breadth-first search will eventually find it after expanding all
shallower nodes.
Optimality
For unit-step cost, breadth-first search is optimal.
Applications of BFS
• Finding all connected components in a graph.
• Finding all nodes within one connected component.

• Finding the shortest path between two nodes u and v in an


unweighted graph.

• Finding the shortest path between two nodes u and v in a


weighted graph..

• Compute a spanning forest of a graph.


DFS:- Depth first search
DFS is an uninformed search that progresses by expanding the first
child node of the search tree that appears and thus going deeper and
deeper until a goal node is found, or until it hits a node that has no
children. Then the search backtracks, returning to the most recent
node it has not finished exploring. It is implemented using a stack.

B C D

E F G

I J
Stack

B C D

E F G

I J

A
Output
Stack

B C D

E F G

J
B
I
C
D
Output
A
Stack

B C D

E F G E
F
I J
C
D
Output
A B
Stack

B C D

E F G I
F
I J
C
D
Output
A B E
Stack

B C D

E F G

F
I J
C
D
Output
A B E I
Stack

B C D

E F G

J
I J
C
D
Output
A B E I F
Stack

B C D

E F G

I J
C
D
Output
A B E I F J
Stack

B C D

E F G

I J

D
Output
A B E I F J C
Stack

B C D

E F G

I J

Output G
A B E I F J C D
Stack

B C D

E F G

I J

Output
A B E I F J C D G
A

B C D

E F G

I J

DFS of the graph


Algorithm of DFS
STEP 1:- Initialize the status of all nodes to ready
status (status=1).
STEP 2:- Push the starting node into the stack
(status=waiting=2).
STEP 3:- Continue step 4 and 5 until the stack is
empty.
STEP 4:- Pop the top node from the stack and set its
status to processed state (status=3).
STEP 5:- Push all the successors whose status is
ready; of the popped node into the stack and set their
status to waiting (status=2).
STEP 6:- Exit.
Features of DFS
Space complexity
The space complexity is O(d) where d is the length of the
longest simple path in the graph.

Time complexity
Since in the worst case depth-first search has to consider all
paths to all possible nodes the time complexity of depth-first
search is O(bd).
Completeness
Depth-first search is not complete.
Optimality
Depth-first search is not optimal.
Applications of DFS
• Finding whether there exists a path between the given
vertices.

• Find the connected components of a graph.

• Topological sorting.

• We can specialize the DFS algorithm to find a simple cycle.

• Solving puzzles with only one solution, such as mazes.


(DFS can be adapted to find all solutions to a maze by only
including nodes on the current path in the visited set.)

You might also like