• Introduction

    Graphs provide a rich and powerful way to model relations in complex problems. Graphs can be used to model many real world problems, such as network and transport links.

    This week we will:
    Review basic graph terminology.
    Cover implementation details of different kinds of graphs.
    Study possible uses of graphs.
  • Definitions

    Vertex – a node in a graph
    Edge – link connecting two nodes (relationship)
    Adjacent – two nodes connected by an edge
    Undirected Graph - a graph in which the edges have no directional component. It is possible to move in both directions along an edge between two vertices
    Directed graph (digraph) - a graph in which the edges have directional components. It is possible to move from one vertex to the other only in the indicated direction
    Path – a sequence of distinct vertices, each adjacent to the next
    Cycle – a path containing at least three vertices such that the last vertex is adjacent to the first
    Connected graph – an undirected graph in which there is a path from any vertex to any other vertex
    In-degree – the in-degree of a node is the number of edges that end at that node
    Out-degree – the out-degree of a node is the number of edges that start at that node
    Network – a graph in which the edges are weighted
    Weighted graph – a weighted graph is a graph with weights/cost assigned to each edge
    Graph – represents relationship among nodes, and is defined as a set of vertices (V) and a set of edges (E)
  • Adjacency

    Two nodes that have an edge connection between them are said to be adjacent. If the edge is directed then the adjacency will only be as dictated by the edge direction.

    An Example Digraph (directed graph)
    An Example Digraph (directed graph)

    Vertices

    The vertices in the graph above can be represented as,

    $$ V = \{0, 1, 2, 3, 4, 5, 6 \} $$

    Edges

    The edges in the graph can be represented as:

    $$ E = \{\{0, 1\}, \{0, 5\}, \{0, 6\}, \{1, 2\}, \{1, 3\}, \{1, 5\}, \{2, 6\}, \{3, 2\}, \{4, 3\}, \{5, 3\}, \{6, 5\}\} $$

    In-degree and Out-degree

    In and Out-degree for few of the vertices are as shown:

    In Degree Out Degree Diagram

    Adjacency

    For the above graph, the vertices adjacent to vertex 5 is vertex 3 and those adjacent to vertex 1 are {2, 3, 5}.

    Undirected graphs

    In an undirected graph it is possible to move in both directions along an edge between two vertices.

    Undirected Graph Diagram

    Vertices

    Each vertex is part of the set V of vertices in the graph

    $$ V = \{0,1,2,3,4, 5, 6\} $$

    Edges

    Each edge can be represented as a pair of vertices

    $$ E = \{\{0, 1\}, \{0, 5\}, \{0, 6\}, \{1, 2\}, \{1, 3\}, \{1, 5\}, \{2, 6\}, \{3, 2\}, \{4, 3\}, \{5, 3\}, \{6, 5\}\} $$

    Adjacency

    For the above graph, the vertices adjacent to vertex 5 are {0, 1, 3, 6} and those adjacent to vertex 1 are {0, 2, 3, 5}.
  • Graph ADT Operations

    addVertex( ) - creates a new vertex
    addEdge( ) - creates a new edge
    removeVertex( ) - removes the vertex and its associated edges
    removeEdge( ) - removes the edge
    vertexSize( ) - returns the number of vertices in the graph
    edgeSize( ) - returns the number of edges in the graph
    inDegree( ) - returns number of incoming edges to a vertex
    outDegree( ) - returns the number of outgoing edges from a vertex
    adjacent( ) - checks if the given vertices are adjacent
    
  • Graph Representation

    A directed graph.
    directed Graph Diagram

    Adjacency List for a directed graph

    This representation uses a linked list to represent the set of adjacent vertices. The connectivity (adjacency) of each vertex can then be represented through a linked list.

    Adjacency List for a directed Graph Diagram

    The out-degree of each vertex can easily be counted using this representation e.g., vertex 3 doesn’t connect to any other vertices, out degree is 0. Vertex 1 connects to 3 others and has an out-degree of 3. For the in-degree count number of times a vertex appears in the list of connected nodes e.g., vertex 2 appears twice, in-degree is therefore 2.

    Adjacency Matrix for a directed graph

    Adjacency Matrix for a directed Graph Diagram

    An undirected graph.
    undirected Graph Diagram with accompanying Matrix

    In case of an undirected graph (shown above), the matrix will be symmetrical, that is, both A(i, j) and A(j,i) values would be the same. For example consider A(3,4) and A(4,3) being 1 indicating that one can move from 3 to 4 and also from 4 to 3.

    Adjacency Matrix for the undirected graph

    Adjacency Matrix for an undirected Graph Diagram

    Adjacency List for an Undirected Graph Diagram

    Characteristics of Adjacency List

    No wasted memory space.

    Sequential access only to find adjacent access.

    Characteristics of Adjacency Matrix

    Space is wasted.

    Easy to determine adjacency.
  • Graph Application

    Shortest path
    Determine the shortest path between a given vertex and other vertices. This is important to reduce costs significantly through efficient routing of goods and services.

    Critical path analysis
    Critical Path Analysis helps you to identify the minimum length of time needed to complete a project. Any delay on the critical path events are likely to delay the whole project. Thus the project can be completed in the allocated time by allocating resources appropriately.
  • Shortest Path Algorithm - Introduction

    Many real world problems require computing the shortest path in a network. This is very important problem to solve for transport links, networks, pipelines etc. For such problems we can associate a cost to each edge (that is a weighted graph) and then measure the least cost that would be involved between any two given nodes. The cost could be a measure of distance for example in a transportation link. One popular algorithm to find the shortest path between a given vertex and all other vertices is Dijkstra’s algorithm.

    A weighted graph

    A weighted graph will have a weight assigned to the edges. It is possible to have an edge between two vertices have a different weight in each direction. An example weighted graph is shown below.

    Weighted Graph Diagram

    Shortest path

    The shortest path between any two vertices is the one with the smallest sum of the weighted edges
    Example: what is the shortest path between vertex 0 and vertex 3?

    Shortest path problem

    Consider the following graph. We need to determine the shortest path from the vertex 0 to vertex 3.

    Shortest Path Diagram

    There are two paths to consider:
    Path 1: 0 → 1 → 4 → 3
    Path 3: 0 → 1 → 3

    Shortest Path Diagram with path highlighted

    by calculating the edge weights it can be found that the path 0 → 1 → 4 → 3 as shown on the graph with red lines is the shortest path in getting from vertex 0 to vertex 3.
  • Summary

    A graph ADT is used to represent the relationships between nodes such as in a network.
    The graph can be implemented either as an adjacency list or an adjacency matrix.
    There are many applications of graphs such as finding the shortest path or the critical path.