1 / 64

Graphs

Graphs. Chapter 12 Graphs Overview Graphs provide a rich and powerful way to model relations. Chapter Objectives. 1. To review basic graph vocabulary and concepts. 2. To develop classes that model various kinds of graphs.

curt
Download Presentation

Graphs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Graphs

  2. Chapter 12 • Graphs • Overview • Graphs provide a rich and powerful way to model relations.

  3. Chapter Objectives • 1. To review basic graph vocabulary and concepts. • 2. To develop classes that model various kinds of graphs. • 3. To learn some useful algorithms for manipulating graphs.

  4. Graphs • Graphs represent many real-world problems • They do so by showing complex relationships between objects

  5. Course prerequisites

  6. Prerequisites in Graphical Form

  7. Tables and graphs • One is commonly used to represent the other. • Both have a two-dimensional quality • Both can be used to represent relationships between objects

  8. Graph Terminology • Graph - represents relationship among nodes • Vertex - a node in a graph • Edge - link connecting 2 nodes (relationship) • Adjacent - 2 nodes connected by an edge • Undirected Graph - a graph in which the edges have no directional component

  9. Terminology (con’t) • Network - a graph in which the edges are weighted • Directed graph (digraph) - a graph in which the edges have directional components (like the course prerequisites example)

  10. Terminology (con’t) • Path - a sequence of distinct vertices, each adjacent to the next • Cycle - an undirected 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

  11. Types of graphs

  12. Terminology (con’t) • Disconnected Graph - an undirected graph in which it is impossible to get to at least one node from any other vertex • Free tree - a connected, undirected graph with no cycles

  13. examples

  14. Directed cycle - a directed path which is cyclical

  15. Strongly connected - a digraph in which there is a directed path from any vertex to any other vertex

  16. Weakly connected - a digraph in which it is not possible to go from any vertex to any other

  17. Graph theory • Graphs may be most conveniently defined in terms of sets. • First, we have a set of vertices (V) • Second, we have a set of edges (E) • A graph is a set of V and E

  18. Adjacency • If there is an edge connection two nodes then they are adjacent. • Note: if the edge is directed, then there is only adjacency one way. • Let Av be the set of all vertices adjacent to a given vertex v

  19. Adjacency • For the subsets Av, we can construct the edges as ordered pairs by the rule: • The pair (v,w) is an edge if and only if w is a member of Av.

  20. An Example Digraph

  21. Vertices Each vertex is part of the set V of vertices in the graph V = {0,1,2,3,4}

  22. Edges Each edge can be represented as a pair of vertices E = {{0,3}, {1,0}, {1,2}, {1,4}, {2,1}, {4,0},{4,2}}

  23. Graphs and set theory • We can keep track of all the edges in a graph by keeping track, for all vertices v, of the set of edges containing v (E). • Similarly, we could keep track of the set A of all vertices adjacent to v.

  24. Pairs adjacent to vertex 0 (A0) The vertices adjacent to vertex 0 are the set A0 = {3}

  25. New graph definition • This leads us to a new definition of a graph: • A graph G consists of a set V, called the vertices of G, and, for all v in V, a subset A of V, consisting of the set of vertices adjacent to v.

  26. Graph definition G = V + A, V = {0,1,2,3,4}, A0 = {3} A1 = {0,2,4} A2 = {1} A3 = {} A4 = {0,2}

  27. Undirected graphs • This definition works with undirected graphs as well: • An undirected graph is one which satisfies the following symmetry property: • if w is a member of Av, this implies that v is a member of Aw, for all v and w such that v,w are members of V

  28. Undirected Graph

  29. Vertices Each vertex is part of the set V of vertices in the graph V = {0,1,2,3,4}

  30. Edges Each edge can be represented as a pair of vertices E = {{0,1}, {0,3}, {0,4}, {1,2}, {1,4}, {2,4}}

  31. Pairs adjacent to 0 (A0) The vertices adjacent to vertex 0 are the set A0 = {1,3,4}

  32. Graph definition G = V + A, V = {0,1,2,3,4}, A0 = {1,3,4} A1 = {0,2,4} A2 = {1} A3 = {0} A4 = {0,1}

  33. How to represent graphs • Since graphs are sets and subsets, they need a two dimensional structure • One dimension is the vertices • The other dimension is the edges (or the vertices adjacent to the one we are on)

  34. What might do with graphs? • Neighborhood queries • For a vertex, find all edges connected to other vertices • Edge member queries • Determine whether an edge is in the graph

  35. Analysis • If there are n vertices • and m edges • it may take as many as n*m operations to traverse every relationship represented in a graph • Depending on our representation of the graph we may be able to streamline the searching process

  36. List representation • One method of implementing a graph is to employ a List of vertices, such that from each vertex we can have access to those which are adjacent. • A list of linked lists is one method of doing this.

  37. An Adjacency List

  38. Adjacency Lists • Linked implemetation • Advantages • No wasted memory space • Disadvantages • More complicated. • Sequential access only. • Search would be O(n) where n is the number of possible vertices adjacent to any given vertex.

  39. Contiguous implementation • Advantages • Less awkward than linked • Allows for random access

  40. Adjacency Matrix

  41. Adjacency Tables • Advantages • Easy to interpret. • A[v,w] is true only if vertex v is adjacent to vertex w. • If the graph is directed then this indicates an edge from v to w. • If the graph is undirected then the adjacency table is symmetric and A[w,v] will also be true.

  42. Disadvantages • Mirrored across the diagonal for undirected graphs • Not sparse.

  43. UAL GraphADT • Characteristics • An Undirected Adjacency List Graph G = (V,E) stores an undirected graph so that vertex neighbors can be found efficiently. • The number of vertices in the graph, n = |V|, is fixed when the graph is created. • The vertices are labeled 0…n-1.

  44. Operations:

  45. vertexSize() • int vertexSize() • Precondition: None. • Postcondtion: None. • Returns: The number of vertices in the graph, |V|.

  46. edgeSize() • int edgeSize() • Precondition: None. • Postcondtion: None. • Returns: The number of edges in the graph, |E|.

  47. addEdge() • void addEdge(i,j) • Precondition: • Postcondition:

  48. nextNeighbor() • int nextNeighbor(i) • Precondition: • Postcondition: If the current iterator position is within the neighbor list, it’s advanced to the next neighbor; if it’s at the end of the neighbor list, it’s reset to the beginning. • Returns: The next neighbor of i, or n if at the end of the list.

  49. DAL Graph ADT • Characteristics • A Directed Adjacency List Graph G = (V,E) stores an directed graph so that vertex neighbors can be found efficiently. • The number of vertices in the graph, n = |V|, is fixed when the graph is created. • The vertices are labeled 0…n-1.

  50. vertexSize() and edgeSize() • int vertexSize() • Precondition: None. • Postcondition: None. • Returns: The number of vertices |V|. • int edgeSize() • Precondition: None. • Postcondition: None. • Returns: The number of edges |E|.

More Related