CSE 221: Algorithms and Data Structures Lecture #9 Graphs (with no Axes to Grind) Steve Wolfman 2010W2 1.

Slides:



Advertisements
Similar presentations
CSE 221: Algorithms and Data Structures Lecture #9 Graphs (with no Axes to Grind) Steve Wolfman 2011W2.
Advertisements

Lecture 15. Graph Algorithms
IKI 10100: Data Structures & Algorithms Ruli Manurung (acknowledgments to Denny & Ade Azurat) 1 Fasilkom UI Ruli Manurung (Fasilkom UI)IKI10100: Lecture10.
CS 206 Introduction to Computer Science II 03 / 27 / 2009 Instructor: Michael Eckmann.
CSE 2331/5331 Topic 11: Basic Graph Alg. Representations Undirected graph Directed graph Topological sort.
Graphs Chapter 12. Chapter Objectives  To become familiar with graph terminology and the different types of graphs  To study a Graph ADT and different.
Graphs Chapter 20 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013.
Graphs Graphs are the most general data structures we will study in this course. A graph is a more general version of connected nodes than the tree. Both.
Data Structure and Algorithms (BCS 1223) GRAPH. Introduction of Graph A graph G consists of two things: 1.A set V of elements called nodes(or points or.
1 CSE 326: Data Structures: Graphs Lecture 19: Monday, Feb 24, 2003.
CS 206 Introduction to Computer Science II 11 / 11 / Veterans Day Instructor: Michael Eckmann.
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 21: Graphs.
CSE332: Data Abstractions Lecture 16: Topological Sort / Graph Traversals Tyler Robison Summer
CSE332: Data Abstractions Lecture 16: Topological Sort / Graph Traversals Dan Grossman Spring 2010.
CSE332: Data Abstractions Lecture 15: Introduction to Graphs Dan Grossman Spring 2010.
Graph & BFS.
CS 311 Graph Algorithms. Definitions A Graph G = (V, E) where V is a set of vertices and E is a set of edges, An edge is a pair (u,v) where u,v  V. If.
CSE 326: Data Structures Lecture #19 Graphs I Alon Halevy Spring Quarter 2001.
CSE 326 Graphs David Kaplan Dept of Computer Science & Engineering Autumn 2001.
Directed Graph Algorithms CSE 373 Data Structures Lecture 14.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Graphs.
CSE 326: Data Structures Lecture #21 Graphs II.5 Alon Halevy Spring Quarter 2001.
Connected Components, Directed Graphs, Topological Sort COMP171.
Graph COMP171 Fall Graph / Slide 2 Graphs * Extremely useful tool in modeling problems * Consist of: n Vertices n Edges D E A C F B Vertex Edge.
CSE 326: Data Structures Graphs Ben Lerner Summer 2007.
Graph & BFS Lecture 22 COMP171 Fall Graph & BFS / Slide 2 Graphs * Extremely useful tool in modeling problems * Consist of: n Vertices n Edges D.
Graphs Chapter 12. Chapter 12: Graphs2 Chapter Objectives To become familiar with graph terminology and the different types of graphs To study a Graph.
Spring 2010CS 2251 Graphs Chapter 10. Spring 2010CS 2252 Chapter Objectives To become familiar with graph terminology and the different types of graphs.
Graphs & Graph Algorithms 2 Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park.
CSE 373: Data Structures and Algorithms Lecture 18: Graphs II 1.
CSE 780 Algorithms Advanced Algorithms Graph Algorithms Representations BFS.
CSE 326: Data Structures Lecture #17 Trees and DAGs and Graphs, Oh MY! Bart Niswonger Summer Quarter 2001.
CS 206 Introduction to Computer Science II 11 / 05 / 2008 Instructor: Michael Eckmann.
Fall 2007CS 2251 Graphs Chapter 12. Fall 2007CS 2252 Chapter Objectives To become familiar with graph terminology and the different types of graphs To.
Graphs Chapter 20 Data Structures and Problem Solving with C++: Walls and Mirrors, Frank Carrano, © 2012.
Review of Graphs A graph is composed of edges E and vertices V that link the nodes together. A graph G is often denoted G=(V,E) where V is the set of vertices.
Data Structures Using C++ 2E
Chapter 9 – Graphs A graph G=(V,E) – vertices and edges
Spring 2015 Lecture 10: Elementary Graph Algorithms
Chapter 2 Graph Algorithms.
Algorithm Course Dr. Aref Rashad February Algorithms Course..... Dr. Aref Rashad Part: 5 Graph Algorithms.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Graphs.
CSE 326: Data Structures First Post-Schism Lecture Lecture #22 SteganoGRAPHy Steve Wolfman Winter Quarter 2000.
Graphs CSE 2011 Winter June Graphs A graph is a pair (V, E), where  V is a set of nodes, called vertices  E is a collection of pairs.
CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1.
CSE 326: Data Structures Lecture #20 Graphs I.5 Alon Halevy Spring Quarter 2001.
Graphs. Definitions A graph is two sets. A graph is two sets. –A set of nodes or vertices V –A set of edges E Edges connect nodes. Edges connect nodes.
Lecture 11 Algorithm Analysis Arne Kutzner Hanyang University / Seoul Korea.
Graphs 1 Definition 2 Terminology 3 Properties 4 Internal representation Adjacency list Adjacency matrix 5 Exploration algorithms 6 Other algorithms.
Graphs. Graphs Similar to the graphs you’ve known since the 5 th grade: line graphs, bar graphs, etc., but more general. Those mathematical graphs are.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 13: Graphs Data Abstraction & Problem Solving with C++
1 Directed Graphs Chapter 8. 2 Objectives You will be able to: Say what a directed graph is. Describe two ways to represent a directed graph: Adjacency.
Graphs Chapter 12. Chapter 12: Graphs2 Chapter Objectives To become familiar with graph terminology and the different types of graphs To study a Graph.
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-1 Chapter 14 Graphs.
Graphs Upon completion you will be able to:
Chapter 20: Graphs. Objectives In this chapter, you will: – Learn about graphs – Become familiar with the basic terminology of graph theory – Discover.
Graphs + Shortest Paths David Kauchak cs302 Spring 2013.
Data Structures and Algorithm Analysis Graph Algorithms Lecturer: Jing Liu Homepage:
1 GRAPHS – Definitions A graph G = (V, E) consists of –a set of vertices, V, and –a set of edges, E, where each edge is a pair (v,w) s.t. v,w  V Vertices.
1 CSE 332: Graphs Richard Anderson Spring Announcements This week and next week – Graph Algorithms Reading, Monday and Wednesday, Weiss
CSE 326: Data Structures Lecture #23 Dijkstra and Kruskal (sittin’ in a graph) Steve Wolfman Winter Quarter 2000.
CSE 373: Data Structures and Algorithms Lecture 21: Graphs V 1.
Minimum Spanning Trees and Shortest Paths
I206: Lecture 15: Graphs Marti Hearst Spring 2012.
CS120 Graphs.
Graphs Chapter 13.
CSE 373 Data Structures and Algorithms
CSE373: Data Structures & Algorithms Lecture 18: Dijkstra’s Algorithm
CSE 373: Data Structures and Algorithms
INTRODUCTION A graph G=(V,E) consists of a finite non empty set of vertices V , and a finite set of edges E which connect pairs of vertices .
Presentation transcript:

CSE 221: Algorithms and Data Structures Lecture #9 Graphs (with no Axes to Grind) Steve Wolfman 2010W2 1

Learning Goals After this unit, you should be able to: Describe the properties and possible applications of various kinds of graphs (e.g., simple, complete), and the relationships among vertices, edges, and degrees. Prove basic theorems about simple graphs (e.g. handshaking theorem). Convert between adjacency matrices/lists and their corresponding graphs. Determine whether two graphs are isomorphic. Determine whether a given graph is a subgraph of another. Perform breadth-first and depth-first searches in graphs. Explain why graph traversals are more complicated than tree traversals. 2

Today’s Outline Topological Sort: Getting to Know Graphs with a Sort Graph ADT and Graph Representations Graph Terminology (a lot of it!) More Graph Algorithms –Shortest Path (Dijkstra’s Algorithm) –Minimum Spanning Tree (Kruskal’s Algorithm) 3

Total Order AB means A must go before B

Partial Order: Getting Dressed socks shirt shoes pants watch belt coat under roos

Topological Sort Given a graph, G = (V, E), output all the vertices in V such that no vertex is output before any other vertex with an edge to it.

Topo-Sort Take One Label each vertex’s in-degree (# of inbound edges) While there are vertices remaining Pick a vertex with in-degree of zero and output it Reduce the in-degree of all vertices adjacent to it Remove it from the list of vertices runtime:

Topo-Sort Take Two Label each vertex’s in-degree Initialize a queue to contain all in-degree zero vertices While there are vertices remaining in the queue Pick a vertex v with in-degree of zero and output it Reduce the in-degree of all vertices adjacent to v Put any of these with new in-degree zero on the queue Remove v from the queue runtime:

Today’s Outline Topological Sort: Getting to Know Graphs with a Sort Graph ADT and Graph Representations Graph Terminology (a lot of it!) More Graph Algorithms –Shortest Path (Dijkstra’s Algorithm) –Minimum Spanning Tree (Kruskal’s Algorithm) 9

Graph ADT Graphs are a formalism useful for representing relationships between things –a graph G is represented as G = (V, E) V is a set of vertices: {v 1, v 2, …, v n } E is a set of edges: {e 1, e 2, …, e m } where each e i connects two vertices (v i1, v i2 ) –operations might include: creation (with a certain number of vertices) inserting/removing edges iterating over vertices adjacent to a specific vertex asking whether an edge exists connecting two vertices Han Leia Luke V = {Han, Leia, Luke} E = {(Luke, Leia), (Han, Leia), (Leia, Han)} 10

Graph Applications Storing things that are graphs by nature –distance between cities –airline flights, travel options –relationships between people, things –distances between rooms in Clue Compilers –callgraph - which functions call which others –dependence graphs - which variables are defined and used at which statements Others: mazes, circuits, class hierarchies, horses, networks of computers or highways or… 11

Graph Representations 2-D matrix of vertices (marking edges in the cells) “adjacency matrix” List of vertices each with a list of adjacent vertices “adjacency list” Han Leia Luke 12

Adjacency Matrix A |V| x |V| array in which an element (u, v) is true if and only if there is an edge from u to v Han Leia Luke HanLukeLeia Han Luke Leia runtime for various operations?space requirements: 13

Adjacency List A |V| -ary list (array) in which each entry stores a list (linked list) of all adjacent vertices Han Leia Luke Han Luke Leia space requirements: 14 runtime for various operations?

Today’s Outline Topological Sort: Getting to Know Graphs with a Sort Graph ADT and Graph Representations Graph Terminology (a lot of it!) More Graph Algorithms –Shortest Path (Dijkstra’s Algorithm) –Minimum Spanning Tree (Kruskal’s Algorithm) 15

Directed vs. Undirected Graphs Han Leia Luke Han Leia Luke In directed graphs, edges have a specific direction: In undirected graphs, they don’t (edges are two-way): Vertices u and v are adjacent if (u, v)  E 16

Directed vs. Undirected Graphs Adjacency lists and matrices both work fine to represent directed graphs. To represent undirected graphs, either ensure that both orderings of every edge are included in the representation or ensure that the order doesn’t matter (e.g., always use a “canonical” order), which works poorly in adjacency lists. 17

Weighted Graphs Mukilteo Edmonds Seattle Bremerton Bainbridge Kingston Clinton How can we store weights in an adjacency matrix? In an adjacency list? Each edge has an associated weight or cost. 18

Graph Density A sparse graph has O(|V|) edges A dense graph has  (|V| 2 ) edges Anything in between is either on the sparse side or on the dense side, depending critically on context!

Graph Density A sparse graph has O(|V|) edges Why is the adjacency list likely to be a better representation than the adjacency matrix for sparse graphs? a.Sparse graphs have too few edges to fit in an adjacency matrix. b.Much of the matrix will be “wasted” on 0s. c.The adjacency list will guarantee better performance on a sparse graph. d.None of these.

Connectivity Undirected graphs are connected if there is a path between any two vertices Directed graphs are strongly connected if there is a path from any one vertex to any other Di-graphs are weakly connected if there is a path between any two vertices, ignoring direction A complete graph has an edge between every pair of vertices

Isomorphism and Subgraphs We often care only about the structure of a graph, not the names of its vertices. Then, we can ask: “Are two graphs isomorphic?” Do the graphs have identical structure? Can you “line up” their vertices so that their edges match? “Is one graph a subgraph of the other?” Is one graph isomorphic to a part of the other graph (a subset of its vertices and a subset of the edges connecting those vertices)?

Degree The degree of a vertex v ∈ V is denoted deg(v) and represents the number of edges incident on v. (An edge from v to itself contributes 2 towards the degree.) Handshaking Theorem: If G=(V,E) is an undirected graph, then: Corollary: An undirected graph has an even number of vertices of odd degree. 23

Degree/Handshake Example The degree of a vertex v ∈ V is the number of edges incident on v. Let’s label the degree of every node and calculate the sum… 24

Degree for Directed Graphs The in-degree of a vertex v ∈ V is denoted deg - (v) is the number of edges coming in to v. The out-degree of a vertex v ∈ V is denoted deg + (v) is the number of edges coming out of v. We let deg(v) = deg + (v) + deg - (v) Then: 25

Trees as Graphs Every tree is a graph with some restrictions: –the tree is directed –there are no cycles (directed or undirected) –there is a directed path from the root to every node A B DE C F HG JI

Directed Acyclic Graphs (DAGs) DAGs are directed graphs with no cycles. main() add() access() mult() read() Trees  DAGs  GraphsWe can only topo-sort DAGs!

Today’s Outline Topological Sort: Getting to Know Graphs with a Sort Graph ADT and Graph Representations Graph Terminology (a lot of it!) More Graph Algorithms –Shortest Path (Dijkstra’s Algorithm) –Minimum Spanning Tree (Kruskal’s Algorithm) 28

Single Source, Shortest Path Given a graph G = (V, E) and a vertex s  V, find the shortest path from s to every vertex in V Many variations: –weighted vs. unweighted –cyclic vs. acyclic –positive weights only vs. negative weights allowed –multiple weight types to optimize

Partial map of the Internet, 2005, by the Opte Project. (30% of Class C Networks. Line length ~ delay.) 30

The Trouble with Negative Weighted Cycles AB CD E What’s the shortest path from A to E? (or to B, C, or D, for that matter)

Unweighted Shortest Path Problem Assume source vertex is C … A C B D FH G E Distance to: A B C D E F G H

Dijkstra Legendary figure in computer science; died a few years ago . Supported teaching introductory computer courses without computers (pencil and paper programming) Supposedly wouldn’t read (until late in life); so, his staff had to print out messages and put them in his box.

Dijkstra’s Algorithm for Single Source Shortest Path Classic algorithm for solving shortest path in weighted graphs without negative weights A greedy algorithm (irrevocably makes decisions without considering future consequences) Intuition: –shortest path from source vertex to itself is 0 –cost of going to adjacent nodes is at most edge weights –cheapest of these must be shortest path to that node –update paths for new node and continue picking cheapest path

Intuition in Action A C B D FH G E

Dijkstra’s Pseudocode (actually, our pseudocode for Dijkstra’s algorithm) Initialize the cost of each node to  Initialize the cost of the source to 0 While there are unknown nodes left in the graph Select the unknown node with the lowest cost: n Mark n as known For each node a which is adjacent to n a’s cost = min(a’s old cost, n’s cost + cost of (n, a)) We can get the path from this just as we did for mazes!

Dijkstra’s Algorithm in Action A C B D FH G E

THE KNOWN CLOUD G Next shortest path from inside the known cloud P Better path to the same node The Cloud Proof But, if the path to G is the next shortest path, the path to P must be at least as long. So, how can the path through P to G be shorter? Source

Inside the Cloud (Proof) Everything inside the cloud has the correct shortest path Proof is by induction on the # of nodes in the cloud: –initial cloud is just the source with shortest path 0 –inductive step: once we prove the shortest path to G is correct, we add it to the cloud Negative weights blow this proof away!

Data Structures for Dijkstra’s Algorithm Select the unknown node with the lowest cost findMin/deleteMin a’s cost = min(a’s old cost, …) decreaseKey (i.e., change a key and fix the heap) find by name (dictionary lookup!) |V| times: |E| times: runtime:

Dijkstra’s uses |V| deleteMins and |E| decreaseKeys runtime with Fibonacci heaps: Fibonacci Heaps Very cool variation on Priority Queues Amortized O(1) time bound for decreaseKey O(log n) time for deleteMin

Today’s Outline Topological Sort: Getting to Know Graphs with a Sort Graph ADT and Graph Representations Graph Terminology (a lot of it!) More Graph Algorithms –Shortest Path (Dijkstra’s Algorithm) –Minimum Spanning Tree (Kruskal’s Algorithm) 42

What’s a Good Maze?

The Maze Construction Problem Given: –collection of rooms: V –connections between rooms (initially all closed): E Construct a maze: –collection of rooms: V = V –designated rooms in, i  V, and out, o  V –collection of connections to knock down: E  E such that one unique path connects every two rooms

The Middle of the Maze So far, a number of walls have been knocked down while others remain. Now, we consider the wall between A and B. Should we knock it down? –if A and B are otherwise connected –if A and B are not otherwise connected A B

Maze Construction Algorithm While edges remain in E  Remove a random edge e = (u, v) from E  If u and v have not yet been connected -add e to E -mark u and v as connected

Spanning tree: a subset of the edges from a connected graph that… …touches all vertices in the graph (spans the graph) …forms a tree (is connected and contains no cycles) Minimum spanning tree (MST): the spanning tree with the least total edge cost. Which of these is the MST? Spanning Tree

Kruskal’s Algorithm for Minimum Spanning Trees Yet another greedy algorithm: Initialize all vertices to unconnected While there are still unmarked edges Pick the lowest cost edge e = (u, v) and mark it If u and v are not already connected, add e to the minimum spanning tree and connect u and v Sound familiar?

Kruskal’s Algorithm in Action (1/5) A C B D FH G E

Kruskal’s Algorithm in Action (2/5) A C B D FH G E

Kruskal’s Algorithm in Action (3/5) A C B D FH G E

Kruskal’s Algorithm in Action (4/5) A C B D FH G E

Kruskal’s Algorithm Completed (5/5) A C B D FH G E

Proof of Correctness We already know this finds a spanning tree. (That was part of our definition of a good maze.) Proof by contradiction that Kruskal’s finds the minimum: Assume another spanning tree has lower cost than Kruskal’s. Pick an edge e 1 = (u, v) in that tree that’s not in Kruskal’s. Kruskal’s tree connected u ’s and v ’s sets with another edge e 2. But, e 2 must have at most the same cost as e 1 (or Kruskal’s would have found and used e 1 first to connect u ’s and v ’s sets). So, replace e 2 with e 1 (at best keeping the cost the same). Repeat until the tree is identical to Kruskal’s: contradiction! QED: Kruskal’s algorithm finds a minimum spanning tree. Actually, this proof is not correct as it stands (though Kruskal’s is). TODO: Replace with the forest proof? See Wikipedia page.

Data Structures for Kruskal’s Algorithm Pick the lowest cost edge… findMin/deleteMin If u and v are not already connected… …connect u and v. find representative union |E| times: With “disjoint-set” data structure, |E|lg(|E|) runtime.

Learning Goals After this unit, you should be able to: Describe the properties and possible applications of various kinds of graphs (e.g., simple, complete), and the relationships among vertices, edges, and degrees. Prove basic theorems about simple graphs (e.g. handshaking theorem). Convert between adjacency matrices/lists and their corresponding graphs. Determine whether two graphs are isomorphic. Determine whether a given graph is a subgraph of another. Perform breadth-first and depth-first searches in graphs. Explain why graph traversals are more complicated than tree traversals. 56

Coming Up Counting and the Final Exam! 57

Some Extra Examples, etc. 58

Bigger (Undirected) Formal Graph Example 59 G = V = vertices = {A,B,C,D,E,F,G,H,I,J,K,L} E = edges = {(A,B),(B,C),(C,D),(D,E),(E,F), (F,G),(G,H),(H,A),(A,J),(A,G), (B,J),(K,F),(C,L),(C,I),(D,I), (D,F),(F,I),(G,K),(J,L),(J,K), (K,L),(L,I)} (A simple graph like this one is undirected, has 0 or 1 edge between each pair of vertices, and no edge from a vertex to itself.)

A vertex An edge with endpoints B and C A path: A to B to C to D A cycle: A to B to J to A A path is a list of vertices {v 1, v 2, …, v n } such that (v i, v i+1 )  E for all 0  i < n. A cycle is a path that starts and ends at the same vertex.

61 Example V = {A, B, C, D, E} E = {{A, B}, {A, D}, {C, E}, {D, E}}

62 A Directed Graph V = {A, B, C, D, E} E = {(A, B), (B, A), (B, E), (D, A), (E, A), (E, D), (E, C)}

63 Weighted Graph

64 Example of a Path

65 Example of a Cycle

66 Disconnected Graph

67 Graph Isomorphism The numbering of the vertices, and their physical arrangement are not important. The following is the same graph as the previous slide.

68 Adjacency Matrix

69 Adjacency Matrix (directed graph)

70 Adjacency List (Directed Graph)

71 Adjacency List Representation

72 Breadth First Search Starting at a source vertex Systematically explore the edges to “discover” every vertex reachable from s. Produces a “breadth-first tree” –Root of s –Contains all vertices reachable from s –Path from s to v is the shortest path

73 Algorithm 1. Take a start vertex, mark it identified (color it gray), and place it into a queue. 2. While the queue is not empty 1. Take a vertex, u, out of the queue (Begin visiting u) 2. For all vertices v, adjacent to u, 1. If v has not been identified or visited 1. Mark it identified (color it gray) 2. Place it into the queue 3. Add edge u, v to the Breadth First Search Tree 3. We are now done visiting u (color it black)

74 Example

75

76 Trace of Breadth First Search

77 Breadth-First Search Tree

78 Application of BFS A Breadth First Search finds the shortest path from the start vertex to all other vertices based on number of edges. We can use a Breadth First Search to find the shortest path through a maze. This may be a more efficient solution than that found by a backtracking algorithm.

79 Depth First Search Start at some vertex Follow a simple path discovering new vertices until you cannot find a new vertex. Back-up until you can start finding new vertices. A simple path is a path with no cycles.

80 Algorithm for DFS 1. Start at vertex u. Mark it visited. 2. For each vertex v adjacent to u 1. If v has not been visited 1. Insert u, v into DFS tree 2. Recursively apply this algorithm starting at v 3. Mark u finished. Note: for a Directed graph, a DFS may produce multiple trees – this is called a DFS forest.

81 DFS Example

82

83 Trace of Depth-First Search

84 Depth-First Search Tree

85 Application of DFS A topological sort is an ordering of the vertices such that if ( u, v ) is an edge in the graph, then v does not appear before u in the ordering. A Depth First Search can be used to determine a topological sort of a Directed Acyclic Graph (DAG) An application of this would be to determine an ordering of courses that is consistent with the prerequisite requirements.

86 CIS Prerequisites

87 Topological Sort Algorithm Observation: If there is an edge from u to v, then in a DFS u will have a finish time later than v. Perform a DFS and output the vertices in the reverse order that they’re marked as finished.

88 Example of a Directed Weighted Graph

89 Another Weighted Graph

90 Example

Separate Tree and Graph Examples: Cities in Germany