An abstract class storing the counterpart of each subconstraint + an index correspondence for variables
(between subconstraints and opposite subconstraints)
An abstract class encoding assignment graphs (matching each left vertex with one single right vertex)
We consider a flow in the graph by adding a source linked to all right vertices
and a sink linked to all left vertices
It is based on computing the strongly connected components of the residual graph,
then remove arcs connecting two different strongly connected components
Computing the strongly connected components is done by an algorithm
of Aho, Hopcroft, Ullman using depth first search (Cormen, Leiserson, p. 478, p. 489)
Note (EGA) on ice traduction from claire to java :
class StrongConnectionDecomposition have been included in this one
An abstract class storing the counterpart of each subconstraint + an index correspondence for variables
(between subconstraints and opposite subconstraints)
Standard alldiff constraint with generalized AC
integer valued variables are used only for the left vertex set
no explicit variables are used for the right vertex set
the right vertex set is the interval (minValue .. maxValue)
augment the matching along one alternating path
note: throughout the following code, we assume (1 <= x <= c.nbLeftVertices), (1 <= y <= c.nbRightVertices)
When the one and only variable of the constraint becomes instantiated
Need to check that the value of the variable is not the value forbidden by the constraint
The default implementation of propagation when a variable has been modified
consists in iterating all values that have been removed (the delta domain)
and propagate them one after another, incrementally.
The default implementation of propagation when a variable has been modified
consists in iterating all values that have been removed (the delta domain)
and propagate them one after another, incrementally.
the idx variable has been modified, awake the constraint
needs to be defined, otherwise the default awakeOnVar, calling propagate is called and thus the reference matching
is not updated before redoing the strongly connected components analysis.