Strongly Connected Components

From Algorithm Wiki
Jump to navigation Jump to search

Problem Description

Connectivity in an undirected graph means that every vertex can reach every other vertex via any path. If the graph is not connected the graph can be broken down into Connected Components.

Strong Connectivity applies only to directed graphs. A directed graph is strongly connected if there is a directed path from any vertex to every other vertex. This is same as connectivity in an undirected graph, the only difference being strong connectivity applies to directed graphs and there should be directed paths instead of just paths. Similar to connected components, a directed graph can be broken down into Strongly Connected Components.

Bounds Chart

Strongly Connected ComponentsBoundsChart.png

Step Chart

Strongly Connected ComponentsStepChart.png

Improvement Table

Complexity Classes Algorithm Paper Links Lower Bounds Paper Links
Polynomial > 3
Quadratic Paul Purdom; 1970 (1970)

Lowe’s Algorithm (2014)

Renault’s Algorithm (2009)

OBF Algorithm (2011)

CH Algorithm (2004)

Hong’s algorithm (2013)

nlogn Munro’s algorithm (1971)
Linear Kosaraju's algorithm (1978)

Tarjan's strongly connected components algorithm (1972)

Path-based strong components algorithm; Dikjstra (1976)

Pearce; 2016 (2016)

Path-based depth-first search Gabow (2000)

Couvreur; 1999 (1999)