Implementation of exponential and parametrized algorithms in the AGAPE project
This technical report describes the implementation of exact and parametrized exponential algorithms, developed during the French ANR Agape during 2010-2012. The developed algorithms are distributed under the CeCILL license and have been written in Java using the Jung graph library.
đĄ Research Summary
The technical report documents the design, implementation, and distribution of a suite of exact and parameterized exponentialâtime algorithms developed within the French ANRâŻAgape project between 2010 and 2012. The authors set out to turn theoretical results on classic NPâhard graph problemsâsuch as Maximum Clique, Minimum Vertex Cover, Independent Set, Treewidth, Hamiltonian Path, and related parameterized versionsâinto a practical, reusable software library. Java was chosen as the implementation language because of its platform independence and mature ecosystem, and the Jung graph library was adopted to provide a flexible, objectâoriented representation of vertices, edges, and graph attributes. Jungâs modular design allowed the developers to focus on algorithmic logic while reusing existing data structures and basic graph operations.
The library is organized around two principal families of algorithms. The first family consists of traditional exact algorithms that guarantee optimal solutions but exhibit exponential worstâcase running times. For each problem, the authors selected stateâofâtheâart branching strategies, bitâmask dynamic programming, and branchâandâbound techniques. In the Maximum Clique implementation, for example, a coloringâbased upper bound is computed at each node of the search tree, and vertices are ordered by degree to improve pruning efficiency. The second family comprises parameterized algorithms whose complexity is expressed as f(k)¡n^O(1), where k is a problemâspecific parameter (treewidth, solution size, path length, etc.). The report explains how kernelization, boundedâtreewidth decomposition, and colorâcoding are translated into Java code. The treewidthâbounded algorithms first compute a tree decomposition, then perform a bottomâup dynamic programming pass on the decomposition tree, achieving linearâtime performance when the treewidth is small.
From a softwareâengineering perspective, the codebase emphasizes modularity and extensibility. All algorithms implement a generic GraphAlgorithm
The distribution is released under the CeCILL license, a French openâsource license compatible with GPL. This choice ensures that academic and industrial users can freely modify, redistribute, and integrate the code while preserving the same licensing terms. The released package contains the full source tree, Javadocâgenerated API documentation, a set of example programs demonstrating typical usage patterns, and a benchmark suite. The benchmark suite evaluates each algorithm on synthetic random graphs, realâworld network datasets, and graphs of varying densities. Results are presented as tables and plots that illustrate scaling behavior, memory footprints, and the impact of parameter values on runtime. These empirical data serve as a practical guide for users to select the most appropriate algorithm for a given instance.
The authors discuss several technical challenges encountered during development. Memory consumption is a primary concern for exponential algorithms because the state space can explode. To mitigate Javaâs garbageâcollection overhead, the implementation employs object pooling, compact bitâset representations, and careful avoidance of temporary object creation. Parallelism is another focus: a subset of the searchâbased algorithms is parallelized using Javaâs Fork/Join framework, allowing independent subâtrees of the search space to be explored concurrently on multiâcore processors. Experimental measurements show an average speedâup of around 30âŻ% on a 4âcore machine, with larger gains on more heavily branched instances.
Finally, the report outlines future work. The authors propose extending compatibility to other graph libraries such as JGraphT, developing an automatic parameterâestimation layer that selects the best parameterized algorithm without userâprovided k, and exploring GPU acceleration for dynamicâprogramming kernels. They also suggest integrating the library into larger combinatorial optimization frameworks and providing bindings for scripting languages (Python, R) to broaden accessibility. In summary, the AGAPE implementation delivers a wellâengineered, openly licensed collection of exact and parameterized exponential algorithms, bridging the gap between theoretical algorithmic research and practical software tools for graphâbased problem solving.