\section{Chapitre 1: Introduction} \label{sec:ch1} \subsection{NP-Complétude} \label{sec:ch1npc} \paragraph{Instance SAT} \begin{itemize} \item $x_i \in \lbrace 0,1 \rbrace$ \item Un \textbf{litéral}: $x_i$ ou $\neg x_i$ \item Une \textbf{clause} SAT = disjonction de litéraux \item Une \textbf{solution} satisfait l'ensemble des clauses de l'\textbf{instance} \item Si au moins une solution existe, l'instance est réalisable ou \textbf{satisfiable} \end{itemize} \paragraph{La classe NP} \begin{itemize} \item \textbf{Problème de décision}: La réponse est \textit{oui} ou \textit{non} \item \textbf{Certificat}: Donnée prouvant que la solution au problème de décision est \textit{oui} \item \textbf{Algorithme de vérification}: vérifie si une donnée est un certificat valide \item \textbf{Classe NP}: Ensemble des problèmes de décision qui admettent un algorithme de vérification en temps polynomial. \end{itemize} \subsection{Problèmes de satisfaction et d'optimisation avec contraintes} \label{sec:ch1propt} \paragraph{Satisfaction} \begin{itemize} \item Variables: $x_1, \ldots, x_n$ \item Domaine: $\mathtt{dom}(x_1), \ldots, \mathtt{dom}(x_n)$ \item Contraintes: $C_1, \ldots, C_m$ \end{itemize} \paragraph{Optimisation} \begin{itemize} \item Reprend les éléments du problème de satisfaction \item Ajoute une fonction objectif réelle à minimiser ou maximiser: $f(x_1, \ldots, x_n): \R$ \end{itemize} \subsection{Contraintes} \label{sec:ch1cont} \begin{itemize} \item \textbf{Contrainte}: condition imposée à un sous-ensemble de variables, appelé \textbf{portée}. \item \textbf{Arité}: nombre de variables dans la portée \end{itemize} \paragraph{Quelques contraintes} \begin{itemize} \item $\textsc{Ou}(x_1,x_2) \equiv x_1 \vee x_2$ \item $\textsc{Et}(x_1,x_2) \equiv x_1 \wedge x_2$ \item $\textsc{Addition}(a,b,c) \equiv a+b=c$ \item $\textsc{Soustraction}(a,b,c) \equiv a-b=c$ \item $\textsc{Multiplication}(a,b,c) \equiv ab=c$ \item $\textsc{Division}(a,b,c) \equiv \frac{a}{b}=c$ \item $\textsc{Tableau}(x_1,x_2,x_3,T)$ \item $\textsc{AllDifferent}(x_1, \ldots, x_n) \equiv x_1 \neq \ldots \neq x_n$ \item $\textsc{Croissant}(x_1,x_2) \equiv x_1 \leq x_2$ \item $\textsc{Décroissant}(x_1,x_2) \equiv x_1 \geq x_2$ \end{itemize} \subsection{Modélisation} \begin{enumerate} \item Utiliser les contraintes du solveur \item Concevoir un modèle: \begin{itemize} \item Variables \item Domaines \item Fonction objectif \item Contraintes \end{itemize} \item Soumettre un modèle au solveur \item Recevoir une solution \end{enumerate} \paragraph{Exemple} Problème du commis voyageur: Figure \ref{fig:ch1commis} \begin{figure}[ht] \centering \begin{tikzpicture} \Vertex[x=0,y=0]{A} \Vertex[x=4,y=0]{B} \Vertex[x=0,y=4]{C} \Vertex[x=4,y=4]{D} \Edge[label= $1$](A)(B) \Edge[label= $3$](A)(C) \Edge[label= $2$](B)(D) \Edge[label= $6$](C)(D) \tikzset{EdgeStyle/.append style = {bend left}} \Edge[label= $1$](A)(D) \tikzset{EdgeStyle/.append style = {bend right}} \Edge[label= $5$](B)(C) \end{tikzpicture} \caption{Exemple de problème du commis voyageur} \label{fig:ch1commis} \end{figure} \begin{align} \begin{aligned} \argmin_{d_0 \ldots d_3} & \left( d_0+ \ldots +d_3 \right) \\ \textrm{s.t.} &\\ &\mathtt{dom}(x_i) = \lbrace A,B,C,D \rbrace & \forall i \in {0,\ldots,3}\\ &\mathtt{dom}(d_i) = \lbrace 1,2,3,5,6 \rbrace & \forall i \in {0,\ldots,3}\\ &\textsc{Tableau}(x_i,x_{i+1 mod 4}, d_i, T) & \forall i \in {0,\ldots,3}\\ &x_i \neq x_j & 0 \leq i \leq j \leq 3 \end{aligned} \end{align} \paragraph{Caractéristiques d'un bon modèle} \begin{itemize} \item Taille d'un modèle: \begin{itemize} \item Nombre de variables \item Nombre de contraintes (une ligne dans un tableau = une contrainte) \item Cardinalité des domaines \end{itemize} \item Notation asymptotique $\mathcal{O}$ ou $\mathcal{\Theta}$ \item Taille polynomiale \end{itemize} \paragraph{Exemple} Problème du commis voyageur \begin{itemize} \item $2n$ variables \item $n^2+\frac{n^2(n+1)}{2} \in \mathcal{\Theta}(n^3)$ valeurs \item $n$ contraintes tableau $+\frac{n(n+1)}{2}$ différences $\in \Theta(n^2)$ \end{itemize} %%% Local Variables: %%% mode: latex %%% TeX-master: "notes_de_cours" %%% End: