# multigraph v0.16.1-mg.3 - Table of Contents A high-performance graph datastructure library for Elixir projects with multigraph support ## Modules - [Multigraph](Multigraph.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. - [Multigraph.Edge](Multigraph.Edge.md): This module defines the struct used to represent edges and associated metadata about them. - [Multigraph.Pathfinding](Multigraph.Pathfinding.md): This module contains implementation code for path finding algorithms used by `libgraph`. - [Multigraph.Pathfindings.BellmanFord](Multigraph.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) - [Multigraph.PriorityQueue](Multigraph.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.). - [Multigraph.Reducer](Multigraph.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*. - [Multigraph.Reducers.Bfs](Multigraph.Reducers.Bfs.md): This reducer traverses the graph using Breadth-First Search. - [Multigraph.Reducers.Dfs](Multigraph.Reducers.Dfs.md): This reducer traverses the graph using Depth-First Search. - [Multigraph.Serializer](Multigraph.Serializer.md): This module defines the Serializer behavior for graphs. - [Multigraph.Serializers.DOT](Multigraph.Serializers.DOT.md): This serializer converts a Multigraph 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`. - [Multigraph.Serializers.Edgelist](Multigraph.Serializers.Edgelist.md): This serializer converts a `Multigraph` to an edgelist suitable for using with graph libraries such as the polyglot igraph library. - [Multigraph.Serializers.Flowchart](Multigraph.Serializers.Flowchart.md): This serializer converts a `Multigraph` to a [Mermaid Flowchart](https://mermaid.js.org/syntax/flowchart.html). - Exceptions - [Multigraph.EdgeSpecificationError](Multigraph.EdgeSpecificationError.md): This exception is raised when a Multigraph function expects one or more valid edge specifications, but receives a term which does not match one of the allowed specification patterns.