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

Implements a modified primal algorithm for enumerating Hilbert bases. More...

#include <enumerate/hilbertprimal.h>

Static Public Member Functions

template<class RayClass , class RayIterator , class OutputIterator >
static void enumerateHilbertBasis (OutputIterator results, const RayIterator &raysBegin, const RayIterator &raysEnd, const EnumConstraints *constraints, ProgressTracker *tracker=0)
 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 primal algorithm for enumerating Hilbert bases.

This incorporates the primal algorithm described in "Normaliz: Algorithms for affine monoids and rational cones", Winfried Bruns and Bogdan Ichim, J. Algebra 324 (2010), 1098-1113, and has been modified to allow for additional constraints (such as the quadrilateral constraints from normal surface theory).

To summarise: the algorithm first enumerates extremal rays of the rational cone, and then decomposes the admissible region of the cone (where the extra constraints are satisfied) into maximal admissible faces. It calls Normaliz directly to enumerate the Hilbert basis for each maximal admissible faces, and finally combines these into a basis for the entire space.

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

Python:\n Not present.

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

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