ii TABLE DES MATIÈRES
3.4.1 Adressage ouvert ..................... 15
3.4.2 Table de hachage ..................... 15
3.4.3 Exemple .......................... 16
4 Graphes et parcours de graphes 17
4.1 44 définitions de théorie des graphes ............... 17
4.1.1 Graphes .......................... 17
4.1.2 Chemins, cycles ...................... 17
4.1.3 Qualificatifs pour les graphes .............. 18
4.1.4 Structure de données ................... 18
4.2 Parcours en profondeur ...................... 19
4.2.1 Généralités ........................ 19
4.2.2 Application à la détection de cycles ........... 20
4.2.3 Tri topologique ...................... 21
4.2.4 Composantes fortement connexes ............ 21
4.3 Parcours en largeur ........................ 23
4.3.1 Algorithme ........................ 23
4.3.2 Terminaison et complexité ................ 23
4.3.3 Correction ......................... 24
4.3.4 Algorithme de Dijkstra ................. 24
5 Programmation dynamique 27
5.1 Exemple : suite de Fibonacci ................... 27
5.1.1 Algorithme naïf ...................... 27
5.1.2 Algorithme itératif .................... 27
5.1.3 Mémoïsation ........................ 27
5.2 Sous-structures optimales .................... 28
5.2.1 Découpage des barres ................... 28
5.2.2 Sous-structures ...................... 28
5.3 Plus court chemin ......................... 29
5.3.1 Cas sans cycle ....................... 29
5.3.2 Cycles positifs ....................... 30
5.3.3 Algorithme de Bellman-Ford ............. 30
5.3.4 Algorithme de Floyd-Warshall ........... 33
6 Algorithmes gloutons 35
6.1 Arbre couvrant de poids minimum ............... 35
6.1.1 Le problème ........................ 35
6.1.2 Algorithme de Kruskal .................. 35
6.1.3 Algorithme de Prim .................... 41
6.2 Approximation d’une couverture d’ensemble .......... 41