Oper.I
Basic operations over imperative graphs
type g = G.t
transitive_closure ?reflexive g
returns the transitive closure of g
(as a new graph). Loops (i.e. edges from a vertex to itself) are added only if reflexive
is true
(default is false
).
add_transitive_closure ?reflexive g
replaces g
by its transitive closure. Meaningless for persistent implementations (then acts as transitive_closure
).
transitive_reduction ?reflexive g
returns the transitive reduction of g
(as a new graph). Loops (i.e. edges from a vertex to itself) are removed only if reflexive
is true
(default is false
).
replace_by_transitive_reduction ?reflexive g
replaces g
by its transitive reduction. Meaningless for persistent implementations (then acts as transitive_reduction
).
mirror g
returns a new graph which is the mirror image of g
: each edge from u
to v
has been replaced by an edge from v
to u
. For undirected graphs, it simply returns g
. Note: Vertices are shared between g
and mirror g
; you may need to make a copy of g
before using mirror
complement g
returns a new graph which is the complement of g
: each edge present in g
is not present in the resulting graph and vice-versa. Edges of the returned graph are unlabeled.
intersect g1 g2
returns a new graph which is the intersection of g1
and g2
: each vertex and edge present in g1
*and* g2
is present in the resulting graph.