Design and Analysis of Algorithms

Similar documents
Strongly Connected Components

Graph Representation

DFS & STRONGLY CONNECTED COMPONENTS

Graph representation

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

CISC 320 Introduction to Algorithms Fall Lecture 15 Depth First Search

Design and Analysis of Algorithms

Basic Graph Algorithms

Elementary Graph Algorithms

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

22.3 Depth First Search

Finding Strongly Connected Components

Graph Algorithms. Andreas Klappenecker. [based on slides by Prof. Welch]

Representations of Graphs

Proof: if not f[u] < d[v], then u still grey while v is being visited. DFS visit(v) will then terminate before DFS visit(u).

Data Structures. Elementary Graph Algorithms BFS, DFS & Topological Sort

Chapter 22. Elementary Graph Algorithms

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 17. Depth-First Search. DFS (Initialize and Go) Last Time Depth-First Search

Graph Algorithms: Chapters Part 1: Introductory graph concepts

Announcements. HW3 is graded. Average is 81%

Elementary Graph Algorithms

Graph Algorithms. Chapter 22. CPTR 430 Algorithms Graph Algorithms 1

Inf 2B: Graphs II - Applications of DFS

Lecture 10: Strongly Connected Components, Biconnected Graphs

Introduction to Algorithms. Lecture 11

Algorithm Design and Analysis

Graph Algorithms Using Depth First Search

Cut vertices, Cut Edges and Biconnected components. MTL776 Graph algorithms

CS 341: Algorithms. Douglas R. Stinson. David R. Cheriton School of Computer Science University of Waterloo. February 26, 2019

CS 161 Lecture 11 BFS, Dijkstra s algorithm Jessica Su (some parts copied from CLRS) 1 Review

Graph Algorithms. Definition

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

Graph: representation and traversal

Graphs. Graph G = (V, E) Types of graphs E = O( V 2 ) V = set of vertices E = set of edges (V V)

W4231: Analysis of Algorithms

CHAPTER 23: ELEMENTARY GRAPH ALGORITHMS Representations of graphs

Graph Representations and Traversal

CSCE 750, Fall 2002 Notes 6 Page Graph Problems ffl explore all nodes (breadth first and depth first) ffl find the shortest path from a given s

CS483 Design and Analysis of Algorithms

Depth First Search (DFS)

Part VI Graph algorithms. Chapter 22 Elementary Graph Algorithms Chapter 23 Minimum Spanning Trees Chapter 24 Single-source Shortest Paths

Elementary Graph Algorithms. Ref: Chapter 22 of the text by Cormen et al. Representing a graph:

Chapter 22 Elementary Graph Algorithms

Minimum Spanning Trees Ch 23 Traversing graphs

Elementary Graph Algorithms CSE 6331

Chapter 22: Elementary Graph Algorithms. Definitions:

COT 6405 Introduction to Theory of Algorithms

Lecture 3: Graphs and flows

Trees and Graphs Shabsi Walfish NYU - Fundamental Algorithms Summer 2006

Algorithm Design and Analysis

1 Start with each vertex being its own component. 2 Merge two components into one by choosing the light edge

Topic 12: Elementary Graph Algorithms

Strongly connected: A directed graph is strongly connected if every pair of vertices are reachable from each other.

Graphs. Part I: Basic algorithms. Laura Toma Algorithms (csci2200), Bowdoin College

CS 473: Algorithms. Chandra Chekuri 3228 Siebel Center. Fall University of Illinois, Urbana-Champaign

CS2 Algorithms and Data Structures Note 10. Depth-First Search and Topological Sorting

Algorithm Design and Analysis

Strongly Connected Components. Andreas Klappenecker

Practical Session No. 12 Graphs, BFS, DFS, Topological sort

CSI 604 Elementary Graph Algorithms

CS 270 Algorithms. Oliver Kullmann. Analysing BFS. Depth-first search. Analysing DFS. Dags and topological sorting.

Directed Graphs. DSA - lecture 5 - T.U.Cluj-Napoca - M. Joldos 1

ECE250: Algorithms and Data Structures Single Source Shortest Paths Bellman-Ford Algorithm

Lecture 10. Elementary Graph Algorithm Minimum Spanning Trees

CS 361 Data Structures & Algs Lecture 15. Prof. Tom Hayes University of New Mexico

DFS on Directed Graphs BOS. Outline and Reading ( 6.4) Digraphs. Reachability ( 6.4.1) Directed Acyclic Graphs (DAG s) ( 6.4.4)

Analysis of Algorithms Prof. Karen Daniels

Graph Search. Adnan Aziz

CS 270 Algorithms. Oliver Kullmann. Breadth-first search. Analysing BFS. Depth-first. search. Analysing DFS. Dags and topological sorting.

Week 5. 1 Analysing BFS. 2 Depth-first search. 3 Analysing DFS. 4 Dags and topological sorting. 5 Detecting cycles. CS 270 Algorithms.

CSE 101. Algorithm Design and Analysis Miles Jones and Russell Impagliazzo Miles Office 4208 CSE Building

Depth-first search in undirected graphs What parts of the graph are reachable from a given vertex?

Fundamental Graph Algorithms Part Four

Data Structures and Algorithms. Chapter 7. Graphs

Graphs. CSE 2320 Algorithms and Data Structures Alexandra Stefan and Vassilis Athitsos University of Texas at Arlington

Practical Session No. 12 Graphs, BFS, DFS Topological Sort

Taking Stock. IE170: Algorithms in Systems Engineering: Lecture 16. Graph Search Algorithms. Recall BFS

Directed Graphs (II) Hwansoo Han

Fundamental Graph Algorithms Part Three

CS Elementary Graph Algorithms

CS Elementary Graph Algorithms

Basic Graph Algorithms (CLRS B.4-B.5, )

Slides credited from Hsueh-I Lu, Hsu-Chun Hsiao, & Michael Tsai

Undirected Graphs. V = { 1, 2, 3, 4, 5, 6, 7, 8 } E = { 1-2, 1-3, 2-3, 2-4, 2-5, 3-5, 3-7, 3-8, 4-5, 5-6 } n = 8 m = 11

Lecture 16: Directed Graphs

Graph Algorithms. Imran Rashid. Jan 16, University of Washington

Lecture 22 Tuesday, April 10

CSE 331: Introduction to Algorithm Analysis and Design Graphs

15-451/651: Design & Analysis of Algorithms October 5, 2017 Lecture #11: Depth First Search and Strong Components last changed: October 17, 2017

1 Connected components in undirected graphs

Graph. Vertex. edge. Directed Graph. Undirected Graph

Figure 1: A directed graph.

Depth-First Search Depth-first search (DFS) is another way to traverse the graph.

CS 125 Section #6 Graph Traversal and Linear Programs 10/13/14

Lecture 10. Finding strongly connected components

Depth-first Search (DFS)

ECE250: Algorithms and Data Structures Elementary Graph Algorithms Part B

Definition Example Solution

COL351: Analysis and Design of Algorithms (CSE, IITD, Semester-I ) Name: Entry number:

(Refer Slide Time: 05:25)

Transcription:

Design and Analysis of Algorithms CS 5311 Lecture 19 Topological Sort Junzhou Huang, Ph.D. Department of Computer Science and ngineering CS5311 Design and Analysis of Algorithms 1

Topological Sort Want to sort a directed acyclic graph (DAG). A B D C A B C D Think of original DAG as a partial order. Want a total order that extends this partial order. CS5311 Design and Analysis of Algorithms 2

Topological Sort Performed on a DAG. Linear ordering of the vertices of G such that if (u, v), then u appears somewhere before v. Topological-Sort (G) 1. call DFS(G) to compute finishing times f [v] for all v V 2. as each vertex is finished, insert it onto the front of a linked list 3. return the linked list of vertices Time: Θ(V + ). xample: On board. CS5311 Design and Analysis of Algorithms 3

xample (Courtesy of Prof. Jim Anderson) A B D 1/ C Linked List: CS5311 Design and Analysis of Algorithms 4

xample A B D 1/ C 2/ Linked List: CS5311 Design and Analysis of Algorithms 5

xample A B D 1/ C 2/3 Linked List: 2/3 CS5311 Design and Analysis of Algorithms 6

xample A B D 1/4 C 2/3 Linked List: 1/4 D 2/3 CS5311 Design and Analysis of Algorithms 7

xample A B D 5/ 1/4 C 2/3 Linked List: 1/4 D 2/3 CS5311 Design and Analysis of Algorithms 8

xample A B D 5/ 1/4 6/ C 2/3 Linked List: 1/4 D 2/3 CS5311 Design and Analysis of Algorithms 9

xample A B D 5/ 1/4 6/7 C 2/3 Linked List: 6/7 C 1/4 D 2/3 CS5311 Design and Analysis of Algorithms 10

xample A B D 5/8 1/4 6/7 C 2/3 Linked List: 5/8 B 6/7 C 1/4 D 2/3 CS5311 Design and Analysis of Algorithms 11

xample A B D 9/ 5/8 1/4 6/7 C 2/3 Linked List: 5/8 B 6/7 C 1/4 D 2/3 CS5311 Design and Analysis of Algorithms 12

xample A B D 5/8 1/4 9/10 6/7 C 2/3 Linked List: 9/10 A 5/8 B 6/7 C 1/4 D 2/3 CS5311 Design and Analysis of Algorithms 13

Correctness Proof Just need to show if (u, v), then f [v] < f [u]. When we explore (u, v), what are the colors of u and v? u is gray. Is v gray, too? No, because then v would be ancestor of u. (u, v) is a back edge. contradiction of Lemma 22.11 (dag has no back edges). Is v white? Then becomes descendant of u. By parenthesis theorem, d[u] < d[v] < f [v] < f [u]. Is v black? Then v is already finished. Since we re exploring (u, v), we have not yet finished u. Therefore, f [v] < f [u]. CS5311 Design and Analysis of Algorithms 14

Strongly Connected Components G is strongly connected if every pair (u, v) of vertices in G is reachable from one another. A strongly connected component (SCC) of G is a maximal set of vertices C V such that for all u, v C, both u v and v u exist. CS5311 Design and Analysis of Algorithms 15

Component Graph G SCC = (V SCC, SCC ). V SCC has one vertex for each SCC in G. SCC has an edge if there s an edge between the corresponding SCC s in G. G SCC for the example considered: CS5311 Design and Analysis of Algorithms 16

G SCC is a DAG Lemma 22.13 Let C and C be distinct SCC s in G, let u, v C, u, v C, and suppose there is a path u u in G. Then there cannot also be a path v v in G. Proof: Suppose there is a path v v in G. Then there are paths u u v and v v u in G. Therefore, u and v are reachable from each other, so they are not in separate SCC s. CS5311 Design and Analysis of Algorithms 17

Transpose of a Directed Graph G T = transpose of directed G. G T = (V, T ), T = {(u, v) : (v, u) }. G T is G with all edges reversed. Can create G T in Θ(V + ) time if using adjacency lists. G and G T have the same SCC s. (u and v are reachable from each other in G if and only if reachable from each other in G T.) CS5311 Design and Analysis of Algorithms 18

Algorithm to determine SCCs SCC(G) 1. call DFS(G) to compute finishing times f [u] for all u 2. compute G T 3. call DFS(G T ), but in the main loop, consider vertices in order of decreasing f [u] (as computed in first DFS) 4. output the vertices in each tree of the depth-first forest formed in second DFS as a separate SCC Time: Θ(V + ). xample: On board. CS5311 Design and Analysis of Algorithms 19

xample G (Courtesy of Prof. Jim Anderson) a b c d 13/14 11/16 1/10 8/9 12/15 3/4 2/7 e f g 5/6 h CS5311 Design and Analysis of Algorithms 20

xample G T a b c d e f g h CS5311 Design and Analysis of Algorithms 21

xample abe cd fg h CS5311 Design and Analysis of Algorithms 22

xample (2) CS5311 Design and Analysis of Algorithms 23

xample (2) DFS CS5311 Design and Analysis of Algorithms 24

xample (2) G T CS5311 Design and Analysis of Algorithms 25

xample (2) DFT in G T CS5311 Design and Analysis of Algorithms 26

xample (2) SCC CS5311 Design and Analysis of Algorithms 27

How does it work? Idea: By considering vertices in second DFS in decreasing order of finishing times from first DFS, we are visiting vertices of the component graph in topologically sorted order. Because we are running DFS on G T, we will not be visiting any v from a u, where v and u are in different components. Notation: d[u] and f [u] always refer to first DFS. xtend notation for d and f to sets of vertices U V: d(u) = min u U {d[u]} (earliest discovery time) f (U) = max u U { f [u]} (latest finishing time) CS5311 Design and Analysis of Algorithms 28

SCCs and DFS finishing times Lemma 22.14 Let C and C be distinct SCC s in G = (V, ). Suppose there is an edge (u, v) such that u C and v C. Then f (C) > f (C ). Proof: Case 1: d(c) < d(c ) Let x be the first vertex discovered in C. At time d[x], all vertices in C and C are white. Thus, there exist paths of white vertices from x to all vertices in C and C. By the white-path theorem, all vertices in C and C are descendants of x in depth-first tree. By the parenthesis theorem, f [x] = f (C) > f(c ). C C u v x CS5311 Design and Analysis of Algorithms 29

SCCs and DFS finishing times Lemma 22.14 Let C and C be distinct SCC s in G = (V, ). Suppose there is an edge (u, v) such that u C and v C. Then f (C) > f (C ). Proof: Case 2: d(c) > d(c ) Let y be the first vertex discovered in C. At time d[y], all vertices in C are white and there is a white path from y to each vertex in C all vertices in C become descendants of y. Again, f [y] = f (C ). At time d[y], all vertices in C are also white. By earlier lemma, since there is an edge (u, v), we cannot have a path from C to C. So no vertex in C is reachable from y. Therefore, at time f [y], all vertices in C are still white. Therefore, for all w C, f [w] > f [y], which implies that f (C) > f (C ). C C CS5311 Design and Analysis of Algorithms 30 u x y v

SCCs and DFS finishing times Corollary 22.15 Let C and C be distinct SCC s in G = (V, ). Suppose there is an edge (u, v) T, where u C and v C. Then f(c) < f(c ). Proof: (u, v) T (v, u). Since SCC s of G and G T are the same, f(c ) > f (C), by Lemma 22.14. CS5311 Design and Analysis of Algorithms 31

Correctness of SCC When we do the second DFS, on G T, start with SCC C such that f(c) is maximum. The second DFS starts from some x C, and it visits all vertices in C. Corollary 22.15 says that since f(c) > f (C ) for all C C, there are no edges from C to C in G T. Therefore, DFS will visit only vertices in C. Which means that the depth-first tree rooted at x contains exactly the vertices of C. CS5311 Design and Analysis of Algorithms 32

Correctness of SCC The next root chosen in the second DFS is in SCC C such that f (C ) is maximum over all SCC s other than C. DFS visits all vertices in C, but the only edges out of C go to C, which we ve already visited. Therefore, the only tree edges will be to vertices in C. We can continue the process. ach time we choose a root for the second DFS, it can reach only vertices in its SCC get tree edges to these, vertices in SCC s already visited in second DFS get no tree edges to these. CS5311 Design and Analysis of Algorithms 33