Module CCGraph.Traverse

type ('v, 'e) path = ('v * 'e * 'v) list
val generic : tbl:'v set -> bag:'v bag -> graph:('v'e) t -> 'v iter -> 'v iter_once

Traversal of the given graph, starting from a sequence of vertices, using the given bag to choose the next vertex to explore. Each vertex is visited at most once.

val generic_tag : tags:'v tag_set -> bag:'v bag -> graph:('v'e) t -> 'v iter -> 'v iter_once

One-shot traversal of the graph using a tag set and the given bag.

val dfs : tbl:'v set -> graph:('v'e) t -> 'v iter -> 'v iter_once
val dfs_tag : tags:'v tag_set -> graph:('v'e) t -> 'v iter -> 'v iter_once
val bfs : tbl:'v set -> graph:('v'e) t -> 'v iter -> 'v iter_once
val bfs_tag : tags:'v tag_set -> graph:('v'e) t -> 'v iter -> 'v iter_once
val dijkstra : tbl:'v set -> ?⁠dist:('e -> int) -> graph:('v'e) t -> 'v iter -> ('v * int * ('v'e) path) iter_once

Dijkstra algorithm, traverses a graph in increasing distance order. Yields each vertex paired with its distance to the set of initial vertices (the smallest distance needed to reach the node from the initial vertices).

parameter dist

distance from origin of the edge to destination, must be strictly positive. Default is 1 for every edge.

val dijkstra_tag : ?⁠dist:('e -> int) -> tags:'v tag_set -> graph:('v'e) t -> 'v iter -> ('v * int * ('v'e) path) iter_once
module Event : sig ... end