36 template<
class VX,
class VY,
class VZ>
48 template<
class VX,
class VY,
class VZ>
57 template<
class VX,
class VY,
class VZ>
63 template<
class VX,
class VY,
class VZ>
71 template<
class VX,
class VY,
class VZ>
83 template<
class VX,
class VY,
class VZ>
104 template<
class VX,
class VY,
class VZ>
110 template<
class VX,
class VY,
class VZ>
121 template<
class VX,
class VY,
class VZ>
124 const VY&
y,
const VZ&
z) {
127 for (
int i=0; i<
x.size(); i++)
virtual size_t dispose(Space &home)
Delete actor and return its size.
Home class for posting propagators
void notice(Actor &a, ActorProperty p, bool duplicate=false)
Notice actor property.
int atleast(void) const
How many views are at least equal.
ViewArray< VX > x
Views still to count.
void count(Space &home)
Count how many views are equal now.
virtual void reschedule(Space &home)
Schedule function.
VZ z
View which yields result of counting.
virtual size_t dispose(Space &home)
Delete propagator and return its size.
int atmost(void) const
How many views are at most equal.
int c
Number of views which are equal and have been eliminated.
virtual PropCost cost(const Space &home, const ModEventDelta &med) const
Cost function (defined as low linear)
ViewBase(Space &home, ViewBase &p)
Constructor for cloning p.
static bool sharing(const ViewArray< VX > &x, const VY &y, const VZ &z)
Test whether there is sharing of z with x or y.
static PropCost linear(PropCost::Mod m, unsigned int n)
Linear complexity for modifier pcm and size measure n.
Propagator(Home home)
Constructor for posting.
void ignore(Actor &a, ActorProperty p, bool duplicate=false)
Ignore actor property.
int ModEventDelta
Modification event deltas.
@ AP_DISPOSE
Actor must always be disposed.
void cancel(Space &home, Propagator &p, VY y)
Cancel propagator p for view y.
void update(VY &y, Space &home, bool shared, VY py)
Update view y from py.
bool isintset(VY y)
Return whether y is an integer set.
void subscribe(Space &home, Propagator &p, VY y)
Subscribe propagator p to view y.
void reschedule(Space &home, Propagator &p, VY y)
Schedule propagator p for view y.
bool shared(const IntSet &, VX)
RelTest holds(VX x, VX y)
Test whether x and y are equal.
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
const Gecode::PropCond PC_INT_DOM
Propagate when domain changes.
@ RT_TRUE
Relation does hold.
@ RT_MAYBE
Relation may hold or not.
@ RT_FALSE
Relation does not hold.
Gecode toplevel namespace
#define GECODE_NEVER
Assert that this command is never executed.