module Make: functor (X : GRAPH) -> sig end
val fold : 'a -> (X.node -> 'a -> 'a) -> 'b -> ('a -> 'b -> 'b) -> X.graph -> 'b
fold empty add_class singleton add g
runs the Tarjan's algorithm
on the graph
g
. It returns a partition of the set of the nodes
of the graph (i.e. a set of set of nodes), which is computed as
follows:
empty
is the empty partition,
add_class c p
adds the class c
to the partition p
,
singleton nd
returns the class with one element nd
,
add nd c
add the node nd
to the class c
.
val list : X.graph -> X.node list list
list g
computes the SCCs of a graph. The result is a list of list
of nodes: each list gives the nodes of one of the SCCs.
val unify : (X.node -> X.node -> unit) -> X.graph -> unit
unify unifier graph
computes the SCCs of a graph. For every SCC,
it chooses a particular node nd
, and for every other node nd'
of
the SCC, unifier nd nd'
is called.