Commit 1fb6021e authored by Simon de Givry's avatar Simon de Givry
Browse files

update 2020

parent 71e3734b
No preview for this file type
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% How to compile this file %%%%
%%%
......@@ -166,7 +167,7 @@
\begin{block}{}
\begin{enumerate}
\item exercices sur des problèmes de gestion du traffic aérien
\item travaux pratiques en python (networkX, librairie de graphes) et utilisation des solveurs concorde, LKH, gecode, glpsol, toulbar2.
\item travaux pratiques en python (networkX, librairie de graphes) et utilisation des solveurs concorde, LKH, gecode/or-tools, glpsol, toulbar2.
\end{enumerate}
\end{block}
}
......@@ -455,7 +456,7 @@ Isomorphisme de sous-graphe: NP-difficile.
\end{defin}
Circuit: chemin qui boucle. Détails sur élémentaire.
%%Question: tous les sommets sont de degre 2 au plus dans le sous-graphe partiel defini par le chemin
\end{frame}
%----------------------------------------------------------------
\begin{frame}{\bf Graphe connexe}
......@@ -541,15 +542,21 @@ Soit $G=(S,A)$ un graphe de $n\geq 2$ sommets.
de la racine à tout autre sommet.
\item À partir d'un arbre~: choisir une racine. Vocabulaire: n{\oe}uds,
fils, descendants, ascendants\ldots
fils, descendants, ascendants, profondeur, niveau, hauteur\ldots %% distance de l'unique chemin de la racine à x %% tous les sommets à une meme profondeur %% distance à une feuille
\end{itemize}
\end{defin}
\uncover<3>{\begin{defin}[Arborescence ordonnée]
Une arborescence est ordonnée si les ensemble des fils de chaque
sommet sont ordonnés.
Une arborescence est ordonnée si l'ensemble des fils de chaque
sommet est ordonné (par exemple de gauche à droite) \\
Exemple d'une arborescence binaire complète. %% dessiner une arborescence binaire complete (deux fils ou rien) = arbre de recherche!
\end{defin}}
%% Question:
%%% nombre de sommets d'une arborescence binaire complete est impair
%%% nombre de sommets d'une arborescence binaire complete parfaite : 2**(h+1)-1 sommets
%%% démonstration par récurrence: ajout h+1 en partant du haut, on coupe et obtient deux arborescences de hauteur h.
\end{frame}
%----------------------------------------------------------------
\begin{frame}{\bf Une arborescence}
......@@ -768,7 +775,7 @@ minimum entre toute paire de sommets (plus courts chemins).
\end{frame}
% ----------------------------------------------------------------
\begin{frame}{\bf Appliqué aux graphes}
\begin{frame}{\bf Appliqué aux graphes quelconques}
\begin{block}{}
Arborescence DFS: à la découverte d'un sommet $s$, les fils de ce
sommet dans l'arborescence sont les sommets accessibles depuis $s$
......@@ -842,7 +849,7 @@ minimum entre toute paire de sommets (plus courts chemins).
\end{frame}
%----------------------------------------------------------------
\begin{frame}{\bf Les arcs}
Et les couleurs du sommet $v$ à sa première rencontre.
Entre parenthèses les couleurs du sommet $v$ à sa première rencontre.
\begin{itemize}
\item \textbf{arcs d'arbre (blanc)}~: ceux qui sont suivis par \DFS. Un arc
......@@ -858,7 +865,7 @@ parcours DFS.
\end{frame}
%----------------------------------------------------------------
\shrink{
%%\shrink{
\begin{frame}{\bf Exemple~: le tri topologique}
\begin{block}{}
Un tri topologique d'un Graphe Orienté Sans Circuit (GOSC) $G$
......@@ -895,7 +902,7 @@ parcours DFS.
\end{frame}
}
%%}
%----------------------------------------------------------------
\begin{frame}{\bf Largeur d'abord}
......@@ -964,7 +971,7 @@ Plus courts chemins depuis $s$ identifiés (une arête = 1).
\begin{definition}
Étant donné un graphe (orienté), avec une pondération des arcs $w$,
on définit le poids d'un chemin $c=\langle v_0,\ldots,v_k\rangle$
on définit le poids $w(c)$ d'un chemin $c=\langle v_0,\ldots,v_k\rangle$
comme la somme des poids des arcs qui le constituent.
\end{definition}
......@@ -1014,7 +1021,7 @@ Plus courts chemins depuis $s$ identifiés (une arête = 1).
court chemin $\ell_i$ de Toulouse aux villes $i$ reliées directement à
Lille et de choisir d'aller vers la ville $i^*$ qui minimise la
somme $\ell_i+w(i,\textrm{Lille})$.
%% Lens à Lille
\end{frame}
%----------------------------------------------------------------
\begin{frame}{\bf Arborescence des PCC}
......@@ -1022,7 +1029,7 @@ Plus courts chemins depuis $s$ identifiés (une arête = 1).
\begin{defin}[Arborescence des PCC de racine $s$]
Un sous-graphe orienté $G' = (S', A')$, où $S'\subseteq S$ et $A'\subseteq A$~:
\begin{enumerate}
\item $S'$ est l’ensemble des sommets accessibles à partir de $s$ dans $G$,
\item $S'$ l’ensemble des sommets accessibles à partir de $s$ dans $G$,
\item $G'$ forme une arborescence de racine $s$,
\item pour tout $v \in S'$, le chemin de $s$ à $v$ dans $G'$ est un
plus court chemin de $s$ vers $v$ dans $G$.
......@@ -1057,7 +1064,7 @@ $s$ à $u$.
\begin{algorithm}[H]
{Amélioration éventuelle de l'estimation de la distance de $s$ à
$v$.}\;
$v$.}
\Procedure{\Relax{$u,v,w$}}{
\Si{$d[v] > d[u] + w(u,v)$}
{
......@@ -1299,8 +1306,27 @@ d[u]$
\end{itemize}
\end{frame}
}
%----------------------------------------------------------------
\shrink{
\begin{frame}{\bf $A^*$}
Single source single destination $s$--$t$
\begin{itemize}
\item A refinement of Dijkstra's algorithm
\item Dijkstra picks node $n$ with minimum $g(n)$ -- cost to reach $n$
\item In $A^*$ we use an \emph{admissible} heuristic $h(n)$ which
\emph{under}estimates distance from $n$ to target $t$
\item The next node we expand is the one that minimizes $g(n)+h(n)$
\item Examples of $h(n)$:
\begin{itemize}
\item Minimum edge weight %% sur exemple precedent, on trouve chemin de s a v plus rapidement
\item Euclidean distance
\end{itemize}
\end{itemize}
\end{frame}
%----------------------------------------------------------------
%%\shrink{
\begin{frame}{\bf Bellman-Kalaba}
Adapté aux graphes orientés sans circuit (DAG). Poids de signes
......@@ -1323,7 +1349,7 @@ d[u]$
\InitSSSP{$G,s$}\;
\PourCh{sommet $u$ de $G$ pris dans l'ordre du tri topologique}
{
\PourCh{sommet $v\in \mathit{Adj}[u]$}
\PourCh{sommet $v\in \mathit{Succ}[u]$}
{
\Relax{$u,v,w$}\;
}
......@@ -1356,37 +1382,20 @@ Omniprésent: Algorithme de Viterbi, de Needleman et Wunsch\ldots\\
Poids de signes quelconques~: plus long chemin soluble en temps pol.
\end{frame}
}
%----------------------------------------------------------------
\begin{frame}{\bf $A^*$}
Single source single destination $s$--$t$
\begin{itemize}
\item A refinement of Dijkstra's algorithm
\item Dijkstra picks node $n$ with minimum $g(n)$ -- cost to reach $n$
\item In $A^*$ we use an \emph{admissible} heuristic $h(n)$ which
\emph{under}estimates distance from $n$ to target $t$
\item The next node we expand is the one that minimizes $g(n)+h(n)$
\item Examples of $h(n)$:
\begin{itemize}
\item Minimum edge weight
\item Euclidean distance
\end{itemize}
\end{itemize}
\end{frame}
%%}
%----------------------------------------------------------------
\shrink{
\begin{frame}{\bf Ordonnancement simple}
%%\shrink{
\begin{frame}{\bf Ordonnancement simple}
Pour rénover une maison, il est prévu de
Pour rénover un aéroport, il est prévu de
\begin{itemize}
\item refaire l'installation électrique (3 jours)
\item réaménager (5 jours) la salle de bains
\item de carreler (2 jours) la salle de bains
\item de refaire le parquet de la salle de séjour (6 jours)
\item de repeindre les chambres (3 jours).
\item réaménager (5 jours) les toilettes
\item de carreler (2 jours) les toilettes
\item de refaire le parquet de la salle de repos (6 jours)
\item de repeindre le hall (3 jours).
\end{itemize}
La peinture et le carrelage ne pourront être faits qu'après la
......@@ -1437,7 +1446,7 @@ peinture & 3 & 4 & 1\\
\end{center}
\end{frame}
}
%%}
% ----------------------------------------------------------------
\shrink{
\begin{frame}{\bf Exemples d'utilisation de ces algorithmes}
......@@ -1868,11 +1877,13 @@ Distances moyennes à la borne inférieure fournie par Held-Karp
\begin{frame}{\bf Logiciels, lectures}
\begin{block}{Concorde}
Branch-and-bound \\
\url{http://www.math.uwaterloo.ca/tsp/concorde.html}
\url{http://www.math.uwaterloo.ca/tsp/concorde.html}~\\
\url{https://qmha.wordpress.com/2016/09/14/installing-concorde-tsp-solver-on-windows-guide}
\end{block}
\begin{block}{LKH}
Recherche locale \\
\url{http://webhotel4.ruc.dk/~keld/research/LKH/}
\url{http://akira.ruc.dk/~keld/research/LKH}~\\
\url{http://akira.ruc.dk/~keld/research/LKH-3}
\end{block}
\begin{block}{Livre}
\begin{minipage}{0.79\textwidth}
......@@ -2339,7 +2350,7 @@ Extensions possibles~: couplages pondérés, graphes quelconques
\includegraphics[width=0.8\textwidth]{alldifferent}\\[4mm]
{Couplage couvrant l'ensemble des variables et r\'esultat du filtrage.}\\~\\
Contrainte {\em AllDifferent} implémentée dans les outils de programmation par contraintes ({\em gecode}, {\em choco}, {\em toulbar2}).
Contrainte {\em AllDifferent} implémentée dans les outils de programmation par contraintes ({\em gecode}, {\em choco}, {\em or-tools}, {\em toulbar2}).
\end{center}
\end{frame}
......@@ -2371,6 +2382,29 @@ $\implies$ complexité $O(|A|^2)$\\[3mm]
Possibilité d'améliorer la complexité en $O(|A|)$ (Régin, 1994).
\end{frame}
%----------------------------------------------------------------
\begin{frame}{\bf Logiciels, lectures}
\begin{block}{Langages de programmation par contraintes}
Minizinc \url{https://www.minizinc.org}\\
XCSP3 \url{http://xcsp.org}
\end{block}
\begin{block}{Solvers CP-SAT}
Google OR-tools C++/python/.NET\\
\url{https://developers.google.com/optimization}\\
{\small Choco Java \url{https://choco-solver.org}}
\end{block}
\begin{block}{Livre}
\begin{minipage}{0.79\textwidth}
Francesca Rossi, Peter van Beek, Toby Walsh. {\em Handbook of Constraint Programming.} Elsevier, 2006.
\end{minipage}
\begin{minipage}{0.19\textwidth}
\begin{center}
\includegraphics[width=0.9\textwidth]{RossiBeekWalsh2006}
\end{center}
\end{minipage}
\end{block}
\end{frame}
\fi % utilisation du couplage pour le filtrage des domaines
%----------------------------------------------------------------
......@@ -2500,6 +2534,26 @@ $DSAT(v)$: nombre de couleurs différentes utilisées par ses voisins
\end{frame}
\fi
%----------------------------------------------------------------
\begin{frame}{\bf Logiciels, lectures}
\begin{block}{Outils de résolution du problème de coloration de graphe}
Fastcolor \\
\url{http://lcs.ios.ac.cn/~caisw/Code/FastColor.zip}
NetworkX \\
\url{https://networkx.github.io}
\end{block}
\begin{block}{Article}
\begin{minipage}{0.79\textwidth}
Emmanuel H\'ebrard, George Katsirelos. {\em A Hybrid Approach for Exact Coloring of Massive Graphs.} CPAIOR'2019, Thessaloniki, Greece.
\end{minipage}
\begin{minipage}{0.19\textwidth}
\begin{center}
\includegraphics[width=0.9\textwidth]{RossiBeekWalsh2006}
\end{center}
\end{minipage}
\end{block}
\end{frame}
% ----------------------------------------------------------------
% ----------------------------------------------------------------
% FOURTH COURSE
......
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