GRAPHS
Chapter covers the following topics
Graph terminology: vertex, edge, adjacent, incident, degree, cycle, path,
connected component, spanning tree
Types of graphs: undirected, directed, weighted
Graph representations: adjacency matrix, array adjacency lists, linked adjacency
lists
Graph search methods: breath-first, depth-first search
Algorithms:
– to find a path in a graph
– to find the connected components of an undirected graph
– to find a spanning tree of a connected undirected graph
Graphs
G = (V,E)
V is the vertex set.
Vertices are also called nodes and points.
E is the edge set.
Each edge connects two vertices.
Edges are also called arcs and lines.
Vertices i and j are adjacent vertices iff (i, j) is an edge in the graph
The edge (i, j) is incident on the vertices i and j
Graphs
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 u v
undirected edge directed edge
Undirected Graph
Directed Graph (Digraph)
Directed Graph
It is useful to have a slightly refined notion of adjacency
and incidence
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
Applications – Communication Network
vertex = router
edge = communication link
Applications - Driving Distance/Time Map
vertex = city
edge weight = driving distance/time
Applications - Street Map
• Streets are one- or two-way.
• A single directed edge denotes a one-way street
• A two directed edge denotes a two-way street
Path
Asequence of vertices P = i1, i2, …, ik is an i1 to ik path in the graph
G=(V, E) iff the edge (ij, ij+1) is in E for every j, 1≤ j < k
A simple path is a path in which all vertices, except possibly in the
first and last, are different
Length (Cost) of a Path
Each edge in a graph may have an associated length (or cost). The length of a
path is the sum of the lengths of the edges on the path
What is the length of the path 5, 9, 11, 10?
Spanning Tree
Let G = (V, E) be an undirected graph
A connected undirected graph that contains no cycles is a tree
A subgraph of G that contains all the vertices of G and is a tree is a spanning
tree
A spanning tree has n vertices and n-1 edges
Spanning Trees
• What are the possible spanning trees for this tree?
• What is the cost of each spanning tree?
Minimum-Cost Spanning Tree (MCST)
The spanning tree that costs the least is called the
minimum-cost spanning tree
Which tree is the MCST of the example tree given in the
previous page? What is its cost?
Graph Properties
Number of Edges – Undirected Graph
Each edge is of the form (u,v), u != v.
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
Thus, the number of edges in an undirected graph
is n*(n-1)/2
Number of Edges - Directed Graph
Each edge is of the form (u,v), u != v.
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)
Vertex Degree
• 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
Sum of Vertex Degrees
Sum of degrees = 2e (where e is the number of edges)
In-Degree of a Vertex
• In-degree of 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 a Vertex
• 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
Complete Undirected Graphs
A complete undirected graph has n(n-1)/2 edges (i.e., all possible edges) and is denoted
by Kn
What would a complete undirected graph look like when
n=5? When n=6?
Sample Graph Problems
PathFinding Problems
Connectedness Problems
Spanning Tree Problems
Path Finding
Path between 1 and 8
• What is a possible path & its
length?
• A path is 1, 2, 5, 9, 8 and its
length is 20.
Another Path Between 1 and 8
• Path length is 28.
• What is the path?
Example of No Path
No path between 2 and 9.
Connected Graph
Let G = (V, E) be an undirected graph
G is connected iff there is a path between every pair of vertices in G
Example of Not Connected
Example of Connected Graph
Connected Component
A connected component is a maximal subgraph that is connected.
A connected graph has exactly 1 component.
Connected Components
Not a Component
Communication Network
Each edge is a link that can be constructed
(i.e., a feasible link)
Communication Network Problems
Is the network connected?
– Can we communicate between every pair of cities?
Find the components.
Want to construct the smallest number of
feasible links so that resulting network is connected.
Cycles and Connectedness
• Removal of an edge that is on a cycle does not
affect connectedness.
• Which edges can be removed without affecting the
connectedness?
Cycles and Connectedness
Connected subgraph with all vertices and
minimum number of edges has no cycles.
Representation of Unweighted Graphs
The most frequently used representations for unweighted graphs are
– Adjacency Matrix
– Linked adjacency lists
– Array adjacency lists
Adjacency Matrix
0/1 n x n matrix, where n = # of vertices
A(i, j) = 1 iff (i, j) is an edge.
Adjacency Matrix Properties
Diagonal entries are zero.
Adjacency matrix of an undirected graph is symmetric (A(i,j) = A(j,i) for all i and
j).
Adjacency Matrix for Digraph (Directed Graph)
Diagonal entries are zero.
Adjacency matrix of a digraph need not be symmetric.
Adjacency Matrix Complexity
n2 bytes of space is needed to represent adjacency matrix
For an undirected graph, we may store only lower or upper triangle (exclude
diagonal): (n-1)n/2 bytes.
Requires O(n) time to find vertex degree and/or vertices adjacent to a given
vertex.
Adjacency Lists
Adjacency list for vertex i is a linear list of vertices adjacent from vertex i.
An array of n adjacency lists for each vertex of the graph.
Linked Adjacency Lists
Each adjacency list is a chain.
Array length = n.
# of chain nodes = 2e (undirected graph)
# of chain nodes = e (digraph)
Array Adjacency Lists
Each adjacency list is an array list.
Array length = n.
# of chain nodes = 2e (undirected graph)
# of chain nodes = e (digraph)
(b) Linked adjacency list
(a) adjacency matrix
(c) Array adjacency list