4.2.4 Algorithme de Brelaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3 Théorie des matroïdes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3.1 Matroïdes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.3.2 Algorithme glouton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.4 Ordonnancement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.6 Références bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5 Tri 63
5.1 Tri rapide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.1.1 Coût . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.1.2 Médiane en temps linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.2 Tri fusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.3 Tri par tas : Heapsort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.3.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.3.2 Tri par tas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.3.3 Insertion d’un nouvel élément . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.3.4 Suppression d’un élément du tas . . . . . . . . . . . . . . . . . . . . . . . 66
5.4 Complexité du tri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4.1 Les grands théorèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4.2 Démonstration des théorèmes . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4.3 Peut-on atteindre la borne ? . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.6 Références bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6 Graphes 87
6.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2 Arbres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2.1 Caractérisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2.2 Parcours d’arbres binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.2.3 Arbres binaires de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.3 Structures de données pour les graphes . . . . . . . . . . . . . . . . . . . . . . . . 93
6.4 Accessibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.1 Rappels sur les relations binaires . . . . . . . . . . . . . . . . . . . . . . . 97
6.4.2 Chemins dans les graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.4.3 Fermeture transitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.5 Plus courts chemins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.5.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.5.2 Présentation des plus courts chemins . . . . . . . . . . . . . . . . . . . . . 101
6.5.3 Avec des poids positifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.5.4 Chemins algébriques dans les semi-anneaux . . . . . . . . . . . . . . . . . 102
6.5.5 Algorithme de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.6 Parcours en largeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.7 Parcours en profondeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.7.1 Première version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.7.2 Analyse fine du parcours en profondeur . . . . . . . . . . . . . . . . . . . 108
6.8 Tri topologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.9 Forte connexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.10 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.11 Références bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4