CHP-7 GRAPH - PowerPoint PPT Presentation


PPT – CHP-7 GRAPH PowerPoint presentation | free to download - id: 74de94-NmE4Z


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation



CHP-7 GRAPH Shortest Path(Cont.) For this graph, the adjacency matrix (where, the '-' indicates that there is no direct path between the vertices) and the matrix ... – PowerPoint PPT presentation

Number of Views:40
Avg rating:3.0/5.0
Slides: 36
Provided by: weeblyCom
Learn more at:


Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: CHP-7 GRAPH

  • A graph is a special types of another important
    non-linear data structure called graph.
  • It differ from tree in the sense that it
    represents the relationship that is not necessary
    hierarchical in nature, that is node may have
    more than one parent.

  • A graph denoted by G(V,E) consists of a pair of
    two non-empty sets V and E, where V is a set of
    vertices (nodes) and E is a set of edges.
  • In below fig. the set of vertices is
    1,2,3,4,5,6 and set of edges is(1,2),(2,3),(1,3

Fig.7.1(a) Undirected Graph
  • This Graph is undirected graph since there is no
    direction associated with its edges.
  • In Undirected Graph ,the pair of vertices (1,2)
    and (2,1) represent same edge( means both are
  • See fig.

  • If direction is associated with each edge ,the
    graph is known as directed graph(digraph).
  • For example fig.7.1(b) shows a directed graph in
    which directions are indicated using arrows.
  • Here, the pair of vertices(1,2) and (2,1)
    represents the different edge(means both are

Fig.7.1(b) Directed Graph
  • ADJACENT VERTICES two vertices x and y are said
    to be adjacent ,if there is an edge from x to y
    or from y to x. In fig.7.1(a) vertices 1 and 3, 2
    and 5 are adjacent,but 1 and 5 are not.
  • DEGREE the degree of a vertex x, denoted as
    degree(x), is the number of edges containing x.
    In fig.7.1(a) the degree of vertex 2 is 3.
  • Degree(x) can be zero also which represents that
    vertex x does not belong to any edge.
  • In this case ,vertex is called isolated vertex.
    In below fig. 4 is isolated vertex.

  • PATH a path of length k from vertex x to y is
    defined as a sequence of k1 vertices
    v1,v2,,vk1 such that v1x ,vk1y and vi is
    adjacent to vi1 for i1,2,,k1.
  • For example in fig.7.1(a) there is a path of
    length 2 from vertex 1 to 5 and path of 4 from
    vertex 1 to 6.
  • If v1vk1 then path is said to be closed.
  • If all vertices are distinct except v1 and
    vk1,which may be same, then path is said to be

  • CYCLEA cycle is a closed simple path. if a graph
    contains a cycle, it is called cyclic graph
    otherwise. acyclic graph.
  • LOOP An edge is a loop if its starting and
    ending vertex are same. For example,In Figure 7.
    1 (c) edge (4.4) is a loop.

7.1(c)Disconnected Graph
  • Connected graph A graph is said to be connected
    if there is a path between any two of its
    vertices, that is. there is no isolated vertex.
    For example, the graph shown in Figure 7. l( a )
    is connected whereas the graph shown in Figure
    7.1(c) is not connected.
  • Weighted graph A graph is said to be weighted If
    a non-negative number (called weight) is
    associated with each edge. This weight may
    represent distance between two vertices or cost
    of moving along that edge.. Figure 7.1(d)
    illustrates a weighted graph.

Fig.7.1(d) Weighted Graph
  • Indegree of a vertex Indegree of a vertex x,
    denoted by indeq (x) refers to the number of
    edges terminating at x. For examp1e. in directed
    graph shown in Figure 7. 1(b),indeg(2) 1.
  • Outdegree of a vertex Outdegree of a vertex x,
    denoted by outdeq (x) refers to the number of
    edges originating at x. For examp1e. in directed
    graph shown in Figure 7. 1(b),outdeg(2) 2.
  • A directed graph is said to be strongly
    connected if for every pair of vertices
    ltx,ygt,there exits a directed path from x to y and
    from y to x (see fig.7.1(e) ).
  • A directed graph is said to be weakly connected
    if for every pair of vertices ltx,ygt,there exits a
    path from either x to y or from y to x.(see

  • Two types of representations can be used to
    maintain a graph in memory which are sequential
    (array) and linked representation.
  • In sequential representation ,a graph is
    represented by means of adjacency matrix while in
    linked representation ,it is represented by means
    of adjacency lists.

Adjacency Matrix Representation
  • Given a Graph G (V, E) with n Vertices, the
    adjacency matrix A for this graph is a n x n
    matrix such that
  • Aij 1,if there is edge from vi to vj where
  • 0,if there is no edge
  • This matrix is also known as bit matrix or
    boolean matrix since it contains only two values
    0 and 1.
  • The adjacency matrices for the graphs 7. 1(a) and
    7.1 (b) are shown in fig. 7.2.

Adjacency Matrix Representation
  • Observe that the adjacency matrix for an
    undirected graph is symmetric,that is the upper
    and tower triangles of matrix are same.
  • However, it does not hold always true for the
    directed graph.
  • Note that in the adjacency matrix of directed
    graph, the total number of I 's tells the number
    Of edges and the number of 1s in row tells the
    out degree of corresponding vertex.
  • Although adjacency matrix is a simple way to
    represent a graph but it needs n2 bits to
    represent a graph with n vertices.
  • in case Of undirected graph, by storing only
    upper or lower triangle of the matrix, this space
    can be reduced to half.
  • However, directed graph is not Symmetric always.
    so it takes n2 space for most of the graph

Adjacency Lists
  • In adjacency list representation ,the graph is
    stored as a linked structure.
  • In this representation ,for each vertex, a linked
    list (known as adjacency list) is maintained that
    stores its adjacent vertices.
  • That is ,for n vertices in a graph, there will be
    n adjacency lists.
  • Each list has a header node that points to its
    corresponding adjacency list.
  • The header nodes are stored sequentially to
    provide easy access to adjacency list for each
  • The adjacency lists for graphs 7.1(a) and 7.1(b)
    are shown in fig. 7.3(a) and 7.3(b) respectively.

  • Following are basic operations that can be
    performed on graph
  • (1)Create operation to create an empty graph.
  • (2)Input operation to enter graph information.
  • (3)Display operation to display graph
  • (4)Delete operation to delete a graph.
  • To store the information of graph ,the node is
    defined using structure named nodes as follows.
  • Struct node
  • int info
  • struct node next
  • Node

  • One of the common operations that can be
    performed on graphs is traversing, that is,
    visiting all vertices that are reachable from a
    given vertex.
  • The most commonly used methods for traversing a
    graph are depth-first search and breadth-first

Depth-First Search(DFS)
  • In depth-first search, starting from any vertex,
    a single path P of the graph is traversed until a
    vertex is found whose all-adjacent vertices have
    already been visited.
  • The search then backtracks on the path P until a
    vertex with unvisited adjacent vertices is found
    and then begins traversing a new path p' starting
    from that vertex and so on.
  • This process continues until all the vertices of
    graph are visited.
  • Note that there is always a possibility that a
    vertex can be traversed more than one time.
  • Thus, it is required to keep track whether the
    vertex is already visited.

Depth-First Search(DFS)(Cont.)
  • For example, the depth-first search for the graph
    shown in Figure 7.4(a) results in sequence of
    vertices 1,2,4,3,5,6 which is obtained as
  • 1.Visit a vertex, say, 1.
  • 2. Its adjacent vertices are 2,3,4 and 6. Select
    any unvisited vertex, say, 2.
  • 3. Its adjacent vertices are 1 and 4. Since
    vertex 1 is already visited, select unvisited
    vertex 4.
  • 4. Its adjacent vertices are 1, 2 and 3. Since
    vertices 1 and 2 are already visited, select
  • unvisited vertex 3.
  • 5. Its adjacent vertices are 1,4,5 and 6. Since
    vertices 1 and 4 are already visited, select an
  • unvisited vertex, say, 5.
  • 6. Its adjacent vertices are 3 and 6. Select the
    unvisited vertex 6. Since all the adjacent
  • vertices of vertex 6 are already visited,
    backtrack to visited adjacent vertices to find
  • if there is any unvisited vertex. Since, all the
    vertices are visited, algorithm terminates

Depth-First Search(DFS)(Cont.)
  • To implement depth-first search, an array of
    pointers arr _ptr to store the address of the
    first vertex in each adjacency list and a
    boolean-valued array visi ted to keep track of
    the visited vertices are maintained.
  • Initially, all the values of visited array are
    initialized to Fa1s e to indicate that no vertex
    has been visited yet.
  • As soon as a vertex is visited,its value is
    changed to True in array visi ted. Following is
    the recursive algorithm for depth-first search.

  • In breadth-first search, starting from any
    vertex, all its adjacent vertices are traversed.
  • Then anyone of adjacent vertices is selected and
    all its adjacent vertices that have not been
    visited yet are traversed.
  • This process continues until all the vertices
    have been visited.
  • For example, the breadth-first search for the
    graph shown in Figure 7.4(a) results in sequence
    1,2,3,4,.6,5 which is obtained as follows

  • 1.Visit a vertex, say, 1.
  • 2. Its adjacent vertices are 2, 3,4 and 6. Visit
    all these vertices one by one. select any vertex,
    say, 2 and find its adjacent vertices.
  • 3. Since all the adjacent vertices for 2, that
    is, 1 and 4 are already visited, select vertex 3.
  • 4. Its adjacent vertices are 1, 5 and 6. Visit 5
    as 1 and 6 are already visited.
  • 5. Since all the vertices are visited, the
    process is terminiated.

  • The implementation of breadth-first search is
    quite similar to the implementation of
    depth-first search.
  • The difference is that former uses a queue
    instead of stack (either implicitly via recursion
    or explicitly) to store the vertices of each
    level as they are visited.
  • These vertices are then taken one by one and
    their adjacent vertices are visited and so on
    until all the vertices have been visited. The
    algorithm terminates when the queue becomes empty.

  • The graphs have found application in diverse
    areas. Various real-life situations like traffic
    flow, analysis of electrical circuits, finding
    shortest routes, applications related with
    computation,etc., can be easily managed by the
  • Some of the applications of graphs like
    topological sorting, minimum spanning trees and
    finding shortest path are discussed here.

Topological Sorting
  • The topological sort of a directed acyclic graph
    is a linear ordering of the vertices such that if
    there exists a path from vertex x to y, then x
    appears before y in the topological sort.
  • Formally, for a directed acyclic graph G (V,
    E), where V Vl, V2, V3, . . , Vn , if there
    exists a path from any Vi to Vj then Vi appears
    before Vj in the topological sort.
  • An acyclic directed graph can have more than one
    topological sort.
  • For example, two different topological sorts for
    the graph illustrated in Figure 7.5 are (1, 4,2,
    3) and (1, 2, 4, 3).

Topological Sorting(Cont.)
  • Clearly, if a directed graph contains a cycle,
    topological ordering of vertices is not possible.
  • It is because for any two vertices Vi and Vj in
    the cycle, Vi precedes Vj as well as Vj precedes
  • To exemplify this, consider a simple cyclic
    directed graph shown in Figure 7.6.
  • The topological sort for this graph is (1, 2, 3,
    4) (assuming the vertex 1 as starting vertex).
  • Now, since there exists a path from the vertex 4
    to 1, then according to the definition of
    topological sort, the vertex 4 must appear before
    the vertex 1, which contradicts the topological
    sort generated for this graph.
  • Hence, topological sort can exist only for the
    acyclic graph.

Topological Sorting(Cont.)
  • In an algorithm to find the topological sort of
    an acyclic directed graph, the indegree of the
    vertices is considered.
  • Following are the steps that are repeated until
    the graph is empty.
  • 1. Select any vertex Vi with 0 indegree.
  • 2. Add vertex Vi to the topological sort
    (initially the topological sort is empty).
  • 3. Remove the vertex Vi along with its edges from
    the graph and decrease the indegree of each
    adjacent vertex of Vi by one.
  • To illustrate this algorithm, consider an acyclic
    directed graph shown in Figure 7.7.

Topological Sorting(Cont.)
Topological Sorting(Cont.)
Topological Sorting(Cont.)
  • Another possible topological sort for this graph
    is (1, 3, 4, 2, 5, 7, 6). Hence, it can be
    concluded that the topological sort for an
    acyclic graph is not unique.
  • Topological ordering can be represented
    graphically. In this representation, edges are
    also included to justify the ordering of vertices
    (see Figure 7.9).

Minimum Spanning Trees
  • A spanning tree of a connected graph G is a tree
    that covers all the vertices and the edges
    required to connect those vertices in the graph.
  • Formally, a tree T is called a spanning tree of a
    conneected graph G if the following two
    conditions hold.
  • 1. T contains all the vertices of G and
  • 2. all the edges of T are subsets of edges of G.
  • For a given graph G with n vertices, there can be
    many spanning trees and each tree will have n-l
    edges. For example, consider a graph as shown in
    Figure 7.10.
  • Since this graph has 4 vertices, each spanning
    tree must have 4-1 3 edges. Some of the
    spanning trees for this graph are shown in Figure
  • Observe that in spanning trees, there exists only
    one path between any two vertices and insertion
    of any other edge in the spanning tree results in
    a cycle.

Minimum Spanning Trees(Cont.)
  • For a connected weighted graph G, it is required
    to construct a spanning tree T such that the sum
    of weights of the edges in T must be minimum.
    Such a tree is called a minimum spanning tree.
  • There are various approaches for constructing a
    minimum spanning tree.
  • One such approach has been given by Kruskal. In
    this approach, initially, all the vertices n of
    the graph are considered as distinct partial tree
    having one vertex.
  • The minimum spanning tree is constructed by
    repeatedly inserting one edge at a time until
    exactly n -1 edges are inserted.
  • The edges are inserted in the increasing order of
    their costs. Further, an edge is inserted in the
    tree only if its inclusion does not form a cycle.
  • Consider an undirected weighted connected graph
    shown in Figure 7.12.
  • In order to construct the minimum spanning tree T
    for this graph, the edges must be included in the
  • order (1,3), (1, 2), (1, 6), (4, 6), (3, 6), (2,
    6), (3, 4), (1, 5), (3, 5) and (4,5).
  • This sequence of edges corresponds to the
    increasing order of weights (3, 4, 5, 6, 7, 8, 9,
    12, 14 and 15).
  • The first four edges (1, 3), (1, 2), (1, 6) and
    (4,6) are included in T.
  • The next edge that is to be inserted in order of
    cost is (3, 6). Since, its inclusion in the 'tree
    forms a cycle, it is rejected. For same reason,
    the edges (2, 6) and (3, 4) are rejected.
  • Finally, on the insertion of the edge (1,5), T
    has n-l edges.
  • Thus, the algorithm terminates and the generated
    tree is a minimum spanning tree.
  • The weight of this minimum spanning tree is 30.
    All the steps are shown in Figure 7.13.

Minimum Spanning Trees(Cont.)
Shortest Path
  • There are various algorithms to find the shortest
    path between any two vertices of a graph.
  • One such algorithm was proposed by E.W. Dijkstra.
  • According to this algorithm, initially, the
    adjacency matrix showing the cost of edges of the
    graph is constructed.
  • Starting from any vertex (say, V), the path of
    other vertices from Vi is calculated.
  • Then the cost of each path is compared if the
    cost of a path is smaller than that of previous
    cost, it is replaced with the new cost. This
    process is continued until all the vertices of
    graph are taken into account.
  • To understand the working of Dijkstra's
    algorithm, consider a directed weighted graph
    having 4 vertices shown in Figure 7.14.

Shortest Path(Cont.)
  • For this graph, the adjacency matrix (where, the
    '-' indicates that there is no direct path
    between the vertices) and the matrix representing
    the path between the vertices (where, the '-'
    indicates that till now path is not determined)
    are as follows.
  • Starting from the vertex 1, calculate the cost
    of all the paths that can be visited via vertex
  • From the graph, it is clear that the paths that
    can be visited via vertex 1 are 2-1-3,
    3-1-3,2-1-4 and 3-1-4. Among these paths, the
    cost of the path between vertices 2 and 4 is less
    as compared to the previous one, so it must be
    replaced in the adjacency matrix. Also, a path
    between vertices 3 and 3 is found which must be
    added in the adjacency matrix. The adjacency
    matrix after considering vertex 1 is as follows.

Here, the values that are underlined and bold
indicate that they are either added or replaced.
Shortest Path(Cont.)
  • Now, consider the vertex 2. The resultant
    adjacency matrix and the matrix representing the
    path are as follows.

After considering vertex 2, neither any new path
nor a path whose cost is less than the current
ones is found. Thus, the adjacency matrix remains
the same.
  • Similarly, the adjacency matrix and the matrix
    representing the path after considering vertex 3
    are as follows.
  • Finally, the adjacency matrix and the matrix
    representing the path after considering vertex 4
    are as follows.

Here, the adjacency matrix and the matrix
representing path show the cost of the shortest
path and the shortest path, respectively, between
any two vertices. Note that the' -' indicates
that vertex 2 is unreachable.