Package edu.jas.gb

Class CriticalPairList<C extends RingElem<C>>

java.lang.Object
edu.jas.gb.OrderedPairlist<C>
edu.jas.gb.CriticalPairList<C>
All Implemented Interfaces:
PairList<C>, Serializable

public class CriticalPairList<C extends RingElem<C>> extends OrderedPairlist<C>
Critical pair list management. Makes some effort to produce the same sequence of critical pairs as in the sequential case, when used in parallel. However already reduced pairs are not re-reduced if new polynomials appear. Implemented using GenPolynomial, SortedSet / TreeSet and BitSet.
See Also:
  • Field Details

    • pairlist

      protected final SortedSet<CriticalPair<C extends RingElem<C>>> pairlist
    • recordCount

      protected int recordCount
    • logger

      private static final org.apache.logging.log4j.Logger logger
  • Constructor Details

    • CriticalPairList

      public CriticalPairList()
      Constructor for CriticalPairList.
    • CriticalPairList

      public CriticalPairList(GenPolynomialRing<C> r)
      Constructor for CriticalPairList.
      Parameters:
      r - polynomial factory.
    • CriticalPairList

      public CriticalPairList(int m, GenPolynomialRing<C> r)
      Constructor for CriticalPairList.
      Parameters:
      m - number of module variables.
      r - polynomial factory.
  • Method Details

    • create

      public PairList<C> create(GenPolynomialRing<C> r)
      Create a new PairList.
      Specified by:
      create in interface PairList<C extends RingElem<C>>
      Overrides:
      create in class OrderedPairlist<C extends RingElem<C>>
      Parameters:
      r - polynomial ring.
    • create

      public PairList<C> create(int m, GenPolynomialRing<C> r)
      Create a new PairList.
      Specified by:
      create in interface PairList<C extends RingElem<C>>
      Overrides:
      create in class OrderedPairlist<C extends RingElem<C>>
      Parameters:
      m - number of module variables.
      r - polynomial ring.
    • put

      public int put(GenPolynomial<C> p)
      Put a polynomial to the pairlist and reduction matrix.
      Specified by:
      put in interface PairList<C extends RingElem<C>>
      Overrides:
      put in class OrderedPairlist<C extends RingElem<C>>
      Parameters:
      p - polynomial.
      Returns:
      the index of the added polynomial.
    • hasNext

      public boolean hasNext()
      Test if there is possibly a pair in the list.
      Specified by:
      hasNext in interface PairList<C extends RingElem<C>>
      Overrides:
      hasNext in class OrderedPairlist<C extends RingElem<C>>
      Returns:
      true if a next pair could exist, otherwise false.
    • removeNext

      public Pair<C> removeNext()
      Get and remove the next required pair from the pairlist. Apply the criterions 3 and 4 to see if the S-polynomial is required. The pair is not removed from the pair list.
      Specified by:
      removeNext in interface PairList<C extends RingElem<C>>
      Overrides:
      removeNext in class OrderedPairlist<C extends RingElem<C>>
      Returns:
      the next pair if one exists, otherwise null.
    • getNext

      public CriticalPair<C> getNext()
      Get the next required pair from the pairlist. Apply the criterions 3 and 4 to see if the S-polynomial is required. The pair is not removed from the pair list.
      Returns:
      the next pair if one exists, otherwise null.
    • record

      public int record(CriticalPair<C> pair, GenPolynomial<C> p)
      Record reduced polynomial.
      Parameters:
      pair - the corresponding critical pair.
      p - polynomial.
      Returns:
      index of recorded polynomial, or -1 if not added.
    • update

      public int update(CriticalPair<C> pair, GenPolynomial<C> p)
      Record reduced polynomial and update critical pair list. Note: it is better to use record and uptate separately.
      Parameters:
      pair - the corresponding critical pair.
      p - polynomial.
      Returns:
      index of recorded polynomial
    • update

      public int update()
      Update pairlist. Preserve the sequential pair sequence. Remove pairs with completed reductions.
      Returns:
      the number of added polynomials.
    • inWork

      public List<CriticalPair<C>> inWork()
      In work pairs. List pairs which are currently reduced.
      Returns:
      list of critical pairs which are in reduction.
    • updateMany

      public int updateMany()
      Update pairlist, several pairs at once. This version does not preserve the sequential pair sequence. Remove pairs with completed reductions.
      Returns:
      the number of added polynomials.
    • putOne

      public int putOne()
      Put the ONE-Polynomial to the pairlist.
      Specified by:
      putOne in interface PairList<C extends RingElem<C>>
      Overrides:
      putOne in class OrderedPairlist<C extends RingElem<C>>
      Returns:
      the index of the last polynomial.