\item Sous-ensemble de contraintes forment un arbre = filtrage fort. Dans le cas des horaires de travail, la structure en arbre donne des horaires valides. Il reste à valider les autres contraintes.
X_i = 1 &\Leftrightarrow Y_i=1 et Y_i \leq Y_{i+1}
\end{align}
\paragraph{Hypergraphes de contraintes}
Tuple $(V,E)$
\begin{itemize}
\item$V$: ensemble de noeuds: variables du problème
\item$E$: ensemble d'hyperarêtes: portées des contraintes
\item Décomposition de contrainte: arbre arithmétique
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[width=6cm]{ch5hypergraph}
\caption{Hypergraphe}
\label{fig:ch5hypergraphe}
\end{figure}
\subsection{Automate}
Tuple $(\Sigma,Q,q_0,F,T)$
\begin{itemize}
\item$\Sigma$ : alphabet
\item$Q$: Ensemble d'états
\item$q_0$: État initial
\item$F \subset Q$: États finaux
\item$T \subset Q \times\Sigma\times Q$: Un ensemble de transitions
\end{itemize}
Une séquence de caractères $c_1, \ldots, c_n$ est reconnue par l'automate si $\exists q_1, \ldots, q_n t.q. (q_{i-1},c_i,q_i)\in T \wedge q_n \in F$.
\paragraph{Contrainte \textsc{Regular}}
\begin{itemize}
\item Comprend une séquence de variable et un automate
\item Un algorithme peut appliquer la cohérence de domaine
\item Peut aussi être encodée avec une structure en forme d'arbre \ref{fig:arbreregular}
\end{itemize}
\paragraph{Encoder avec des contraintes}
\begin{figure}[H]
\centering
\includegraphics[width=14cm]{tableau_regular}
\caption{Structure d'arbre pour \textsc{Regular}}
\label{fig:arbreregular}
\end{figure}
\begin{itemize}
\item$dom(x_i)=\Sigma$
\item$n+1$ variables $Q_0,\ldots,Q_n$
\item\begin{itemize}
\item$dom(Q_0)=\lbrace q_o \rbrace$
\item$dom(Q_i)=Q, 0<i<n$
\item$dom(Q_n)=F$
\item$\textsc{Tableau}(Q_{i-1},X_i,Q_i)\in T$
\end{itemize}
\end{itemize}
\paragraph{Ordre lexicographique}
$X_1,\ldots,X_n$ est lexicographiquement plus petite ($\preceq$) que $Y_1,\ldots,Y_n$ si $\exists P t.q. X_P < Y_P \wedge X_i=Y_i \mid i < P$.
La contrainte lexicographique s'écrit
\begin{align}
C(X_i,Y_i,P) \Leftrightarrow (i < P \Rightarrow X_i = Y_i) \wedge (i=O \Rightarrow X_i < Y_i) \\
i \leq P \Rightarrow X_i \leq Y_i
\end{align}
\subsection{Largeur d'arbre}
\textbf{Largeur d'arbre}: permet de dire à quel point une structure est similaire à un arbre. Lorsque la largeur est bornée par une constante, le problème peut être résolu en temps polynomial.
\textbf{Décomposition en arbre}: graphe de contraintes $G \rightarrow$ arbre $T$ de la façon suivante: Si un noeud dans G se trouve à deux endroits dans T, il doit également se trouver sur tout le chemin reliant un endroit à l’autre. Minimiser le nombre de noeuds de $G$ par noeud de $T$.
\textbf{Largeur d'arbre}: Cardinalité du plus grand ensemble - 1
\paragraph{Largeur d'arbre bornée par $k$}
Chaque noeud devient un problème de résolution de contraintes. Une contrainte \textsc{Tableau} par arête de $T$ avec une colonne par noeud contenant les tuples de solution valides. On garde les lignes compatibles.
Cardinalité du plus grand domaine bornée par $d$: La complexité d'un sous-problème est $\mathcal{O}(d^{k+1})$. La contrainte tableau a au plus $d^{k+2}$ entrées. L'arbre aura au plus $n$ noeuds. Le problème est résolu en $\mathcal{O}(n)$