Regina Calculation Engine
Classes | Static Public Member Functions | List of all members
regina::HilbertCD Class Reference

Implements a modified Contejean-Devie algorithm for enumerating Hilbert bases. More...

#include <enumerate/hilbertcd.h>

Static Public Member Functions

template<class RayClass , class OutputIterator >
static void enumerateHilbertBasis (OutputIterator results, const MatrixInt &subspace, const EnumConstraints *constraints)
 Determines the Hilbert basis that generates all integer points in the intersection of the n-dimensional non-negative orthant with some linear subspace. More...
 

Detailed Description

Implements a modified Contejean-Devie algorithm for enumerating Hilbert bases.

This is based on the stack-based algorithm described in "An efficient incremental algorithm for solving systems of linear Diophantine equations", Inform. and Comput. 113 (1994), 143-172, and has been modified to allow for additional constraints (such as the quadrilateral constraints from normal surface theory).

All routines of interest within this class are static; no object of this class should ever be created.

Warning
For normal surface theory, the Contejean-Devie algorithm is extremely slow, even when modified to incorporate admissibility constraints. Consider using the much faster HilbertPrimal or HilbertDual instead.
Python
Not present.

The documentation for this class was generated from the following file:

Copyright © 1999-2021, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@maths.uq.edu.au).