public class PropAtMostNValues_BC extends Propagator<IntVar>
aCause, ACTIVE, constraint, LOGGER, NEW, PASSIVE, priority, reactToFineEvt, REIFIED, solver, vars
Constructor and Description |
---|
PropAtMostNValues_BC(IntVar[] variables,
IntVar nValues)
The number of distinct values in vars is at most nValues
Performs Bound Consistency in O(n+d) with
n = |vars|
d = maxValue - minValue (from initial domains)
=> very appropriate when d <= n It is indeed much better than the usual time complexity of O(n.log(n))
=> not appropriate when d >> n (you should encode another data structure and a quick sort algorithm)
|
Modifier and Type | Method and Description |
---|---|
void |
duplicate(Solver solver,
gnu.trove.map.hash.THashMap<Object,Object> identitymap)
Duplicate the current propagator.
|
int |
getPropagationConditions(int vIdx)
Return the specific mask indicating the variable events on which this
Propagator object can react. |
ESat |
isEntailed()
Check wether
this is entailed according to the current state of its internal structure. |
void |
propagate(int evtmask)
Call the main filtering algorithm to apply to the
Domain of the Variable objects. |
addVariable, advise, arity, compareTo, contradiction, decNbPendingEvt, defineIn, dynPriority, flushPendingEvt, forcePropagate, getConstraint, getId, getNbPendingEvt, getNbVars, getPriority, getSolver, getVar, getVars, getVIndices, hashCode, incNbPendingEvt, isActive, isCompletelyInstantiated, isPassive, isReifiedAndSilent, isStateLess, propagate, reactToFineEvent, setActive, setPassive, setReifiedSilent, setReifiedTrue, setVIndices, toString, why
public PropAtMostNValues_BC(IntVar[] variables, IntVar nValues)
variables
- array of integer variablesnValues
- integer variablepublic void propagate(int evtmask) throws ContradictionException
Propagator
Domain
of the Variable
objects.
It considers the current state of this objects to remove some values from domains and/or instantiate some variables.
Calling this method is done from 2 (and only 2) steps:
propagate
in class Propagator<IntVar>
evtmask
- type of propagation event this
must consider.ContradictionException
- when a contradiction occurs, like domain wipe out or other incoherencies.public int getPropagationConditions(int vIdx)
Propagator
Propagator
object can react.getPropagationConditions
in class Propagator<IntVar>
vIdx
- index of the variable within the propagatorREMOVE
and/or INSTANTIATE
and/or DECUPP
and/or INCLOW
public ESat isEntailed()
Propagator
this
is entailed according to the current state of its internal structure.
At least, should check the satisfaction of this
(when all is instantiated).isEntailed
in class Propagator<IntVar>
public void duplicate(Solver solver, gnu.trove.map.hash.THashMap<Object,Object> identitymap)
Propagator
duplicate
in class Propagator<IntVar>
solver
- the target solveridentitymap
- a map to ensure uniqueness of objectsCopyright © 2015. All rights reserved.