Rand.I
Random imperative graphs
type graph = G.t
type vertex = G.V.t
type edge_label = G.E.label
val graph : ?loops:bool -> v:int -> e:int -> unit -> graph
graph v e
generates a random graph with exactly v
vertices and e
edges. Vertices are labeled with 0
... v-1
. The boolean loops
indicates whether loops are allowed; default value is no loop (false
).
val labeled : (vertex -> vertex -> edge_label) -> ?loops:bool -> v:int -> e:int -> unit -> graph
labeled f
is similar to graph
except that edges are labeled using function f
.
The two functions above actually make a choice between two different implementations according to the ratio e/(v*v). When this ratio is small, random_few_edges
is selected; otherwise random_many_edges
is selected.
val random_few_edges : loops:bool -> v:int -> e:int -> graph
val random_many_edges : loops:bool -> v:int -> e:int -> graph
val gnp : ?loops:bool -> v:int -> prob:float -> unit -> graph
random graph using the G(n,p) model. gnp v prob
generates a random graph with exactly v
vertices and where each edge is selected with probability prob
val gnp_labeled : (vertex -> vertex -> edge_label) -> ?loops:bool -> v:int -> prob:float -> unit -> graph
gnp_labeled add_edge v e
is similar to gnp
except that edges are labeled using function f
.