Download presentation

Presentation is loading. Please wait.

Published byBridget Kierce Modified about 1 year ago

1
Directed Graphs1 JFK BOS MIA ORD LAX DFW SFO

2
Directed Graphs2 Outline and Reading (§6.4) Reachability (§6.4.1) Directed DFS Strong connectivity Transitive closure (§6.4.2) The Floyd-Warshall Algorithm Directed Acyclic Graphs (DAG’s) (§6.4.4) Topological Sorting

3
Directed Graphs3 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

4
Directed Graphs4 Digraph Properties 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. If G is simple, m < n(n-1). A C E B D

5
Directed Graphs5 Digraph Application Scheduling: edge (a,b) means task a must be completed before b can be started The good life ics141 ics131 ics121 ics53 ics52 ics51 ics23ics22ics21 ics161 ics151 ics171

6
Directed Graphs6 Directed DFS 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 discovery edges back edges forward edges cross edges A directed DFS starting at a vertex s determines the vertices reachable from s We say that u reaches v (and v is reachable from u) if there is a directed path from u to v A C E B D

7
Directed Graphs7 Directed DFS Cross edge (v,w) w is in the same level as v or in the next level in the tree of discovery edges Discovery edge (v,w) v is the parent of w in the tree of discovery edges Back edge (v,w) w is an ancestor of v in the tree of discovery edges Forward edge (v,w) v is an ancestor (but not the parent) of w in the tree of discovery edges A C E B D

8
Directed Graphs8 Reachability DFS tree rooted at v: vertices reachable from v via directed paths A C E B D F A C ED A C E B D F

9
Directed Graphs9 Strong Connectivity A digraph G is strongly connected if, for any two vertices u and v of G, u reaches v and v reaches u. Each vertex reaches all other vertices a d c b e f g

10
Directed Graphs10 Pick a vertex v in G. Perform a DFS from v in G. If there’s a w not visited, print “no”. Let G’ be G with edges reversed. Perform a DFS from v in G’. If there’s a w not visited, print “no”. Else, print “yes”. Running time: O(n+m). Strong Connectivity Algorithm G: G’: a d c b e f g a d c b e f g

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

12
Directed Graphs12 Transitive Closure 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 A D C E B A D C E G G*

13
Directed Graphs13 Computing the Transitive Closure We can perform DFS starting at each vertex O(n(n+m)) 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. Alternatively... Use dynamic programming: the Floyd-Warshall Algorithm

14
Directed Graphs14 Floyd-Warshall Transitive Closure Idea #1: Number the vertices 1, 2, …, n. Idea #2: Consider paths that use only vertices numbered 1, 2, …, k, as intermediate vertices: k j i Uses only vertices numbered 1,…,k-1 Uses only vertices numbered 1,…,k-1 Uses only vertices numbered 1,…,k (add this edge if it’s not already in)

15
Directed Graphs15 Floyd-Warshall’s Algorithm Floyd-Warshall’s algorithm numbers the vertices of G as v 1, …, v n and computes a series of digraphs G 0, …, G n G 0 =G G k has a directed edge (v i, v j ) if G has a directed path from v i to v j with intermediate vertices in the set {v 1, …, v k } We have that G n = G* In phase k, digraph G k is computed from G k 1 Running time: O(n 3 ), assuming areAdjacent is O(1) (e.g., adjacency matrix) Algorithm FloydWarshall(G) Input digraph G Output transitive closure G* of G i 1 for all v G.vertices() denote v as v i i i + 1 G 0 G for k 1 to n do G k G k 1 for i 1 to n (i k) do for j 1 to n (j i, k) do if G k 1.areAdjacent(v i, v k ) G k 1.areAdjacent(v k, v j ) if G k.areAdjacent(v i, v j ) G k.insertDirectedEdge(v i, v j, k) return G n

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

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

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

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

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

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

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

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

24
Directed Graphs24 DAGs and Topological Ordering A directed acyclic graph (DAG) is a digraph that has no directed cycles A topological ordering of a digraph is a numbering v 1, …, v n of the vertices such that for every edge (v i, v j ), we have i j Example: in a task scheduling digraph, a topological ordering is a task sequence that satisfies the precedence constraints Theorem A digraph has a topological ordering if and only if it is a DAG B A D C E DAG G B A D C E Topological ordering of G v1v1 v2v2 v3v3 v4v4 v5v5

25
Directed Graphs25 write c.s. program play Topological Sorting Number vertices, so that (u,v) in E implies u < v wake up eat nap study computer sci. more c.s. work out sleep dream about graphs A typical student day make cookies for professors

26
Directed Graphs26 Note: This algorithm is different than the one in Goodrich-Tamassia Running time: O(n + m). How…? Algorithm for Topological Sorting Method 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

27
Directed Graphs27 Topological Sorting Algorithm using 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.incidentEdges(v) if getLabel(e) UNEXPLORED w opposite(v,e) if getLabel(w) UNEXPLORED setLabel(e, DISCOVERY) 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 e G.edges() setLabel(e, UNEXPLORED) for all v G.vertices() if getLabel(v) UNEXPLORED topologicalDFS(G, v)

28
Directed Graphs28 Topological Sorting Example

29
Directed Graphs29 Topological Sorting Example 9

30
Directed Graphs30 Topological Sorting Example 8 9

31
Directed Graphs31 Topological Sorting Example 7 8 9

32
Directed Graphs32 Topological Sorting Example

33
Directed Graphs33 Topological Sorting Example

34
Directed Graphs34 Topological Sorting Example

35
Directed Graphs35 Topological Sorting Example

36
Directed Graphs36 Topological Sorting Example

37
Directed Graphs37 Topological Sorting Example

Similar presentations

© 2016 SlidePlayer.com Inc.

All rights reserved.

Ads by Google