Algorithmique avancée#
M1 Informatique pour la Science des Données, Université Paris-Saclay, Faculté d’Orsay
«L’objectif de ce cours est de fournir des outils et techniques algorithmiques de pointe aux apprentis. Étude de l’algorithmique sur les graphes (plus courts chemins, tri topologique, …), les techniques de mémorisation, de programmation dynamique et de backtracking. Présentation de la notion de flots et des algorithmes de calcul de flot maximal. Enfin, les thèmes des algorithmes online et approchés seront abordés.»
Enseignants#
Vue d’ensemble#
Les notions du cours seront abordées par la pratique, tout d’abord par l’implantation de structures de données de graphes, puis leur utilisation pour résoudre quatre problèmes.
Structures de données pour les graphes#
Problème 1: Le chemin le plus rapide en métro de Montgallet à Billancourt ?#

Problème 2: Rush Hour#
La voiture rouge est coincée dans un embouteillage; comment déplacer les véhicules pour la faire sortir? Ci-dessous le défi 1. Saurez-vous faire résoudre par l’ordinateur le défi 40 en un nombre minimum du coups?

Problème 3: Faire passer le maximum de courant#

Problème 4: Fabriquer et résoudre des labyrinthes#

Planning#
3 semaines avec 3h + 3h: Cours + TD + TP intégré
Graphes: structures de données, terminologie, plus courts chemins (Nicolas)#
2022-03-22 jeu. 10:00-12:30, 14:00-15:00
2022-03-23 ven. 13:30-17:00
Réseaux et flots (Viviane)#
2023-03-30 jeu. 09:00-13:00
2023-03-31 ven. 13:30-17:00
2023-04-06 jeu. 09:00-13:00
Arbres couvrants (Florent)#
2022-05-16 mar. 13:30-16:45
2022-05-23 mar. 13:30-16:45
Modalités d’évaluation (à mettre à jour)#
L’évaluation se fera sur les rendus de TP (CC), ainsi que sur un examen (ET1 / ET2)
Session 1 : 1/3 CC + 2/3 ET1
Session 2 : 1/3 CC + 2/3 ET2
Annales#
Environnement de travail#
Language de programmation: Python 3
Environnement interactif: Jupyter + networkx + matplotlib + …
Dans cette section, nous expliquons:
Comment accéder aux logiciels requis
Comment télécharger et déposer vos devoirs
Les instructions font l’hypothèse que vous travaillerez pour ce cours
dans votre répertoire ~/M1-ISD/AlgorithmiqueAvancee
. Vous pouvez
choisir un autre nom.
Utilisation des logiciels en ligne#
L’université Paris-Saclay mets à votre disposition un service JupyterHub@Paris-Saclay sur lequel sont installés tous les logiciels requis. Vous pouvez vous identifier avec vos identifiants usuels de l’université (Adonis).
Il est aussi possible d’utiliser un des nombreux services Jupyter en
ligne tels CoCalc; ce dernier ne gère pas bqplot
cependant.
Alternativement, vous pouvez installer les logiciels sur votre machine et travailler en local.
Installation de l’environnement de travail#
Ce cours utilise Python, Jupyter et quelques bibliothèques classiques (voir le fichier environment.yml), ainsi que quelques paquets Python plus ou moins maison.
Avec miniconda (ou micromamba, …)#
Si vous ne l’avez pas déjà, installez le gestionnaire d’environnements conda. Nous recommandons l’utilisation de l’installateur Mambaforge. Voir son guide d’installation.
Si vous ne l’avez pas déjà, installez mamba (plus rapide que conda; fourni directement par mambaforge) :
conda install -c conda-forge mamba
Si vous ne l’avez pas déjà fait, téléchargez la salle de TP virtuelle :
git clone https://gitlab.dsi.universite-paris-saclay.fr/M1InfoISDAlgorithmiqueAvancee/ComputerLab.git ~/M1-ISD/AlgorithmiqueAvancee
Installez les logiciels requis :
cd ~/M1-ISD/AlgorithmiqueAvancee mamba env create conda activate algo-avancee ./postBuild
Par la suite, lorsque vous souhaiterez lancer Jupyter, vous utiliserez :
conda activate algo-avancee jupyter lab
Il peut arriver que la liste des logiciels soit mise à jour en cours de semestre. Dans ce cas, depuis le terminal ouvert sur le même dossier, tapez :
conda env update conda activate algo-avancee ./postBuild
Avec pip#
Si vous ne l’avez pas déjà fait, téléchargez la salle de TP virtuelle :
git clone https://gitlab.dsi.universite-paris-saclay.fr/M1InfoISDAlgorithmiqueAvancee/ComputerLab.git ~/M1-ISD/AlgorithmiqueAvancee
Assurez vous que vous avez toutes les bibliothèques requises (voir le fichier environment.yml.
Installez les paquets Python «maison»:
cd ~/M1-ISD/AlgorithmiqueAvancee pip install . ./postBuild
Avec Docker#
Une image docker du cours est fournie dans le Container Registry du projet Gitlab du cours. Voici son identifiant:
gitlab.dsi.universite-paris-saclay.fr:5005/m1infoisdalgorithmiqueavancee/computerlab/image:latest
Téléchargement et dépôt des TPs#
Les sujets sont donnés sous forme de dépôt git sur https://gitlab.dsi.universite-paris-saclay.fr . Vous utiliserez git pour le télécharger et le déposer sous la forme d’une divergence privée (fork). La correction se fera en partie automatiquement par intégration continue. Il y a un script pour automatiser le processus.
Mise en place la première fois#
Activation compte GitLab Paris-Saclay#
Connectez vous à https://gitlab.dsi.universite-paris-saclay.fr
Cliquez sur le boutton Sign-In en haut à droite pour vous authentifier avec vos identifiants de l’université (Adonis). Ils sont de la forme
Prenom.Nom
.
Téléchargement de la «salle de TP virtuelle»#
Si vous ne l’avez pas déjà fait :
git clone https://gitlab.dsi.universite-paris-saclay.fr/M1InfoISDAlgorithmiqueAvancee/ComputerLab.git ~/M1-ISD/AlgorithmiqueAvancee
Note : nous supposerons dans la documentation ci-dessous que vous avez
utilisé le nom de répertoire ~/M1-ISD/AlgorithmiqueAvancee/
. Vous
pouvez en utiliser un autre en adaptant les instructions.
Téléchargement et dépôt des TPs avec travo#
L’environnement de cours fournit un script qui automatise le téléchargement et le dépôt de votre travail. Consultez sa documentation avec:
cd ~/M1-ISD/AlgorithmiqueAvancee
./course.py
Voir ci-dessous sur ce que cela fait, et comment faire pareil à la main, si vous le souhaitez.
Travail sur le TP#
Ouvrez les feuilles Jupyter et suivez les instructions dans les
feuilles successives README.md
, 00-*.md
, 01-*.md
, … ainsi que
Rapport.md
.
Dépôt de votre travail#
Consultez la documentation comme ci-dessus!
Vous pouvez déposer votre travail aussi souvent que vous le souhaitez. Seule la dernière version disponible au moment de la correction sera prise en compte.
Consultation des résultats des tests automatiques#
Vous pouvez consulter les résultats des tests automatiques en navigant sur votre «fork» du dépôt:
https://gitlab.dsi.universite-paris-saclay.fr/prenom.nom/<TP>
puis barre de menu de gauche -> CI
-> Pipelines
-> Badge failed
ou passed
-> test
. Le badge devrait être à passed
dans tous les
cas. Vous pouvez alors consulter les feuilles de travail corrigées en
ouvrant feedback/<...>.html
dans les artefacts (Browse
). Le
navigateur vous donnera une alerte de certificat que vous pouvez – à
titre exceptionnel – ignorer.
Alternative: téléchargement et dépôt des TPs à la main#
Ouvrez le dépôt git de la séance du jour dans votre navigateur:
https://gitlab.dsi.universite-paris-saclay.fr/M1InfoISDAlgorithmiqueAvancee/2020-2021/
Par exemple:
Faites une copie personnelle du dépôt avec le bouton
Fork
Permettre aux enseignants d’accéder à votre dépôt: ajouter Viviane Pons, Florent Hivert et Nicolas Thiéry comme membres du projet, avec rôle «Mainteneurs» (
Settings
->Members
).Bonus:
Renommer le dépôt obtenu pour ajouter un préfixe précisant le cours
Basculez la visibilité de votre dépôt en privé (
Settings
->General
->Permissions
).
Copiez l’adresse du dépôt (à droite du bouton
Fork
); elle devrait être de la formehttps://gitlab.dsi.universite-paris-saclay.fr/<prenom.nom>/<TP>
Téléchargez votre copie personnelle:
Dans le terminal:
cd ~/M1-ISD/AlgorithmiqueAvancee git clone https://...
où https://… est l’adresse que vous avez copiée.
Configurer git#
Lancez les commandes suivantes dans le terminal après y avoir mis respectivement votre mail et votre nom:
git config --global user.email "prenom.nom@universite-paris-saclay.fr"
git config --global user.name "Prénom Nom"
Dépôt de votre travail#
Pour déposer votre travail:
git commit -m "Travail" .
git push
Cela vous demandera vos identifiants et login Adonis.