Polycopie de cours d’Algorithmes et Type de Donn´ees Abstraits
Hadda Cherroun
5 octobre 2010
2
Table des mati`eres
I Types abstraits de donnees -TAD- 9
1 Types abstraits de donn´ees 11
1.1 Introduction....................................... 11
1.1.1 D´efinition d’une structure de donn´ees . . . . . . . . . . . . . . . . . . . . 11
1.1.2 Propri´et´es abstraites d’une structure de donn´ees . . . . . . . . . . . . . . 11
1.1.3 Propri´et´es concr´etes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2 Typeabstrait: ..................................... 13
1.2.1 D´enition.................................... 13
1.2.2 Motivation ................................... 13
1.2.3 Notion de signature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.4 Hi´erarchie de type : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.5 S´emantique des op´erations : . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.6 Implantation d’un T.A.D . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2 Les structures s´equentielles 17
2.1 Introduction....................................... 17
2.2 Motivation ....................................... 17
2.3 LaListelin´eaire .................................... 17
2.3.1 Propri´et´es abstraites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.2 Propri´et´es concr´etes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.3 Implantation contigu´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.4 Implantation cha´en´ee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.4.1 Rappel : Gestion de la m´emoire centrale . . . . . . . . . . . . . . 21
2.3.4.2 Exemple usage des pointeurs en Turbo Pascal . . . . . . . . . . 21
2.3.5 D´eclaration d’une liste lin´eaire . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4 Variantes de listes cha´en´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.1 Liste lin´eaire avec t´ete fictive . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.2 Liste lin´eaire cha´en´ee circulaire . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4.3 Liste lin´eaire doublement cha´en´ee . . . . . . . . . . . . . . . . . . . . . . . 22
2.5 Structures s´equentielles particuli´eres . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5.1 Piles....................................... 23
2.5.2 File ....................................... 23
3 Les Structures Arborescentes 25
3.1 Introduction et Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.1 D´enition.................................... 25
3.1.2 Terminologie informatique des arbres . . . . . . . . . . . . . . . . . . . . . 26
3.2 Les arbres binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.1 Sp´ecification d’un arbre binaire . . . . . . . . . . . . . . . . . . . . . . . . 27
3
3.2.2 Parcours des arbres binaires . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.3 Implantation d’arbres binaires . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.3.1 En statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.3.2 En dynamique : repr´esentation chain´ee . . . . . . . . . . . . . . 28
3.3 Arbres planaires ou g´en´erales et forˆets . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.1 Transformation d’un arbre g´en´eral en arbre binaire . . . . . . . . . . . . . 29
3.3.2 Exploration d’un arbre g´en´eral . . . . . . . . . . . . . . . . . . . . . . . . 30
4 Les graphes et leurs algorithmes 31
4.1 Introduction....................................... 31
4.2 Graphe ......................................... 31
4.2.1 D´enitions ................................... 31
4.2.2 Sp´ecification d’un graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3 Le probl´eme du Parcours des graphes en profondeur et propri´et´es . . . . . . . . 32
4.3.1 Parcours des graphes en profondeur et ses propri´et´es . . . . . . . . . . . 33
4.3.1.1 Principe................................ 33
4.3.1.2 M´ecanisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3.1.3 Propri´et´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3.2 Parcours en Largeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3.2.1 Principe................................ 35
Remarque................................ 35
4.3.2.2 M´ecanisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.4 Sp´ecification physique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.4.1 Repr´esentation contigu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.5 Principaux algorithmes pour les graphes . . . . . . . . . . . . . . . . . . . . . . . 36
4.5.1 Chemins de poids maximal-minimal- . . . . . . . . . . . . . . . . . . . . . 36
4.5.1.1 Technique de relaxation . . . . . . . . . . . . . . . . . . . . . . . 36
4.5.1.2 Algorithme de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . 37
4.5.1.3 Algorithme de Bellman-Ford . . . . . . . . . . . . . . . . . . . . 37
4.5.1.4 Algorithme de Floyd-Warshall . . . . . . . . . . . . . . . . . . . 38
4.5.1.5 Algorithme Johnson . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.5.1.6 Algorithme de Roy-Warshall . . . . . . . . . . . . . . . . . . . . 40
II Structuration 43
5 La r´ecursivit´e 45
5.1 Introduction....................................... 45
5.2 Algorithme r´ecursif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3 Comment construire un algorithme r´ecursif ? . . . . . . . . . . . . . . . . . . . . 47
5.4 Lad´er´ecursion ..................................... 48
5.4.1 Motivation La d´er´ecursion . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4.2 R´egles pratiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4.3 Traduction des appels r´ecursifs . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4.4 Traduction du retour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4.5 Casg´en´eral................................... 49
5.4.5.1 Un seul appel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.4.5.2 Deux appels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6 Echappement et gestion des erreurs par exception 53
4
7 Truc et astuces pour d´ebugger un programme 55
8 G´en´ericit´e. Vers les m´ecanismes objets 57
9 Notions avanc´ees de la structuration 59
10 L’action parametr´ee (sous-programmes) Proc´edures et Fonctions 61
10.1Introduction....................................... 61
Analyse ................................. 61
10.1.1 Op´eration de suppression . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
10.2 Action parametr´ee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.2.1 D´enition.................................... 63
10.3 Les objets de l’action parametr´ee . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.3.1 Param´etres d’entr´ee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
10.3.2 Param´etres de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
10.3.3 Param´etres d’enees / sorties . . . . . . . . . . . . . . . . . . . . . . . . . 64
10.4 Procedures et fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
10.4.1 Denition.................................... 65
III Partie III : Analyse d’Algorithmes 69
11 Introduction `a l’analyse et complexit´es des Algorithmes 71
11.1Introduction....................................... 71
11.2 Exemple Illustratif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
11.3Complexit´es....................................... 72
11.3.1 Unit´es de mesure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
11.3.2 Ordre de grandeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
11.3.3 Calcul de la complexit´e en temps . . . . . . . . . . . . . . . . . . . . . . . 73
11.3.4 Calcul de la complexit´e en espace m´emoire . . . . . . . . . . . . . . . . . 74
11.3.5 Principe d’´evaluation d’une complexit´e pratique . . . . . . . . . . . . . . 74
12 Algorithmes de TRI 77
12.1 Introduction et Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
12.2Trismentaires...................................... 77
12.2.1 Tri par insersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
12.2.1.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
12.2.1.2 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
12.2.1.3 Complexit
78
12.2.2 Tri par sction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
12.2.2.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
12.2.2.2 Complexit
79
12.2.3 Tri par bulle” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
12.2.3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
12.2.3.2 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
12.2.3.3 Complexit
79
12.2.4 TriShell..................................... 80
5
1 / 93 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 !