17#ifndef SPLIT_STRATEGY_GUARD
18#define SPLIT_STRATEGY_GUARD
void nameFactoryRegister(NameFactory< AbstractProduct > &factory)
Registers the string returned by ConcreteProduct::getStaticName() to a function that default-construc...
Represents a monomial ideal with int exponents.
This class represents a slice, which is the central data structure of the Slice Algorithm.
A SplitStrategy is an implementation of a split selection strategy for the Slice Algorithm.
virtual size_t getLabelSplitVariable(const Slice &slice) const =0
Returns the variable to perform a label split on.
SplitStrategy & operator=(const SplitStrategy &)
virtual void getPivot(Term &pivot, Slice &slice, const TermGrader &grader) const =0
Sets pivot to the pivot of a pivot split on slice.
virtual bool isPivotSplit() const =0
If returns true, only call getPivot.
static auto_ptr< SplitStrategy > createStrategy(const string &prefix)
Returns the strategy whose name has the given prefix.
virtual bool isLabelSplit() const =0
If returns true, only call getLabelSplitVariable.
virtual void getPivot(Term &pivot, Slice &slice) const =0
Sets pivot to the pivot of a pivot split on slice.
virtual const char * getName() const =0
Returns the name of the strategy.
SplitStrategy(const SplitStrategy &)
bool operator==(const SplitStrategy &)
A TermGrader assigns a value, the degree, to each monomial.
Term represents a product of variables which does not include a coefficient.