A very simple library to handle networks. The library...
- ...is written in modern C++11.
- ...stands in a single header (network.hh) so it can be installed with a simple copy/paste.
- ...uses the STL's map to store vertices. The internal structure relies on adjecency trees (or 'forest' as per M. Newman. Networks, 2010). It offers faster access to edges than adjacency lists (O(log N) vs O(N)) but is not as space efficient. Overall, it's more flexible than an adjacency list but is arguably inferior for very large networks.
- ...uses a template so any object can be used for vertices.
Todo list before version 1 (at which point development will move to the dev branch):
- Write tests and examples!
- Documentation for all methods.
- Overload operators to add/remove vertices and edges (+=, -=).
- Input GraphML file.
- Implement basic algorithms.
- Write generators for basic networks (random, random geometric, etc...).
ANSI C++11, tested with gcc 4.7 and clang++ 3.1 on Linux x86_64.