34#ifndef __GECODE_SET_LDSB_HH__
35#define __GECODE_SET_LDSB_HH__
44namespace Gecode {
namespace Set {
namespace LDSB {
46 using namespace Int::LDSB;
56 template<
class View,
int n,
class Val,
unsigned int a,
57 class Filter,
class Print>
111 template<
class View0,
int n0,
class Val0,
unsigned int a0>
133namespace Gecode {
namespace Int {
namespace LDSB {
137 VariableSequenceSymmetryImp<Set::SetView>
struct Gecode::@603::NNF::@65::@66 b
For binary nodes (and, or, eqv)
int n
Number of negative literals for node type.
struct Gecode::@603::NNF::@65::@67 a
For atomic nodes.
Base-class for both propagators and branchers.
Choice for performing commit
Home class for posting propagators
Symmetry-breaking brancher with generic view and value selection.
int _nsyms
Number of symmetry implementations.
SymmetryImp< View > ** _syms
Array of symmetry implementations.
A Literal is a pair of variable index and value.
Implementation of a single symmetry.
Implementation of a value symmetry.
Symmetry-breaking brancher with generic view and value selection.
bool _stable
Is the state of the brancher "stable"?
int _nCopiedSyms
Number of copied symmetries.
int _prevPos
Position of previous variable that was branched on.
ValueSymmetryImp< View > ** _copiedSyms
Copy of value symmetries from the first node where the current variable was branched on.
virtual Actor * copy(Space &home)
Perform cloning.
virtual ExecStatus commit(Space &home, const Choice &c, unsigned int b)
Perform commit for choice c and alternative b.
IntSet _leftBranchValues
Set of values used on left branches for the current variable.
int _nNonValueSymmetries
Number of non-value symmetries.
void postldsbsetbrancher(Home home, ViewArray< View0 > &x, ViewSel< View0 > *vs[n0], ValSelCommitBase< View0, Val0 > *vsc, SymmetryImp< View0 > **syms, int nsyms, BranchFilter< typename View0::VarType > bf, VarValPrint< typename View0::VarType, Val0 > vvp)
Post LDSB brancher.
LDSBSetBrancher(Space &home, LDSBSetBrancher &b)
Constructor for cloning b.
void updatePart1(Space &home, int choicePos)
Part one of the update phase.
int _nValueSymmetries
Number of value symmetries.
static void post(Home home, ViewArray< View > &x, ViewSel< View > *vs[n], ValSelCommitBase< View, Val > *vsc, SymmetryImp< View > **_syms, int _nsyms, BranchFilter< Var > bf, VarValPrint< Var, Val > vvp)
Brancher post function.
LDSBSetBrancher(Home home, ViewArray< View > &x, ViewSel< View > *vs[n], ValSelCommitBase< View, Val > *vsc, SymmetryImp< View > **syms, int nsyms, BranchFilter< Var > bf, VarValPrint< Var, Val > vvp)
Constructor for creation.
virtual const Choice * choice(Space &home)
Return choice.
Base class for value selection and commit.
ViewArray< View > x
Views to branch on.
ViewSel< View > * vs[n]
View selection objects.
Abstract class for view selection.
ValSelCommitBase< View, Val > * vsc
Value selection and commit object.
Gecode toplevel namespace
std::function< void(const Space &home, const Brancher &b, unsigned int a, Var x, int i, const Val &m, std::ostream &o)> VarValPrint
Function type for printing variable and value selection.
Post propagator for SetVar x
std::function< bool(const Space &home, Var x, int i)> BranchFilter
Function type for branch filter functions.