GRAPHS
{ UNIT-4
A data structure that consists of a set of
nodes (vertices) and a set of edges that
relate the nodes to each other
The set of edges describes relationships
among the vertices
A graph G is defined as follows:
G=(V,E)
V(G): a finite, nonempty set of vertices
E(G): a set of edges e (pairs of vertices)
denoted by e=[u,v]
INTRODUCTION
Adjacent nodes: two nodes are adjacent if they are connected by an
edge
5 is adjacent to 7
7 is adjacent from 5
If (v0, v1) is an edge in an undirected graph,
v0 and v1 are adjacent V0 V1
The edge (v0, v1) is incident on vertices v0 and v1
Path: a sequence of vertices that connect two nodes in a graph
The length of a path is the number of edges on it.
0 0 0
1 2 1 2 1 2
3 3 3
simple path (simple directed path): a path in which all vertices, except
possibly the first and the last, are distinct.
A cycle is a simple path in which the first and the last vertices are the
same.
Simple cycle: cycle that does not pass through other vertices more
than once
Complete graph: each pair of distinct vertices has an edge between
them
GRAPH THEORY TERMINOLOGY
Connected graph
In an undirected graph G, two vertices, v and v ,
0 1
are connected if there is a path in G from v to v0 1
An undirected graph is connected if, for every
strongly pair of distinct vertices v , v , there is a path from
i j
connected v to v
i j
component
Strongly Connected Component
0 A directed graph is strongly connected if there
is a directed path from vi to vj and also from vj to
vi
1
GRAPH THEORY TERMINOLOGY
undirected graph
Degree 3
The degree of a vertex is the number of 0
edges incident to that vertex.
3 1 23
For directed graph
in-degree (v) : the number of edges 3
3
that have v as the head
out-degree (v) : the number of edges
G1
that have v as the tail directed graph
0 in:1, out: 1
1 in: 1, out: 2
2 in: 1, out: 0
G3
GRAPH THEORY TERMINOLOGY
What is the number of edges in a complete
directed graph with N vertices?
N * (N-1)
What is the number of edges in a complete
undirected graph with N vertices?
N * (N-1) / 2
GRAPH THEORY TERMINOLOGY
When the edges in a graph have no direction,
the graph is called undirected
When the edges in a graph have a direction, the
graph is called directed (or digraph)
DIRECTED AND UNDIRECTED
GRAPH
Weighted graph: a graph in which each
edge carries a value
WEIGHTED GRAPH
A 1D array is used to represent the vertices
A 2D array (adjacency matrix) is used to
represent the edges
ARRAY BASED REPRESENTATION OF
GRAPHS
Adjacency Matrix
Let G = (V,E) be a graph with n
vertices.
The adjacency matrix of G is a two-
dimensional
n x n array, say A=(aij)
If the edge (vi, vj) is(not) in E(G),
aij=1(0)
Matrix A is called BIT MATRIX
SEQUENTIAL REPRESENTATION
OF GRAPHS
Merits of Adjacency Matrix
For an undirected graph, the degree of
any vertex, i, is its row sum.
For a directed graph, the row sum is
the out-degree, while the column sum
is the in-degree.
SEQUENTIAL REPRESENTATION
OF GRAPHS
Path Matrix
Let G be a simple directed graph with m nodes, v 1,v2-------vm. The path
matrix is m-square matrix P=(pij) defined as follows:
Pij= 1 ; if there is a path from vi to vj
0; otherwise
Consider the following graph: The adjacency matrix A is:
Y X X 0 0 0 1
Y 1 0 1 1
Z 1 0 0 1
W W 0 0 1 0
Z
X Y Z W
SEQUENTIAL REPRESENTATION
OF GRAPHS
The powers A2,A3 and A4 for the matrix A are:
A2 considers paths of length 2
A3 considers paths of length 3
A4 considers paths of length 4 and so on…
The matrix A2 is The matrix A3 is The matrix A4 is
0 0 1 0 1 0 0 1 0 0 1 1
1 0 1 2 1 0 2 2 2 0 2 3
0 0 1 1 1 0 1 1 1 0 1 2
1 0 0 1 0 0 1 1 1 0 1 1
SEQUENTIAL REPRESENTATION
OF GRAPHS
If A is the adjacency matrix and P be the path matrix, then Pij=1 if and only
if there is a non zero number in the ij entry of the matrix.
Bm= A+A2+A3------Am
The graph G in the above eg. contains 4 nodes, Therefore,
Replacing non zero entities in B4,
We obtain the following matrix B4:
we get path matrix P:
1 0 2 3 1 0 1 1
5 0 6 8 1 0 1 1
3 0 3 5 1 0 1 1
2 0 3 3 1 0 1 1
SEQUENTIAL REPRESENTATION
OF GRAPHS
A 1D array is used to represent the vertices
A list is used for each vertex v which contains
the vertices which are adjacent from v
(adjacency list)
LINKED REPRESENTATION OF
GRAPHS
Adjacency lists (LINKED
REPRESENTATION)
There is one list for each vertex in G.
The nodes in list i represent the
vertices that are adjacent from vertex i.
degree of a vertex in an undirected graph
No. of nodes in adjacency list
out-degree of a vertex in a directed graph
No. of nodes in its adjacency list
0
0
1 1 2
3
2
ADJACENCY LIST
QUESTION 8.36
LINKED REPRESENTATION OF
GRAPHS
Many graph algorithms require a way to
systematically examine the nodes and edges of a
graph.
Two algorithm that we will be discussing are :
BFS- uses a queue to hold nodes for future processing
DFS- uses a stack to hold nodes for future processing.
During execution of the algorithm each node N will
have one of the three states:
STATUS=1 ; Ready state
STATUS=2 ; waiting state (on queue or stack)
STATUS=3 ; processed state.
TRAVERSING A GRAPH
In this algorithm, we first examine the start node say A. then examine all the
neighbours of A, then examine all the neighbours of neighbours of A and so
on.
We need to keep track of the neighbours and ensure that no node is processed
more than once.
This algorithm enable us to find the shortest path from source to destination.
BFS_ALGORITHM
1. Initialise all nodes to ready state i.e STATUS=1.
2. Put starting node A in queue and change its STATUS to waiting state
i.e STATUS=2
3. Repeat steps 4 and 5 until queue is empty
4. Remove the front node of Queue and process it and
change its STATUS=3.
5. add to queue all the neighbours of this node and
change their status, STATUS=2.
End of step 3 loop
6. Exit
BREADTH-FIRST SEARCH
Question
BREADTH-FIRST SEARCH
In this algorithm, we first examine the start node say A. Then we examine
each node along the path that begins at A i.e. we process a neighbour of
A, then process the neighbour of neighbour of A and so on.
Once we reach a dead end e back track on this path and continue on a
different path.
This algorithm is very similar to inorder traversal of a binary tree..
DFS_ALGORITHM
1. Initialise all nodes to ready state i.e STATUS=1.
2. Put starting node A on Stack and change its STATUS to
waiting state i.e. STATUS=2
3. Repeat steps 4 and 5 until Stack is empty
4. Pop the top node of Stack and process it and
change its STATUS=3.
5. Push to Stack all the neighbours of this node and
change their status, STATUS=2.
End of step 3 loop
6. Exit
DEPTH-FIRST SEARCH
Question
BREADTH-FIRST SEARCH
This algorithm finds the length of shortest path between two vertices.
Consider a weighted graph G=(V,E)
There are three things associated with every vertex of a graph:
Parent of a vertex; P(V)
Distance of the vertex; d(V)= W(U,V)+ d(U)
Where U and V are two vertices
W denotes the weight on the edge connecting these two vertices.
Color of the vertex, C(V) which can be:
White: C(V)=‘W’ ; when the vertex is not traversed.
Grey: C(V)=‘G’ ; when vertex is being processed.
Black: C(V)=‘B’ ; when all adjacent vertices are found.
SHORTEST PATH ALGORITHM-
DIJKSTRA’S ALGORITHM
DIJKSTRA(G,S) Ref: CORMEN
{
For all v belonging to V
{
C(v)=‘W’
P(v)=nil
d(v)=∞
}
d(S)=0
Maintain a Queue Q and insert all the vertices in this queue
While(Q not empty)
{
u=extractmin(Q);
C(u)=‘G’
for all (v that are adjacent to u)
{
If (C(v)==‘W’)
{
If (d(v)>W(u,v)+d(u))
{
d(v)=W(u,v)+d(u)
P(v)=u
}}}
C(u)=‘B’
} SHORTEST PATH ALGORITHM-DIJKSTRA’S
ALGORITHM
TABLE: it is a data structure that is used to
store information in tabular format.
Two types of tables that we will be discussing
are:
Direct address tables
Hash tables
TABLES
Consider a set of keys U={0,1,2,---------m-1}
Consider a table T such that T[0,1,2--------m-1]
and each position in Array T corresponds to a
key in U.
o
1
Slot containing element
having key 2
2
m-1
DIRECT ADDRESS TABLES
Effective data structure for implementing
dictionaries.
Elements having key K is stored in slot h(k).
o Slot containing element
1 having key h(2)
2
m-1
HASH TABLE
Sometimes elements hash to the same slot. This
causes collision.
o
1
Slot containing Other element
element having having key
2 key h(2) h(2)
m-1 Solution: put the
elements in a linked
List.
COLLISION
SORTING ALGORITHMS
UNIT-6
SELECTION(A,N)
Set MIN=A[0]
LOC=0
Repeat for j=1 to N-1
if MIN>A[j]
Then set MIN=A[j]
And LOC=j
Now interchange A[0] and A[LOC]
Consider an array A of size N. by taking a temp variable i.e.
Let MIN store the minimum value in the array.
LOC stores the location of this element. Temp=A[0]
A[0]=A[LOC]
COMPLEXITY= O(n2) A[LOC]=temp
exit
SELECTION SORT
INSERTION(A,N)
For (K=0 to N-1)
enter the elements of the array
For (i=1 to N-1)
temp=A[i]
PTR= i-1
While(temp<A[PTR])
A[PTR+1]=A[PTR]
PTR=PTR-1
End of while loop
Set A[PTR+1]=temp
COMPLEXITY= O(n2) exit
INSERTION SORT
BUBBLESORT(A,N)
For (k=1 to N-1)
set PTR=0
while PTR<=N-k
if A[PTR]>A[PTR+1]
interchange them
COMPLEXITY= O(n2) set PTR=PTR+1
end of while
End of for loop
exit
BUBBLE SORT
https://www.youtube.com/watch?v=TzeBr
DU-JaY&noredirect=1
MERGE SORT
MERGE SORT
MERGE SORT
MERGE SORT
MERGE SORT
MERGE SORT
MERGE SORT
QUICK SORT
QUICK SORT
QUICK SORT
QUICK SORT