Module Gcc
module Gcc: sig
.. end
Global Cardinality Constraint
type
level =
val cstr : ?level:level -> Var.Fd.t array -> (Var.Fd.t * int) array -> Cstr.t
cstr (?level:High) vars distribution
returns a constraint ensuring
that for each pair (c,v)
of cardinal variable c
and integer
value v
in the list distribution
, c
variables in the array
vars
will be instantiated to v
, i.e. card {vi = v | vi in vars} = c
.
All values v
in distribution
must be different otherwise the exception
Invalid_argument
is raised. Three levels of propagation are provided :
Basic
is the quickest, High
performs the highest amount of propagation.
level
default value is High
.
The constraint posts the redundant constraint stating that the sum of the
cardinals is equal to the number of variables. This constraint is also
known as the "distribute" constraint.
Not reifiable.