CSE373: Data Structures & Algorithms Lecture 14: Topological Sort / Graph Traversals Dan Grossman Fall 2013.

Slides:



Advertisements
Similar presentations
Algorithms (and Datastructures) Lecture 3 MAS 714 part 2 Hartmut Klauck.
Advertisements

CSE 390B: Graph Algorithms Based on CSE 373 slides by Jessica Miller, Ruth Anderson 1.
Graph Theory, DFS & BFS Kelly Choi What is a graph? A set of vertices and edges –Directed/Undirected –Weighted/Unweighted –Cyclic/Acyclic.
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.
1 Dijkstra’s Minimum-Path Algorithm Minimum Spanning Tree CSE Lectures 20 – Intro to Graphs.
Graph Searching CSE 373 Data Structures Lecture 20.
1 Graphs: Traversal Searching/Traversing a graph = visiting the vertices of a graph by following the edges in a systematic way Example: Given a highway.
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.
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.
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.
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.
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.
Graphs. Graph definitions There are two kinds of graphs: directed graphs (sometimes called digraphs) and undirected graphs Birmingham Rugby London Cambridge.
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.
1 Data Structures and Algorithms Graphs I: Representation and Search Gal A. Kaminka Computer Science Department.
CS 206 Introduction to Computer Science II 11 / 03 / 2008 Instructor: Michael Eckmann.
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.
CS 206 Introduction to Computer Science II 03 / 25 / 2009 Instructor: Michael Eckmann.
CS 206 Introduction to Computer Science II 11 / 09 / 2009 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.
CS 206 Introduction to Computer Science II 03 / 30 / 2009 Instructor: Michael Eckmann.
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.
Chapter 9 – Graphs A graph G=(V,E) – vertices and edges
1 Chapter 9 Graph Algorithms Real-life graph problems Algorithms for some graph problems Choice of data structures for graph problems.
CSE373: Data Structures & Algorithms Lecture 17: Shortest Paths Nicki Dell Spring 2014.
Spring 2015 Lecture 10: Elementary Graph Algorithms
CSE 332 Data Abstractions: Graphs and Graph Traversals Kate Deibel Summer 2012 July 25, 2012CSE 332 Data Abstractions, Summer
Chapter 14 Graphs. © 2004 Pearson Addison-Wesley. All rights reserved Terminology G = {V, E} A graph G consists of two sets –A set V of vertices,
CSE 332 Data Abstractions: Graphs and Graph Traversals Kate Deibel Summer 2012 July 23, 2012CSE 332 Data Abstractions, Summer
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Graphs.
CSE 326: Data Structures Lecture #20 Graphs I.5 Alon Halevy Spring Quarter 2001.
10 Copyright © William C. Cheng Data Structures - CSCI 102 Graph Terminology A graph consists of a set of Vertices and a set of Edges C A B D a c b d e.
Lecture 11 Algorithm Analysis Arne Kutzner Hanyang University / Seoul Korea.
CS 61B Data Structures and Programming Methodology Aug 5, 2008 David Sun.
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 20.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 13: Graphs Data Abstraction & Problem Solving with C++
CSE 373: Data Structures & Algorithms Lecture 17: Topological Sort / Graph Traversals Linda Shapiro Winter 2015.
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.
© 2006 Pearson Addison-Wesley. All rights reserved 14 A-1 Chapter 14 Graphs.
Graph. Graph Usage I want to visit all the known famous places starting from Seoul ending in Seoul Knowledge: distances, costs Find the optimal(distance.
CSE332: Data Structures & Algorithms Lecture 14: Introduction to Graphs Aaron Bauer Winter 2014.
Graphs and Paths : Chapter 15 Saurav Karmakar
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.
CSC317 1 At the same time: Breadth-first search tree: If node v is discovered after u then edge uv is added to the tree. We say that u is a predecessor.
Brute Force and Exhaustive Search Brute Force and Exhaustive Search Traveling Salesman Problem Knapsack Problem Assignment Problem Selection Sort and Bubble.
1 CSE 332: Graphs Richard Anderson Spring Announcements This week and next week – Graph Algorithms Reading, Monday and Wednesday, Weiss
CSE 373 Topological Sort Graph Traversals
CSE 373: Data Structures & Algorithms Graph Traversals: Dijkstra’s
CSE373: Data Structures & Algorithms Lecture 13: Topological Sort / Graph Traversals Kevin Quinn Fall 2015.
Cse 373 May 8th – Dijkstras.
CSE373: Data Structures & Algorithms Lecture 17: Shortest Paths
Instructor: Lilian de Greef Quarter: Summer 2017
CS120 Graphs.
CSE 373: Data Structures & Algorithms Lecture 17: Topological Sort / Graph Traversals Linda Shapiro Spring 2016.
Paul Beame in lieu of Richard Anderson
Topological Sorting Minimum Spanning Trees Shortest Path
Presentation transcript:

CSE373: Data Structures & Algorithms Lecture 14: Topological Sort / Graph Traversals Dan Grossman Fall 2013

Topological Sort Problem: Given a DAG G=(V,E), output all vertices in an order such that no vertex appears before another vertex that has an edge to it Example input: One example output: 126, 142, 143, 374, 373, 417, 410, 413, XYZ, 415 Fall 20132CSE373: Data Structures & Algorithms Disclaimer: Do not use for official advising purposes ! CSE 142CSE 143 CSE 374 CSE 373 CSE 410 MATH 126 CSE 417 CSE 415 CSE 413 XYZ

Questions and comments Why do we perform topological sorts only on DAGs? –Because a cycle means there is no correct answer Is there always a unique answer? –No, there can be 1 or more answers; depends on the graph –Graph with 5 topological orders: Do some DAGs have exactly 1 answer? –Yes, including all lists Terminology: A DAG represents a partial order and a topological sort produces a total order that is consistent with it Fall 20133CSE373: Data Structures & Algorithms

Uses Figuring out how to graduate Computing an order in which to recompute cells in a spreadsheet Determining an order to compile files using a Makefile In general, taking a dependency graph and finding an order of execution … Fall 20134CSE373: Data Structures & Algorithms

A First Algorithm for Topological Sort 1.Label (“mark”) each vertex with its in-degree –Think “write in a field in the vertex” –Could also do this via a data structure (e.g., array) on the side 2.While there are vertices not yet output: a)Choose a vertex v with labeled with in-degree of 0 b)Output v and conceptually remove it from the graph c)For each vertex u adjacent to v (i.e. u such that (v,u) in E ), decrement the in-degree of u Fall 20135CSE373: Data Structures & Algorithms

Example Output: Fall 20136CSE373: Data Structures & Algorithms Node: XYZ Removed? In-degree: CSE 142CSE 143 CSE 374 CSE 373 CSE 410 MATH 126 CSE 417 CSE 415 CSE 413 XYZ

Example Output: 126 Fall 20137CSE373: Data Structures & Algorithms Node: XYZ Removed? x In-degree: CSE 142CSE 143 CSE 374 CSE 373 CSE 410 MATH 126 CSE 417 CSE 415 CSE 413 XYZ

Example Output: Fall 20138CSE373: Data Structures & Algorithms Node: XYZ Removed? x x In-degree: CSE 142CSE 143 CSE 374 CSE 373 CSE 410 MATH 126 CSE 417 CSE 415 CSE 413 XYZ

Example Output: Fall 20139CSE373: Data Structures & Algorithms Node: XYZ Removed? x x x In-degree: CSE 142CSE 143 CSE 374 CSE 373 CSE 410 MATH 126 CSE 417 CSE 415 CSE 413 XYZ

Example Output: Fall CSE373: Data Structures & Algorithms Node: XYZ Removed? x x x x In-degree: CSE 142CSE 143 CSE 374 CSE 373 CSE 410 MATH 126 CSE 417 CSE 415 CSE 413 XYZ

Example Output: Fall CSE373: Data Structures & Algorithms Node: XYZ Removed? x x x x x In-degree: CSE 142CSE 143 CSE 374 CSE 373 CSE 410 MATH 126 CSE 417 CSE 415 CSE 413 XYZ

Example Output: Fall CSE373: Data Structures & Algorithms Node: XYZ Removed? x x x x x x In-degree: CSE 142CSE 143 CSE 374 CSE 373 CSE 410 MATH 126 CSE 417 CSE 415 CSE 413 XYZ

Example Output: Fall CSE373: Data Structures & Algorithms Node: XYZ Removed? x x x x x x x In-degree: CSE 142CSE 143 CSE 374 CSE 373 CSE 410 MATH 126 CSE 417 CSE 415 CSE 413 XYZ

Example Output: Fall CSE373: Data Structures & Algorithms Node: XYZ Removed? x x x x x x x x In-degree: CSE 142CSE 143 CSE 374 CSE 373 CSE 410 MATH 126 CSE 417 CSE 415 CSE 413 XYZ

Example Output: XYZ Fall CSE373: Data Structures & Algorithms Node: XYZ Removed? x x x x x x x x x In-degree: CSE 142CSE 143 CSE 374 CSE 373 CSE 410 MATH 126 CSE 417 CSE 415 CSE 413 XYZ

Example Output: XYZ 415 Fall CSE373: Data Structures & Algorithms Node: XYZ Removed? x x x x x x x x x x In-degree: CSE 142CSE 143 CSE 374 CSE 373 CSE 410 MATH 126 CSE 417 CSE 415 CSE 413 XYZ

Notice Needed a vertex with in-degree 0 to start –Will always have at least 1 because no cycles Ties among vertices with in-degrees of 0 can be broken arbitrarily –Can be more than one correct answer, by definition, depending on the graph Fall CSE373: Data Structures & Algorithms

Running time? Fall CSE373: Data Structures & Algorithms labelEachVertexWithItsInDegree(); for(ctr=0; ctr < numVertices; ctr++){ v = findNewVertexOfDegreeZero(); put v next in output for each w adjacent to v w.indegree--; }

Running time? What is the worst-case running time? –Initialization O(|V|+|E|) (assuming adjacency list) –Sum of all find-new-vertex O(|V| 2 ) (because each O(|V|)) –Sum of all decrements O(|E|) (assuming adjacency list) –So total is O(|V| 2 ) – not good for a sparse graph! Fall CSE373: Data Structures & Algorithms labelEachVertexWithItsInDegree(); for(ctr=0; ctr < numVertices; ctr++){ v = findNewVertexOfDegreeZero(); put v next in output for each w adjacent to v w.indegree--; }

Doing better The trick is to avoid searching for a zero-degree node every time! –Keep the “pending” zero-degree nodes in a list, stack, queue, bag, table, or something –Order we process them affects output but not correctness or efficiency provided add/remove are both O(1) Using a queue: 1.Label each vertex with its in-degree, enqueue 0-degree nodes 2.While queue is not empty a) v = dequeue() b)Output v and remove it from the graph c)For each vertex u adjacent to v (i.e. u such that (v,u) in E ), decrement the in-degree of u, if new degree is 0, enqueue it Fall CSE373: Data Structures & Algorithms

Running time? Fall CSE373: Data Structures & Algorithms labelAllAndEnqueueZeros(); for(ctr=0; ctr < numVertices; ctr++){ v = dequeue(); put v next in output for each w adjacent to v { w.indegree--; if(w.indegree==0) enqueue(v); }

Running time? Fall CSE373: Data Structures & Algorithms What is the worst-case running time? –Initialization: O(|V|+|E|) (assuming adjacenty list) –Sum of all enqueues and dequeues: O(|V|) –Sum of all decrements: O(|E|) (assuming adjacency list) –So total is O(|E| + |V|) – much better for sparse graph! labelAllAndEnqueueZeros(); for(ctr=0; ctr < numVertices; ctr++){ v = dequeue(); put v next in output for each w adjacent to v { w.indegree--; if(w.indegree==0) enqueue(v); }

Graph Traversals Next problem: For an arbitrary graph and a starting node v, find all nodes reachable from v (i.e., there exists a path from v) –Possibly “do something” for each node –Examples: print to output, set a field, etc. Subsumed problem: Is an undirected graph connected? Related but different problem: Is a directed graph strongly connected? –Need cycles back to starting node Basic idea: –Keep following nodes –But “mark” nodes after visiting them, so the traversal terminates and processes each reachable node exactly once Fall CSE373: Data Structures & Algorithms

Abstract Idea Fall CSE373: Data Structures & Algorithms traverseGraph(Node start) { Set pending = emptySet() pending.add(start) mark start as visited while(pending is not empty) { next = pending.remove() for each node u adjacent to next if(u is not marked) { mark u pending.add(u) }

Running Time and Options Assuming add and remove are O(1), entire traversal is O(|E|) –Use an adjacency list representation The order we traverse depends entirely on add and remove –Popular choice: a stack “depth-first graph search” “DFS” –Popular choice: a queue “breadth-first graph search” “BFS” DFS and BFS are “big ideas” in computer science –Depth: recursively explore one part before going back to the other parts not yet explored –Breadth: explore areas closer to the start node first Fall CSE373: Data Structures & Algorithms

Example: trees A tree is a graph and DFS and BFS are particularly easy to “see” Fall CSE373: Data Structures & Algorithms A B DE C F HG DFS(Node start) { mark and process start for each node u adjacent to start if u is not marked DFS(u) } A, B, D, E, C, F, G, H Exactly what we called a “pre-order traversal” for trees –The marking is because we support arbitrary graphs and we want to process each node exactly once

Example: trees A tree is a graph and DFS and BFS are particularly easy to “see” Fall CSE373: Data Structures & Algorithms A B DE C F HG DFS2(Node start) { initialize stack s to hold start mark start as visited while(s is not empty) { next = s.pop() // and “process” for each node u adjacent to next if(u is not marked) mark u and push onto s } A, C, F, H, G, B, E, D A different but perfectly fine traversal

Example: trees A tree is a graph and DFS and BFS are particularly easy to “see” Fall CSE373: Data Structures & Algorithms A B DE C F HG BFS(Node start) { initialize queue q to hold start mark start as visited while(q is not empty) { next = q.dequeue() // and “process” for each node u adjacent to next if(u is not marked) mark u and enqueue onto q } A, B, C, D, E, F, G, H A “level-order” traversal

Comparison Breadth-first always finds shortest paths, i.e., “optimal solutions” –Better for “what is the shortest path from x to y” But depth-first can use less space in finding a path –If longest path in the graph is p and highest out-degree is d then DFS stack never has more than d*p elements –But a queue for BFS may hold O(|V|) nodes A third approach: –Iterative deepening (IDFS): Try DFS but disallow recursion more than K levels deep If that fails, increment K and start the entire search over –Like BFS, finds shortest paths. Like DFS, less space. Fall CSE373: Data Structures & Algorithms

Saving the Path Our graph traversals can answer the reachability question: –“Is there a path from node x to node y?” But what if we want to actually output the path? –Like getting driving directions rather than just knowing it’s possible to get there! How to do it: –Instead of just “marking” a node, store the previous node along the path (when processing u causes us to add v to the search, set v.path field to be u) –When you reach the goal, follow path fields back to where you started (and then reverse the answer) –If just wanted path length, could put the integer distance at each node instead Fall CSE373: Data Structures & Algorithms

Example using BFS Fall CSE373: Data Structures & Algorithms Seattle San Francisco Dallas Salt Lake City What is a path from Seattle to Tyler – Remember marked nodes are not re-enqueued – Note shortest paths may not be unique Chicago Tyler