1 / 34

Graphs

Graphs. Chapter 29. Some Examples and Terminology Road Maps Airline Routes Mazes Course Prerequisites Trees Traversals Breadth-First Traversal Dept-First Traversal. Topological Order Paths Finding a Path Shortest Path in an Unweighted Graph Shortest Pat in a Weighted Graph

ralphk
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 Chapter 29

  2. Some Examples and Terminology Road Maps Airline Routes Mazes Course Prerequisites Trees Traversals Breadth-First Traversal Dept-First Traversal Topological Order Paths Finding a Path Shortest Path in an Unweighted Graph Shortest Pat in a Weighted Graph Java Interfaces for the ADT Graph Chapter Contents

  3. Some Examples and Terminology • Vertices or nodes are connected by edges • A graph is a collection of distinct vertices and distinct edges • Edges can be directed or undirected • When it has directed edges it is called a digraph • A subgraph is a portion of a graph that itself is a graph

  4. Road Maps Nodes Edges Fig. 29-1 A portion of a road map.

  5. Road Maps Fig. 29-2 A directed graph representing a portion of a city's street map.

  6. Paths • A sequence of edges that connect two vertices in a graph • In a directed graph the direction of the edges must be considered • Called a directed path • A cycle is a path that begins and ends at same vertex • Simple path does not pass through any vertex more than once • A graph with no cycles is acyclic

  7. Weights • A weighted graph has values on its edges • Weights or costs • A path in a weighted graph also has weight or cost • The sum of the edge weights • Examples of weights • Miles between nodes on a map • Driving time between nodes • Taxi cost between node locations

  8. Weights Fig. 29-3 A weighted graph.

  9. Connected Graphs • A connected graph • Has a path between every pair of distinct vertices • A complete graph • Has an edge between every pair of distinct vertices • A disconnected graph • Not connected

  10. Connected Graphs Fig. 29-4 Undirected graphs

  11. Adjacent Vertices • Two vertices are adjacent in an undirected graph if they are joined by an edge • Sometimes adjacent vertices are called neighbors Fig. 29-5 Vertex A is adjacent to B, but B is not adjacent to A.

  12. Airline Routes • Note the graph with two subgraphs • Each subgraph connected • Entire graph disconnected Fig. 29-6 Airline routes

  13. Mazes Fig. 29-7 (a) A maze; (b) its representation as a graph

  14. Course Prerequisites Fig. 29-8 The prerequisite structure for a selection of courses as a directed graph without cycles.

  15. Trees • All trees are graphs • But not all graphs are trees • A tree is a connected graph without cycles • Traversals • Preorder, inorder, postorder traversals are examples of depth-first traversal • Level-order traversal of a tree is an example of breadth-first traversal • Visit a node • For a tree: process the node's data • For a graph: mark the node as visited

  16. Trees Fig. 29-9 The visitation order of two traversals; (a) depth first; (b) breadth first.

  17. Breadth-First Traversal • Algorithm for breadth-first traversal of nonempty graph beginning at a given vertex Algorithm getBreadthFirstTraversal(originVertex)vertexQueue = a new queue to hold neighborstraversalOrder = a new queue for the resulting traversal orderMark originVertex as visitedtraversalOrder.enqueue(originVertex)vertexQueue.enqueue(originVertex)while (!vertexQueue.isEmpty()){ frontVertex = vertexQueue.dequeue()while (frontVertex has an unvisited neighbor) { nextNeighbor = next unvisited neighbor of frontVertexMark nextNeighbor as visitedtraversalOrder.enqueue(nextNeighbor) vertexQueue.enqueue(nextNeighbor) }}return traversalOrder A breadth-first traversal visits a vertex and then each of the vertex's neighbors before advancing

  18. Breadth-First Traversal Fig. 29-10 (ctd.) A trace of a breadth-first traversal for a directed graph, beginning at vertex A.

  19. Depth-First Traversal • Visits a vertex, then • A neighbor of the vertex, • A neighbor of the neighbor, • Etc. • Advance as possible from the original vertex • Then back up by one vertex • Considers the next neighbor

  20. Depth-First Traversal Fig. 29-11 A trace of a depth-first traversal beginning at vertex A of the directed graph in Fig. 29-10a.

  21. Topological Order • Given a directed graph without cycles • In a topological order • Vertex a precedes vertex b whenever • A directed edge exists from a to b

  22. Topological Order Fig. 29-12 Three topological orders for the graph of Fig. 29-8.

  23. Topological Order Fig. 29-13 An impossible prerequisite structure for three courses as a directed graph with a cycle.

  24. Topological Order • Algorithm for a topological sort Algorithm getTopologicalSort()vertexStack = a new stack to hold vertices as they are visitedn = number of vertices in the graphfor (counter = 1 to n){ nextVertex = an unvisited vertex whose neighbors, if any, are all visited Mark nextVertex as visitedstack.push(nextVertex)}return stack

  25. Topological Order Fig. 29-14 Finding a topological order for the graph in Fig. 29-8.

  26. Shortest Path in an Unweighted Graph Fig. 29-15 (a) an unweighted graph and (b) the possible paths from vertex A to vertex H.

  27. Shortest Path in an Unweighted Graph Fig. 29-16 The graph in 29-15a after the shortest-path algorithm has traversed from vertex A to vertex H

  28. Shortest Path in an Unweighted Graph Fig. 29-17 Finding the shortest path from vertex A to vertex H in the unweighted graph in Fig. 29-15a.

  29. Shortest Path in an Weighted Graph Fig. 29-18 (a) A weighted graph and (b) the possible paths from vertex A to vertex H.

  30. Shortest Path in an Weighted Graph • Shortest path between two given vertices • Smallest edge-weight sum • Algorithm based on breadth-first traversal • Several paths in a weighted graph might have same minimum edge-weight sum • Algorithm given by text finds only one of these paths

  31. Shortest Path in an Weighted Graph Fig. 29-19 Finding the cheapest path from vertex A to vertex H in the weighted graph in Fig 29-18a.

  32. Shortest Path in an Weighted Graph Fig. 29-20 The graph in Fig. 29-18a after finding the cheapest path from vertex A to vertex H.

  33. Java Interfaces for the ADT Graph • Methods in the BasicGraphInterface • addVertex • addEdge • hasEdge • isEmpty • getNumberOfVertices • getNumberOfEdges • clear

  34. Java Interfaces for the ADT Graph Operations of the ADT graph enable creation of a graph and answer questions based on relationships among vertices Fig. 29-21 A portion of the flight map in Fig. 29-6.

More Related