
4.3.3 Graphe d’intervalles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.4 Algorithme de Brelaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.4 Th´eorie des matro¨ıdes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.4.1 Matro¨ıdes.................................... 55
4.4.2 Algorithme glouton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.5 Ordonnancement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.6 Exercices ........................................ 58
4.7 R´ef´erences bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5 Tri 63
5.1 Trifusion ........................................ 63
5.2 Tri par tas : Heapsort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.2.1 D´efinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.2.2 Tripartas ................................... 64
5.2.3 Insertion d’un nouvel ´el´ement . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.2.4 Suppression d’un ´el´ement du tas . . . . . . . . . . . . . . . . . . . . . . . 65
5.2.5 Complexit´e du tri par tas . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.3 Trirapide ........................................ 65
5.3.1 Coˆut....................................... 66
5.3.2 M´ediane en temps lin´eaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.4 Complexit´e du tri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4.1 Les grands th´eor`emes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4.2 D´emonstration des th´eor`emes . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.4.3 Peut-on atteindre la borne ? . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5 Exercices ........................................ 71
5.6 R´ef´erences bibliographiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6 Graphes 87
6.1 D´efinitions........................................ 87
6.2 Arbres.......................................... 87
6.2.1 Caract´erisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2.2 Parcours d’arbres binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.2.3 Arbres binaires de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.3 Structures de donn´ees pour les graphes . . . . . . . . . . . . . . . . . . . . . . . . 93
6.4 Accessibilit´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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´efinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.5.2 Pr´esentation des plus courts chemins . . . . . . . . . . . . . . . . . . . . . 101
6.5.3 Avec des poids positifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6.5.4 Chemins alg´ebriques 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`ere version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.7.2 Analyse fine du parcours en profondeur . . . . . . . . . . . . . . . . . . . 108
6.8 Tri topologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.9 Forte connexit´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4