# API Reference libgraph v0.16.0

##
modules

Modules

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.

This module defines the struct used to represent edges and associated metadata about them.

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.

This module contains implementation code for path finding algorithms used by `libgraph`

.

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*.

This reducer traverses the graph using Breadth-First Search.

This reducer traverses the graph using Depth-First Search.

This module defines the Serializer behavior for graphs.

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`

.

This serializer converts a `Graph`

to an edgelist suitable for using with
graph libraries such as the polyglot igraph library.

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

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.).