\section{Chapitre 5: Structures traitables} \label{sec:ch5} \textbf{Structure traitable}: propriétés d'un problème qui garantissent une résolution en temps polynomial. \paragraph{Éviter un retour arrière} \begin{itemize} \item Heuristique qui ne fait que de bons choix \item Filtrage assez fort pour éliminer tous les mauvais choix \end{itemize} \subsection{Graphe de contraintes} \begin{itemize} \item Problème de satisfaction binaire \item Variable:noeud, Contrainte:arête \item \textbf{Arbre}: graphe acyclique \item \textbf{Arbre orienté}: possède une racine, chaque noeud a des enfants et un parent (sauf le noeud racine) \item Hauteur: \begin{itemize} \item feuille: 0 \item autres: maximum des hauteurs des enfants + 1 \end{itemize} \item Théorème: Arbre + Cohérence de domaine = Aucun retour arrière \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. \end{itemize} Modèle avec deux séquences de variables: \begin{align} \mathtt{dom}(X_i) &= \lbrace 0,1 \rbrace \forall X_1, \ldots, X_n\\ \mathtt{dom}(Y_i) &= \lbrace 0,1,2 \rbrace \forall Y_1, \ldots, Y_n\\ 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