résumé

publicité
Algorithmique Avancée et Complexité
UFR IEEA
Présentation du Cours
20072008
Master 1 d'Informatique
S.Tison
Objectifs
Le but de l'algorithmique peut être résumé par: Trouver un "bon" algorithme pour un problème donné. Cela
nécessite souvent des connaissances - la plupart du temps, un algorithme connu peut etre adapté au problème
et il vaut mieux éviter de réinventer la roue-, du savoir-faire et soulève pas mal de questions:
* Existe-t-il un algorithme pour résoudre le problème?! (calculabilité, indécidabilité ).
* Le problème est-il un "classique"? (modélisation, connaissances)
* Comment concevoir un algorithme? Il n'y a pas de méthode miracle mais on peut identier quelques
paradigmes, patrons d'algorithmes, classes d'algorithmes .
* L'algorithme A apporte-t-il bien la réponse au problème donné? (correction des algorithmes, conception d'un
algorithme correct)
* Que dire des ressources utilisées par l'algorithme A? ( savoir analyser la complexité d'un algorithme)
* L'algorithme A est-il "raisonnablement" ecace pour le problème donné? Pourrait-on faire beaucoup mieux?
Que peut-on dire des ressources minima nécessaires pour résoudre le problème donné? (complexité des
problèmes)
* Qu'est-ce qu'un problème dur, i.e. pour lequel on ne peut espérer avoir d'avoir d'algorithme "rapide" exact?
Comment montrer qu'un problème est dur? (par exemple Problèmes NP-durs)
* Que faire face à un problème dur?
Savoir répondre à ces questions est souvent dur. Le cours ne se veut ni un cours "formel" sur la correction,
l'analyse d'algorithmes et la complexité de problèmes, ni un cours encyclopédique sur les algorithmes. L'objectif
du cours est simplement de vous donner quelques éléments de réponse. Dans la mesure du possible, l'accent
sera plutôt mis sur les méthodes, même si le cours sera illustré avec des algorithmes "classiques".
Plan prévisionnel
Présentation. Exemples. Rappel sur la complexité des algorithmes. (1 Cours)
Quelques schémas "classiques" d'algorithmes (2-3 cours)
Nous étudierons deux ou trois paradigmes: la programmation dynamique, les algorithmes gloutons (et
éventuellment "Diviser pour Régner").
Complexité de problèmes (3 cours) Qu'est-ce que la complexité intrinsèque d'un problème? Qu'est-ce qu'un
problème "dur"? Comment montrer qu'un problème est dur?
Nous aborderons: Les classes P et NP, Les propriétés NP-dures, Théorème de Cook, réductions polynômiales, catalogue de propriétés NP-dures, la problématique P=NP...Propriétés versus problèmes d'optimisation...
Un peu d'algorithmique avancée, comment appréhender un problème "dur" (2 cours)
Nous verrons d'abord quelques méthodes classiques de recherche de solution, certaines permettant d'appréhender
des problèmes durs.
. Heuristiques et leur garantie
. Méthodes classiques de recherche: backtracking, minmax, séparation-évaluation...
. Eventuellement , on évoquera les métaheuristiques, les algorithmes probabilistes .....
La calculabilité (1-2 cours) Enn, nous nous poserons une question essentielle: Qu'est-ce qu'un algorithme?
Quels problèmes peut-on "résoudre par ordinateur"?
Nous aborderons la notion de modèle de calcul, et montrerons les limites de la calculabilité.
Remarque: En cours comme en TD, les algorithmes seront écrits en pseudo-language. Le langage support
des TP sera JAVA.
Bibliographie, Références
Il y a beaucoup de ressources en ligne sur l'algorithmique et la complexité, par exemple:
. Un dictionnaire recensant les algorithmes et problèmes classiques http://www.nist.gov/dads/
. "The Stony Brook Algorithm Repository" qui contient des implémentations d'algorithmes pour des dizaines
de problèmes classiques: http://www.cs.sunysb.edu/algorith/
. Algorithms Courses on the WWW, qui, comme son nom l'indique, contient une collection de cours d'algorithmique:
http://www.cs.pitt.edu/kirk/algorithmcourses/
. Le site du cours "Algorithms in the Real World": http://www-2.cs.cmu.edu/guyb/realworld.html
."A compendium of NP optimization problems": http://www.nada.kth.se/viggo/problemlist/compendium.html
Quant aux livres, il en existe aussi un grand nombre, dont beaucoup sont excellents, comme par exemple:
. Cormen, Leiserson, Rivest, "Introduction à l'algorithmique", Dunod (disponible à la BU) vraiment "une"
référence essentielle en algorithmique: Très complet ... et volumineux, il couvre une bonne partie du cours
et beaucoup plus!
. S. Skiena, "Algorithm Design Manual", une "mine"! Une version on-line proche du livre papier est consultable
à http://www.cs.sunysb.edu/algorith/ .
. Sur l'aspect "algorithmic pattern", "Data Structures and Algorithms with object-oriented design patterns
in Java". 2000, disponible sur le Web à http://www.brpreiss.com/books/opus5/ .
. Brassard and Bratley, "Fundamentals of Algorithms", Prentice-Hall, 1996. Très riche et agréable à lire.
Organisation, Travail demandé et Evaluation
Les Intervenants et leurs coordonnées
Cours: S.Tison ([email protected], bureau 125, ext. M3),
TD et TP: Olivier Gauwin ([email protected]), Mathias Samuelides ([email protected]) et Sophie
Tison.
Les TP, l'évaluation
Il y aura 6 séances de TP encadrées pour la mise en oeuvre directe des méthodes étudiées en cours:
. Programmation dynamique, Algorithmes gloutons(2 séances)
. Propriétés NP, réductions polynômiales (2 séances)
. Heuristiques, Métaheuristiques (2 séances)
Le contrôle continu sera basé sur les TPs et un DS en milieu de semestre. La note de contrôle continu sera
1/3 ∗ (note DS) + 2/3 ∗ (note T P ) avec éventuellment un bonus donné par des "devoirs maison".
Le site du cours
Vous trouverez sur le portail du FIL au fur et à mesure, les feuilles de cours, de TD ainsi que des annales et
quelques corrigés.
2
Téléchargement