Graph- DFS
What is a Graph?
A Graph is a collection of nodes (called vertices) connected by edges.
Graphs can be:
Undirected (edges have no direction) or
Directed (Digraph) (edges have a direction).
Graphs can be weighted (edges have weights/costs) or unweighted.
How to Represent a Graph in Computers?
Main ways to represent:
Adjacency Matrix:
A 2D array
G[V][V]
whereV
= number of vertices.G[i][j] = 1
if there is an edge between vertexi
andj
, else0
.Good for dense graphs.
Adjacency List:
An array of lists.
Each element (vertex) points to a list of vertices it is connected to.
Good for sparse graphs (uses less memory).
Algorithms for Graph Traversal
Two popular traversals:
Traversal | Meaning | Method |
---|---|---|
BFS (Breadth-First Search) | Visit neighbors level by level | Queue |
DFS (Depth-First Search) | Explore as deep as possible before backtracking | Stack or Recursion |
DFS (Depth-First Search) Algorithm
Input: Graph, Starting Vertex
Output: Traverse graph deeply
Algorithm (Recursive way):
-
Mark the starting vertex as visited.
-
Process (visit) the vertex.
-
For each adjacent (unvisited) vertex:
-
Recursively apply DFS.
-
Non-Recursive DFS Algorithm (using Stack)
Input: Graph G
(adjacency matrix or list), starting vertex v
Output: Order of traversal
Algorithm:
-
Create an empty stack.
-
Push the starting vertex
v
onto the stack. -
Mark
v
as visited. -
While the stack is not empty:
-
Pop a vertex
u
from the stack. -
Process (visit) vertex
u
. -
For each adjacent vertex
w
ofu
(in reverse order if you want normal DFS order): -
If
w
is not visited: -
Push
w
onto the stack. -
Mark
w
as visited.
Comments
Post a Comment