Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
1
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 Graphs as one of the most important non-linea...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 A graph G is a discrete structure consisting ...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 Graphs are classified as directed and undirec...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 Graph
5
create() :Graph
insert vertex(Graph, ...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 Adjacency matrix (sequential representation)
...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 The graphs represented using a sequential
rep...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
8
Adjacency Matrix
representation
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 In an adjacency list, the n rows of the adjac...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
10
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
11
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
12
 Multiclass are lists where nodes may be
sh...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 The node structure of such a list can be
repr...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
14
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 Inverse adjacency lists is a set of lists tha...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
16
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 DFS starts at the vertex v of G as a start ve...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
18
(a) Graph and its (b) adjacency list
represe...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 A tree is a connected graph with no cycles
 ...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 In BFS, all the unvisited vertices adjacent t...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
21
Breadth-first search sequence for the
graph
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 A tree is a connected graph with no cycles
 ...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
23
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 An undirected graph is connected if there is ...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 Following fig shows the Sample graph with one...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 Following fig shows the Graph with two connec...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 Prim’s algorithm starts from one vertex and g...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
28
Minimum Spanning Tree
Minimum
Spanning Tree
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 Another way to construct a minimum spanning t...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 The shortest path between two given vertices ...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
31
Shortest Path Algorithm
Directed weighted gr...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 Graphs are one of the most important non-line...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
 Graphs are implemented using an array or a li...
Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil
End
of
Chapter 8…!
34
Upcoming SlideShare
Loading in …5
×

8. Graph - Data Structures using C++ by Varsha Patil

8. Graph - Data Structures using C++ by Varsha Patil

  • Be the first to comment

8. Graph - Data Structures using C++ by Varsha Patil

  1. 1. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil 1
  2. 2. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  Graphs as one of the most important non-linear data structures  The representation that models various kinds of graphs  Some useful graph algorithms 2
  3. 3. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  A graph G is a discrete structure consisting of nodes (vertices) and the lines joining the nodes (edges)  For finite graphs, V and E are finite. We can write a graph as G = (V, E) Graph traversals— Visiting all the vertices and edges in a systematic fashion is called as a graph traversal 3
  4. 4. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  Graphs are classified as directed and undirected graphs  In an undirected graph, an edge is a set of two vertices where order does not make any relevance, whereas in a directed graph, an edge is an ordered pair 4
  5. 5. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  Graph 5 create() :Graph insert vertex(Graph, v) :Graph delete vertex(Graph, v) :Graph insert edge(Graph, u, v) :Graph delete edge(Graph, u, v) :Graph is empty(Graph) :Boolean; end graph
  6. 6. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  Adjacency matrix (sequential representation)  Adjacency list (linked representation)  Adjacency Multilist  Inverse Adjacency List 6 Representation of Graphs
  7. 7. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  The graphs represented using a sequential representation using matrices is called an adjacency matrix 7 Adjacency Matrix
  8. 8. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil 8 Adjacency Matrix representation
  9. 9. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  In an adjacency list, the n rows of the adjacency list are represented as n-linked lists, one list per vertex of the graph  We can represent G by an array Head, where Head[i] is a pointer to the adjacency list of vertex i  Each node of the list has at least two fields: vertex and link  The vertex field contains the vertex–id, and link field stores the pointer to the next node storing another vertex adjacent to i 9 Adjacency Lists
  10. 10. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil 10
  11. 11. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil 11
  12. 12. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil 12  Multiclass are lists where nodes may be shared among several other lists
  13. 13. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  The node structure of such a list can be represented as follows : 13
  14. 14. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil 14
  15. 15. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  Inverse adjacency lists is a set of lists that contain one list for vertex  Each list contains a node per vertex adjacent to the vertex it represents 15
  16. 16. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil 16
  17. 17. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  DFS starts at the vertex v of G as a start vertex and v is marked as visited  Then, each unvisited vertex adjacent to v is searched using the DFS recursively  Once all the vertices that can be reached from v have been visited, the search of v is complete  If some vertices remain unvisited, we select an unvisited vertex as a new start vertex and then repeat the process until all the vertices of G are marked visited 17
  18. 18. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil 18 (a) Graph and its (b) adjacency list representation
  19. 19. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  A tree is a connected graph with no cycles  A spanning tree is a sub-graph of G that has all vertices of G and is a tree  A minimum spanning tree of a weighted graph G is the spanning tree of G whose edges sum to minimum weight 19
  20. 20. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  In BFS, all the unvisited vertices adjacent to i are visited after visiting the start vertex i and marking it visited  Next, the unvisited vertices adjacent to these vertices are visited and so on until the entire graph has been traversed 20
  21. 21. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil 21 Breadth-first search sequence for the graph
  22. 22. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  A tree is a connected graph with no cycles  A spanning tree is a sub-graph of G that has all vertices of G and is a tree  A minimum spanning tree of a weighted graph G is the spanning tree of G whose edges sum to minimum weight 22
  23. 23. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil 23
  24. 24. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  An undirected graph is connected if there is at least one path between every pair of vertices in the graph  A connected component of a graph is a maximal connected sub- graph, that is, every vertex in a connected component is reachable from the vertices in the component 24 Connected Components
  25. 25. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  Following fig shows the Sample graph with one connected component 25
  26. 26. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  Following fig shows the Graph with two connected components 26
  27. 27. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  Prim’s algorithm starts from one vertex and grows the rest of the tree by adding one vertex at a time, by adding the associated edges  This algorithm builds a tree by iteratively adding edges until a minimal spanning tree is obtained, that is, when all nodes are added  At each iteration, it adds to the current tree a vertex though minimum weight edge that does not complete a cycle 27 Prim’s Algorithm
  28. 28. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil 28 Minimum Spanning Tree Minimum Spanning Tree
  29. 29. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  Another way to construct a minimum spanning tree for a graph G is to start with a graph T = (V′, E′ = ø) consisting of the n vertices of G and having no edges  In Prim’s algorithm, we start with one connected component, add a vertex to have one connected component and no cycles, and end up with one connected component  Here, we start with n connected components; at each step, the number of connected components would reduce by one and end up with one connected component 29 Kruskal’s Algorithm
  30. 30. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  The shortest path between two given vertices is the path having minimum length  This problem can be solved by one of the greedy algorithms, by Edger W. Dijkstra, often called as Dijkstra’s algorithm 30 Shortest Path Algorithm
  31. 31. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil 31 Shortest Path Algorithm Directed weighted graph Shortest Path
  32. 32. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  Graphs are one of the most important non-linear data structures. A graph is a representation of relation  Vertices represent elements and edges represent relationships  In other words, a graph is a collection of nodes (vertices) and arcs joining pair of the nodes (edges)  Graphs are classified as directed and undirected graphs. In an undirected graph, an edge is a set of two vertices where order does not make any relevance, whereas in a directed graph, an edge is an ordered pair. 32 Summary
  33. 33. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil  Graphs are implemented using an array or a linked list representation  An adjacency list is a data structure for representing a graph by keeping a list of the neighbour vertices for each vertex  An adjacency matrix is a data structure for representing a graph as a Boolean matrix where 0 means no edge and 1 corresponds to an edge  A minimum spanning tree is a tree, containing all the vertices of a graph, where the total weight of the edges is minimum  The two popularly used algorithms to compute minimum spanning tree are the following: Prim’s and Kruskal’s algorithms  Dijkstra’s algorithm is another common algorithm for graphs to find the shortest path between two vertices of a graph 33 Summary
  34. 34. Oxford University Press © 2012Data Structures Using C++ by Dr Varsha Patil End of Chapter 8…! 34

×