r sum

publicité
Algorithmique Avancée et Complexité
2012–2013
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 de nombreuses questions :
* Existe-t-il un algorithme pour résoudre le problème ! : calculabilité, indécidabilité .
* Comment modéliser le problème, 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)
* Qu’est-ce qu’un "bon" algorithme pour le problème ? L’algorithme A est-il raisonnablement efficace ? Pourraiton 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, réductions polynomiales
* Que faire face à un problème dur méthodes générales de recherche -backtracking, branch-and-bound, ...- ,
Heuristiques, méta-heuristiques
Ces questions sont passionnantes mais savoir y répondre est souvent difficile. 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 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 : la programmation
dynamique, « Diviser pour Régner », 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 polynomiales, 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...
. selon le temps restant , 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-langage. 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/.
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 : François Clautiaux ([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)
. Algorithmes Avancés (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