C++ Reference: class AllDifferentBoundsPropagator

Note: This documentation is automatically generated.

Implements the all different bound consistent propagator with explanation. That is, given n affine expressions that must take different values, this propagates the bounds of each expression as much as possible. The key is to detect the so called Hall interval which are interval of size k that contains the domain of k expressinos. Because all the variables must take different values, we can deduce that the domain of the other variables cannot contains such Hall interval.

We use a "fast" O(n log n) algorithm.

TODO(user): It might be difficult to find something faster than what is implemented here. Some related reference: https://cs.uwaterloo.ca/~vanbeek/Publications/ijcai03_TR.pdf
Method
AllDifferentBoundsPropagator

Arguments: const std::vector<AffineExpression>& expressions, IntegerTrail* integer_trail

Propagate

Return type: bool

RegisterWith

Return type: void

Arguments: GenericLiteralWatcher* watcher