
\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<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)$






%%% Local Variables:
%%% mode: latex
%%% TeX-master: "notes_de_cours"
%%% End:
