Module type 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.

module Abstract (V : Sig.ANY_TYPE) : Sig.IM with type V.label = V.t and type E.label = unit

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.

Abstract Imperative Labeled Graphs.