Strongly connected components: Difference between revisions

From Algowiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Basic definitions ==
# [[Basic graph definitions]]
== Input ==
== Input ==


Line 5: Line 9:
== Output ==
== Output ==


A set of sets of nodes. Each set of nodes contains exactly the nodes of one [[Basic graph definitions#Connectedness|SCC]]. The correspndence between the [[Basic graph definitions#Connectedness|SCC]] and these sets of nodes is one-to-one.
A set of sets of nodes. Each set of nodes contains exactly the nodes of one [[Basic graph definitions#Connectedness|SCC]]. The correspondence between the [[Basic graph definitions#Connectedness|SCC]] and these sets of nodes is one-to-one.
 
== Pseudocode ==
 
====STRONGLY-CONNECTED-COMPONENTS(''D'')====
 
<code>
STRONGLY-CONNECTED-COMPONENTS(''D'')
1 call '''DFS'''(''D'') to compute finishing times ''f''[v] for each vertex ''v'' &isin; ''V''
2 compute ''D''<sup>''T''</sup> (w.r.t. step 3)
3 call '''DFS'''(''D''<sup>''T''</sup>), but in the main loop of '''DFS''', consider the vertices in order of decreasing ''f''[v] as computed in step 1
4 output the vertices of each tree in the '''DFS''' forest of step 3 as a separate strongly connected component
</code>


== Known algorithms ==
== Known algorithms ==


# [[Kosaraju]]
# [[Kosaraju]]
== Further information ==
''STRONGLY-CONNECTED-COMPONENTS'' runs in linear time.

Latest revision as of 19:07, 9 November 2014

Basic definitions

  1. Basic graph definitions

Input

A directed graph [math]\displaystyle{ G=(V,A) }[/math].

Output

A set of sets of nodes. Each set of nodes contains exactly the nodes of one SCC. The correspondence between the SCC and these sets of nodes is one-to-one.

Known algorithms

  1. Kosaraju