functor (G : G) ->
sig
module W :
sig
type t = G.label
val zero : t
val infinity : t
val compare : t -> t -> int
val add : t -> t -> t
val to_string : t -> string
val max : t -> t -> t
val min : t -> t -> t
end
module D :
sig
type t = G.WT.t
type key = G.vertex
type value = G.label
val create : int -> t
val set : t -> key -> value -> unit
val get : t -> key -> value
end
val no_dist : W.t
module Queue :
sig
module V :
sig
type t = MakeGen(G)(NoOpt).Queue.V.t
type elt = G.vertex
val make : ?size:int -> unit -> t
val set : t -> int -> elt -> unit
val get : t -> int -> elt
val clear : t -> unit
val index_max : t -> int
val length : t -> int
val capacity : t -> int
val blit : t -> int -> t -> int -> int -> unit
val default : unit -> elt
end
type t =
MakeGen(G)(NoOpt).Queue.t = {
mutable v : V.t;
mutable front : int;
mutable back : int;
}
type elt = V.elt
val create : ?size:int -> unit -> t
val is_empty : t -> bool
val clear : t -> unit
val add : t -> V.elt -> unit
val peek : t -> V.elt
val compact : t -> unit
val pop : t -> V.elt
val size : t -> int
end
val q : Queue.t
val bfs_distances : ?dist_array:D.t option -> G.t -> D.key -> D.t
module Heap :
sig
module V :
sig
type t = MakeGen(G)(NoOpt).Heap.V.t
type elt = G.vertex * W.t
val make : ?size:int -> unit -> t
val set : t -> int -> elt -> unit
val get : t -> int -> elt
val clear : t -> unit
val index_max : t -> int
val length : t -> int
val capacity : t -> int
val blit : t -> int -> t -> int -> int -> unit
val default : unit -> elt
end
type t =
MakeGen(G)(NoOpt).Heap.t = {
mutable v : V.t;
mutable back : int;
}
type elt = V.elt
val create : ?size:int -> unit -> t
val is_empty : t -> bool
val clear : t -> unit
val add : t -> V.elt -> unit
val push : t -> V.elt -> unit
val peek_min : t -> V.elt
val pop_min : t -> V.elt
val size : t -> int
end
val h : Heap.t
val dijkstra_distances : ?dist_array:D.t option -> G.t -> D.key -> D.t
type sweep_info =
MakeGen(G)(NoOpt).sweep_info = {
source : G.vertex;
ecc : W.t;
last : G.vertex;
ecc' : W.t;
last' : G.vertex;
}
val dum_sweep : G.vertex -> W.t -> sweep_info
type estimate =
MakeGen(G)(NoOpt).estimate =
Ecc
| Ecc'
| Ecc'Ecc
| Dsum
| Dsum'
| Dmin
| Dmin'
| Dmax
| Dmax'
val str_of_estimate : estimate -> string
type extr = MakeGen(G)(NoOpt).extr = Min of estimate | Max of estimate
val str_of_extr : extr -> string
val periodic_heuristic : 'a array -> int -> 'a
val basic_period : extr array
val big_period : extr array
val full_period : extr array
val pseudo_sum_sweep : extr array
val maxmin_period_bizarre : extr array
val maxmin_period : extr array
val sum_sweep_period : extr array
val sum_sweep_debug : extr array
val sum_sweep_fun : int -> extr
val period : extr array
val periodic_heuristic_eriod : int -> extr
exception Break
type diam_info =
MakeGen(G)(NoOpt).diam_info = {
diam_lb : W.t;
diam_ub : W.t;
diam_pair : sweep_info;
rev_diam_pair : sweep_info;
rad_lb : W.t;
rad_ub : W.t;
rad_center : sweep_info;
rev_rad_lb : W.t;
rev_rad_ub : W.t;
rev_rad_center : sweep_info;
}
val diameter_radius_scc :
?diam_only:bool ->
?max_sweeps:int ->
?heuristic:(int -> extr) -> G.t -> D.key -> diam_info
end