40#ifndef __GECODE_INT_DISTINCT_HH__
41#define __GECODE_INT_DISTINCT_HH__
75 virtual void solndistrib(
Space& home, Propagator::SendMarginal send)
const;
77 virtual void domainsizesum(Propagator::InDecision in,
78 unsigned int&
size,
unsigned int& size_b)
const;
101 Propagator::SendMarginal send);
105 unsigned int& size,
unsigned int& size_b);
121 template<
class View,
bool complete>
169 virtual void solndistrib(
Space& home, Propagator::SendMarginal send)
const;
171 virtual void domainsizesum(Propagator::InDecision in,
172 unsigned int&
size,
unsigned int& size_b)
const;
295 virtual void solndistrib(
Space& home, Propagator::SendMarginal send)
const;
297 virtual void domainsizesum(Propagator::InDecision in,
298 unsigned int&
size,
unsigned int& size_b)
const;
BinaryPropagator(Space &home, BinaryPropagator &p)
Home class for posting propagators
int max_x
Maximum (approximation) of view in x.
static ExecStatus post(Home home, ViewArray< View > &x)
Post propagator for view array x.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual void reschedule(Space &home)
Schedule function.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
ViewArray< View > y
Views on which to perform value-propagation (subset of x)
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Bnd(Home home, ViewArray< View > &x)
Constructor for posting.
virtual size_t dispose(Space &home)
Destructor.
ViewArray< View > x
Views on which to perform bounds-propagation.
int min_x
Minimum (approximation) of view in x.
Propagation controller for domain consistent distinct.
ExecStatus init(Space &home, ViewArray< View > &x)
Initialize view-value graph for views x.
ExecStatus propagate(Space &home, bool &assigned)
Perform propagation, assigned is true if a view gets assigned.
bool available(void)
Check whether a view-value graph is available.
ExecStatus sync(void)
Synchronize available view-value graph.
Graph< View > g
Propagation is performed on a view-value graph.
DomCtrl(void)
Initialize with non-initialized view-value graph.
static ExecStatus post(Home home, ViewArray< View > &x)
Post propagator for views x.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function.
Dom(Space &home, Dom< View > &p)
Constructor for cloning p.
DomCtrl< View > dc
Propagation controller.
EqIte(Space &home, EqIte &p)
Constructor for cloning p.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as high ternary)
static ExecStatus post(Home home, IntView x0, IntView x1, int c0, int c1)
Post if-then-else propagator.
int c0
The integer constant.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
View-value graph for propagation.
Graph(void)
Construct graph as not yet initialized.
bool mark(void)
Mark edges in graph, return true if pruning is at all possible.
bool sync(void)
Synchronize graph with new view domains.
ExecStatus init(Space &home, ViewArray< View > &x)
Initialize graph.
ExecStatus prune(Space &home, bool &assigned)
Prune unmarked edges, assigned is true if a view got assigned.
TerDom(Space &home, TerDom< View > &p)
Constructor for cloning p.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, View x0, View x1, View x2)
Post propagator for views x.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual Actor * copy(Space &home)
Copy propagator during cloning.
virtual ExecStatus propagate(Space &home, const ModEventDelta &med)
Perform propagation.
static ExecStatus post(Home home, ViewArray< View > &x)
Post propagator for view array x.
Val(Home home, ViewArray< View > &x)
Constructor for posting.
Integer view for integer variables.
View-value graph base class.
unsigned int count
Marking counter.
ViewNode< View > ** view
Array of view nodes.
bool match(ViewNodeStack &m, ViewNode< View > *x)
Find a matching for node x.
int n_view
Number of view nodes.
int n_val
Number of value nodes.
void scc(void)
Compute the strongly connected components.
ValNode< View > * val
Array of value nodes.
NaryPropagator(Space &home, NaryPropagator &p)
size_t size
The size of the propagator (used during subsumption)
ModEventDelta med
A set of modification events (used during propagation)
Propagator(Home home)
Constructor for posting.
TernaryPropagator(Space &home, TernaryPropagator &p)
#define GECODE_INT_EXPORT
int ModEventDelta
Modification event deltas.
ExecStatus prop_bnd(Space &home, ViewArray< View > &x, int &min_x, int &max_x)
Perform bounds consistent distinct propagation.
ExecStatus prop_val(Space &home, ViewArray< View > &)
Eliminate singletons by naive value propagation.
const Gecode::PropCond PC_INT_VAL
Propagate when a view becomes assigned (single value)
const Gecode::PropCond PC_INT_DOM
Propagate when domain changes.
Gecode toplevel namespace
Post propagator for SetVar x