sig
module type WEIGHT =
sig
type label
type t
val weight : Prim.WEIGHT.label -> Prim.WEIGHT.t
val compare : Prim.WEIGHT.t -> Prim.WEIGHT.t -> int
val add : Prim.WEIGHT.t -> Prim.WEIGHT.t -> Prim.WEIGHT.t
val zero : Prim.WEIGHT.t
end
module type G =
sig
type t
module V : Sig.COMPARABLE
module E :
sig
type t
type label
val label : Prim.G.E.t -> Prim.G.E.label
val dst : Prim.G.E.t -> V.t
val src : Prim.G.E.t -> V.t
val compare : Prim.G.E.t -> Prim.G.E.t -> int
end
val iter_vertex : (V.t -> unit) -> Prim.G.t -> unit
val iter_edges_e : (Prim.G.E.t -> unit) -> Prim.G.t -> unit
val iter_succ_e : (Prim.G.E.t -> unit) -> Prim.G.t -> V.t -> unit
end
module Make :
functor (G : G) ->
functor
(W : sig
type label = G.E.label
type t
val weight : label -> t
val compare : t -> t -> int
val add : t -> t -> t
val zero : t
end) ->
sig
val spanningtree : Prim.G.t -> Prim.G.E.t list
val spanningtree_from : Prim.G.t -> G.V.t -> Prim.G.E.t list
end
end