Imperative.S
Signature of imperative graphs.
<b>Edges may be labeled or not</b>:
<b>Vertices may be concrete or abstract</b>:
<b>How to choose between concrete and abstract vertices for my graph implementation</b>?
Usually, if you fall into one of the following cases, use abstract vertices:
In other cases, it is certainly easier to use concrete vertices.
module Concrete
(V : Sig.COMPARABLE) :
Sig.I
with type V.t = V.t
and type V.label = V.t
and type E.t = V.t * V.t
and type E.label = unit
Imperative Unlabeled Graphs.
Abstract Imperative Unlabeled Graphs.
module ConcreteLabeled
(V : Sig.COMPARABLE)
(E : Sig.ORDERED_TYPE_DFT) :
Sig.I
with type V.t = V.t
and type V.label = V.t
and type E.t = V.t * E.t * V.t
and type E.label = E.t
Imperative Labeled Graphs.
module AbstractLabeled
(V : Sig.ANY_TYPE)
(E : Sig.ORDERED_TYPE_DFT) :
Sig.IM with type V.label = V.t and type E.label = E.t
Abstract Imperative Labeled Graphs.