Graph Data Structure
Graph Data Structure
Graph is a non linear data structure; it contains a set of points known as nodes (or vertices) and
set of links known as edges (or Arcs) which connects the vertices. A graph is defined as
follows...
Graph is a collection of vertices and arcs which connects vertices in the graph
or
Graph is a collection of nodes and edges which connects nodes in the graph
Example
The following is a graph with 5 vertices and 7 edges.
This graph G can be defined as G = ( V , E )
Where V = {A,B,C,D,E} and E = {(A,B),(A,C)(A,D),(B,D), (B,E), (C,D), (D,E)}.
YOGANANDA. A 1
Graph Terminology
We use the following terms in graph data structure...
Vertex
A individual data element of a graph is called as Vertex. Vertex is also known as node. In above
example graph, A, B, C, D & E are known as vertices.
Edge
An edge is a connecting link between two vertices. Edge is also known as Arc. An edge is
represented as (startingVertex, endingVertex). For example, in above graph, the link between
vertices A and B is represented as (A,B). In above example graph, there are 7 edges (i.e., (A,B),
(A,C), (A,D), (B,D), (B,E), (C,D), (D,E)).
Undirected Graph
A graph with only undirected edges is said to be undirected graph.
Directed Graph
A graph with only directed edges is said to be directed graph.
Mixed Graph
A graph with undirected and directed edges is said to be mixed graph.
The two vertices joined by an edge are called the end vertices (or endpoints) of the edge.
YOGANANDA. A 2
Origin
Destination
If an edge is directed, its first endpoint is said to be origin of it and the other endpoint is said to
be the destination of the edge.
Adjacent
If there is an edge between vertices A and B then both A and B are said to be adjacent. In other
words, Two vertices A and B are said to be adjacent if there is an edge whose end vertices are A
and B.
Incident
An edge is said to be incident on a vertex if the vertex is one of the endpoints of that edge.
Outgoing Edge
Incoming Edge
Degree
Total number of edges connected to a vertex is said to be degree of that vertex.
Indegree
Total number of incoming edges connected to a vertex is said to be indegree of that vertex.
Outdegree
Total number of outgoing edges connected to a vertex is said to be outdegree of that vertex.
If there are two undirected edges to have the same end vertices, and for two directed edges to
have the same origin and the same destination. Such edges are called parallel edges or multiple
edges.
YOGANANDA. A 3
Self-loop
Simple Graph
A graph is said to be simple if there are no parallel and self-loop edges.
Path
A path is a sequence of alternating vertices and edges that starts at a vertex and ends at a vertex
such that each edge is incident to its predecessor and successor vertex.
Graph Representations
Graph data structure is represented using following representations...
1. Adjacency Matrix
2. Incidence Matrix
3. Adjacency List
Adjacency Matrix
In this representation, graph can be represented using a matrix of size total number of vertices by
total number of vertices. That means if a graph with 4 vertices can be represented using a matrix
of 4X4 class. In this matrix, rows and columns both represents vertices. This matrix is filled with
either 1 or 0. Here, 1 represents there is an edge from row vertex to column vertex and 0
represents there is no edge from row vertex to column vertex.
YOGANANDA. A 4
Directed graph representation...
Incidence Matrix
In this representation, graph can be represented using a matrix of size total number of vertices by
total number of edges. That means if a graph with 4 vertices and 6 edges can be represented
using a matrix of 4X6 class. In this matrix, rows represents vertices and columns represents
edges. This matrix is filled with either 0 or 1 or -1. Here, 0 represents row edge is not connected
to column vertex, 1 represents row edge is connected as outgoing edge to column vertex and -1
represents row edge is connected as incoming edge to column vertex.
Adjacency List
In this representation, every vertex of graph contains list of its adjacent vertices.
For example, consider the following directed graph representation implemented using linked
list...
YOGANANDA. A 5
This representation can also be implemented using array as follows..
YOGANANDA. A 6
As in the example given above, DFS algorithm traverses from S to A to D to G to E to B first,
then to F and lastly to C. It employs the following rules.
Rule 1 − Visit the adjacent unvisited vertex. Mark it as visited. Display it. Push it in a
stack.
Rule 2 − If no adjacent vertex is found, pop up a vertex from the stack. (It will pop up all
the vertices from the stack, which do not have adjacent vertices.)
YOGANANDA. A 7
Visit D and mark it as visited and put onto
the stack. Here, we have B and C nodes,
4 which are adjacent to D and both are
unvisited. However, we shall again choose
in an alphabetical order.
YOGANANDA. A 8
As C does not have any unvisited adjacent node so we keep popping the stack until we find a
node that has an unvisited adjacent node. In this case, there's none and we keep popping until the
stack is empty.
As in the example given above, BFS algorithm traverses from A to B to E to F first then to C and
G lastly to D. It employs the following rules.
Rule 1 − Visit the adjacent unvisited vertex. Mark it as visited. Display it. Insert it in a
queue.
Rule 2 − If no adjacent vertex is found, remove the first vertex from the queue.
YOGANANDA. A 9
Step Traversal Description
YOGANANDA. A 10
Next, the unvisited adjacent node from S
5 is C. We mark it as visited and enqueue
it.
At this stage, we are left with no unmarked (unvisited) nodes. But as per the algorithm we keep
on dequeuing in order to get all unvisited nodes. When the queue gets emptied, the program is
over.
YOGANANDA. A 11