Abstract: Extensional constraints are crucial in CP. They represent allowed combinations of values for a subset of variables (scope) using extensional representation forms such as tables (lists of tuples of constraint solutions) or MDDs (layered acyclic directed graphs where each path represents a constraint solution). Such extensional forms allow the modelization of virtually any kind of constraints. This type of constraint is among the first ones available in CP solvers. A lot of progress has been made since the design of its first propagator: supports, tabular reduction, bitwise computations, resets, table compression, and MDDs. The most recent algorithm prior to this thesis is \(\mathtt {Compact-Table}\). It uses a data structure called reversible sparse bitsets to speed up the computations. The work in this thesis initiates with \(\mathtt {Compact-Table}\), and extend it to handle other kinds of extensional representation. The first addressed representation is about compressed tables, i.e. tables containing tuples which contain single values and simple unary (\(*\), \(\not = v\), \(\le v\), \(\in S\), ...) or binary (\(=x+v\), \(\not =x+v\), \(\le x+v\), ...) restrictions. One such tuple represents several classical ones. This led to the \(\texttt{CT}^*\) (for short tables) and \(\texttt {CT}^{bs}\) (for basic smart tables) algorithms. The second addressed issue concerns negative tables, i.e. tables listing forbidden combinations of values. This results in the \(\texttt {CT}_{neg}\) (for negative tables) and \(\texttt{CT}_{neg}^*\) (for negative short tables) algorithms. The third and last adaptation addresses diagrams, i.e. layered graphs such as \(\texttt {MDDs}\). This led to the \(\texttt {CD}\) (for diagrams) and \(\texttt {CD}^{bs}\) (for basic smart diagrams) algorithms. Being able to use such diversity of representation helps to counterbalance the main drawback of classical table representations, which is their potentially exponential growth in size. Compressed tables, negative tables, and diagrams help reduce the memory consumption (storage size) required to store an equivalent representation.
Loading