What's this?

Algora is a modular algorithms library written in C++.

The design principle was to have data structures and algorithms that are

  1. extensible,
  2. intuitive to work with,
  3. as efficient as possible.

Algora currently consists of three ‘‘pillars’’:

  • Algora|Core: The core library. Provides data structures for directed graphs, support for sub- and supergraphs, property maps to attribute a graph’s vertices and arcs, as well as some basic graph algorithms and routines to read and write graphs.

  • Algora|Dyn: A library especially for dynamic graph algorithms. Contains support for dynamic weighted and unweighted graphs, i.e., graphs that undergo a series of updates (e.g. vertex/arc insertions/deletions or weight changes). In addition, it currently features implementations of various fully dynamic reachability algorithms.

  • Algora|LO: A library containing algorithms for the Linear Ordering Problem and the Feedback Arc Set Problem. Contains data structures and a collection of both heuristic and exact algorithms to find a linear ordering of the graph’s vertices with as few as possible contradicting arcs (a.k.a. the Linear Ordering Problem), which is algorithmically equivalent to finding a smallest possible subset of arcs whose removal makes the graph acyclic (a.k.a. the Feedback Arc Set Problem).

News

Publications

Algora has been used in the following publications:

How to get

Algora is free software and licensed under the GNU General Public License version 3.

It is developed semi-publicly on Gitlab and Github.

Docs

Algora|Core comes with a Doxyfile and a simple code example (see examples/). Further documentation and examples are on the TODO list…

Contributors

  • Kathrin Hanauer (maintainer)
  • Qi Cheng Hua