
alldifferent_matrix(+Matrix)

   Constrain the rows and columns of Matrix to be different values

Arguments
   Matrix              A two dimensional square matrix of Variables or integer

Type
   library(ic_global_gac)

Description

    This constraint is a matrix version of alldifferent. Matrix is a two
    dimensional square (NxN) matrix, and the constraint ensures that the 
    elements in each row and column of the matrix are different. The same
    value can occur in different rows and columns. It is logically 
    equivalent to imposing 2N alldifferent constraints, on each row and column,
    but it allows more reasoning because it consider the rows and columns 
    together. This version uses alldifferent from lib(ic_global_gac), but the 
    extra inferences performed between the rows and columns themselves may be not
    fully domain consistent. The maximum propagation occurs when the 
    variables' domains also have N values. 

    This is currently a prototype -- the constraint has not been tested
    very extensively and little effort has been spent to optimise performance.
    We welcome any feedback on using this constraint.

    This constraint is described in J.-C. Regin and C. Gomes,
    'The Cardinality Matrix Constraint', CP 2004.


See Also
   alldifferent / 1, fd_global : alldifferent_matrix / 1, ic_global : alldifferent_matrix / 1, fd_global_gac : alldifferent_matrix / 1
