This document provides an overview of depth-first search (DFS) and breadth-first search (BFS) algorithms. It introduces the presenter, Kumar Ayush Singh Deo, and their subject on analyzing and digitizing algorithms. Key topics covered include definitions of graphs, how DFS and BFS work by exploring adjacent vertices, analysis of time complexity when using adjacency lists or matrices, examples of DFS on directed and undirected graphs illustrated with pseudocode, and applications of DFS and BFS.
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
DFS and BFS Algorithms Explained
1. WelcomeTo Our
Presentation
NAME :- Kumar Ayush Singh Deo
BRANCH :- CSE
SUBJECT :- Analysis and digital of algorithm
ENROLLMENT No.:- 0301cs211034
Submitted to:- Miss Soumya Pandey
3. What is a graph?
1.Directed/Undirected
2.Weighted/Unweighted
3.Cyclic/Acyclic
A set of vertices and edges
4. Breadth First Search (BFS)
Start several paths at a time, and advance in each one step at a time
The breadth-first search uses a FIFO queue.
Depth First Search (DFS)
Once a possible path is found, continue the search untilthe end of the path
The Depth-first search uses a LIFO Stack.
Graph Traversal
5. How ItWorks?
1.Pick a source vertex S to start.
2.Discover the vertices that are adjacent to S.
Depth-first:
visit all neighbors of
a neighbor before
visiting your other
neighbors
Breadth First:
Pick each child of
S in turn and
discover their
vertices adjacent
to that child.
Done when all
children have been
discovered and
examined.
6. For a Graph G=(V, E) and n = |V| and
m=|E|
When Adjacency List is used Complexity
is O(m + n)
When Adjacency Matrix is used Scanning
each row for checking the connectivity of
a Vertex is in order O(n).
So, Complexity is O(n2 )
DFS uses space O(|V|) in the worst case
to store the stack of vertices on the
current search path as well as the set of
Analysis of DFS
8. Depth-first search: Directed
graphs
The algorithm is essentially the same as for undirected
graphs, the difference residing in the interpretation of the
word "adjacent".
In a directed graph, node w is adjacent to node v if the
directed edge (v, w) exists.
If (v, w) exists but (w, v) does not, then w is adjacent to v
but v is not adjacent to w.
With this change of interpretation the procedures dfs and
search apply equally well in the case of a directed graph.
9. DFS Example
8 |11 13|16
14|15
5 | 6
3 | 4
2 | 7 9 |10
source vertex
d f
1 |12
10. Algorithm steps
Step:1
Push the root node in stack.
Step:2
Loop until stack is empty.
Step:3
Peek the node of the stack.
Step:4
If the node has unvisited child nodes get
the unvisited child node mark it has travers and
push it on stack.
11. DFS: Algorithm
• DFS(G)
for each vertex u inV,
color[u]=white; [u]=NIL
time=0;
for each vertex u inV
if (color[u]=white)
DFS-VISIT(u)
12. DFS-VISIT(u)
color[u]=gray;
time = time +
1;
d[u] = time;
for each v inAdj(u) do if (color[v] = white)
[v] = u;
DFS-VISIT(v);
color[u] = black;
time = time + 1; f[u]= time;
DFS: Algorithm (Cont.)
source vertex
13. BFS:
*Testing a graph for bipartitions
*To find the shortest path from a
vertex s to a vertex v in an un
weighted graph
*To find the length of such a path
*To find out if a graph contains cycles
*To construct a BSF tree/forest from a
graph
*Copying garbage collection
Applications
14. Applications
DFS:
* Finding connected components.
*Topological sorting.
*Finding the bridges of a graph.
*cycle Detecting
*Finding strongly connected components.
*Finding biconnectivity in graphs.