![]() |
girgs
1.0.2
Generator for Geometric Inhomogeneous Random Graphs
|
This project contains an implementation of a linear-time sampling algorithm for geometric inhomogeneous random graphs (GIRG) with a special case implementation for hyperbolic random graphs (HRG). Details on the algorithms as well as the models can be found in our corresponding paper: Efficiently Generating Geometric Inhomogeneous and Hyperbolic Random Graphs (conference version, journal version).
We provide a C++ library and a command line client for each of the two generators.
The most recent version of the generators can be installed from our personal package archive (PPA link).
The libgirgs-all
package depends on all sub-packages:
libgirgs
libgirgs-cli
libgirgs-dev
libgirgs-dbg
If you installed libgirgs-cli
you can verify the install by running genhrg --version
. The result should look something like this.
A Win64 installer for each release can be downloaded from the release page. It features similar components as the ubuntu PPA. If a more recent version is desired, the project can be build and installed from source.
A packaged build is not available. Feel free to open a pull request. However, building from source should work just as detailed below. We will add osx to the travis builds as soon as their images have CMake >=3.12.
An integration into the NetworKit framework is planned.
To build the project from source you need
The optional development components use
The simplest way to build the project is
or for a debug build
The project can be installed globally with the install
target. Alternatively, there is the pack
target which generates a debian package that can be installed via aptitude or dpkg.
The project contains two CLI's: gengirg
and genhrg
. You can use --version
to determine the version of your respective generator.
The GIRG generator features the following input parameters.
The HRG generator features the following input parameters.
The library is based in the cmake-init project template. Detailed information on the build system design can be found there.
For the standard use case, we provide a buffered edge list generation supporting parallel execution in the headers hypergirgs/Generator.h
and girgs/Generator.h
.
Internally, the algorithm is templated with a callback that is called for each emitted edge. Using lambdas, a custom callback can be used as follows.
For details we refer to our example applications in source/examples/
or the CLI's in source/cli/
. Also, a deployed version of the documentation is available at weyand.dev/girgs.
To include girgs into your CMake project, it's as simple as this.
If you have girgs installed globally (e.g. via the Debian package), they are found automatically. If you want to link against a source build, then add the girgs repo to your CMAKE_PREFIX_PATH
or specify it directly when configuring the build. That is, in your repo do cmake -Dgirgs_DIR=~/repos/girgs/ -B build-debug
.