Lecture 16: Directed Graphs

Lecture 16: Directed Graphs

Lecture 16: Directed Graphs BOS ORD JFK SFO DFW LAX MIA Courtesy of Goodrich, Tamassia and Olga Veksler Instructor: Yuzhen Xie Outline Directed Graphs Properties Algorithms for Directed Graphs DFS and BFS Strong Connectivity Transitive Closure DAG and Toppgological Ordering 2 Digraphs A digraph is a ggpraph whose E edges are all directed D Short for “directed graph” C Applications B one-way streets A flights task scheduling 3 Digraph Properties E D A graph G=(V,E) such that Each edge goes in one direction: C Ed(dge (A,B) goes from A to B, Edge (B,A) goes from B to A, B If G is simple, m < n*(n-1). A If we keep in-edges and out-edges in separate adjacency lists, we can perform listing of in-edges and out-edges in time proportional to their size OutgoingEdges(A): (A,C), (A,D), (A,B) IngoingEdges(A): (E,A),(B,A) We say that vertex w is reachable from vertex v if there is a directed path from v to w EiseahablefomAE is reachable from A E is not reachable from D 4 Algorithm DFS(G, v) Directed DFS Input digraph G and a start vertex v of G Output traverses vertices in G reachable from v We can specialize the setLabel(v, VISITED) traversal algorithms (DFS and for all e ∈ G.outgoingEdges(v) BFS) to digraphs by traversing edges only along w ← opposite(v,e) their direction if getLabel(w) = UNEXPLORED DFS(G, w) In the directed DFS algorithm, we have 3 four types of edges E discovery edges 4 bkdback edges D forward edges cross edges A directed DFS starting at a C 2 vertex s visits all the vertices reachable from s B 5 Unlike undirected graph , if u is reachable from s, it does not mean that s is reachable from u A 1 Graph G Reachability E D C F A B DFS tree rooted at v: BFS tree rooted at v: vertices vertices reachable from v reachable from v via directed viditdia directed path s paths E D E D C C F DFS(G,C) A A B BFS (G,B) Strong Connectivity A graph is strongly connected if we can reach all other vertices from any fixed vertex a g a g c c d d e e f f b b strongly connected graph nottt strong ly connec tdted grap h cannot reach a from g Inefficient Algorithm to Check for Strong Connectivity stronggylyConnected = true G: a for every vertex v in G g c DFS(G,v) d if some vertex w is not visited e stronglyConnected = false f b DFS(G,v) visits every vertex reachable from v Simplffle, yet very inefficient, O[(n+m)n] 8 Efficient Algorithm to Check for Strong Connectivity v 1) Pick a vertex v in G g 2) Perform a DFS from v in G c If there’s a vertex w not visited, print “no” and d terminate the algorithm e else (all vertices are visited) from v we can b reach any other graph vertex w 3) Let G’ be G with edges reversed G 4) Perform a DFS from v in G’. If there is pa th from v to w iG’ththin G’, then there v is path from w to v in the original graph G g c If every vertex is reachable from v in G’, then there is a path from any vertex w to v in the d original graph G e Then G is strongly connected b To find ppyath between any nodes b and d: w first go from b to v, then go from v to d G’ Running time is O(n + m), perform DFS 2 times 9 Transitive Closure D E Given a digraph G, the transitive closure of G is B G the digraph G* such that C G* has the same vertices A as G if G has a directed path from u to v (u ≠ v), G* has a directed edge from u to v D E The transitive closure summarizes reach abili ty B information about a digraph C A G* 10 Computing Transitive Closure We can perform DFS(G,v) for each vertex v for all vertices v in graph G DFS(G,v) for all vertices w in graph G if w is reachable from v put edge (v,w) in G* Running time is O(n(n+m)) This is O(n2) for sparse graphs AhiifithO()dA graph is sparse if it has O(n) edges This is O(n3) for dense graphs A graph is dense if it has O(n2) edges 11 DAGs and Topological Ordering A directed acyclic graph (DAG) is a digraph that has no D E dir ected cy cles B A topological ordering of a DAG G digraph is a numbering of C vertices: A 1 , 2, …, n such that for everyyg edge (v, w), 4 5 number(v) < number(w) D E Example: in a task scheduling 2 B digraph , a t opol ogi cal ord eri ng 3 of a task sequence satisfies 1 C the precedence constraints A TlilTopological ordering of G Topological Ordering Scheduling problem: edge (a,b) means task a must be completed before b can be started Number vertices, so that u. number < v. number for any edge (u,v) 1 wake up A typical student day 2 3 eat study computer sci. 4 5 nap more c.s. 7 play 8 write c.s. ppgrogram 6 9 work out make cookies for professors 10 sleep 11 13 dream about graphs Topological Ordering Theorem Theorem: Digraph admits topological ordering if and only if it is a DAG Proof: Suppose graph is not a DAG , that is it has a cycle v1, v2,…, vn-1, vn, v1. If topological ordering existed, it would imply that v1.num < v2.num < …< vn-1.num < vn.num < v1.num ¾ If graph is a DAG, there is a vertex v with no outgoing edges if every vertex has an outgoing edge, then performing DFS we will encounter a back edge which means cycle ¾ This vertex can be the last one in topological ordering ¾ Removing this vertex from the graph with incoming and outgoing edges leaves the graph acyclic counter = n Repeat until counter =0= 0 1. Find vertex v with no outgoing edges 2. Set topological label of v to counter 3. Remove v from the graph together wihith all lli incomi ng and outgoi ng ed ges. 4. counter = counter -1 Topological Sorting Algorithm Using DFS Simulate the algorithm by using depth-first search counter is an instance (global) variable Algorithm topologicalDFS(G) Algorithm topologicalDFS(G, v) Input dag G Input graph G and a start vertex v Output topological ordering of G Output labeling of the vertices of G counter ← G.numVertices() in the connected component of v for all u ∈ G.vertices() setLabel(v, VISITED) setLabel(u, UNEXPLORED) for all e ∈ G.outgoingEdges(v) for all v ∈ G.vertices() w ← opposite(v,e) if getLabel(v) = UNEXPLORED if getLabel(w) = UNEXPLORED topologicalDFS(G, v) topologicalDFS(G, w) v.topologicalNumber = counter O(n + m) time. counter ← counter - 1 15 Toppgological Sorting Examp le 16 Toppgological Sorting Examp le 9 17 Topological Sorting Example 8 9 18 Topological Sorting Example 7 8 9 19 Toppgological Sorting Examp le 6 7 8 9 20 Toppgological Sorting Examp le 6 5 7 8 9 21 Topological Sorting Example 4 6 5 7 8 9 22 Toppgological Sorting Examp le 3 4 6 5 7 8 9 23 Toppgological Sorting Examp le 2 3 4 6 5 7 8 9 24 Topological Sorting Example 2 1 3 4 6 5 7 8 9 25.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    25 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us