# multigraph v0.16.1-mg.2 - Table of Contents A high-performance graph datastructure library for Elixir projects with multigraph support ## 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.