`module type G = sig ... end`

Minimal graph signature for Dijkstra's algorithm. Sub-signature of `Sig.G`.

`module Dijkstra (G : G) (W : Sig.WEIGHT with type edge = G.E.t) : sig ... end`
`module BellmanFord (G : G) (W : Sig.WEIGHT with type edge = G.E.t) : sig ... end`
`module type WJ = sig ... end`

Weight signature for Johnson's algorithm.

`module Johnson (G : G) (W : WJ with type edge = G.E.t) : sig ... end`
`module Check (G : sig ... end) : sig ... end`

Check for a path.

0-1 BFS

When edge weights are limited to 0 or 1, this is more efficient than running Dijkstra's algorithm. It runs in time and space O(E) in the worst case.

`module Bfs01 (G : sig ... end) : sig ... end`