Structures de données
et algorithmes
1
Irène Charon
Olivier Hudry
1
Les chapitres VI à X, XII et XIII de ce polycopié sont extraits du livre « Méthodes
d’optimisation combinatoire » d’I. Charon, A. Germa et O. Hudry, Masson, Paris, 1996.
Table des matières
I. Notions d’algorithme et de complexité.....................................................................................1
I.1 Algorithme..............................................................................................................................1
I.2 Complexité.............................................................................................................................. 3
II. Premières structures de données..............................................................................................5
II.1 Introduction ........................................................................................................................... 5
II.2 Structures linéaires ................................................................................................................6
II.2.1 Listes ....................................................................................................................6
II.2.2 Piles......................................................................................................................8
II.2.3 Files......................................................................................................................10
II.3. Arbres................................................................................................................................... 12
II.3.1 Arbres généraux.................................................................................................... 12
II.3.2 Parcours d’un arbre général..................................................................................14
II.3.3 Arbres binaires...................................................................................................... 15
III. Recherche et tri ......................................................................................................................21
III.1. Introduction.........................................................................................................................21
III.2 Recherche dichotomique dans un tableau trié......................................................................21
III.3. Complexité d’un algorithme de tri ...................................................................................... 22
III.4. Tri sélection......................................................................................................................... 24
III.5. Tri insertion.........................................................................................................................25
III.6. Tri rapide............................................................................................................................. 26
III.7. Arbre binaire de recherche .................................................................................................. 29
III.8. Structure de tas et tri tas......................................................................................................31
III.8.1. Définition ........................................................................................................... 31
III.8.2. Intérêt de la structure d’arbre parfait.................................................................. 32
III.8.3. Exemple d’insertion d’un nouvel élément dans un tas....................................... 33
III.8.4. Pseudo-code de l’insertion d’une donnée dans un tas ........................................ 34
III.8.5. Complexité d’une insertion dans un tas..............................................................35
III.8.6. Principe du tri tas................................................................................................35
III.8.7. Exemple de suppression de la racine..................................................................35
III.8.8. Pseudo-code de la descente d’une donnée.......................................................... 36
III.8.9. Complexité de la descente de la donnée de la racine.......................................... 37
III.8.10. Pseudo-code du tri tas ...................................................................................... 37
III.8.11. Complexité du tri tas........................................................................................38
III.8.12. Exercice............................................................................................................ 38
IV. Le hachage.............................................................................................................................39
IV.1. Principe général...................................................................................................................39
IV.2. Exemple pour illustrer le risque de collisions ..................................................................... 39
IV.3. Exemples de fonctions de hachage...................................................................................... 40
IV.4. Le hachage linéaire ............................................................................................................. 41
IV.5. Le hachage avec chaînage interne.......................................................................................42
IV.6. Le hachage avec chaînage externe......................................................................................43
IV.7. Nombre de comparaisons.................................................................................................... 44
V. L’algorithme de Huffman........................................................................................................47
V.1. Présentation du problème.....................................................................................................47
V.2. Quelques remarques préliminaires.......................................................................................48
V.3. Description de l’algorithme de Huffman.............................................................................. 51
V.4. Exemple d’application.......................................................................................................... 52
VI. Généralités sur les graphes. Arbre couvrant de poids minimum ..........................................55
VI.1. Introduction à la théorie des graphes et définitions............................................................. 55
VI.2. Représentation des graphes en machine.............................................................................. 56
VI.2.1. Matrice d’adjacence (sommets-sommets).......................................................... 56
VI.2.2. Tableau de listes d’adjacence............................................................................. 57
VI.3. Complexité d’un algorithme ...............................................................................................58
VI.4. Le problème de l’arbre couvrant de poids minimum .......................................................... 59
VI.4.1. Définition du problème...................................................................................... 59
VI.4.2. Une application en réseaux ................................................................................59
VI.4.3. Une application en traitement d’images.............................................................59
VI.4.4. Algorithme de Kruskal.......................................................................................60
VI.4.5. Algorithme de Prim............................................................................................62
VI.5. Exercices............................................................................................................................. 64
VII. Problèmes de plus courts chemins........................................................................................65
VII.1. Définition des différents problèmes...................................................................................65
VII.1.1. Définitions nécessaires à ce chapitre ................................................................ 65
VII.1.2. Problèmes .........................................................................................................66
VII.2. Plus courts chemins d’un sommet à tous les autres : cas des valuations positives ............ 67
VII.2.1. Motivation ........................................................................................................67
VII.2.2. Algorithme de Dijkstra.....................................................................................67
VII.3. Plus courts chemins d’un sommet à tous les autres : cas des graphes sans circuit............. 69
VII.3.1. Motivation ........................................................................................................69
VII.3.2. Algorithme de Bellman..................................................................................... 70
VII.4. Plus courts chemins d’un sommet à tous les autres : cas général....................................... 71
VII.4.1. Motivation ........................................................................................................71
VII.4.2. Algorithme de Ford...........................................................................................71
VII.4.3. Algorithme général de Ford-Dantzig................................................................ 72
VII.5. Plus courts chemins de tout sommet à tout sommet : cas général...................................... 73
VII.6. Exercices............................................................................................................................ 74
VIII. Parcours de graphes.............................................................................................................79
VIII.1. Définition d’un algorithme de « parcours de graphe ».....................................................79
VIII.1.1. Cas orien....................................................................................................... 79
VIII.1.2. Cas non orienté................................................................................................ 82
VIII.1.3. Complexité......................................................................................................82
VIII.2. Les parcours « marquer-examiner ».................................................................................83
VIII.2.1. Généralités....................................................................................................... 83
VIII.2.2. Résultat d’un parcours « marquer-examiner » selon une file : le
parcours en largeur................................................................................................................ 84
VIII.2.3. Résultat d’un parcours « marquer-examiner » suivant une pile ...................... 84
VIII.3. Les parcours en profondeur.............................................................................................. 84
VIII.3.1. Le cas orienté...................................................................................................84
VIII.3.2. Le cas non orienté............................................................................................ 86
VIII.4. Applications des parcours en profondeur.........................................................................88
VIII.4.1. Application à la détermination des composantes fortement connexes ........... 88
VIII.4.2. Application à la détermination des sommets d’articulation d’un
graphe non orienté ................................................................................................................90
VIII.4.3. Application à la détermination des composantes 2-connexes d’un
graphe non orienté ................................................................................................................92
VIII.5. Exercices .......................................................................................................................... 93
IX. Flot maximum et coupe de capacité minimum.....................................................................95
IX.1. Introduction, théorème du flot et de la coupe...................................................................... 95
IX.1.1. Introduction........................................................................................................ 95
IX.1.2. Définitions, notations et problèmes.................................................................... 95
IX.1.3. Résultats théoriques ........................................................................................... 96
IX.1.4. Lien avec la programmation linéaire..................................................................97
IX.2. Algorithme de Ford et Fulkerson........................................................................................97
IX.2.1. Chaîne augmentante........................................................................................... 97
IX.2.2. Description de l’algorithme de Ford et Fulkerson.............................................. 99
IX.2.3. Un exemple........................................................................................................100
IX.2.4. Preuve, convergence et complexité de l’algorithme .......................................... 102
IX.3. Exercice...............................................................................................................................103
X. Applications de la théorie des flots.........................................................................................105
X.1. Application à la détermination des connectivités d’un graphe............................................ 105
X.1.1. Forte arc-connectivité d’un graphe orienté.......................................................... 105
X.1.2. Détermination de l’arête-connectivité d’un graphe non orienté .......................... 107
X.1.3. Forte connectivité d’un graphe orienté, connectivité d’un graphe non
orienté................................................................................................................................... 108
X.2. Couplage maximum dans un graphe biparti......................................................................... 108
X.2.1. Un exemple et quelques définitions.....................................................................108
1 / 174 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 !