UFR IEEA
Algorithmique Avancée et Complexité
2012–2013
Master 1 d’Informatique
S.Tison
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 ? 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, 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 po-
lynomiales, 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’ap-
pré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é.