Link Search Menu Expand Document
Specifications PyCSP3 Tools Instances Competitions About

Constraint MDD

The constraint mdd, see [CY08], [CY10] and [PR14], ensures that the sequence of values assigned to the variables it involves follows a path going from the root of the described MDD (Multi-valued Decision Diagram) to the unique terminal node.

mdd($X$,$M$) with $X=\langle x_1,x_2,\ldots,x_r \rangle$ and $M$ a MDD, iff $x_1 x_2 \ldots x_r \in L(M)$ where $L(M)$ denotes the language recognized by the MDD $M$.

Because the graph is directed, acyclic, with only one root node and only one terminal node, we just need to introduce transitions. The syntax for mdd is:


  <list> (intVar wspace)+ </list>
  <transitions> ("(" state "," intVal "," state ")")+ </transitions>

As an example, the constraint of scope $\langle x_1,x_2,x_3 \rangle$ is defined from the simple MDD depicted below (with root node r and terminal node t) as:


We obtain:


  <list> x1 x2 x3 </list>