Module Traverse.Event

More detailed interface

type edge_kind = [
| `Forward
| `Back
| `Cross
]
type ('v, 'e) t = [
| `Enter of 'v * int * ( 'v, 'e ) path
| `Exit of 'v
| `Edge of 'v * 'e * 'v * edge_kind
]

A traversal is a sequence of such events

val get_vertex : ( 'v, 'e ) t -> ('v * [ `Enter | `Exit ]) option
val get_enter : ( 'v, 'e ) t -> 'v option
val get_exit : ( 'v, 'e ) t -> 'v option
val get_edge : ( 'v, 'e ) t -> ('v * 'e * 'v) option
val get_edge_kind : ( 'v, 'e ) t -> ('v * 'e * 'v * edge_kind) option
val dfs : tbl:'v set -> eq:( 'v -> 'v -> bool ) -> graph:( 'v, 'e ) graph -> 'v iter -> ( 'v, 'e ) t iter_once

Full version of DFS.

  • parameter eq

    equality predicate on vertices.

val dfs_tag : eq:( 'v -> 'v -> bool ) -> tags:'v tag_set -> graph:( 'v, 'e ) graph -> 'v iter -> ( 'v, 'e ) t iter_once

Full version of DFS using integer tags.

  • parameter eq

    equality predicate on vertices.