127 lines
4.4 KiB
TeX
127 lines
4.4 KiB
TeX
|
||
\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:
|