1 / 24

Chapter 8, Part I

Chapter 8, Part I. Graph Algorithms. Chapter Outline. Graph background and terminology Data structures for graphs Graph traversal algorithms Minimum spanning tree algorithms Shortest-path algorithm Biconnected components Partitioning sets. Prerequisites.

arabella
Download Presentation

Chapter 8, Part I

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. Chapter 8, Part I Graph Algorithms

  2. Chapter Outline • Graph background and terminology • Data structures for graphs • Graph traversal algorithms • Minimum spanning tree algorithms • Shortest-path algorithm • Biconnected components • Partitioning sets

  3. Prerequisites • Before beginning this chapter, you should be able to: • Describe a set and set membership • Use two-dimensional arrays • Use stack and queue data structures • Use linked lists • Describe growth rates and order

  4. Goals • At the end of this chapter you should be able to: • Describe and define graph terms and concepts • Create data structures for graphs • Do breadth-first and depth-first traversals and searches • Find the minimum spanning tree for a connected graph • Find the shortest path between two nodes of a connected graph • Find the biconnected components of a connected graph

  5. Graph Types • A directed graph edges’ allow travel in one direction • An undirected graph edges’ allow travel in either direction

  6. Graph Terminology • A graph is an ordered pair G=(V,E) with a set of vertices or nodes and the edges that connect them • A subgraph of a graph has a subset of the vertices and edges • The edges indicate how we can move through the graph

  7. Graph Terminology • A path is a subset of E that is a series of edges between two nodes • A graph is connected if there is at least one path between every pair of nodes • The length of a path in a graph is the number of edges in the path

  8. Graph Terminology • A complete graph is one that has an edge between every pair of nodes • A weighted graph is one where each edge has a cost for traveling between the nodes

  9. Graph Terminology • A cycle is a path that begins and ends at the same node • An acyclic graph is one that has no cycles • An acyclic, connected graph is also called an unrooted tree

  10. Data Structures for Graphsan Adjacency Matrix • A two-dimensional matrix or array that has one row and one column for each node in the graph • For each edge of the graph (Vi, Vj), the location of the matrix at row i and column j is 1 • All other locations are 0

  11. Data Structures for GraphsAn Adjacency Matrix • For an undirected graph, the matrix will be symmetric along the diagonal • For a weighted graph, the adjacency matrix would have the weight for edges in the graph, zeros along the diagonal, and infinity (∞) every place else

  12. Adjacency Matrix Example 1

  13. Adjacency Matrix Example 2

  14. Data Structures for GraphsAn Adjacency List • A list of pointers, one for each node of the graph • These pointers are the start of a linked list of nodes that can be reached by one edge of the graph • For a weighted graph, this list would also include the weight for each edge

  15. Adjacency List Example 1

  16. Adjacency List Example 2

  17. Graph Traversals • We want to travel to every node in the graph • Traversals guarantee that we will get to each node exactly once • This can be used if we want to search for information held in the nodes or if we want to distribute information to each node

  18. Depth-First Traversal • We follow a path through the graph until we reach a dead end • We then back up until we reach a node with an edge to an unvisited node • We take this edge and again follow it until we reach a dead end • This process continues until we back up to the starting node and it has no edges to unvisited nodes

  19. Depth-First Traversal Example • Consider the following graph: • The order of the depth-first traversal of this graph starting at node 1 would be:1, 2, 3, 4, 7, 5, 6, 8, 9

  20. Depth-First Traversal Algorithm Visit( v ) Mark( v ) for every edge vw in G do if w is not marked then DepthFirstTraversal(G, w) end if end for

  21. Breadth-First Traversal • From the starting node, we follow all paths of length one • Then we follow paths of length two that go to unvisited nodes • We continue increasing the length of the paths until there are no unvisited nodes along any of the paths

  22. Breadth-First Traversal Example • Consider the following graph: • The order of the breadth-first traversal of this graph starting at node 1 would be: 1, 2, 8, 3, 7, 4, 5, 9, 6

  23. Breadth-First Traversal Algorithm Visit( v ) Mark( v ) Enqueue( v ) while the queue is not empty do Dequeue( x ) for every edge xw in G do if w is not marked then Visit( w ) Mark( w ) Enqueue( w ) end if end for end while

  24. Traversal Analysis • If the graph is connected, these methods will visit each node exactly once • Because the most complex work is done when the node is visited, we can consider these to be O(N) • If we count the number of edges considered, we will find that is also linear with respect to the number of graph edges

More Related