public class GBAlgorithmBuilder<C extends GcdRingElem<C>> extends java.lang.Object implements java.io.Serializable
GroebnerBase
,
GBFactory
,
Serialized FormGroebnerBase
interface one can use the GBFactory
or this
GBAlgorithmBuilder
. This class will select and compose an
appropriate implementation based on the types of polynomial
coefficients C and the desired properties. To build an implementation
start with the static method polynomialRing()
to define
the polynomial ring. Then continue to construct the algorithm with the
methods
optimize()
or optimize(boolean)
for term
order (variable order) optimization (true for return of permuted
polynomials),normalPairlist()
(default),
syzygyPairlist()
or simplePairlist()
for
pair-list selection strategies,fractionFree()
for clearing denominators and
computing with pseudo reduction,graded()
for using the FGLM algorithm to first
compute a Gröbner base with respect to a graded term order and
then constructing a Gröbner base wrt. a lexicographical term
order,iterated()
for using the iterative GB algorithm to
compute a Gröbner base adding one polynomial after another,parallel()
additionaly compute a Gröbner base
over a field or integral domain in parallel,euclideanDomain()
for computing a e-Gröbner
base,domainAlgorithm(Algo)
for computing a d- or
e-Gröbner base,build()
to obtain an
implementaton of class GroebnerBaseAbstract
. For example
GenPolynomialRing<C> pf = new GenPolynomialRing<C>(cofac, vars); GroebnerBaseAbstract<C> engine; engine = GBAlgorithmBuilder.<C> polynomialRing(pf).fractionFree().parallel().optimize().build(); c = engine.GB(A);For example, if the coefficient type is BigRational, the usage looks like
GenPolynomialRing<BigRational> pf = new GenPolynomialRing<BigRational>(cofac, vars); GroebnerBaseAbstract<BigRational> engine; engine = GBAlgorithmBuilder.<BigRational> polynomialRing(pf).fractionFree().parallel().optimize().build(); c = engine.GB(A);Note: Not all combinations are meanigful
Modifier and Type | Field and Description |
---|---|
GenPolynomialRing<C> |
ring
The current polynomial ring.
|
PairList<C> |
strategy
Requested pairlist strategy.
|
Modifier | Constructor and Description |
---|---|
protected |
GBAlgorithmBuilder()
Constructor not for use.
|
|
GBAlgorithmBuilder(GenPolynomialRing<C> ring)
Constructor.
|
|
GBAlgorithmBuilder(GenPolynomialRing<C> ring,
GroebnerBaseAbstract<C> algo)
Constructor.
|
|
GBAlgorithmBuilder(GenPolynomialRing<C> ring,
GroebnerBaseAbstract<C> algo,
PairList<C> strategy)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
GroebnerBaseAbstract<C> |
build()
Build the GB algorithm implementaton.
|
GBAlgorithmBuilder<C> |
domainAlgorithm(GBFactory.Algo a)
Request d-, e- or i-GB algorithm.
|
GBAlgorithmBuilder<C> |
euclideanDomain()
Request e-GB algorithm.
|
GBAlgorithmBuilder<C> |
fractionFree()
Request fraction free algorithm.
|
GBAlgorithmBuilder<C> |
graded()
Request FGLM algorithm.
|
GBAlgorithmBuilder<C> |
iterated()
Request iterated GB algorithm.
|
GBAlgorithmBuilder<C> |
normalPairlist()
Select normal critical pair-list strategy.
|
GBAlgorithmBuilder<C> |
optimize()
Request term order optimization.
|
GBAlgorithmBuilder<C> |
optimize(boolean rP)
Request term order optimization.
|
GBAlgorithmBuilder<C> |
parallel()
Request parallel algorithm.
|
GBAlgorithmBuilder<C> |
parallel(int threads)
Request parallel algorithm.
|
static <C extends GcdRingElem<C>> |
polynomialRing(GenPolynomialRing<C> fac)
Define polynomial ring.
|
GBAlgorithmBuilder<C> |
simplePairlist()
Select simple critical pair-list strategy.
|
GBAlgorithmBuilder<C> |
syzygyPairlist()
Select syzygy critical pair-list strategy.
|
java.lang.String |
toScript()
Get a scripting compatible string representation.
|
java.lang.String |
toString()
String representation of the GB algorithm implementation.
|
public final GenPolynomialRing<C extends GcdRingElem<C>> ring
public final PairList<C extends GcdRingElem<C>> strategy
protected GBAlgorithmBuilder()
public GBAlgorithmBuilder(GenPolynomialRing<C> ring)
ring
- the polynomial ring.public GBAlgorithmBuilder(GenPolynomialRing<C> ring, GroebnerBaseAbstract<C> algo)
ring
- the polynomial ring.algo
- already determined algorithm.public GBAlgorithmBuilder(GenPolynomialRing<C> ring, GroebnerBaseAbstract<C> algo, PairList<C> strategy)
ring
- the polynomial ring.algo
- already determined algorithm.strategy
- pairlist strategy.public GroebnerBaseAbstract<C> build()
public static <C extends GcdRingElem<C>> GBAlgorithmBuilder<C> polynomialRing(GenPolynomialRing<C> fac)
fac
- the commutative polynomial ring.public GBAlgorithmBuilder<C> syzygyPairlist()
public GBAlgorithmBuilder<C> normalPairlist()
public GBAlgorithmBuilder<C> simplePairlist()
public GBAlgorithmBuilder<C> optimize()
public GBAlgorithmBuilder<C> optimize(boolean rP)
rP
- true for return of permuted polynomials, false for inverse
permuted polynomials and new GB computation.public GBAlgorithmBuilder<C> fractionFree()
public GBAlgorithmBuilder<C> euclideanDomain()
public GBAlgorithmBuilder<C> domainAlgorithm(GBFactory.Algo a)
a
- algorithm from GBFactory.Algo.public GBAlgorithmBuilder<C> parallel()
public GBAlgorithmBuilder<C> parallel(int threads)
threads
- number of threads requested.public GBAlgorithmBuilder<C> graded()
public GBAlgorithmBuilder<C> iterated()
public java.lang.String toString()
toString
in class java.lang.Object
Object.toString()
public java.lang.String toScript()
Element.toScript()