F. BEN-NAOUM
Maˆıtre de Conf´erences B
Universit´e Djilali Liab`es, d´epartement d’informatique
Algorithmique et Structures de
Donn´ees Avanc´ees
AVANT-PROPOS
Cet ouvrage s’adresse aux ´etudiants de la deuxi`eme ann´ee licence en informatique. Il
comporte les notions de base en algorithmique avanc´e que doit acqu´erir l’´etudiant et qu’il
retrouvera tout au long de son cursus.
L’objectif est de d´evelopper la capacit´e `a d´efinir et `a manipuler les structures de donn´ees
abstraites des plus simples (lin´eaires) aux plus complexes (arborescence et graphe).
L’une des notions importantes invoqu´ees tout au long de cet ouvrage concerne le calcul de
la complexit´e des algorithmes. Le but essentiel a ´et´e donc de montrer l’impact du choix des
structures de donn´ees sur la complexit´e.
Un autre aspect est la sensibilisation `a la notion de preuve et qualit´e des algorithmes.
Ce cours ayant ´et´e con¸cu avec un souci constant de p´edagogie et la volont´e de rendre les
concepts de l’algorithmique accessibles `a chacun, je souhaite que tout ´etudiant en ayant fait
la consultation puisse y trouver les r´eponses `a ses interrogations.
Farah BEN-NAOUM
Table des mati`eres
Table des mati`eres 1
1 Introduction `a l’Algorithmique, Preuve et Complexit´e d’un algorithme 4
1.1 Introduction `a l’algorithmique . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 Qu’est ce que l’algorithmique . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.2 Le langage algorithmique . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.3 R´ecursivit´e ................................. 6
1.2 Qualit´es et preuve d’un algorithme . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Caract´eristiques d’un algorithme . . . . . . . . . . . . . . . . . . . . . 7
1.2.2 Preuve d’algorithme par invariant de boucle . . . . . . . . . . . . . . . 8
1.2.3 Preuve d’algorithme par les assertions d’Hoare . . . . . . . . . . . . . . 9
1.3 Complexit´e ..................................... 11
1.3.1 D´efinition de la complexit´e d’un algorithme . . . . . . . . . . . . . . . 11
1.3.2 Calculs de la complexit´e . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.3 Exemples de calculs de complexit´es . . . . . . . . . . . . . . . . . . . . 19
2 La r´ecursivit´e 24
2.1 D´efinition de la r´ecursivit´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2 Diff´erentes configurations de la ecursivit´e . . . . . . . . . . . . . . . . . . . . 25
2.2.1 R´ecursivit´e simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.2 R´ecursivit´e multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.3 R´ecursivit´e mutuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.4 R´ecursivit´e imbriqu´ee . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3 Inerˆet, principe et difficult´es de la r´ecursivit´e . . . . . . . . . . . . . . . . . . 26
2.4 Importance de l’ordre des appels r´ecursifs . . . . . . . . . . . . . . . . . . . . . 27
2.5 Exemple d’algorithme r´ecursif : les tours de Hano¨
ı................ 28
2.6 Diviserpourr´egner................................. 30
2.7 R´ecursivit´e terminale et non terminale . . . . . . . . . . . . . . . . . . . . . . 32
2.8 D´er´ecursivation ................................... 33
2.8.1 Cas de la ecursivit´e terminale . . . . . . . . . . . . . . . . . . . . . . . 33
2.8.2 Cas de la ecursivit´e non terminale . . . . . . . . . . . . . . . . . . . . 34
2.8.3 Remarques ................................. 35
3 Structures s´equentielles : listes lin´eaires, piles, files 36
3.1 Structure de donn´ees : liste lin´eaire . . . . . . . . . . . . . . . . . . . . . . . . 36
3.1.1 D´enition .................................. 36
3.1.2 Primitives.................................. 36
1
Table des mati`eres
3.1.3 Impl´ementation contigu¨
e ......................... 37
3.1.4 Impl´ementation chaˆın´ee . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.1.5 Listes chaˆın´ees particuli`eres . . . . . . . . . . . . . . . . . . . . . . . . 42
3.1.6 Comparaison des deux impl´ementations . . . . . . . . . . . . . . . . . 43
3.1.7 Exemple de manipulation des listes . . . . . . . . . . . . . . . . . . . . 43
3.2 Structure de donn´ees : pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.2.1 Primitives.................................. 44
3.2.2 Impl´ementations .............................. 45
3.2.3 Exemples de manipulation des piles . . . . . . . . . . . . . . . . . . . . 47
3.3 Structure de donn´ee : file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3.1 Primitives.................................. 49
3.3.2 Impl´ementations .............................. 49
3.3.3 Usagedesles................................ 51
4 Structures Hi´erarchiques : arbres, arbres binaires de recherche, TAS 53
4.1 NotiondArbres................................... 53
4.2 Arbrebinaire .................................... 53
4.2.1 D´enitions ................................. 53
4.2.2 Primitives de consultation . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.2.3 Primitives de construction/modifications . . . . . . . . . . . . . . . . . 54
4.2.4 Parcours................................... 54
4.2.5 Arbres binaires particuliers . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.2.6 Repr´esentation d’un arbre quelconque sous forme d’un arbre binaire . . 57
4.2.7 Impl´ementations .............................. 57
4.3 Arbreg´en´eral .................................... 62
4.3.1 Primitives.................................. 62
4.3.2 Parcours .................................. 62
4.3.3 Impl´ementation .............................. 64
4.4 Arbre binaire de Recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.4.1 Introduction................................. 67
4.4.2 Recherche .................................. 68
4.4.3 Ajout .................................... 68
4.4.4 Suppression ................................. 70
4.4.5 Arbres binaires de recherche ´equilibr´es . . . . . . . . . . . . . . . . . . 71
4.5 Structure de donn´ees Tas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.5.1 D´enition .................................. 76
4.5.2 Impl´ementation d’un arbre binaire (quasi-)parfait . . . . . . . . . . . . 76
4.5.3 Tripastas ................................. 76
4.5.4 Ajout d’un ´el´ement dans le tas . . . . . . . . . . . . . . . . . . . . . . . 76
4.5.5 Epluchage.................................. 77
4.5.6 Exemple de tri par TAS . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5 Les graphes 83
5.1 Introductionauxgraphes.............................. 83
5.1.1 D´enitions.................................. 83
5.1.2 Graphes particuliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.2 Repr´esentation d’un graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
2
Table des mati`eres
5.2.1 Matricedadjacence............................. 85
5.2.2 Matrice d’incidence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.2.3 Listedadjacence .............................. 87
5.3 Parcoursdegraphes ................................ 88
5.3.1 Parcours en largeur (Cas des graphes orient´e) . . . . . . . . . . . . . . 88
5.3.2 Parcours en profondeur (Cas des graphes non orient´e) . . . . . . . . . . 89
5.4 AlgorithmedeDijkstra............................... 91
3
1 / 100 100%
Study collections
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 !