bfs dfs
DESCRIPTION
bfs dfsTRANSCRIPT
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.
A
B C D
E FStatus=1(ready)
Status=2(waiting)
Status=3(processed)
A
B C D
E F
A
Status=1
Status=2
Status=3
L0
L1
L2
QUEUE
OUTPUT
A
B C D
E F
A
B C D
Status=1
Status=3
Status=2
L0
L1
L2
QUEUE
OUTPUT
A
B C D
E F
A B
C D E
L0
L1
L2
Status=1 Status=2
Status=3QUEUE
OUTPUT
A
B C D
E F
A B C
D E F
L0
L1
L2Status=1 Status=2
Status=3QUEUE
OUTPUT
A
B C D
E F
A B C D
E F
L0
L1
L2
Status=1 Status=2
Status=3QUEUE
OUTPUT
A
B C D
E F
A B C D E
F
L0
L1
L2Status=1 Status=2
Status=3QUEUE
OUTPUT
A
B C D
E F
A B C D E F
L0
L1
L2
Status=1 Status=2
Status=3QUEUE
OUTPUT
A
B C D
E F
BFS of the graph
Algorithm of BFSSTEP 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 BFSSpace complexitySpace 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 level, O(b ).Time complexityTime complexity of breadth-first search is O(b ). CompletenessBreadth-first search is complete. Proof of CompletenessIf the shallowest goal node is at some finite depth say d, breadth-first search will eventually find it after expanding all shallower nodes.OptimalityFor unit-step cost, breadth-first search is optimal.
d
d
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.
A
B C D
F GE
I J
A
B C D
F GE
I J
A
Stack
Output
A
B C D
F GE
I JB
C
D
A
Stack
Output
A
B C D
F GE
I J
E
F
C
D
A B
Stack
Output
A
B C D
F GE
I J
A B E
I
F
C
D
Stack
Output
A
B C D
F GE
I J
A B E I
F
C
D
Stack
Output
A
B C D
F GE
I J
A B E I F
J
C
D
Stack
Output
A
B C D
F GE
I J
A B E I F J
C
D
Stack
Output
A
B C D
F GE
I J
A B E I F J C
D
Stack
Output
A
B C D
F GE
I J
A B E I F J C D
G
Stack
Output
A
B C D
F GE
I J
A B E I F J C D G
Stack
Output
A
B C D
F GE
I J
DFS of the graph
Algorithm of DFSSTEP 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.
Time complexitySince 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(b ).
Space complexityThe space complexity is O(d) where d is the length of the longest simple path in the graph.
Features of DFS
CompletenessDepth-first search is not complete.
OptimalityDepth-first search is not optimal.
d
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.)