graaf 0.80.0

Work with directed graphs.
Documentation

Graaf   Crates.io Build status API reference Coverage Status

Rust-powered directed graphs.

Table of Contents

Installation

Add the following to your Cargo.toml:

[dependencies]
graaf = "0.80.0"

Digraph Types

Graaf provides representations of directed graphs.

These types eagerly implement digraph operations and digraph algorithms.

Creating Digraphs

The gen module provides digraph generators.

  • Biclique generates a complete bipartite digraph.
  • Circuit generates a circuit digraph.
  • Complete generates a complete digraph.
  • Cycle generates a bidirectional circuit.
  • Empty generates a digraph with no arcs.
  • ErdosRenyi generates a random digraph.
  • Path generates a path digraph.
  • RandomTournament generates a random tournament.
  • Star generates a star digraph.

Operations

The op module provides digraph operation traits. The digraph types implement these traits. One can implement these traits for custom digraph types. Operations form the foundation for algorithms.

Algorithms

The algo module provides digraph algorithms.

Bellman-Ford-Moore

The Bellman-Ford-Moore algorithm finds the shortest paths in an arc-weighted digraph with negative weights.

Breadth-First Search (BFS)

A breadth-first search explores the vertices of an unweighted digraph in order of their distance from a source.

Depth-First Search (DFS)

A depth-first search explores the vertices of an unweighted digraph in order of their depth from a source.

Dijkstra

Dijkstra's algorithm finds the shortest paths in an arc-weighted digraph.

These functions start from one or more source vertices and allow a custom step function, target predicate, distance array, and heap, where applicable.

These functions start from one source vertex.

Floyd-Warshall

The Floyd-Warshall algorithm finds the shortest paths between all pairs of vertices in an arc-weighted digraph.

Tarjan

Tarjan's algorithm finds the strongly connected components in a digraph.

Types

These types are produced by the algorithms.

Predecessor Tree

A predecessor tree is the result of a breadth-first search.

These functions produce a predecessor tree.

Distance Matrix

A distance matrix contains the shortest distances between all pairs of vertices in a digraph.

Naming Conventions

  • s denotes a source vertex.
  • t denotes a target vertex.
  • u denotes a tail vertex or the first vertex in scope.
  • v denotes a head vertex or the second vertex in scope.
  • w denotes the weight of an arc.
  • x denotes a tail vertex or the third vertex in scope.
  • y denotes a head vertex or the fourth vertex in scope.

Project Goals

  • A flexible API for digraph operations
  • A comprehensive set of algorithms
  • Generators for common digraphs
  • Competitive performance
  • Complete documentation
  • Extensive property tests
  • Complete unit test coverage

Changelog

See CHANGELOG.md for a list of changes.

License

Licensed under Apache License, Version 2.0 or MIT license at your option.

Contact

Feel free to reach out with questions or suggestions.

Links