public class Alldistinct extends Constraint implements UsesQueueVariable, Stateful, SatisfiedPresent
This implementation is based on Regin paper. It uses slightly modified Hopcroft-Karp algorithm to compute maximum matching. The value graph is analysed and Tarjan algorithm for finding strongly connected components is used. Maximum matching and Value Graph is stored as TimeStamp Mutable variables to minimize recomputation. Value graph is expensive in terms of memory usage. Use this constraint with care. One variable with domain 0..1000000 will make it use few MB already and kill the efficiency.
| Modifier and Type | Field and Description |
|---|---|
int |
consistencyChecks
It counts the number of executions of the consistency function.
|
int |
fullConsistencyPassesWithNarrowingEvent
It computes how many times did consistency execution has been
re-executed due to narrowing event at the end of the consistency
function.
|
IntVar[] |
list
It specifies all variables which have to have different values.
|
atomicExecution, consistencyPruningEvents, constraintScope, earlyTerminationOK, increaseWeight, numberId, scope, tracequeueIndex| Constructor and Description |
|---|
Alldistinct(IntVar[] list)
It constructs an alldistinct constraint.
|
Alldistinct(List<? extends IntVar> list)
It constructs an alldistinct constraint.
|
| Modifier and Type | Method and Description |
|---|---|
void |
consistency(Store store)
It is a (most probably incomplete) consistency function which removes the
values from variables domains.
|
int |
getDefaultConsistencyPruningEvent() |
Constraint |
getGuideConstraint()
It specifies a constraint which if imposed by search will enhance
propagation of this constraint.
|
int |
getGuideValue()
This function provides a value which if assigned to a variable returned
by getGuideVariable() will enhance propagation of this constraint.
|
Var |
getGuideVariable()
This function provides a variable which assigned a value returned
by will enhance propagation of this constraint.
|
void |
impose(Store store)
It imposes the constraint in a given store.
|
void |
queueVariable(int level,
Var var)
This is a function called to indicate which variable in a scope of
constraint has changed.
|
void |
removeLevel(int level)
This function is called in case of the backtrack, so a constraint can
clear the queue of changed variables which is no longer valid.
|
boolean |
satisfied()
It checks if the constraint is satisfied.
|
String |
toString()
It produces a string representation of a constraint state.
|
afc, arguments, cleanAfterFailure, decompose, getConsistencyPruningEvent, grounded, grounded, id, impose, imposeDecomposition, increaseWeight, intArrayToString, long2int, numberArgs, removeConstraint, requiresMonotonicity, setConsistencyPruningEvent, setConstraintScope, setScope, setScope, setScope, setScope, setScope, setWatchedVariableGrounded, supplyGuideFeedback, updateAFC, watchedVariableGroundedauxiliaryVariables, checkInput, checkInput, checkInputForDuplication, checkInputForDuplicationSkipSingletons, checkInputForNullness, checkInputForNullness, checkInputForNullness, derivative, getDubletonsSkipSingletons, imposeDecompositionclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitisStatefulpublic int consistencyChecks
public int fullConsistencyPassesWithNarrowingEvent
public IntVar[] list
public Alldistinct(IntVar[] list)
list - an array of variables.public void removeLevel(int level)
StatefulremoveLevel in interface Statefullevel - the level which is being removed.public void consistency(Store store)
Constraintconsistency in class Constraintstore - constraint store within which the constraint consistency is being checked.public int getDefaultConsistencyPruningEvent()
getDefaultConsistencyPruningEvent in class Constraintpublic void impose(Store store)
Constraintimpose in class Constraintstore - the constraint store to which the constraint is imposed to.public void queueVariable(int level,
Var var)
ConstraintqueueVariable in class Constraintlevel - the level of the store at which the change has occurred.var - variable which has changed.public boolean satisfied()
SatisfiedPresentImplementations of this interface for constraints that are not PrimitiveConstraint may require constraint imposition and consistency check as a requirement to work correctly.
satisfied in interface SatisfiedPresentpublic String toString()
ConstrainttoString in class Constraintpublic Constraint getGuideConstraint()
ConstraintgetGuideConstraint in class Constraintpublic int getGuideValue()
ConstraintgetGuideValue in class Constraintpublic Var getGuideVariable()
ConstraintgetGuideVariable in class ConstraintCopyright © 2022. All rights reserved.