ALGO1 : Introduction à l'algorithmique

Magistère informatique et télécommunications - Magistère de Mathématiques de Rennes - ENS Cachan Antenne de Bretagne - Année 2012/2013

Intervenants

Cours : François Schwarzentruber
Travaux dirigés : Arnaud Jobin et Philippe Rannou
DM (pour les élèves du département mathématiques) : énoncé
Projet (pour les MIT1) : énoncé + sources
11 septembre 2012 Premières notions
Transparents introduction à l'algorithmique
Magnets à imprimer

Transparents cours
1) Spécifications et terminaison (tri insertion)
2) Complexité en temps
3) Algorithme récursif (tri fusion)
4) Algorithme optimal
5) Conclusion
 18 septembre 2012 1. Diviser pour régner
Démonstration comparaison tri insertion et tri fusion sur un tableau quelconque
Démonstration comparaison tri insertion et tri fusion sur un tableau presque trié
Transparents qui accompagnent le cours
1) Théorème fondamental
2) Application en calcul : multiplication de nombres
3) Application en traitement du signal : FFT
4) Application en géométrie : 2 points les plus proches
25 septembre 2012 2. Types abstraits et structures de données
Transparents
1) Types abstraits
a) Piles (ex : fonction annuler/refaire, pile d'appel, etc.)
b) Files (ex : gestionnaire d'impression)
c) Ensembles
2) Implémentations
a) Tableaux, tableaux triés, tableaux de booléens
b) Listes
3) Tables de hachages
a) Description
b) Résultats positifs
c) Résultats négatifs
Exemple de fonctions de hachage
4) Etendre une structure de données (coupler deux structures de données, ajout de champs supplémentaires)

3. La puissance des arbres
A) Prélude : une démonstration de la puissance
1) Du tri rapide aux arbres binaires
2) Définition des arbres binaires
2 octobre 2012 B) Au service du type abstrait "Ensemble"
Transparents arbres binaires de recherche
1) Définition
2) Opération de recherche
3) Ajout d'un élément
4) Suppression d'un élément
III) Arbre binaire de recherche équilibré (Adelson-Velsky-Landis)
Fiche rotations
1) Définition et propriété
2) Ajout d'un élément et rééquilibrage avec rotations
Transparents sur les nombres d'équilibrages
Un seul rééquilibrage
3) Suppression
Plusieurs rééquilibrages

9 octobre 2012 C) Au service du type abstrait "File de priorité"
Transparents tri par tas
I) Besoins : le type abstrait la file de priorité
II) Implémentations
a) Implémentations naïves
b) Tas
c) Implémentation en place du tas
d) Implémentation des opérations
III) Tri par tas
Exercice de cours

D) Au service du type abstrait "Relation d'équivalence" (union-find)
Transparents union-find
I) Besoins : générer un labyrinthe
II) Implémentation naïve
III) Implémentation en forêt d'arbres

16 octobre 2012 4. Parcours de graphes
I) Graphe
1) Définitions
2) Structure de données
Transparents sur les applications des graphes
Labyrinthe en parcours en largeur
Labyrinthe en parcours en profondeur
II) Parcours en profondeur
Transparents pour le parcours en profondeur
1) Algorithme générique
a) Définition
b) Classification des arcs
c) Lemme utile : le lemme des chemins non vus
2) Application : cycle
3) Application : tri topologique
a) Extensions linéaires
b) Problème du tri topologique
Magnets pour habiller le savant Cosinus

23 octobre 2012
4) Application : composantes fortement connexes
a) Définitions
b) Algorithme de Kosaraju
III) Parcours en largeur
Transparents pour le parcours en largeur
1) Algorithme de parcours en largeur, distance des plus courts chemins
2) Adaptation pour un graphe pondéré positivement : algorithme de Dijkstra
29 octobre au 4 novembre 2012 VACANCES
6 novembre 2012 5. Algorithmes gloutons
Transparents
1) Principe général
2) Arbre couvrant de poids minimal
a) Algorithme de Kruskal
Démonstration de la correction par "couper-coller"
c) Algorithme de Prim
Prim en 1957, Dijkstra en 1959, même squelette de l'algorithme !
3) Formules de Horn
9 novembre 2012 6. Programmation dynamique Transparents
1) Sous-structures optimales
a) On les trouve fréquemment dans l'algorithmique du texte. Exemple de la sous-structure ARN
b) Analyse du problème
c) Exhiber une relation de récurrence
2) Ecrire un algorithme
a) De la récursivité ? Non, merci !
b) Mémoïsation
c) Algorithme ascendant
3) Plus court chemins
a) Algorithme de Bellmann-Ford
13 novembre 2012
b) Algorithme de Floyd-Warshall
7. Programmation linéaire et réductions
I) Flots
1) Problème du flot maximal
2) Un échec
3) Algorithme de Ford-Fulkerson
4) Théorème du flot maximal
27 novembre 2012 II) Réductions
1) Le problème de la programmation linéaire
2) Réductions
a) Définitions
b) Exemples : plus court chemins et flots
III) Introduction à l'algorithme du simplexe
(on se restreint à la forme canonique)
1) Principe général - exemple du chocolatier
2) Résolution de l'exemple
a) Explication de l'algorithme sur la forme standard
b) Déroulement de l'algorithme
8. NP-complétude
Transparents
Quelques problèmes de "recherche". 3-COLORIAGE comme problème phare.
4 décembre 2012 I) Non-déterminisme. Définition de NP.
II) Les problèmes les plus durs de NP.
III) Le pouvoir de la logique propositionnelle.
1) Problème SAT
2) Machines de Turing
Exemple d'une machine de Turing - Fiche à compléter 
3) Théorème de Cook (SAT est NP-complet)
III) Des réductions pour montrer la NP-dureté
1) 3SAT
2) 3-COLORIAGE


Références

Autre cours sur internet