Directed Graphs (digraphs)

Slides:



Advertisements
Similar presentations
© 2004 Goodrich, Tamassia Directed Graphs1 JFK BOS MIA ORD LAX DFW SFO.
Advertisements

Directed Graphs Directed Graphs Shortest Path 4/10/ :45 AM BOS
Graphs – Depth First Search ORD DFW SFO LAX
1 The Graph Abstract Data Type CS 5050 Chapter 6.
© 2004 Goodrich, Tamassia Directed Graphs1 JFK BOS MIA ORD LAX DFW SFO.
1 Directed Graphs CSC401 – Analysis of Algorithms Lecture Notes 15 Directed Graphs Objectives: Introduce directed graphs and weighted graphs Present algorithms.
Directed Graphs1 JFK BOS MIA ORD LAX DFW SFO. Directed Graphs2 Outline and Reading (§6.4) Reachability (§6.4.1) Directed DFS Strong connectivity Transitive.
CSC311: Data Structures 1 Chapter 13: Graphs I Objectives: Graph ADT: Operations Graph Implementation: Data structures Graph Traversals: DFS and BFS Directed.
TDDB56 DALGOPT-D TDDB57 DALG-C – Lecture 11 – Graphs Graphs HT TDDB56 – DALGOPT-D Algorithms and optimization Lecture 11 Graphs.
Minimum Spanning Trees
October 22, DFS, BFS, Biconnectivity, Digraphs 1 CS 221 West Virginia University.
Chapter 6 Graphs ORD DFW SFO LAX
GRAPHS 1. Outline 2  Undirected Graphs and Directed Graphs  Depth-First Search  Breadth-First Search.
© 2004 Goodrich, Tamasia Recall: Digraphs A digraph is a graph whose edges are all directed Short for “directed graph” Applications one-way streets flights.
Chapter 8 Dynamic Programming Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
Data Structures and Algorithms1 Data Structures and algorithms (IS ZC361) Weighted Graphs – Shortest path algorithms – MST S.P.Vimal BITS-Pilani
CSC401: Analysis of Algorithms 6-1 CSC401 – Analysis of Algorithms Chapter 6 Graphs Objectives: Introduce graphs and data structures Discuss the graph.
1 Digraphs Reachability Connectivity Transitive Closure Floyd-Warshall Algorithm JFK BOS MIA ORD LAX DFW SFO v 2 v 1 v 3 v 4 v 5 v 6 v 7.
CS 361 – Chapter 13 Graph Review Purpose Representation Traversal Comparison with tree.
1 COMP9024: Data Structures and Algorithms Week Eleven: Graphs (I) Hui Wu Session 1, 2016
Directed Graphs1 JFK BOS MIA ORD LAX DFW SFO. Directed Graphs2 Outline and Reading (§12.4) Reachability (§12.4.1) Directed DFS Strong connectivity Transitive.
Graphs ORD SFO LAX DFW Graphs 1 Graphs Graphs
BCA-II Data Structure Using C Submitted By: Veenu Saini
Data Structures and Algorithm Analysis Lecture 5
Breadth-First Search L0 L1 L2
Breadth-First Search (BFS)
Graphs 10/24/2017 6:47 AM Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and.
Directed Graphs Directed Graphs Shortest Path 12/7/2017 7:10 AM BOS
Directed Graphs 12/7/2017 7:15 AM Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia,
14 Graph Algorithms Hongfei Yan June 8, 2016.
Graphs 5/11/2018 8:05 PM Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and.
Main algorithm with recursion: We’ll have a function DFS that initializes, and then calls DFS-Visit, which is a recursive function and does the depth first.
Searching Graphs ORD SFO LAX DFW Spring 2007
Breadth-First Search L0 L1 L2
COMP9024: Data Structures and Algorithms
COMP9024: Data Structures and Algorithms
Chapter 14 Graph Algorithms
Directed Graphs 9/20/2018 1:45 AM Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia,
Depth-First Search.
Directed Graphs 5/1/15 12:25:22 PM
Graph Algorithms Using Depth First Search
Directed Graphs Directed Graphs 1 Shortest Path Shortest Path
CMSC 341 Lecture 21 Graphs (Introduction)
Biconnectivity SEA PVD ORD FCO SNA MIA 11/16/2018 2:31 AM
Graphs.
Graphs.
Graphs.
Copyright © Aiman Hanna All rights reserved
Breadth-First Search L0 L1 L2 C B A E D F Breadth-First Search
Breadth-First Search (BFS)
Graphs CSE 2011 Winter November 2018.
Elementary graph algorithms Chapter 22
What is a Graph? a b c d e V= {a,b,c,d,e} E= {(a,b),(a,c),(a,d),
Copyright © Aiman Hanna All rights reserved
Graphs ORD SFO LAX DFW Graphs Graphs
Richard Anderson Autumn 2016 Lecture 5
Searching Graphs ORD SFO LAX DFW Spring 2007
Directed Graphs Directed Graphs Directed Graphs 2/23/ :12 AM BOS
Graphs Part 1 ORD SFO LAX DFW
Copyright © Aiman Hanna All rights reserved
Copyright © Aiman Hanna All rights reserved
Graph Algorithms "A charlatan makes obscure what is clear; a thinker makes clear what is obscure. " - Hugh Kingsmill CLRS, Sections 22.2 – 22.4.
Copyright © Aiman Hanna All rights reserved
Text Book: Introduction to algorithms By C L R S
Copyright © Aiman Hanna All rights reserved
Biconnectivity SEA PVD ORD FCO SNA MIA 5/6/2019 5:08 PM Biconnectivity
Elementary graph algorithms Chapter 22
Biconnectivity SEA PVD ORD FCO SNA MIA 5/23/ :21 PM
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:

Directed Graphs (digraphs) Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia University, Montreal, Canada These slides has been extracted, modified and updated from original slides of : Data Structures and Algorithms in Java, 5th edition. John Wiley& Sons, 2010. ISBN 978-0-470-38326-1. Data Structures and the Java Collections Framework by William J. Collins, 3rdedition, ISBN 978-0-470-48267-4. Both books are published by Wiley. Copyright © 2010-2011 Wiley Copyright © 2010 Michael T. Goodrich, Roberto Tamassia Copyright © 2011 William J. Collins Copyright © 2011-2016 Aiman Hanna All rights reserved

Coverage Directed Graphs (digraphs) Traversal of digraphs Transitive Closure Directed Acyclic Graphs (DAGs) JFK BOS MIA ORD LAX DFW SFO DiGraphs

Digraphs A digraph is a graph whose edges are all directed Short for “directed graph” Applications one-way streets flights task scheduling A C E B D DiGraphs

Digraph Properties E D C B A If G is simple, m < n(n - 1) A graph G=(V,E) such that Each edge goes in one direction Edge (a,b) goes from a to b, but not b to a We usually refer to direct graph G as G If G is simple, m < n(n - 1) We can have two directed edges between each two nodes (these are in opposite directions and not parallel since the graph is simple). Consequently, maximum degree at any vertex is 2(n-1); n-1 incoming and n-1 outgoing If we keep in-edges and out-edges in separate adjacency lists, we can perform listing of incoming edges and outgoing edges in time proportional to their size DiGraphs

Digraph Application Scheduling: edge (a,b) means task a must be completed before b can be started ics21 ics22 ics23 ics51 ics53 ics52 ics161 ics131 ics141 ics121 ics171 The good life ics151 DiGraphs

Reachability One of the fundamental issues with digraphs is the notion of reachability Given two vertices w and u in graph G, we say that w reaches u, or u is reachable from w, if G has a directed path from w to u We also say that vertex v reaches an edge (w, z) if v reaches w and w is the origin of that edge DiGraphs

Reachability Examples: Which vertex reaches which vertices? E D C F A DiGraphs

Strong Connectivity a g c d e b f A digraph G is strongly connected if for any two vertices u and v in the graph, u reaches v and v reaches u In other words, each vertex can reach all other vertices A directed cycle is a cycle where all the edges are traversed in their respective directions A graph is acyclic if it has no directed cycles a d c b e f g DiGraphs

Transitive Closure D E Given a digraph G, the transitive closure of G is the digraph G* such that G* has the same vertices as G if G has a directed path from u to v (u  v), G* has a directed edge from u to v The transitive closure provides reachability information about a digraph B G C A D E B C A G* DiGraphs

Digraph Traversal E D C B A We can specialize the traversal algorithms (DFS and BFS) to digraphs by traversing edges only along their direction In the directed DFS algorithm, we have four types of edges (the last three are non-tree edges) discovery edges (edges that led us to discover new vertices; these are the tree edges) back edges (connect a vertex to its ancestor) forward edges (connect a vertex to its descendant) cross edges (connect an edge to another one who is neither ancestor no descendant) A directed DFS starting at a vertex s determines the vertices reachable from s DiGraphs

Digraph Traversal BOS ORD SFO DFW LAX MIA JFK Example: Showing intermediate step where the traversal started from BOS and the “already previously visited” DFW is reached for the first time BOS ORD JFK SFO DFW LAX MIA DiGraphs

Digraph Traversal BOS ORD SFO DFW LAX MIA JFK Example (continues…): DiGraphs

Digraph Traversal BOS ORD SFO DFW LAX MIA JFK Example (continues…): DiGraphs

Digraph Traversal BOS ORD SFO DFW LAX MIA JFK Example (continues…): DiGraphs

Digraph Traversal BOS ORD SFO DFW LAX MIA JFK Example (continues…): DiGraphs

Digraph Traversal BOS ORD SFO DFW LAX MIA JFK Example (continues…): DiGraphs

Digraph Traversal BOS ORD SFO DFW LAX MIA JFK Example (continues…): DiGraphs

Digraph Traversal BOS ORD SFO DFW LAX MIA JFK Example (continues…): DiGraphs

Digraph Traversal BOS ORD SFO DFW LAX MIA JFK Example (continues…): DiGraphs

Digraph Traversal BOS ORD SFO DFW LAX MIA JFK Example (continues…): DiGraphs

Digraph Traversal BOS ORD SFO DFW LAX MIA JFK Example (continues…): DiGraphs

Digraph Traversal 1 5 2 7 3 4 6 BOS ORD SFO DFW LAX MIA JFK Example (continues…): Completed DFS 1 BOS ORD 5 JFK 2 SFO 7 DFW 3 LAX 4 MIA 6 DiGraphs

Digraph DFS Analysis Directed DFS over a graph G: Starting at vertex s, DFS visits all vertices that are reachable from s (Notice that these may NOT be all vertices of G) Can be proven by contradiction as we have done with undirected DFS Starting for a vertex s, DFS runs in O(ns + ms), where ns and ms are the reachable vertices and edges from s. A recursive call is needed once for each vertex, and each edge is traversed once from its origin Can find/compute the transitive closure of G. This can be done as follows: Find all the vertices reachable form a vertex s Add edges from that vertex s to the ones that it reaches if such edges do not exist Repeat the operation for each vertex v in the graph

Digraph DFS Analysis (Continue…) Directed DFS over a graph G: Test if G is strongly connected. This can be done as follows: Perform repeated DFS traversal operations starting from each vertex in G If each DFS visits all the vertices in G then G is strongly connected DFS complexity to find transitive closure or strong connectivity is: Each run takes O(n + m) We perform these runs n times  O(n(n + m))

Digraph DFS Analysis (Continue…) In fact, strong connectivity can be tested much faster than that (by only using 2 DFSs) as follows: Start at any vertex s and perform DFS If s does not visit all the vertices then the graph is not strongly connected If s reaches all vertices then reverse all edges in G (or change the algorithm to treat them as if they were reversed) and run DFS again starting from s If this second run reaches all the vertices, then G is strongly connected; otherwise it is not (since not each vertex can reach s!) Proof: from first run s can reaches all vertices. From second run, all vertices reach s, but s can reach all vertices (from first run!). Consequently each vertex can reach all other vertices in G These will takes O(2(n + m))  O(n + m) DiGraphs

Strong Connectivity Algorithm Pick a vertex v in G Perform a DFS from v in G If there is a vertex w that is not visited, print “no strong connectivity” Let G’ be G with edges reversed Perform a DFS from v in G’ Else, print “Graph is strongly connected” a G: g c d e b f a G’: g c d e b f DiGraphs

Strongly Connected Components Maximal subgraphs such that each vertex can reach all other vertices in these subgraphs Can also be done in O(n+m) time using DFS, but is more complicated (similar to biconnectivity). a d c b e f g { a , c , g } { f , d , e , b } DiGraphs

Computing the Transitive Closure If there's a way to get from A to B and from B to C, then there's a way to get from A to C. We can perform DFS starting at each vertex O(n(n+m)) Alternatively ... Use dynamic programming: The Floyd-Warshall Algorithm DiGraphs

Floyd-Warshall Transitive Closure The idea is as follows: Let G be a digraph with n vertices and m edges Compute the transitive closure in a series of rounds as follows: Initialize G0 = G Arbitrary number the vertices v1 to vn Start the computation from round 1 For any round k, we construct digraph Gk starting from Gk = Gk-1 If Gk-1 contains both direct edges (vi , vk) and (vk , vj), then add a direct edge (vi , vj) to Gk if it is not already there G* = Gn DiGraphs

Floyd-Warshall Transitive Closure The algorithm is known as the Floyed-Warshall algorithm and it belongs to an algorithmic design pattern known as dynamic programming Uses only vertices numbered 1,…,k (add this edge if it’s not already in) i j For i Use only vertices numbered 1,…,k-1 For j Use only vertices numbered 1,…,k-1 k DiGraphs

Floyd-Warshall’s Algorithm Algorithm FloydWarshall(G) Input digraph G Output transitive closure G* of G i  1 for all v  G.vertices() denote v as vi i  i + 1 G0  G for k  1 to n do Gk  Gk - 1 for i  1 to n (i  k) do for j  1 to n (j  i, j  k) do if Gk - 1.areAdjacent(vi, vk)  Gk - 1.areAdjacent(vk, vj) if Gk.areAdjacent(vi, vj) Gk.insertDirectedEdge(vi, vj , k) return Gn DiGraphs

Floyd-Warshall’s Analysis Running time: Assuming that areAdjacent() is O(1) and insertDirectedEdge() is O(1) , which can be achieved using adjacency matrix, Floyed-Warshall has a complexity of O(n3) Notice the three loops in the algorithm Running DFS seems to be faster than Floyed-Warshall, however: If the graph is represented by adjacency matrix then one run of DFS would take O(n2), which means to compute the transitive closure would require O(n3) since DFS needs to run n times If this is the case, then running Floyed-Warshall once may be preferable than running DFS n times since after all both will have the same complexity of O(n3) DiGraphs

Floyd-Warshall Example BOS v ORD 4 JFK v 2 v 6 SFO DFW LAX v 3 v 1 MIA v 5 DiGraphs

Floyd-Warshall, Iteration 1 BOS v ORD 4 JFK v 2 v 6 SFO DFW LAX v 3 v 1 MIA v 5 DiGraphs

Floyd-Warshall, Iteration 2 BOS v ORD 4 JFK v 2 v 6 SFO DFW LAX v 3 v 1 MIA v 5 DiGraphs

Floyd-Warshall, Iteration 3 BOS v ORD 4 JFK v 2 v 6 SFO DFW LAX v 3 v 1 MIA v 5 DiGraphs

Floyd-Warshall, Iteration 4 BOS v ORD 4 JFK v 2 v 6 SFO DFW LAX v 3 v 1 MIA v 5 DiGraphs

Floyd-Warshall, Iteration 5 BOS v ORD 4 JFK v 2 v 6 SFO DFW LAX v 3 v 1 MIA v 5 DiGraphs

Floyd-Warshall, Iteration 6 BOS v ORD 4 JFK v 2 v 6 SFO DFW LAX v 3 v 1 MIA v 5 DiGraphs

Floyd-Warshall, Conclusion BOS v ORD 4 JFK v 2 v 6 SFO DFW LAX v 3 v 1 MIA v 5 DiGraphs

Directed Acyclic Graphs (DAGs) A directed acyclic graph (DAG) is a digraph that has no directed cycles In practice, there are many applications of DAGs, including: Inheritance relation between classes (i.e. in Java) Prerequisites between courses in an academic program Schedule constraints between tasks of a project (i.e. setup electric wires before testing lights, or fix walls in place before painting them) DiGraphs

DAGs and Topological Ordering Given a digraph G, a topological ordering of G is an ordering of v1 , …, vn of the vertices of G such that for every edge (vi , vj), we have i < j Example: Course v1 must be taken before course v3 and course v2 must be taken before v3 and v4, and so on Theorem A digraph admits a topological ordering if and only if it is a DAG B C DAG G A v4 v5 D E v2 B v3 C v1 Topological ordering of G A DiGraphs

Topological Sorting Number vertices, so that (u,v) in E implies u < v 1 A typical student day wake up 2 3 eat study computer sci. 4 5 nap more c.s. 7 play 8 write c.s. program 6 9 work out bake cookies 10 sleep 11 dream about graphs DiGraphs

Algorithm for Topological Sorting Many algorithms can be used to calculate the topological ordering (to sort the vertices) One algorithm can be as follows: assume a DAG G: Since G is acyclic then there must exist at least one vertex v such as v has no incoming edges (indeg(v) = 0) If v is removed, then the resulting graph must still be acyclic, which means, there exist another vertex w in the remaining graph such as indeg(w) = 0 Give v sorting # 1, then remove it Find another vertex w with deg(w) = 0, set its sorting # to 2 and remove Repeat the above operations until all vertices are sorted Running time: O(n + m) The algorithm traverses all the outgoing edges for each visited vertex once, so its running time is proportionate to the number of outgoing edges of the vertices DiGraphs

Topological Sorting Example Note that there is more than one possible solution ? 0 A B C ? 0 ? 1 D E F x y sorting # indeg() ? 3 ? 1 ? 2 G ? 2 H Previously removed vertex/edges ? 3 Current removed vertex/edges DiGraphs

Topological Sorting Example (continues…) 1 0 A B C ? 0 ? 0 D E F x y sorting # indeg() ? 2 ? 1 ? 2 G ? 2 H Previously removed vertex/edges ? 3 Current removed vertex/edges DiGraphs

Topological Sorting Example (continues…) 1 0 A B C ? 0 2 0 D E F x y sorting # indeg() ? 1 ? 0 ? 2 G ? 2 H Previously removed vertex/edges ? 2 Current removed vertex/edges DiGraphs

Topological Sorting Example (continues…) 1 0 A B C ? 0 2 0 D E F x y sorting # indeg() ? 1 3 0 ? 2 G ? 1 H Previously removed vertex/edges ? 2 Current removed vertex/edges DiGraphs

Topological Sorting Example (continues…) 1 0 A B C 4 0 2 0 D E F x y sorting # indeg() ? 0 3 0 ? 1 G ? 1 H Previously removed vertex/edges ? 2 Current removed vertex/edges DiGraphs

Topological Sorting Example (continues…) 1 0 A B C 4 0 2 0 D E F x y sorting # indeg() 5 0 3 0 ? 0 G ? 1 H Previously removed vertex/edges ? 2 Current removed vertex/edges DiGraphs

Topological Sorting Example (continues…) 1 0 A B C 4 0 2 0 D E F x y sorting # indeg() 5 0 3 0 6 0 G ? 0 H Previously removed vertex/edges ? 1 Current removed vertex/edges DiGraphs

Topological Sorting Example (continues…) 1 0 A B C 4 0 2 0 D E F x y sorting # indeg() 5 0 3 0 6 0 G 7 0 H Previously removed vertex/edges ? 0 Current removed vertex/edges DiGraphs

Topological Sorting Example (continues…) 1 0 A B C 4 0 2 0 D E F x y sorting # indeg() 5 0 3 0 6 0 G 7 0 H Previously removed vertex/edges 8 0 Current removed vertex/edges DiGraphs

Other Algorithms for Topological Sorting Work it the other way around: find a vertex with no outgoing edge (outdeg(v) = 0) and give it # n, then remove it find another one w with (outdeg(w) = 0) and give it # n-1, then remove it Repeat until all vertices are sorted Running time is still O(n + m) Note: This algorithm is different than the one in the book Algorithm TopologicalSort(G) H  G // Temporary copy of G n  G.numVertices() while H is not empty do Let v be a vertex with no outgoing edges Label v  n n  n - 1 Remove v from H DiGraphs

Implementation with DFS Simulate the algorithm by using depth-first search O(n+m) time. Algorithm topologicalDFS(G, v) Input graph G and a start vertex v of G Output labeling of the vertices of G in the connected component of v setLabel(v, VISITED) for all e  G.outEdges(v) { outgoing edges } w  opposite(v,e) if getLabel(w) = UNEXPLORED { e is a discovery edge } topologicalDFS(G, w) else { e is a forward or cross edge } Label v with topological number n n  n - 1 Algorithm topologicalDFS(G) Input dag G Output topological ordering of G n  G.numVertices() for all u  G.vertices() setLabel(u, UNEXPLORED) for all v  G.vertices() if getLabel(v) = UNEXPLORED topologicalDFS(G, v) DiGraphs

DFS Topological Sorting Example The sorting # will always be assigned to a vertex just before the vertex rolls back to its previous vertex Notice however that the algorithm applies DFS also starting from each of the vertices that have only outgoing edges on the graph, which is important to guarantee all vertices will get their numbering i,e. See how the sorting number for the vertex with final assigned # 1 is given DiGraphs

DFS Topological Sorting Example 9 DiGraphs

DFS Topological Sorting Example 8 9 DiGraphs

DFS Topological Sorting Example 7 8 9 DiGraphs

DFS Topological Sorting Example 6 7 8 9 DiGraphs

DFS Topological Sorting Example 6 5 7 8 9 DiGraphs

DFS Topological Sorting Example 4 6 5 7 8 9 DiGraphs

DFS Topological Sorting Example 3 4 6 5 7 8 9 DiGraphs

DFS Topological Sorting Example 2 3 4 6 5 7 8 9 DiGraphs

DFS Topological Sorting Example 2 1 3 4 6 5 7 8 9 DiGraphs