0% found this document useful (0 votes)
18 views18 pages

Graph Definition

The document discusses different ways to represent graphs, including adjacency matrices and adjacency lists. It covers basic graph terminology like vertices, edges, directed vs undirected graphs, and weighted vs unweighted graphs. Implementation details are provided for representing graphs using adjacency matrices and adjacency lists.

Uploaded by

ims
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views18 pages

Graph Definition

The document discusses different ways to represent graphs, including adjacency matrices and adjacency lists. It covers basic graph terminology like vertices, edges, directed vs undirected graphs, and weighted vs unweighted graphs. Implementation details are provided for representing graphs using adjacency matrices and adjacency lists.

Uploaded by

ims
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 18

Graphs

Algorithm Design and Analysis

Bibliography:
[CLRS]- Subchap 22.1 – Representation of Graphs
Graphs (part1)
• Basic concepts
• Graph representation
Graphs
• A graph G = (V, E)
– V = set of vertices
– E = set of edges = subset of V  V
– |E| <= |V|2
Directed/undirected graphs
• In an undirected graph:
– Edge (u,v)  E implies that also edge (v,u)  E
– Example: road networks between cities
• In a directed graph:
– Edge (u,v)  E does not imply edge (v,u)  E
– Example: street networks in downtown
Directed/undirected graphs
Directed graph Undirected graph

[CLRS] Fig 22.1, 22.2

• Self-loop edges are possible only in directed graphs


Degree of a vertex

In-degree=2 degree=3
Out-degre=1

• Degree of a vertex v:
– The number of edges adjacenct to v
– For directed graphs: in-degree and out-degree
Weighted/unweighted graphs
• In a weighted graph, each edge has an
associated weight (numerical value)
Connected/disconnected graphs
• An undirected graph is a connected graph if
there is a path between any two vertices
• A directed graph is strongly connected if there is
a directed path between any two vertices
Dense/sparse graphs
• Graphs are dense when the number of edges is
close to the maximum possible, |V|2
• Graphs are sparse when the number of edges is
small (no clear threshold)

• If you know you are dealing with dense or


sparse graphs, different data structures are
recommended for representing graphs
– Adjacency matrix
– Adjacency list
Representing Graphs –
Adjacency Matrix
• Assume vertexes are numbered V = {1, 2, …, n}
• An adjacency matrix represents the graph as a n
x n matrix A:
– A[i, j] = 1 if edge (i, j)  E
= 0 if edge (i, j)  E
• For weighted graph
– A[i, j] = wij if edge (i, j)  E
= 0 if edge (i, j)  E
• For undirected graph
– Matrix is symmetric: A[i, j] = A[j, i]
Graphs: Adjacency Matrix
• Example – Undirected graph:

[CLRS] Fig 22.1


Graphs: Adjacency Matrix
• Example – Directed Unweighted Graph:

[CLRS] Fig 22.2


Graphs: Adjacency Matrix
• Time to answer if there is an edge between
vertex u and v: Θ(1)
• Memory required: Θ(n2) regardless of |E|
– Usually too much storage for large graphs
– But can be very efficient for small graphs
Graphs: Adjacency List
• Adjacency list: for each vertex v  V, store a list
of vertices adjacent to v
• Weighted graph: for each vertex u  adj[v], store
also weight(v,u)
Graph representations: Adjacency List

• Undirected unweighted graph

[CLRS] Fig 22.1


Graph representations: Adjacency List

• Directed unweighted graph

[CLRS] Fig 22.2


Graphs: Adjacency List
• How much memory is required?
• For directed graphs
– |adj[v]| = out-degree(v)
– Total number of items in adjacency lists is
 out-degree(v) = |E|
• For undirected graphs
– |adj[v]| = degree(v)
– Number of items in adjacency lists is
 degree(v) = 2 |E|
• Adjacency lists needs (V+E) memory space
• Time needed to test if edge (u, v)  E is O(E)
Graph Implementation - Lab
• http://staff.cs.upt.ro/~ioana/algo/2019/
lab_mst.html

• You are given an implementation of a SimpleGraph ADT:


– ISimpleGraph.java defines the interface of the SimpleGraph ADT
– DirectedGraph.java is an implementation of the SimpleGraph as
a directed graph. The implementation uses adjacency
structures.
– UndirectedGraph.java is an implementation of SimpleGraph as a
undirected graph. The implementation extends class
DirectedGraph described before, by overriding two methods:
addEdge and allEdges.

You might also like