ALGORITHMIQUE
Notes du cours FS/1/6584
Université de Mons-Hainaut
Année préparatoire au Master en Informatique
Gilles GEERAERTS
Université Libre de Bruxelles
ANNÉE ACADÉMIQUE 2007–2008
2
Table des matières
1 Introduction 11
1.1 Le contenu et les objectifs du cours . . . . . . . . . . . . . . . . . . . 11
1.1.1 Algorithmes, Algorithmique . . . . . . . . . . . . . . . . . . 11
1.1.2 Les objectifs et l’orientation du cours . . . . . . . . . . . . . 14
1.2 Le pseudo-langage . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.1 Types et variables . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.2 Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.3 Gestion de la mémoire . . . . . . . . . . . . . . . . . . . . . 16
1.3 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2 Itération, induction, récursivité 19
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.1 Itération . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.2 Induction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.3 Récurrence . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2 Itération et induction . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.1 Raisonnement par induction . . . . . . . . . . . . . . . . . . 22
2.3 Preuves de programmes . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.1 Notion d’invariant de boucle . . . . . . . . . . . . . . . . . . 26
2.3.2 Un exemple de preuve par invariant . . . . . . . . . . . . . . 27
2.4 Récursivité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4.1 Récursivité et induction . . . . . . . . . . . . . . . . . . . . 30
2.4.2 Fonctions cursives . . . . . . . . . . . . . . . . . . . . . . 31
3 La complexité algorithmique 33
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Notion d’efficacité . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.1 Mesure du temps de calcul . . . . . . . . . . . . . . . . . . . 34
3.2.2 Compter le nombre d’étapes . . . . . . . . . . . . . . . . . . 35
3.3 La notion de grand O.......................... 37
3.3.1 Intuition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.2 Définition formelle . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.3 Classes de complexité algorithmique . . . . . . . . . . . . . . 39
3.3.4 Règles de combinaison et de simplification . . . . . . . . . . 40
3.4 Le cas des programmes récursifs . . . . . . . . . . . . . . . . . . . . 42
3.4.1 Utilisation de l’induction . . . . . . . . . . . . . . . . . . . . 43
3
4
TABLE DES MATIÈRES
4 Les listes 45
4.1 Motivation : critique des tableaux . . . . . . . . . . . . . . . . . . . . 45
4.2 Les listes simplement liées . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.1 Comparaison aux tableaux . . . . . . . . . . . . . . . . . . . 47
4.2.2 Algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.2.3 Listes triées . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3 Les listes circulaires avec élément pré-tête . . . . . . . . . . . . . . . 55
4.3.1 Différences par rapport aux listes « simples » . . . . . . . . . 56
4.3.2 Algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.4 Les listes doublement liées . . . . . . . . . . . . . . . . . . . . . . . 63
4.5 Implémentation des listes dans les vecteurs . . . . . . . . . . . . . . 65
4.5.1 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.6 Vue récursive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.6.1 Algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5 Les piles et les files 73
5.1 Les piles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.1.1 Implémentation dans une liste . . . . . . . . . . . . . . . . . 74
5.1.2 Implémentation dans un vecteur . . . . . . . . . . . . . . . . 75
5.2 Les files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5.2.1 Implémentation dans une liste . . . . . . . . . . . . . . . . . 79
5.2.2 Implémentation dans un vecteur . . . . . . . . . . . . . . . . 80
5.3 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.3.1 Vérification des parenthèses . . . . . . . . . . . . . . . . . . 86
5.3.2 Évaluation d’une expression en notation postfixée . . . . . . . 87
6 Les arbres 91
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.1.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.1.2 Vocabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.1.3 Cas particuliers . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.1.4 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.1.5 Application : les arbres d’expressions . . . . . . . . . . . . . 101
6.2 Parcours des arbres binaires . . . . . . . . . . . . . . . . . . . . . . . 104
6.2.1 Parcours préfixé ou parcours en profondeur . . . . . . . . . . 105
6.2.2 Parcours infixe . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.2.3 Parcours postfixé . . . . . . . . . . . . . . . . . . . . . . . . 110
6.2.4 Le parcours par niveaux ou parcours en largeur . . . . . . . . 111
6.2.5 Applications des parcours . . . . . . . . . . . . . . . . . . . 111
7 Algorithmes de recherche 115
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2 Données stockées dans des vecteurs . . . . . . . . . . . . . . . . . . 116
7.2.1 Recherche linéaire simple . . . . . . . . . . . . . . . . . . . 116
7.2.2 Recherche linéaire dans un vecteur trié . . . . . . . . . . . . 117
7.2.3 Recherche dichotomique dans un vecteur trié . . . . . . . . . 118
7.2.4 Tables de hachage . . . . . . . . . . . . . . . . . . . . . . . 122
7.3 Données stockées dans des listes . . . . . . . . . . . . . . . . . . . . 127
7.4 Données stockées dans des arbres . . . . . . . . . . . . . . . . . . . 127
7.4.1 Parcours simple . . . . . . . . . . . . . . . . . . . . . . . . . 127
TABLE DES MATIÈRES
5
7.4.2 Arbres binaires de recherche . . . . . . . . . . . . . . . . . . 128
8 Conclusion : aux limites de l’algorithmique 141
1 / 145 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 !