diff --git a/chapitre6.tex b/chapitre6.tex index 31e8b1c..eb388ec 100644 --- a/chapitre6.tex +++ b/chapitre6.tex @@ -1,7 +1,129 @@ \section{Chapitre 6: Problèmes de satisfaction de contraintes} \label{sec:ch6} +\subsection{Définitions} +\label{sec:ch6def} +\begin{mydef} + Un problème de \textbf{satisfaction de contraintes} est défini par un ensemble de variables $X_1, \ldots, X_n$ et un ensemble de contraintes $C_1, \ldots, C_m$. Chaque variable possède un domaine. +\end{mydef} + +\begin{mydef} + Un \textbf{état} est une affectation de variable pour un sous-ensemble ou l'ensemble des variables. +\end{mydef} + +\begin{mydef} + Une \textbf{affectation consistante} respecte toutes les contraintes +\end{mydef} + +\begin{mydef} + Une \textbf{affectation complète} associe une valeur à toutes les variables +\end{mydef} + +\begin{mydef} + Une \textbf{solution} est une affectation complète et consistante +\end{mydef} + +\paragraph{Exemple: coloration de cartes} + +Dans ce cas, les contraintes sont présentées sous la forme d'inégalités entre les variables représentant la couleur de régions adjacentes de l'image. + +\subsection{Types de CSP} +\label{sec:ch6types} + +\begin{itemize} +\item Variables discrètes: + \begin{itemize} + \item Domaines finis ($n$ variables, Taille maximale $d$ du domaine, $O(d^n)$ affectations complètes possibles). Ex: Cryptarithmétique + \item Domaines infinis (Demande un langage de contraintes) + \end{itemize} +\item Variables continues (programmation linéaire, $O(n^{\alpha}), \alpha>1$) +\end{itemize} + +\subsection{Types de contraintes} +\label{sec:ch6typescontraintes} + +\begin{itemize} +\item Unaire: une seule variable +\item Binaire: deux variables. Un CSP avec seulement des contraintes binaires peut être représenté sous forme de graphe. +\item Ordre supérieur: plus de deux variables +\item Préférence (un coût est associé à chaque affectation) +\end{itemize} + +\subsection{Recherche} +\label{sec:ch6recherche} + +Formulation de la recherche standard: +\begin{itemize} +\item États: valeurs assignées jusqu'à maintenant +\item État initial: $\emptyset$ +\item Fonction de successeurs: affecter une valeur à une variable non affectée sans créer de conflit +\item Test de but: Affectation complète. Apparait à la profondeur $n$. +\end{itemize} + +Propriétés: +\begin{itemize} +\item Assignation des variables est commutative +\item Une seule assignation par noeud +\item Algorithme de profondeur d'abord ou algorithme itératif. Exploration avec retours arrières, lorsqu'il n'y a plus d'affectations possibles. +\end{itemize} + +Améliorations à la recherche +\begin{itemize} +\item Ordre des variables: + \begin{itemize} + \item Nombre minimum de valeurs restantes (Minimum Remaining Values) + \item Degré: Variable présente dans le plus de contraintes. Réduit le facteur de branchement $b$. + \item Valeurs les moins contraignantes. Enlève le moins de choix pour les variables possibles. + \end{itemize} +\item Vérification avant. Pour une assignation à $X$, enlever les valeurs du domaine de $Y$ reliée à $X$ non cohérentes. Ne détecte pas tous les problèmes +\item Cohérence des arcs: un arc entre $X$ et $Y$ est cohérent si pour toutes les valeurs de $X$, il y a une valeur possible de $Y$. Peut être exécuté comme prétraitement ou après chaque assignation. +\end{itemize} + +\paragraph{Algorithme de cohérence des arcs AC-3} + +\begin{function} + +\end{function} + +\subsection{Contraintes spécifiques} +\label{sec:ch6specifiques} + +Certains types de contraintes ont des algorithmes spécifiques. + +\paragraph{AllDifferent} + +\begin{itemize} +\item Enlever les valeurs avec une seule valeur dans leur domaine et enlever cette valeur des autres domaines. +\item Continuer tant qu'il y a des domaines avec une seule valeur +\item Si un domaine vide est produit, alors une incohérence est détectée +\end{itemize} + +\subsection{Recherche locale} +\label{sec:ch6rechlocale} + +\begin{itemize} +\item On assigne une valeur à chacune des variables. +\item La fonction successeur change la valeur d'une variable à la fois +\item Heuristiques: + \begin{itemize} + \item Minimum de conflits: choisir la valeur qui donne le moins de conflits. Ex: Problème des 8 reines + \end{itemize} +\end{itemize} + +\subsection{Structure des problèmes} +\label{sec:ch6structure} + +\begin{itemize} +\item La structure du graphe des contraintes permet d'identifier des sous-problèmes + \begin{itemize} + \item Les composantes connexes sont des sous-problèmes indépendants ($O(\frac{nd^c}{c})=O(n)$) + \item Absence de cycles: tri topologique, Noeud comme racine, les parents précèdent toujours. Appliquer la cohérence des arcs de $j=n,\ldots,2$ et affecter $X_j$ de $1,\ldots,n$. ($O(nd^2)$) + \item Proche d'un arbre: on fixe certaines valeurs pour obtenir un arbre. + \item Décomposition en un arbre de sous-problèmes: chaque variable et chaque contrainte est dans un sous-problème. Une variable apparait sur tous les chemins entre deux sous-problèmes. ($O(nd^y)$ où $y$ est la grandeur du plus grand sous-problème) + \end{itemize} + +\end{itemize} %%% Local Variables: %%% mode: latex