Utilisation de l'aléatoire en algorithmique

2014-15

Archives

2015

Objectifs du cours

Il y a plusieurs manière d'utiliser l'aléatoire en informatique. On peut étudier le comportement d'un processus informatique (programme, protocole, automate, …) face à un modèle aléatoire, ou encore construire des générateurs d'instances aléatoires (séquences, arbres, graphes, …) à des fins applicatives. Une autre approche, celle de ce cours, considère l'aléatoire comme une nouvelle ressource permettant de résoudre plus efficacement certains problèmes. Par exemple, on ne sait pas générer un nombre premier sans tirer au sort, ou encore la congestion dans les réseaux ne peut pas être évitée sans un protocole de routage en partie aléatoire.

De manière contre-intuitive, prendre des décisions au hasard permet de concevoir des algorithmes plus simples et souvent plus efficaces que leurs analogues déterministes. Les domaines et les applications sont vastes. Ce cours fournit une présentation accessible à la plupart de ces derniers et de leurs idées centrales. Chacune de ces idées sera présentée à travers des exemples simples et motivés.

Nous commencerons par acquérir un certain nombre de méthodes et outils à travers des problèmes fondamentaux de l'informatique, incluant le test de primalité, la résolution de problèmes SAT, l'algorithmique de graphe ou encore certains problèmes algébriques. Puis nous étudierons les algorithmes de streaming, où l'utilisation de l'aléatoire est cruciale afin de réduire l'espace mémoire de ces algorithmes qui manipulent des données de taille gigantesque. L'étude en complexité de ces algorithmes est liée au modèle de la complexité de la communication. Ce modèle a de multiples applications, comme dans l'optimisation des circuits imprimés. L'utilisation de l'aléatoire permet aussi de revisiter et d'enchérir la notion de preuve, comme nous le verrons lors de l'étude des preuves interactives probabilistes. Enfin, l'étape ultime consiste à remplacer l'utilisation de phénomènes probabilistes par l'utilisation de phénomènes quantiques. Sans connaissance a priori de la physique quantique, il est possible d'aborder cette dernière sous le regard neuf de l'informatique. Cette interprétation des paradoxes quantiques a donné lieu à des protocoles cryptographiques et à des algorithmes, n'ayant aucun analogue probabiliste.

Ce cours ne nécessite aucun prérequis particulier. En revanche, un minimum de connaissances algorithmiques (principalement) et de probabilités discrètes (secondairement) peuvent aider. Tous les outils probabilistes ainsi que les notions (élémentaires) de physique quantique nécessaires seront introduits durant le cours.

Ce cours est complémentaire des cours Conception et analyse des algorithmes et Randomization in Computer Science: Games, Networks, Epidemic and Evolutionary Algorithms, mais peut être suivi indépendamment.

Contenu du cours

Les domaines abordés seront :

  • Classes de complexité probabilistes
  • Techniques d'amplification d'erreur
  • Principe de hâchage
  • Marches aléatoires en algorithmique
  • Méthodes de dérandomisation
  • Algorithmes de streaming
  • Complexité de la communication
  • Preuves interactives
  • Ouverture sur l'informatique quantique

Enseignant

Déroulement du cours

Le cours se déroulera les lundis de 13h30 à 17h15, à partir du lundi 15 septembre.
Le cours est donné au tableau. Les notes de cours sont rédigées par les élèves, à partir de celles des années précédentes, et font partie de l'évaluation du cours.

Structure du cours

Le cours sera proche de celui donné en 2013-14.
Les archives de 2013-14 sont consultables.

  1. 15/09 Algorithmes Monte carlo, premiers exemples, outils probabilistes : Cours1, PC1
  2. 22/09 Théorème de Schwartz-Zippel et applications : Cours-PC2
  3. 29/09 Algorithmes Las Vegas, marches aléatoires : Cours-PC3
  4. 06/10 Algorithmes d'approximation, dérandomization : Cours4, PC4
  5. 13/10 Algorithmes de streaming 1 : compteurs probabilistes, utilisation de fonctions de hashage universelles : Cours5, PC5
  6. 03/11 Algorithmes de streaming 2 : couplage maximal, pattern matching, vérification de langages : Cours6, PC6
  7. 10/11 Complexité de la communication, théorie de l'information, et applications : Cours-PC7
  8. 17/11 Introduction à l'information quantique, distribution quantique de clés, téléportation et superdense coding : Transparents des deux dernières séances
  9. 24/11 Algorithmes quantiques : premiers exemples et principes de la factorisation

Elèves du cours

  1. Coelho Lechner Carlos
  2. De Freitas Smaira Lucas
  3. Groueix Thibault
  4. Hollender Alexandros
  5. Lévy Daniel
  6. L'Hostis Gurvan
  7. Marival Hugo
  8. Orsini Emmanuel
  9. Sanselme Marc
  10. Soncco Huarsaya Daniel Chen

Evaluation

L'évaluation portera sur un travail personnel et un examen écrit le lundi 1er décembre.
Le travail personnel consistera à rédiger des notes de cours de manière seule ou partagée.
Au début de chaque cours, un élève ou binôme sera désigné pour la rédaction des notes de ce cours.
La participation est obligatoire.

Notes de cours

Les notes de cours seront rédigées en LaTeX avec le package scribe.sty (adapté du script de Jeff Erickson).
Consulter le modèle exemple.tex.

Répartition :

  1. Cours : Gurvan L’Hostis - PC : Thibault Groueix
  2. Cours-PC : Coelho Lechner Carlos
  3. Cours-PC : De Freitas Smaira Lucas
  4. Cours : Lévy Daniel - PC : Sanselme Marc
  5. Cours : Hollender Alexandros - PC : Orsini Emmanuel
  6. Cours : Valentin Geffrier - PC : Thibault Groueix
  7. Cours-PC : Samuel Guerin
Page last modified on October 20, 2014, at 08:54 PM
PmWiki