regina::HilbertCD Class Reference
Vertex Enumeration

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:

- enumerate/hilbertcd.h

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