Analyse d’Algorithme
Cyril Gavoille
LaBRI
Laboratoire Bordelais de Recherche
en Informatique, Université de Bordeaux
gavoille@labri.fr
8 février 2017
2
Master 2 : Analyse d’Algorithme /
Algorithmique Appliquée /
Algorithm Design
Objectifs : introduction à la complexité paramétrique ; aux algorithmes d’approximation
Pré-requis : algorithmique ; notions de théorie des graphes
Références :
Invitation to Fixed-Parameter Algorithms, R. Niedermeier. Springer 2006
Parameterized Complexity Theory, J. Flum, M. Grohe. Springer 2006
Parameterized Complexity, R.G. Downey, M.R. Fellows. Springer 1999
Algorithmes d’approximation, V.V. Vazirani. Springer 2006
Approximation Algorithms for NP-hard Problems, Dorit S. Hochbaum. PWS 1995
Algorithm Design, Jon Kleinberg, Éva Tardos. Addison Wesley 2006
Parameterized Algorithms, Marek Cygan, Fedor V. Fomin, et al.. Springer 2015
Table des matières
1 Introduction 5
1.1 À quoi ça sert ? ................................. 5
1.2 Quelques algorithmes que nous analyserons .................. 7
1.3 Des algorithmes pour construire quoi ? .................... 7
1.4 Existence d’objets spécifiques: les spanners .................. 8
2 Algorithmes exacts 17
2.1 Temps polynomial vs. exponentiel ....................... 17
2.2 Problèmes jouets ................................ 18
2.3 Algorithmes exhaustifs (brute force)...................... 19
2.4 Complexité paramétrique: définition ...................... 21
2.5 Arbre borné de recherche ............................ 25
2.5.1 Couverture par sommets de taille k............... 26
2.5.2 Ensemble indépendant pour les graphes planaires ........ 28
2.5.3 Ensemble dominant pour les graphes planaires .......... 30
2.5.4 Améliorations : raccourcissement de l’arbre .............. 36
2.6 Réduction à un noyau : « kernelisation » ................... 38
2.6.1 Principe et propriété .......................... 38
2.6.2 Exemple de noyau ........................... 40
2.6.3 Couverture par sommets ..................... 41
2.6.4 Noyau et approximation ........................ 45
2.7 Théorie des mineurs de graphes ........................ 47
2.7.1 Définition ................................ 47
2.7.2 Théorème des mineurs de graphes ................... 48
2.7.3 Applications ............................... 49
3
4TABLE DES MATIÈRES
2.8 Réduction aux graphes de tree-width bornée ................. 53
2.8.1 Décomposition arborescente ...................... 53
2.8.2 Un exemple simple: 3-Coloration .................. 58
2.8.3 Couverture par sommets pour tree-width bornée ........ 60
2.8.4 Application aux graphes planaires ................... 61
2.8.5 Amélioration pour les graphes planaires ................ 64
2.9 Remarques finales ................................ 69
2.10 Technique de coloration (color coding) .................... 69
3 Algorithmes d’approximation 77
3.1 Introduction ................................... 77
3.1.1 Définition ................................ 77
3.1.2 Problème inapproximable ....................... 78
3.1.3 Certificat positif, négatif ........................ 79
3.2 Problèmes bien caractérisés .......................... 80
3.2.1 Couplage ................................ 81
3.2.2 Les problèmes min-max ........................ 83
3.2.3 Comment concevoir un algorithme d’approximation ? ........ 85
3.3 Couverture par sommets de taille minimum ............... 86
3.3.1 Un premier algorithme ......................... 86
3.3.2 Un second algorithme .......................... 87
3.3.3 Technique de précalcul (color coding)................. 88
3.4 Couverture par ensembles ........................ 91
3.4.1 Algorithme glouton ........................... 92
3.4.2 Un second algorithme .......................... 96
3.4.3 Un algorithme exact .......................... 97
Chapitre 1Introduction
1.1 À quoi ça sert ?
Essentiellement à deux choses :
1. À se rendre compte qu’un algorithme ne marche pas très bien (complexité trop
grande même sur des données de petite taille), voir pas du tout (algorithme faux ou
non conforme). Cela évite ainsi de programmer inutilement.
2. À démontrer l’existence d’objets ou de structures discrètes vérifiant certaines pro-
priétés, en proposant un algorithme de construction et en prouvant sa correction.
Nous illustrerons le deuxième point à la fin de ce chapitre.
Attention ! On ne peut pas analyser n’importe quel algorithme. Des algorithmes très
simples sont parfois extrêmement difficile à analyser. En voici deux exemples.
Ex1 :
Algorithme Goldbach(n)
Entrée : un entier pair n > 2
Sortie : un booléen
1. Si n= 4, renvoyer Vrai.
2. Pour i:= 1 àn/21faire :
si 2i+ 1 et n(2i+ 1) sont deux nombres premiers, renvoyer Vrai.
3. Renvoyer Faux.
Ainsi, pour n= 30, l’algorithme va tester la primalité de :
3 et 27 ? NON ;
5 et 25 ? NON ;
7 et 23 ? OUI.
Cet algorithme teste si le nombre pair n > 2est la somme de deux nombres premiers.
Est-ce que :
n > 2pair,Goldbach(n) = Vrai ?
1 / 99 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !