# multigraph v0.16.1-mg.2 - API Reference

## Modules

- [Graph](Graph.md): This module defines a graph data structure, which supports directed and undirected graphs, in both acyclic and cyclic forms.
It also defines the API for creating, manipulating, and querying that structure.
- [Graph.Edge](Graph.Edge.md): This module defines the struct used to represent edges and associated metadata about them.
- [Graph.Pathfinding](Graph.Pathfinding.md): This module contains implementation code for path finding algorithms used by `libgraph`.

- [Graph.Pathfindings.BellmanFord](Graph.Pathfindings.BellmanFord.md): The Bellman–Ford algorithm is an algorithm that computes shortest paths from a single
source vertex to all of the other vertices in a weighted digraph.
It is capable of handling graphs in which some of the edge weights are negative numbers
Time complexity: O(VLogV)

- [Graph.Reducer](Graph.Reducer.md): Reducers provide a way to traverse a graph while applying a function at each vertex. This
can be used for a variety of things, most notably though is pre-processing a graph, for example
one might decorate vertices with their distance from some known landmarks for later use in
a cost function for A*.
- [Graph.Reducers.Bfs](Graph.Reducers.Bfs.md): This reducer traverses the graph using Breadth-First Search.

- [Graph.Reducers.Dfs](Graph.Reducers.Dfs.md): This reducer traverses the graph using Depth-First Search.

- [Graph.Serializer](Graph.Serializer.md): This module defines the Serializer behavior for graphs.

- [Graph.Serializers.DOT](Graph.Serializers.DOT.md): This serializer converts a Graph to a DOT file, which can then be converted
to a great many other formats using Graphviz, e.g. `dot -Tpng out.dot > out.png`.

- [Graph.Serializers.Edgelist](Graph.Serializers.Edgelist.md): This serializer converts a `Graph` to an edgelist suitable for using with
graph libraries such as the polyglot igraph library.

- [Graph.Serializers.Flowchart](Graph.Serializers.Flowchart.md): This serializer converts a `Graph` to a [Mermaid Flowchart](https://mermaid.js.org/syntax/flowchart.html).

- [PriorityQueue](PriorityQueue.md): This module defines a priority queue datastructure, intended for use with graphs, as it prioritizes
lower priority values over higher priority values (ideal for priorities based on edge weights, etc.).

- Exceptions
  - [Graph.EdgeSpecificationError](Graph.EdgeSpecificationError.md): This exception is raised when a Graph function expects one or more valid edge specifications,
but receives a term which does not match one of the allowed specification patterns.

