ENS, année scolaire 2011-2012
Algorithmique et Programmation
Enseignant Principal:
Jacques Stern
(stern AT di.ens.fr, Lun 14:00-15:00, S5)
- Charles Bouillaguet (charles.bouillaguet AT ens.fr)
- Damien Vergnaud (vergnaud AT di.ens.fr, Lun-Ven S8)
Cours Lundi 15:15-18:15, Salle U ou V (ancien immeuble rateau, passage rouge)
TDs Mercredi 08:45-10:45, Info 4 (NIR)
Annonces
Résumé du cours
Planning des cours
Projet de Programmation
Cours Avancé (ce sont des notes de cours téléchargeables)
Planning des TDs
Partiels des années précédentes
Autres Notes de Cours
Annonces
Examens:- 5 Décembre 2011 : Examen Algorithmique des Structures de données
- 23 Jan. 2012 : Examen Algorithmique numérique
- 31 Oct. 2011 : Choix des Projet de Programmation
- 9 Décembre 2011 : Envoi des Projets de Programmation
- 14 Décembre. 2011 : Soutenances des Projet de Programmation [Planning des soutenances. Les soutenances ont lieu en salle S16, Ancien immeuble rataud, niveau -1]
Résumé du cours
Le cours présente les bases sur les structures de données et les principes de conception des algorithmes ainsi qu'un certain nombre de développements plus avancés. On attend des étudiants un minimum de connaissances algorithmiques. Chaque séance est organisée en deux parties, la première consacrée aux connaissances de base et la seconde présente un résultat plus avancé (ou exceptionnellement plusieurs). Détails.
Projets de programmation
Vous aurez le choix entre plusieurs sujets de programmation. Cette liste est susceptible d'évoluer jusqu'au 31 octobre à minuit. Vous devez indiquer aux chargés de TD (ou bien à td-algo@di.ens.fr) quel sujet vous choisissez le 1er novembre au plus tard.
Vous devrez implémenter l'algorithme que vous avez choisi en C. L'intérêt de la chose est que vous vous coltiniez ce langage au moins une fois dans votre vie, vu que c'est un des plus (sinon le plus) utilisé. Vous devrez également préparer une brève soutenance durant laquelle vous nous raconterez un peu le fonctionnement de l'algorithme, votre implémentation, ses performances, les problèmes que vous avez rencontrés, les idées d'améliorations que vous avez eues, etc.
Avis aux connaisseurs (et/ou aux petits malins) : l'usage du C++ est interdit. Plus précisément, l'usage d'objets (new, class...) et de la STL est interdit. Vous pouvez éventuellement utiliser les template si ça vous chante, mais il n'est pas certain que ce soit utile. Si vous voulez vraiment pouvoir déclarer des variables dans les expressions for(int i=0; ....), vous pouvez utiliser l'option -c99 de gcc.
Voici la liste des sujets, avec la liste des étudiants qui les ont choisi(s). Plusieurs personnes peuvent prendre le même sujet bien sûr.
- Arbre couvrant minimal
- algorithme de Kruskal (avec la structure de donnée Union-Find) et application au voyageur de commerce
- algorithme de Prim (avec des tas de Fibonacci)
- Plus courts chemins à origine unique
- algorithme de Dijsktra (avec des tas de Fibonacci)
- algorithme de Gabow
- Plus courts chemins pour tout couple de sommets
- algorithme de Johnson (avec des tas binaires)
- Flot maximal
- Couplage maximal
- algorithme de Ford-Fulkerson pour les graphes bipartis (application à la mise en forme triangulaire par bloc de matrices creuses)
- algorithme d'Edmonds pour les graphes généraux
- clique maximum (Il y a des graphes challenges)
- algèbre linéaire
- Multiplication de matrices (denses) par l'algorithme de Strassen (avec parenthésage optimal)
- Résolution de systèmes linéaires creux par la décomposition LU (creuse)
- inclassables
- Plus proche ancêtre commun dans un arbre en temps constant
- Heuristique de Weisfeiler-Lehman pour l'isomophisme de graphes
Liste des Cours
| Date | Sujet | |
| 1 | 3 Oct | Algorithmes: conception et évaluation |
| 2 | 10 Oct | Tri et hachage |
| 3 | 17 Oct | Recherche de motifs |
| 4 | 24 Oct | Arbres |
| 31 Oct | Pas de cours | |
| 5 | 7 Nov | Graphes |
| 6 | 14 Nov | Flots |
| 7 | 21 Nov | Entiers |
| 8 | 28 Nov | Transformation de Fourier rapide |
| 5 Déc | Examen Algorithmique des Structures de données (1-6) | |
| 9 | 12 Déc | Algébre linéaire et géométrie des nombres |
| 10 | 9 Jan | Programmation linéaire |
| 11 | 16 Jan | Factorisation des polynômes |
| 12 | 23 Jan | Systémes d'équations polynomiales |
| 30 Jan | Examen Algorithmique numérique (7-12) |
Liste et sujets des TDs
| Date | Prof | Sujet | |
| 1 | 5 Oct | CB | TD Conception et evaluation |
| 2 | 12 Oct | DV | TD Tri et hachage |
| 3 | 19 Oct | CB | TD Morphismes du monoïde libre |
| 4 | 26 Oct | DV | TD Arbres |
| 5 | 2 Nov | CB | TD Splay trees (et Horn-Sat) |
| 6 | 9 Nov | DV | TD Graphes |
| 7 | 16 Nov | CB | TD Flots |
| 8 | 23 Nov | DV | TD Entiers |
| 9 | 30 Nov | CB | TD Transformation de Fourier rapide |
| 7 Déc | Pas de TD - Finir les projets | ||
| 14 Déc | Soutenances projet |
||
| 10 | 4 Jan | DV | TD Algèbre linéaire et géométrie des nombres |
| 11 | 11 Jan | CB | TD Programmation linéaire |
| 12 | 18 Jan | DV | TD Factorisation des polynômes |
| 13 | 25 Jan | CB | TD Systèmes d'équations polynomiales |
Autres Notes de Cours
- Jean Berstel
- Jeff Erickson (chaudement recommandé)
Partiel Années Précédentes
- Partiel 2006
- Partiel 2007
- Partiel 2008
- Partiel 2009 (lost ?)
- Partiel 2010
- Partiel 2011