r sum

publicité
Algorithmique Avancée et Complexité
2009–2010
Master 1 d’Informatique
S.Tison
UFR IEEA
Présentation du Cours
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 être adapté au problème et
il vaut mieux éviter de réinventer la roue-, du savoir-faire -dans la modélisation du problème à résoudre comme
dans la conception de l’algorithme et son implémentation- 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 identifier 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" efficace 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. 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 (3 cours) Nous étudierons trois paradigmes: Diviser pour Régner,
la programmation dynamique, les algorithmes gloutons.
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-3 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) Enfin, 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/ .
. Jon Kleinberg & Eva Tardos, "Algorithm design", Addison Wesley 2005
. Sur l’aspect "algorithmic pattern", Bruno R. Preiss, "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
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.
Les Intervenants et leurs coordonnées
Cours: S.Tison ([email protected], bureau 127, ext. M3).
TD et TP: Benoît Groz ([email protected]), Samuel Hym ([email protected]), Marie-Emile Voge (Marie-Emilie
[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 (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 ) complétée éventuellement avec un bonus donné par des "devoirs maison" ou
d’autres évaluations.
2
Téléchargement