public class GBAlgorithmBuilder<C extends GcdRingElem<C>> extends java.lang.Object implements java.io.Serializable
Usage: To create objects that implement the GroebnerBase
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,walk()
for using the Gröbner walk 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,F5()
, GGV()
and Arri()
for using
the respective iterative signature based GB algorithm (over field
coefficients) 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,
Finally call the method 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
GroebnerBase
,
GBFactory
,
Serialized FormModifier 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 |
---|---|
GBAlgorithmBuilder<C> |
Arri()
Request iterated Arri signature based GB algorithm.
|
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> |
F5()
Request iterated F5 signature based GB algorithm.
|
GBAlgorithmBuilder<C> |
fractionFree()
Request fraction free algorithm.
|
GBAlgorithmBuilder<C> |
GGV()
Request iterated GGV signature based GB 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.
|
GBAlgorithmBuilder<C> |
walk()
Request Groebner walk algorithm.
|
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> walk()
public GBAlgorithmBuilder<C> iterated()
public GBAlgorithmBuilder<C> F5()
public GBAlgorithmBuilder<C> GGV()
public GBAlgorithmBuilder<C> Arri()
public java.lang.String toString()
toString
in class java.lang.Object
Object.toString()
public java.lang.String toScript()
Element.toScript()