Directed Graphs 4/18/17 09:09
1
© 2015 Goodrich and Tamassia Directed Graphs 1
Directed Graphs JFK
BOS
MIA
ORD
LAXDFW
SFO
Presentation for use with the textbook, Algorithm Design and Applications, by M. T. Goodrich and R. Tamassia, Wiley, 2015
© 2015 Goodrich and Tamassia Directed Graphs 2
Digraphs q A digraph is a graph
whose edges are all directed n Short for “directed graph”
q Applications n one-way streets n flights n task scheduling
A
C
E
B
D
Directed Graphs 4/18/17 09:09
2
© 2015 Goodrich and Tamassia Directed Graphs 3
Digraph Properties
q A graph G=(V,E) such that n Each edge goes in one direction: n Edge (a,b) goes from a to b, but not b to a
q If G is simple, m < n⋅(n - 1) q 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
A
C
E
B
D
© 2015 Goodrich and Tamassia Directed Graphs 4
Digraph Application q Scheduling: edge (a,b) means task a must be
completed before b can be started
The good life
cs141 cs131 cs121
cs53 cs52 cs51
cs46 cs22 cs21
cs161
cs151
cs171
Directed Graphs 4/18/17 09:09
3
© 2015 Goodrich and Tamassia Directed Graphs 5
Directed DFS q We can specialize the traversal
algorithms (DFS and BFS) to digraphs by traversing edges only along their direction
q In the directed DFS algorithm, we have four types of edges n discovery edges n back edges n forward edges n cross edges
q A directed DFS starting at a vertex s determines the vertices reachable from s
A
C
E
B
D
© 2015 Goodrich and Tamassia
The Directed DFS Algorithm
Directed Graphs 6
Directed Graphs 4/18/17 09:09
4
© 2015 Goodrich and Tamassia Directed Graphs 7
Reachability
q DFS tree rooted at v: vertices reachable from v via directed paths
A
C
E
B
D
F A
C
E D
A
C
E
B
D
F
© 2015 Goodrich and Tamassia Directed Graphs 8
Strong Connectivity q Each vertex can reach all other vertices
a
d
c
b
e
f
g
Directed Graphs 4/18/17 09:09
5
© 2015 Goodrich and Tamassia Directed Graphs 9
q Pick a vertex v in G q Perform a DFS from v in G
n If there’s a w not visited, print “no”
q Let G’ be G with edges reversed q Perform a DFS from v in G’
n If there’s a w not visited, print “no” n Else, print “yes”
q Running time: O(n+m)
Strong Connectivity Algorithm
G:
G’:
a
d
c
b
e
f
g
a
d
c
b
e
f
g
© 2015 Goodrich and Tamassia Directed Graphs 10
q Maximal subgraphs such that each vertex can reach all other vertices in the subgraph
q 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
Directed Graphs 4/18/17 09:09
6
© 2015 Goodrich and Tamassia Directed Graphs 11
Transitive Closure q Given a digraph G, the
transitive closure of G is the digraph G* such that n G* has the same vertices
as G n if G has a directed path
from u to v (u ≠ v), G* has a directed edge from u to v
q The transitive closure provides reachability information about a digraph
B
A
D
C
E
B
A
D
C
E
G
G*
© 2015 Goodrich and Tamassia Directed Graphs 12
Computing the Transitive Closure q We can perform
DFS starting at each vertex n 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
Directed Graphs 4/18/17 09:09
7
© 2015 Goodrich and Tamassia Directed Graphs 13
Floyd-Warshall Transitive Closure q Idea #1: Number the vertices 1, 2, …, n. q 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)
© 2015 Goodrich and Tamassia Directed Graphs 14
Floyd-Warshall’s Algorithm: High-Level View q Number vertices v1 , …, vn q Compute digraphs G0, …, Gn
n G0=G n Gk has directed edge (vi, vj) if G has a directed
path from vi to vj with intermediate vertices in {v1 , …, vk}
q We have that Gn = G* q In phase k, digraph Gk is computed from Gk - 1 q Running time: O(n3), assuming areAdjacent is
O(1) (e.g., adjacency matrix)
Directed Graphs 4/18/17 09:09
8
© 2015 Goodrich and Tamassia
The Floyd-Warshall Algorithm
q The running time is clearly O(n3). Directed Graphs 15
© 2015 Goodrich and Tamassia Directed Graphs 16
Floyd-Warshall Example
JFK
BOS
MIA
ORD
LAXDFW
SFO
v2
v1v3
v4
v5
v6
v7
Directed Graphs 4/18/17 09:09
9
© 2015 Goodrich and Tamassia Directed Graphs 17
Floyd-Warshall, Iteration 1
JFK
BOS
MIA
ORD
LAXDFW
SFO
v2
v1v3
v4
v5
v6
v7
© 2015 Goodrich and Tamassia Directed Graphs 18
Floyd-Warshall, Iteration 2
JFK
BOS
MIA
ORD
LAXDFW
SFO
v2
v1v3
v4
v5
v6
v7
Directed Graphs 4/18/17 09:09
10
© 2015 Goodrich and Tamassia Directed Graphs 19
Floyd-Warshall, Iteration 3
JFK
BOS
MIA
ORD
LAXDFW
SFO
v2
v1v3
v4
v5
v6
v7
© 2015 Goodrich and Tamassia Directed Graphs 20
Floyd-Warshall, Iteration 4
JFK
BOS
MIA
ORD
LAXDFW
SFO
v2
v1v3
v4
v5
v6
v7
Directed Graphs 4/18/17 09:09
11
© 2015 Goodrich and Tamassia Directed Graphs 21
Floyd-Warshall, Iteration 5
JFK
MIA
ORD
LAXDFW
SFO
v2
v1v3
v4
v5
v6
v7BOS
© 2015 Goodrich and Tamassia Directed Graphs 22
Floyd-Warshall, Iteration 6
JFK
MIA
ORD
LAXDFW
SFO
v2
v1v3
v4
v5
v6
v7BOS
Directed Graphs 4/18/17 09:09
12
© 2015 Goodrich and Tamassia Directed Graphs 23
Floyd-Warshall, Conclusion
JFK
MIA
ORD
LAXDFW
SFO
v2
v1v3
v4
v5
v6
v7BOS
© 2015 Goodrich and Tamassia Directed Graphs 24
DAGs and Topological Ordering q A directed acyclic graph (DAG) is a
digraph that has no directed cycles q A topological ordering of a digraph
is a numbering v1 , …, vn
of the vertices such that for every edge (vi , vj), we have i < j
q Example: in a task scheduling digraph, a topological ordering a task sequence that satisfies the precedence constraints
Theorem A digraph admits 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
v1
v2
v3
v4 v5
Directed Graphs 4/18/17 09:09
13
© 2015 Goodrich and Tamassia Directed Graphs 25
write c.s. program
play
Topological Sorting q 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 1
2 3
4 5
6
7
8
9
10 11
bake cookies
© 2015 Goodrich and Tamassia Directed Graphs 26
q Note: This algorithm is different than the one in the book
q Running time: O(n + m)
Algorithm for Topological Sorting
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
Directed Graphs 4/18/17 09:09
14
© 2015 Goodrich and Tamassia Directed Graphs 27
Implementation with DFS q Simulate the algorithm by
using depth-first search q 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)
© 2015 Goodrich and Tamassia Directed Graphs 28
Topological Sorting Example
Directed Graphs 4/18/17 09:09
15
© 2015 Goodrich and Tamassia Directed Graphs 29
Topological Sorting Example
9
© 2015 Goodrich and Tamassia Directed Graphs 30
Topological Sorting Example
8
9
Directed Graphs 4/18/17 09:09
16
© 2015 Goodrich and Tamassia Directed Graphs 31
Topological Sorting Example
7 8
9
© 2015 Goodrich and Tamassia Directed Graphs 32
Topological Sorting Example
7 8
6
9
Directed Graphs 4/18/17 09:09
17
© 2015 Goodrich and Tamassia Directed Graphs 33
Topological Sorting Example
7 8
5 6
9
© 2015 Goodrich and Tamassia Directed Graphs 34
Topological Sorting Example
7
4
8
5 6
9
Directed Graphs 4/18/17 09:09
18
© 2015 Goodrich and Tamassia Directed Graphs 35
Topological Sorting Example
7
4
8
5 6
3
9
© 2015 Goodrich and Tamassia Directed Graphs 36
Topological Sorting Example 2
7
4
8
5 6
3
9
Directed Graphs 4/18/17 09:09
19
© 2015 Goodrich and Tamassia Directed Graphs 37
Topological Sorting Example 2
7
4
8
5 6
1
3
9