Graphs
● A datastructure 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 (pairs of vertices)
2
Graph
3.
Examples of Graphs
●V={0,1,2,3,4}
● E={(0,1), (1,2), (0,3), (3,0), (2,2), (4,3)}
Graph 3
0
1
4
2
3
When (x,y) is an edge,
we say that x is adjacent to y, and y
is adjacent from x.
0 is adjacent to 1.
1 is not adjacent to 0.
2 is adjacent from 1.
4.
Directed vs. UndirectedGraphs
● Undirected edge has no orientation (no arrow head)
● Directed edge has an orientation (has an arrow head)
● Undirected graph – all edges are undirected
● Directed graph – all edges are directed
u v
directed edge
u v
undirected edge
4
Graph
Directed graph Undirectedgraph
Directed Graph
● Directed edge (i, j) is incident to vertex j and
incident from vertex i
● Vertex i is adjacent to vertex j, and vertex j is
adjacent from vertex i
6
Graph
7.
Graph terminology
● Adjacentnodes: two nodes are adjacent if they are
connected by an edge
● Path: a sequence of vertices that connect two
nodes in a graph
● A simple path is a path in which all vertices, except
possibly in the first and last, are different.
● Complete graph: a graph in which every vertex is
directly connected to every other vertex
5 is adjacent to 7
7 is adjacent from
5
7
Graph
8.
Continued…
● A cycleis a simple path with the same start and
end vertex.
● The degree of vertex i is the no. of edges incident on
vertex i.
e.g., degree(2) = 2, degree(5) = 3, degree(3) = 1
Graph 8
9.
Continued…
Undirected graphs areconnected if there is a path
between any two vertices
Directed graphs are strongly connected if there is a path
from any one vertex to any other
Directed graphs are weakly connected if there is a path
between any two vertices, ignoring direction
A complete graph has an edge between every pair of
vertices
9
Graph
10.
Continued…
● Loops: edgesthat connect a vertex to itself
● Paths: sequences of vertices p0, p1, … pm such that
each adjacent pair of vertices are connected by an
edge
● A simple path is a path in which all vertices, except
possibly in the first and last, are different.
● Multiple Edges: two nodes may be connected by >1
edge
● Simple Graphs: have no loops and no multiple edges
10
Graph
11.
Graph Properties
Number ofEdges – Undirected Graph
● The no. of possible pairs in an n vertex graph is
n*(n-1)
● Since edge (u,v) is the same as edge (v,u), the
number of edges in an undirected graph is n*(n-
1)/2.
Graph 11
12.
Number of Edges- Directed Graph
● The no. of possible pairs in an n vertex graph is
n*(n-1)
● Since edge (u,v) is not the same as edge (v,u), the
number of edges in a directed graph is n*(n-1)
● Thus, the number of edges in a directed graph is ≤
n*(n-1)
Graph 12
13.
Graph 13
• In-degreeof vertex i is the number of edges incident to i (i.e.,
the number of incoming edges).
e.g., indegree(2) = 1, indegree(8) = 0
• Out-degree of vertex i is the number of edges incident from i
(i.e., the number of outgoing edges).
e.g., outdegree(2) = 1, outdegree(8) = 2
14.
Graph Representation
● Forgraphs to be computationally useful, they have to
be conveniently represented in programs
● There are two computer representations of graphs:
● Adjacency matrix representation
● Adjacency lists representation
Graph 14
15.
● Adjacency Matrix
●A square grid of boolean values
● If the graph contains N vertices, then the grid contains
N rows and N columns
● For two vertices numbered I and J, the element at row I
and column J is true if there is an edge from I to J,
otherwise false
Graph 15
Adjacency Lists Representation
●A graph of n nodes is represented by a one-
dimensional array L of linked lists, where
● L[i] is the linked list containing all the nodes adjacent
from node i.
● The nodes in the list L[i] are in no particular order
Graph 19
20.
Graph
Graphs: Adjacency List
●Adjacency list: for each vertex v ∈ V, store a list of
vertices adjacent to v
● Example:
● Adj[1] = {2,3}
● Adj[2] = {3}
● Adj[3] = {}
● Adj[4] = {3}
● Variation: can also keep
a list of edges coming into vertex
1
2 4
3
20
21.
Graphs: Adjacency List
●How much storage is required?
● The degree of a vertex v = # incident edges
● Directed graphs have in-degree, out-degree
● For directed graphs, # of items in adjacency lists is
Σ out-degree(v) = |E|
For undirected graphs, # items in adjacency lists is
Σ degree(v) = 2 |E|
● So: Adjacency lists take O(V+E) storage
21
Graph