Commit 38bff3f0 authored by Gaetan D's avatar Gaetan D

diapo retour intreo et 1

parent c3712eee
......@@ -3,8 +3,7 @@
\usecolortheme{whale}
\usecolortheme{orchid}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb}%for \mod, \bmod, ..
\usepackage{amsthm,amsfonts,mathrsfs,bbold}
\usepackage[full,small]{complexity}
......@@ -24,14 +23,14 @@
\newcommand{\Nat}{{\mathbb{N}}}
\newcommand{\eqv}{\Leftrightarrow}
\newcommand{\ds}{\vspace{0.5\baselineskip}}
\newcommand{\es}{\vspace{1\baselineskip}}
% Plan des sections et numéros des sections
%\AtBeginSubsection[]{
%\frame{
%\frametitle{Plan}
%\tableofcontents[currentsection,currentsubsection] }}
\AtBeginSection[]{
\frame{
\frametitle{Plan}
\tableofcontents[currentsection] }}
\setbeamertemplate{section in toc}[sections numbered]
\setbeamertemplate{subsection in toc}[subsections numbered]
% Titre
\title{\textbf{Optimisation Combinatoire \& Convexe} \\ Le problème du voyageur de commerce}
......@@ -41,82 +40,71 @@
\maketitle
\section{Introduction au problème}
\subsection{Le cas général}
\begin{frame}
\frametitle{Introduction au problème général}
\begin{block}{Définition}
Soit $G = \langle V, A, w \rangle$ un graphe complet
et $w$ une fonction de coût sur les arcs.
On cherche à calculer~:
\frametitle{Problème du voyageur de commerce (TSP)}
\begin{block}{Définition : TSP}
Soit $G = \langle V, E \rangle$ un graphe (complet)
et $w : V \rightarrow R_+ \cup\{+ \infty\}$ une fonction de coût des arêtes. On cherche à calculer~:
\[
\min \{ w(C) ~|~ C \textrm{ cycle hamiltonien de } G \}
\]
\end{block}
\begin{alertblock}{Symétrie}
\begin{description}
\item[Cas symétrique~:]
Le graphe $G$ est non-orienté, et donc $w(i,j) = w(j,i)$.
\item[Cas asymétrique~:]
Le graphe $G$ est non-orienté, et donc il faut faire
la distinction entre $w(i,j)$ et $w(j,i)$.
\end{description}
\end{alertblock}
\es
On considèrera $G$ non-orienté (problème symétrique).
\end{frame}
\begin{frame}
\frametitle{Propriétés générales du problème}
\begin{block}{Complexité}
Problème de décision associé \NP-complet.
\end{block}
\begin{alertblock}{Approximabilité}
Inapproximable à ratio constant, sauf si \P = \NP.
\end{alertblock}
\end{frame}
\subsection{Le cas euclidien}
\begin{frame}
\frametitle{Dans le cas euclidien ou métrique}
\url{https://fr.wikipedia.org/wiki/Algorithme_de_Christofides}
Le problème dans le cas métrique est APX-difficile, même avec des poids 1
ou 2, ce qui empêche l'existence d'un schéma d'approximation en temps
polynomial. Le facteur de 3/2 est en fait le meilleur facteur connu.
\end{frame}
\subsection{Intérêt pratique}
\begin{frame}
\frametitle{Applications}
\begin{itemize}
\item Logistique
\item Réseaux
\item Robotique \cite{brassai2012optimization}
\item Biologie (génétique)
\item Machine Learning~: prédiction des fonctions
des protéines \cite{Johnson2006}
\end{itemize}
\begin{alertblock}{Restricition}
On ne considère que des instances où la fonction de coût vérifie l'inégalité triangulaire.
\end{alertblock}
\begin{exampleblock}{Exemple}
Cas de la distance euclidienne dans le plan. Facilement représentable.
Mais le problème de décision associé reste \NP-complet.
\end{exampleblock}
\ds
Bonne nouvelle : le problème métrique est approximable, et même à ratio $123/122$ \cite{Karpinski, M., Lampis, M., & Schmied, R. (2015). New inapproximability bounds for TSP. Journal of Computer and System Sciences, 81(8), 1665-1677.}.
\end{frame}
\subsection{Banque de problèmes}
\begin{frame}
\frametitle{TSPLIB}
\begin{block}{TSPLIB95}
TSPLIB is a library of sample instances for the TSP (and related problems) from various sources and of various types.
TSPLIB une librairie d'instances de TSP avec entre $10$ et $10000$ sommets.
\end{block}
\begin{exampleblock}{Parsing}
Données sous forme de :
\begin{itemize}
\item Matrice
\item Euclidien
\item Distance GÉO
\item matrice explicite des coûts,
\item coordonnées des sommets dans le plan (distance euclidienne)
\item distance géodésique (lat, lon).
\end{itemize}
\end{exampleblock}
......@@ -128,44 +116,51 @@
\section{Approximation}
\subsection{La 2OPT}
\begin{frame}
\frametitle{L'algorithme 2OPT}
\frametitle{L'algorithme 2-OPT}
\begin{block}{Algorithme}
\begin{block}{Algorithme pour optimiser un tour}
Tant qu'on peut trouver deux arêtes
du tour $(v_1,v_2)$ et $(v_1', v_2')$ telles que
le tour en les remplaçant par $(v_1, v_2')$ et $(v_1',v_2)$
a une valeur inférieure, on effectue cette opération.
\end{block}
DESSIN
\begin{block}{Description équivalente}
On recherche un segment du tour
à renverser en raisonnant sur les
sommets.
\end{block}
\begin{alertblock}{Temps}
Temps très long, potentiellementp pas borné !!!
Néanmoins, cas euclidien avec quelques restrictions,
on peut se ramener à un truc bien
La complexité en temps dans le pire des cas est un problème ouvert.
Cependant elle est raisonnable en pratique.
\end{alertblock}
\end{frame}
\subsection{La 2 approximation}
\begin{frame}
Dans le cas de l'inégalité triangulaire. Calcul en temps $O(|G|^2)$.
\frametitle{Garantie d'approximation}
\begin{block}{2-approximation}
Basée sur un arbre couvrant de poids minimal. Complexité quadratique.
\end{block}
\begin{block}{1.5-approximation}
Algorithme de Christofides : arbre couvrant de poids min + couplage de poids minimum. Complexité cubique.
\end{block}
\ds
Et bien d'autres\dots
\end{frame}
\begin{frame}
\frametitle{Combinaison des deux approches}
\begin{exampleblock}{Exemple~: eil101 (629)}
\begin{exampleblock}{Exemple~: eil101 (valeur optimale : 629)}
\begin{figure}
\centering
\subfloat[2 Approximation seule (878)]{
\subfloat[2-approximation seule (878)]{
\includegraphics[width=4cm]{../images/00_APPROX_eil101_approx2.png}
}
\subfloat[Suivie de 2OPT (679)]{
......@@ -176,43 +171,34 @@
\end{exampleblock}
\end{frame}
\subsubsection{La 1.5 approximation}
\begin{frame}
\url{https://fr.wikipedia.org/wiki/Algorithme_de_Christofides}
\end{frame}
\subsection{L'algorithme glouton}
\subsubsection{Description}
\begin{frame}
\frametitle{Description de l'algorithme glouton}
\frametitle{Un algorithme glouton générique}
\begin{block}{Def}
On se donne un poids $w$ sur les arêtes (une préférence)
et on va utiliser ça pour fare des choses
vachement bien.
\begin{block}{Glouton générique}
On se donne un ordre sur les arêtes, et les ajoute de manière gloutonne jusqu'à obtenir un tour.
\end{block}
\begin{exampleblock}{Remarque}
Le choix du poids est important, et on peut
prendre la distance, ou bien le résultat
donné par un PL ... comme par hasard !
\begin{exampleblock}{Exemples}
\begin{itemize}
\item choix naturel : trier les arêtes en fonction de leur coût
\item on verra plus loin qu'on peut les trier en fonction de la solution d'un autre problème.
\end{itemize}
\end{exampleblock}
\end{frame}
\subsubsection{Avec des distances}
\begin{frame}
\frametitle{}
\begin{block}{coucou}
\frametitle{Un algorithme glouton générique}
\begin{block}{Exécution de l'algorithme}
\begin{figure}
\centering
\subfloat[Résultat partiel]{
\subfloat[Ajout d'arêtes formant des chemins]{
\includegraphics[width=5cm]{../images/00154_APPROX_kroA100_glouton.png}
}
\subfloat[Résultat final ]{
\subfloat[Résultat final : tour ]{
\includegraphics[width=5cm]{../images/00_APPROX_kroA100_glouton.png}
}
\caption{Algorithme glouton en utilisant les distances}
......@@ -221,51 +207,46 @@
\end{frame}
\section{Combinaison \& Comparaison}
\begin{frame}
\begin{exampleblock}{Exemple~: Berlin51, 51 points, optimum à 7542}
\begin{center}
\begin{tabular}{l|r}
\textbf{Algorithme} & \textbf{Borne Sup} \\ \hline
GLOUTON & 9951 \\
GLOUTON + 2OPT & 7657 \\
APPROX2 & 10114 \\
APPROX2 + 2OPT & 7755 \\ \hline
PL simple + GLOUTON & 7941 \\
PL full + GLOUTON & 7542
\end{tabular}
\end{center}
\end{exampleblock}
\end{frame}
\begin{frame}
\begin{exampleblock}{Exemple~: Berlin51, 51 points, optimum à 7542}
\begin{figure}
\centering
\subfloat[2-Approx]{
\includegraphics[width=3cm]{../images/00_APPROX_berlin52_approx2.png}
}
\subfloat[2-Approx + 2OPT]{
\includegraphics[width=3cm]{../images/00_APPROX_berlin52_approx2_2opt.png}
}
\subfloat[Glouton\label{fig:approx:berlin:glouton}]{
\includegraphics[width=3cm]{../images/00_APPROX_berlin52_glouton.png}
}
\subfloat[Glouton + 2OPT\label{fig:approx:berlin:glouton2opt}]{
\includegraphics[width=3cm]{../images/00_APPROX_berlin52_glouton_2opt.png}
}
\caption{Approximations sur Berlin51}\label{fig:approx:berlin}
\end{figure}
\frametitle{Comparaison des méthodes}
\begin{exampleblock}{Exemple~: berlin52 (52 points, valeur optimale à 7542)}
\begin{multicols}{2}
\raggedcolumns
\begin{center}
\includegraphics[width=4cm]{../images/00_APPROX_berlin52_approx2.png}
2-approximation (10114)
\ds
\includegraphics[width=4cm]{../images/00_APPROX_berlin52_glouton.png}
glouton (9951)
\end{center}
\columnbreak
\begin{center}
\includegraphics[width=4cm]{../images/00_APPROX_berlin52_approx2_2opt.png}
2-approx + 2-OPT (7755)
\ds
\includegraphics[width=4cm]{../images/00_APPROX_berlin52_glouton_2opt.png}
glouton + 2-OPT(7657)
\end{center}
\end{multicols}
\end{exampleblock}
\end{frame}
\subsection{Les plus proches voisins ?}
\section{Programme Linéaire}
\section{Problème linéaire et bornes inférieures}
\subsection{Présentation sous forme ILP}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment