1 / 39

GRAPHS

Learn about the graph data structure, its definitions, uses, and methods including adjacency, paths, cycles, connectivity, and traversal. Explore different implementations and compare their efficiency.

cmcknight
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. Definition • The Graph Data Structure • set V of vertices • collection E of edges (pairs of vertices in V) • Drawing of a Graph • vertex <-> circle/oval • edge <-> line connecting the vertex pair

  3. Sample Uses • Airports and flights • Persons and acquaintance relationships • Intersections and streets • Computers and connections; the Internet

  4. Graph Example Graph G=(V,E): V={a,b,c,d}, E={(a,b),(b,c),(b,d),(a,d)} a b c d

  5. Adjacency • Vertices connected by an edge are adjacent • An edge e is incident on a vertex v (and vice-versa) if v is an endpoint of e • Degree of a vertex v, deg(v) • number of edges incident on v • if directed graph, indeg(v) and outdeg(v)

  6. Graph Properties Graph G with n vertices and m edges • v in G deg(v) = 2m • v in G indeg(v) = v in G outdeg(v) = m • m is O(n2) • m <= n(n-1)/2 if G is undirected • m <= n(n-1) if G is directed

  7. Subgraphs • Graph H a subgraph of graph G • vertex set of H is a subset of vertex set of G • edge set of H is a subset of edge set of G • Spanning subgraph • vertex set of H identical to vertex set of G

  8. Paths and Cycles • (simple) Path • sequence of distinct vertices such that consecutive vertices are connected through edges • (simple) Cycle • same as path except that first and last vertices are identical • Directed paths and cycles • edge directions matter

  9. Connectivity • Connected graph • there is a path between any two vertices

  10. Graph Methods • Container methods • General or Global methods • numVertices(),numEdges(),vertices(),edges() • Directed Edge methods • indegree(v), inadjacentVertices(v), inincidentEdges(v) • Update methods • adding/removing vertices or edges

  11. General Methods • numvertices()-returns the number of vertices in G • numedges()- returns the number of edges in G • vertices()- return an enumeration of the vertex positions in G • edges()- returns an enumeration of the edge positions in G

  12. General Methods • Degree (v) - returns the degree of v • adjacentvertices(v)- returns an enumeration of the vertices adjacent to v • incidentedges(v)- returns an enumeration of the edges incident upon v • endvertices(e)- return an array of size 2 storing the end vertices of e

  13. Directed Edges • Directededges()- return an enumeration of all directed edges • indegree(v)- return the indegree of v • outdegree(v)- return the outdegree of v • origin (v)- return the origin of directed edge e • other functions- inadjacentvertices(), outadjacentvertices(), destination()

  14. Updating Graphs • Insertedge(v,w,o)- insert and return an undirected edge between vertices v and w storing the object o at this position • Insertvertex(o)- insert and return a new vertex storing the object o at this position • removevertex (v)- remove the vertex v and all incident edges • removeedge(e)- remove edge e

  15. Implementation of a graph data structure

  16. Graph Implementations • Edge List • vertices and edges are nodes • edge nodes refer to incident vertex nodes • Adjacency List • same as edge list but vertex nodes also refer to incident edge nodes • Adjacency Matrix • 2D matrix of vertices; entries are edges

  17. Implementation Examples • Illustrate the following graph using the different implementations 4 a b 5 1 3 c d 2

  18. Edge List

  19. Adjacency List

  20. Adjacency Matrix

  21. Implementation Examples-Query • Illustrate the following graph using the different implementations 4 a b 8 5 e 1 3 6 c 7 d 2

  22. Comparing Implementations • Edge List • simplest but most inefficient • Adjacency List • many vertex operations are O(d) time where d is the degree of the vertex • Adjacency Matrix • adjacency test is O(1) • addition/removal of a vertex: resize 2D array

  23. Graph Traversals • Traversal- A systematic procedure for exploring a graph by examining all of its vertices and edges • Consistency- rules to determine the order of visits (top-down, alphabetical,etc.)- make the path consistent with the actual graph (don’t change conventions)

  24. Graph Traversals • Depth First Search (DFS) • visit a starting vertex s • recursively visit unvisited adjacent vertices • Breadth First Search (BFS) • visit starting vertex s • visit unvisited vertices adjacent to s, then visit unvisited vertices adjacent to them, and so on … (visit by levels)

  25. DFS Traversal • Depth First Search- recursively visit (traverse) unvisited vertices • Dead End- reaching a vertex where all the incident edges go to a previously visited vertex • Back Track- If a dead-end vertex is reached, go to the previous vertex

  26. Traversal Examples • DFS: a,b,c,d,h,e,f,g,l,k,j,i c b d a e g f h i j l k

  27. DFS Traversal • Path of the DFS traversal- path=a,b,c,d,h- h is a dead end vertex- back track to d,c,b,a and go to another adjacent (unvisited) vertex -> e- path=a,e,f,g,k,j,i- i is a dead end vertex - back track to all the way back to a (also a dead end vertex) • finished

  28. BFS Traversal • Visit adjacent vertices by levels • discovery edges- edges that lead to an unvisited vertex • cross edge- edges that lead to a previously visited vertex

  29. Traversal Examples • BFS: a,b,e,i,c,f,j,d,g,k,h,l c b d a e g f h i j l k

  30. DFS Algorithm Algorithm DFS(v) Input: Vertex v Output: Depends on the application mark v as visited; perform processing for each vertex w adjacent to v do if w is unmarked then DFS(w)

  31. BFS Algorithm Algorithm BFS(s) Input: Starting vertex s Output: Depends on the application // traversal algorithm uses a queue Q // loop terminates when Q is empty

  32. BFS Algorithm continued Q  new Queue() mark s as visited and Q.enqueue(s) while not Q.isEmpty() v  Q.dequeue() perform processing on v for each vertex w adjacent to v do if w is unmarked then mark w as visited and Q.enqueue(w)

  33. Query • Let G be a graph whose vertices are the integers 1 through 8 and let the adjacent vertices of each vertex be given by the table below :Vertex Adjacent Vertices1 (2,3,4)2 (1,3,4)3 (1,2,4)4 (1,2,3,6)5 (6,7,8)6 (4,5,7) 7 (5,6,8)8 (5,7)

  34. Query • Assume that in the traversal of G, the adjacent vertices of a given vertex are returned in the same order as they are listed in the above table: a) Draw G b) Give the sequence of vertices of G visited using a DFS traversal order starting at vertex 1 c) Give the sequence of vertices visited using a BFS traversal starting at vertex 1

  35. Weighted GraphsOverview

  36. Weighted Graphs • Graph G = (V,E) such that there are weights/costs associated with each edge • w((a,b)): cost of edge (a,b) • representation: matrix entries <-> costs a 20 35 e b 12 32 c 65 d

  37. Problems on Weighted Graphs • Minimum-cost Spanning Tree • Given a weighted graph G, determine a spanning tree with minimum total edge cost • Single-source shortest paths • Given a weighted graph G and a source vertex v in G, determine the shortest paths from v to all other vertices in G • Path length: sum of all edges in path

  38. Weighted Graphs-Concerns • Minimum Cost • Shortest Path

  39. Weighted Graphs • Shortest Path- Dijkstra’s Algorithm • Minimum Spanning Trees- Kruskal’s Algorithm

More Related