Tarjan's Algorithm #
This file implements Tarjan's algorithm for finding the strongly connected components (SCCs) of a graph.
State for Tarjan's algorithm.
- id : Std.HashMap ℕ ℕ
id[v]is the index of the vertexvin the DFS traversal. - lowlink : Std.HashMap ℕ ℕ
lowlink[v]is the smallest index of any node on the stack that is reachable fromvthroughv's DFS subtree. The stack of visited vertices used in Tarjan's algorithm.
- onStack : Std.HashSet ℕ
onStack.contains viffvis instack. The structure is used to check it efficiently. - time : ℕ
A time counter that increments each time the algorithm visits an unvisited vertex.
Instances For
The Tarjan's algorithm. See Wikipedia.
Implementation of findSCCs in the StateM TarjanState monad.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Finds the strongly connected components of the graph g. Returns a hashmap where the value at
key v represents the SCC number containing vertex v. The numbering of SCCs is arbitrary.