Finding Strongly Connected Components Directed Acyclic Graphs - - PowerPoint PPT Presentation

finding strongly connected components directed acyclic
SMART_READER_LITE
LIVE PREVIEW

Finding Strongly Connected Components Directed Acyclic Graphs - - PowerPoint PPT Presentation

Finding Strongly Connected Components Directed Acyclic Graphs Directed Acyclic Graphs Directed Acyclic Graphs (DAG) A directed acyclic graph (or DAG for short) is a directed graph that contains no cycles. Note that the direction of edges is


slide-1
SLIDE 1

Finding Strongly Connected Components

slide-2
SLIDE 2

Directed Acyclic Graphs

slide-3
SLIDE 3

Directed Acyclic Graphs

Directed Acyclic Graphs (DAG) A directed acyclic graph (or DAG for short) is a directed graph that contains no cycles. Note that the direction of edges is important. Cycles + DFS

◮ A graph contains a cycle if and only if a DFS produces a back edge. ◮ Thus, if a graph is acyclic, a DFS on this graph produces no back

edges. Partial orders

◮ Relation which is transitive, reflexive, and antisymmetric. ◮ For each partial order there is a corresponding DAG and vice versa.

3 / 13

slide-4
SLIDE 4

Sources and Sinks

Source and Sink In a DAG, a source is a vertex without incoming edges; a sink is a vertex without outgoing edges. Lemma Each DAG contains at least one source and one sink. Observation

◮ After removing a source or a sink from a DAG, the resulting graph is

still a DAG.

◮ If a vertex is the only source/sink removing it creates a new

source/sink.

4 / 13

slide-5
SLIDE 5

Topological Order

Topological Order For a directed graph, a topological order is an order v1, v2, . . . , vn (vi = vj ↔ i = j) of its vertices such that (vi, vj) ∈ E implies i < j. Lemma Each DAG has a topological order. Finding a topological order

◮ A post-order on a DFS-tree gives a topological order.

5 / 13

slide-6
SLIDE 6

Strongly Connected Components

slide-7
SLIDE 7

Strongly Connected Component

Strongly Connected Component A directed graph is strongly connected if every vertex is reachable from every other vertex. A strongly connected component is a maximal subgraph which is strongly connected. A graph with three strongly connected components.

7 / 13

slide-8
SLIDE 8

SCC-Graph S(G)

SCC-Graph S(G)

◮ Assume, G has SCCs S1, S2, . . . , Sk. ◮ For each SCC Si in G, create a vertex vi in S(G). ◮ Add an edge (vi, vj) to S(G), if there are two vertices ui and uj in G

with ui ∈ Si, uj ∈ Sj and (ui, uj) ∈ E. G S(G)

8 / 13

slide-9
SLIDE 9

SCC-Graph S(G)

Lemma For a directed graph G, S(G) is acyclic. Lemma All vertices in an SCC S are descendants of its first vertex in a DFS-tree. If v is the first vertex of a SCC S in a DFS-tree, we will call v the root of S. Conclusion

◮ SCCs have topological order ◮ Post-order of roots in DFS-tree (of G) gives topological order of SCCs

9 / 13

slide-10
SLIDE 10

Sink-SCC

Assume, SCC S is a sink in S(G) and has root v. Let D[v] be the descendants of v (including v). Observations

◮ There are no edges from S to another SCC. ◮ For each u ∈ D[v] (u = v), there is a path back to v.

Theorem A vertex v is the root of a sink S in S(G) if and only if, for all u ∈ D[v], (i) (u, w) ∈ E implies w ∈ D[v], and (ii) if u = v, there is an x ∈ D[u] with (x, y) ∈ E and y / ∈ D[u].

10 / 13

slide-11
SLIDE 11

Proof of Theorem

(→)

◮ S is sink, i. e., for all (u, w) ∈ E, u ∈ S implies w ∈ S and u ∈ D[v]. ◮ If u = v, then there is a path back to v. Thus, u has descendant x

with (x, y) ∈ E, y / ∈ D[u]. (←) (1) Assume, v is not root.

◮ There is a path P from v to an ancestor r. ◮ Thus, there is an edge (u, w) where u is descendant and w is not.

(2) Assume S is not sink.

◮ There is another SCC reachable from v which is sink and has a root r. ◮ Because of (i) and (→), r ∈ D[v] and, for all x ∈ D[r], (x, y) ∈ E

implies y ∈ D[r]. (Contradiction with (ii))

11 / 13

slide-12
SLIDE 12

Algorithm – Identify a Root of a Sink

Assume there is a u ∈ D[v] with (u, w) ∈ E and w / ∈ D[v]

◮ (u, w) is cross or back edge. ◮ Therefore, w was visited in DFS before v.

Lowpoint low(v)

◮ The lowest pre-order index pre(w) of a vertex w which is in the

(outgoing) neighbourhood of any descendant of v (including v).

◮ low(v) := min

  • pre(v), min{ pre(w) | (u, w) ∈ E, u ∈ D[v]}
  • ◮ Computable with post-order traversal.

Theorem A vertex v is the root of a sink S in S(G) if and only if (i) pre(v) ≤ low(v) and (ii) pre(u) > low(u) for all u ∈ D[v] with u = v.

12 / 13

slide-13
SLIDE 13

Algorithm – Identify Remaining Roots

Naive strategy

◮ Identify roots of sinks. Descendant of v (including v) are

corresponding SCCs.

◮ Remove corresponding SCCs from graph. ◮ Repeat.

Observation

◮ We identify roots by post-order. ◮ In a DAG, the first vertex in post-order is last vertex in topological

  • rder.

◮ Therefore, we process a root of a sink before all other roots.

New strategy

◮ After identifying first root, “remove”† corresponding sink before

continuing with DFS.

† Flagging as removed an ignore later is sufficient.

13 / 13