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:\n Not present.

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

Copyright © 1999-2020, 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).