\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: