Vous êtes sur la page 1sur 126

Modlisation, Optimisation, Complexit et Algorithmes

KRAFT Benjamin Session 2005-2006

Table des matires


1 Dnitions sur les graphes
1.1 Graphes orients . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 Dnition d'un graphe orient . . . . . . . . . . . . . . . . 1.1.2 Exemple de graphe orient . . . . . . . . . . . . . . . . . 1.1.3 Dnition d'un chemin . . . . . . . . . . . . . . . . . . . . 1.1.4 Exemple de chemin . . . . . . . . . . . . . . . . . . . . . . 1.1.5 Dnition de la longueur d'un chemin . . . . . . . . . . . 1.1.6 Exemple de la longueur d'un chemin . . . . . . . . . . . . 1.1.7 Dnition d'un circuit . . . . . . . . . . . . . . . . . . . . 1.1.8 Exemple de circuit . . . . . . . . . . . . . . . . . . . . . . 1.1.9 Dnition d'une boucle . . . . . . . . . . . . . . . . . . . 1.1.10 Exemple de boucle . . . . . . . . . . . . . . . . . . . . . . 1.1.11 Dnition d'un chemin lmentaire . . . . . . . . . . . . . 1.1.12 Exemple de chemin lmentaire . . . . . . . . . . . . . . . 1.1.13 Dnition d'un chemin simple . . . . . . . . . . . . . . . . 1.1.14 Exemple de chemin simple . . . . . . . . . . . . . . . . . . 1.1.15 Dnition d'un graphe complet . . . . . . . . . . . . . . . 1.1.16 Exemple de graphe complet . . . . . . . . . . . . . . . . . Graphes non-orients . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 Dnition d'un graphe non-orient . . . . . . . . . . . . . 1.2.2 Exemple de graphe non-orient . . . . . . . . . . . . . . . 1.2.3 Dnition d'une chaine . . . . . . . . . . . . . . . . . . . 1.2.4 Exemple de chane . . . . . . . . . . . . . . . . . . . . . . 1.2.5 Dnition d'un cycle . . . . . . . . . . . . . . . . . . . . . 1.2.6 Exemple de cycle . . . . . . . . . . . . . . . . . . . . . . . 1.2.7 Dnition d'un graphe complet . . . . . . . . . . . . . . . 1.2.8 Exemple de graphe complet . . . . . . . . . . . . . . . . . 1.2.9 Dnition d'un graphe simple . . . . . . . . . . . . . . . . 1.2.10 Exemple de graphe simple . . . . . . . . . . . . . . . . . . Graphes connexes & fortement connexes . . . . . . . . . . . . . . 1.3.1 Dnition d'un graphe connexe . . . . . . . . . . . . . . . 1.3.2 Exemple de graphe connexe . . . . . . . . . . . . . . . . . 1.3.3 Dnition d'un graphe fortement connexe . . . . . . . . . 1.3.4 Exemple de graphe fortement connexe . . . . . . . . . . . Chemins et circuits Hamiltoniens . . . . . . . . . . . . . . . . . . 1.4.1 Dnition d'un chemin et d'un circuit Hamiltonien . . . . 1.4.2 Exemple de chemin et de circuit Hamiltonien . . . . . . . Degr et demi-degr d'un sommet . . . . . . . . . . . . . . . . . . 1.5.1 Graphes orients . . . . . . . . . . . . . . . . . . . . . . . 1.5.1.1 Dnition du demi-degr extrieur d'un sommet 1.5.1.2 Exemple de demi-degr extrieur d'un sommet . 1.5.1.3 Dnition du demi-degr intrieur d'un sommet 1.5.1.4 Exemple de demi-degr intrieur d'un sommet . 1.5.1.5 Dnition du degr d'un sommet . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 10 10 11 11 12 12 12 12 12 13 13 13 14 14 14 14 14 14 14

1.2

1.3

1.4 1.5

TABLE DES MATIRES

1.6 1.7 1.8

1.5.1.6 Exemple de degr d'un sommet . Graphes non-orients . . . . . . . . . . . . 1.5.2.1 Dnition du degr d'un sommet 1.5.2.2 Exemple de degr d'un sommet . Cocycle d'un graphe . . . . . . . . . . . . . . . . Application multivoque d'un graphe . . . . . . . Reprsentation des graphes . . . . . . . . . . . . 1.8.1 Matrice d'adjacence . . . . . . . . . . . . 1.8.1.1 Graphes orients . . . . . . . . . 1.8.1.2 Graphes non-orients . . . . . . 1.8.2 Liste d'adjacence . . . . . . . . . . . . . . 1.8.2.1 Graphes orients . . . . . . . . . 1.8.2.2 Graphes non-orients . . . . . . 1.8.3 Matrice d'incidence . . . . . . . . . . . . . 1.8.3.1 Graphes orients . . . . . . . . . 1.8.3.2 Graphes non-orients . . . . . . 1.5.2 Structures de donnes . . . . . . . . . . . . . . . 2.1.1 Liste linaire . . . . . . . . . . . . . . . . 2.1.1.1 Dnition . . . . . . . . . . . . . 2.1.1.2 Oprations . . . . . . . . . . . . 2.1.1.3 Implmentation d'une liste . . . 2.1.2 Pile . . . . . . . . . . . . . . . . . . . . . 2.1.2.1 Dnition . . . . . . . . . . . . . 2.1.2.2 Oprations . . . . . . . . . . . . 2.1.3 File . . . . . . . . . . . . . . . . . . . . . 2.1.3.1 Dnition . . . . . . . . . . . . . 2.1.3.2 Oprations . . . . . . . . . . . . Parcours en profondeur d'un graphe . . . . . . . 2.2.1 Principe . . . . . . . . . . . . . . . . . . . 2.2.2 Algorithme . . . . . . . . . . . . . . . . . 2.2.3 Vrication de l'algorithme . . . . . . . . 2.2.4 Fort courante du parcours en profondeur Parcours en largeur d'un graphe . . . . . . . . . 2.3.1 Mthode de parcours . . . . . . . . . . . . 2.3.2 Principe . . . . . . . . . . . . . . . . . . . 2.3.3 Algorithme . . . . . . . . . . . . . . . . . 2.3.4 Vrication de l'algorithme . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14 15 15 15 16 17 18 18 18 18 19 19 19 20 20 21

2 Mthodes de parcours de graphe


2.1

22

2.2

2.3

23 23 23 23 23 24 24 24 24 24 24 25 25 25 26 27 28 28 28 29 29 32 33 33 33 33 34 34 36 36 36 37 37

3 Reprsentation matricielle d'un graphe


3.1 3.2

3.3

Matrice boolenne - matrice aux arcs d'un graphe . . . . Existence et dnombrement de chemins dans un graphe 3.2.1 Dnition . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Matrice boolenne . . . . . . . . . . . . . . . . . 3.2.3 Matrice aux arcs . . . . . . . . . . . . . . . . . . 3.2.4 Chemins lmentaires - chemins hamiltoniens . . 3.2.4.1 Dnition . . . . . . . . . . . . . . . . . Fermeture transitive d'un graphe . . . . . . . . . . . . . 3.3.1 Dnition . . . . . . . . . . . . . . . . . . . . . . 3.3.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Algorithme de Warshall . . . . . . . . . . . . . . 3.3.4 Mthode matricielle . . . . . . . . . . . . . . . .

31

Page 2

TABLE DES MATIRES

4 Chemins optimaux dans un graphe


4.1 4.2 4.3 4.4 5.1 5.2 5.3 6.1 6.2 Introduction . Algorithme de Algorithme de Algorithme de . . . . . Dijkstra Ford . . Floyd . . . . . . . . . . . . . . . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

39

40 41 43 45 48 49 51

5 Problmes d'ordonnancement

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mthode MPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mthode PERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

6 Flot maximal sur un rseau de transport


Dnitions . . . . . . . . . . . . . . . . . 6.1.1 Rseau de transport . . . . . . . 6.1.2 Flot dans un rseau de transport Algorithme de Ford-Fulkerson . . . . . . 6.2.1 Graphe d'cart . . . . . . . . . . 6.2.2 nonc de l'algorithme . . . . . . 6.2.3 Application de l'algorithme . . . Proprits sur les ots . . . . . . . . . . 6.3.1 Flot complet . . . . . . . . . . . 6.3.2 Coupe . . . . . . . . . . . . . . . 6.3.3 Capacit d'une coupe . . . . . . 6.3.4 Flot maximal . . . . . . . . . . . Problme particulier de transport . . . . 6.4.1 Enonc du problme . . . . . . . 6.4.2 Algorithme du Stepping Stone .

52

6.3

6.4

53 53 53 55 55 55 56 57 57 57 57 57 58 58 59 64 64 64 65 66

7 Arbre couvrant de cot minimum


7.1 7.2 7.3 8.1

Dnitions . . . . . . . . . . . . . . . . . . 7.1.1 Arbre . . . . . . . . . . . . . . . . 7.1.2 Arbre couvrant de cot minimum . Algorithme de Kruskal . . . . . . . . . . . Algorithme de Prim . . . . . . . . . . . .

63

8 Complexit des algorithmes

8.2

Temps d'excution d'un programme et complexit d'un algorithme . . . . . . . . . . . . . 8.1.1 Exemple 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.1.1 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.1.2 But . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.1.3 Dcoupage en nombre d'instructions de base de l'algorithme . . . . . . . 8.1.1.4 Somme des instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.2 Exemple 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.2.1 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.2.2 Evaluation du nombre d'tapes de l'algorithme . . . . . . . . . . . . . . . 8.1.2.3 Calcul du nombre d'tapes excutes par l'algorithme en ne tenant compte que de l'tape lmentaire . . . . . . . . . . . . . . . . . . . . . . . . . . . Ordre de grandeur d'un algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.1 Reprise de l'exemple de recherche de l'indice du plus petit lment d'un tableau . . 8.2.2 Reprise du tri par permutation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.3 Echelle de comparaison de la complexit des algorithmes . . . . . . . . . . . . . . .

67

68 68 68 68 68 69 69 69 70 70 71 73 73 74 74

Page 3

TABLE DES MATIRES

9 Les rseau de Ptri


9.1 9.2 9.3

Dnition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisation d'un rseau de Ptri . . . . . . . . . . . . . . . . . . . . . . . Proprits des rseaux de Ptri . . . . . . . . . . . . . . . . . . . . . . . 9.3.1 Rseau de Ptri vivant . . . . . . . . . . . . . . . . . . . . . . . . 9.3.2 Rseau de Ptri pseudo-vivant . . . . . . . . . . . . . . . . . . . 9.3.3 Rseau de Ptri born . . . . . . . . . . . . . . . . . . . . . . . . 9.3.4 Rseau de Ptri avec conits . . . . . . . . . . . . . . . . . . . . 9.3.4.1 Conits structurels . . . . . . . . . . . . . . . . . . . . 9.3.4.2 Conit eectif . . . . . . . . . . . . . . . . . . . . . . . 9.3.5 Recherche de proprits dans un rseau de Ptri . . . . . . . . . 9.3.5.1 Mthode du graphe des marquages . . . . . . . . . . . . 9.3.5.2 Mthode de l'arborescence et graphe de couverture d'un . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de Ptri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

75

76 77 78 78 78 79 79 79 80 80 80 80

A Exercices

A.1 Exercice 1 . . . . A.1.1 Questions A.1.2 Rponses A.2 Exercice 2 . . . . A.2.1 Questions A.2.2 Rponses A.3 Exercice 3 . . . . A.3.1 Questions A.3.2 Rponses A.4 Exercice 4 . . . . A.4.1 Questions A.4.2 Rponses A.5 Exercice 5 . . . . A.5.1 Questions A.5.2 Rponses A.6 Exercice 7 . . . . A.6.1 Questions A.6.2 Rponses A.7 Exercice 8 . . . . A.7.1 Questions A.7.2 Rponses A.8 Exercice 9 . . . . A.8.1 Questions A.8.2 Rponses A.9 Exercice 11 . . . A.9.1 Questions A.9.2 Rponses A.10 Exercice 12 . . . A.10.1 Questions A.10.2 Rponses A.11 Exercice 13 . . . A.11.1 Questions A.11.2 Rponses A.12 Exercice 14 . . . A.12.1 Questions A.12.2 Rponses A.13 Exercice 15 . . . A.13.1 Questions A.13.2 Rponses A.14 Exercice 17 . . . A.14.1 Questions

84 84 84 86 86 86 87 87 88 89 89 90 91 91 91 92 92 92 96 96 96 98 98 98 99 99 100 102 102 102 104 104 104 105 105 105 106 106 107 108 108

83

Page 4

TABLE DES MATIRES

A.14.2 Rponses A.15 Exercice 17b . . A.15.1 Questions A.15.2 Rponses A.16 Exercice 19 . . . A.16.1 Questions A.16.2 Rponses A.17 Exercice 18 . . . A.17.1 Questions A.17.2 Rponses A.18 Exercice 20 . . . A.18.1 Questions A.18.2 Rponses A.19 Exercice 21 . . . A.19.1 Questions A.19.2 Rponses

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

108 111 111 112 114 114 115 117 117 117 120 120 120 121 121 121

Page 5

Chapitre 1

Dnitions sur les graphes

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

1.1 Graphes orients


1.1.1 Dnition d'un graphe orient
Un graphe orient est dni par le doublet <X,U> o :  X est l'ensemble des sommets du graphe  U est l'ensemble des arcs du graphe

1.1.2 Exemple de graphe orient


U4 2 U1 1 U2 U3 3 U6 U5 5 U8 U9 U7 4

Fig.

1.1: Exemple de graphe orient.

X = {1, 2, 3, 4, 5} U = {u1 , u2 , u3 , u4 , u5 , u6 , u7 , u8 , u9 }

1.1.3 Dnition d'un chemin


Un chemin est dni par une liste de sommets (1,2,...,k) tel qu'il existe un arc de chaque sommet vers le suivant.

1.1.4 Exemple de chemin


Voir la gure 1.1 la page 7

P1 = {1, 2, 3, 4} P1 = {u1 , u3 , u4 }

1.1.5 Dnition de la longueur d'un chemin


La longueur d'un chemin est dnie par le nombre d'arcs composant le chemin.

1.1.6 Exemple de la longueur d'un chemin


Voir la gure 1.1 la page 7

L(P1 ) = 3

1.1.7 Dnition d'un circuit


Un circuit est un chemin d'un sommet vers lui-mme.

1.1.8 Exemple de circuit


Voir la gure 1.1 la page 7

P2 = {1, 2, 3, 4, 5, 1} P2 = {u1 , u3 , u6 , u5 }
Page 7

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

1.1.9 Dnition d'une boucle


Une boucle est un circuit de longueur 1

1.1.10 Exemple de boucle


Voir la gure 1.1 la page 7

P3 = {5, 5} P3 = {u8 }

1.1.11 Dnition d'un chemin lmentaire


Un chemin lmentaire est un chemin tel qu'en le parcourant, on ne rencontre pas deux fois le mme sommet.

1.1.12 Exemple de chemin lmentaire


Voir la gure 1.1 la page 7

P4 = {1, 2, 3} P5 = {2, 1, 2, 3, 4}

est un chemin lmentaire n'est pas un chemin lmentaire

1.1.13 Dnition d'un chemin simple


Un chemin simple est un chemin ne passant pas plus d'une fois par le mme arc.

1.1.14 Exemple de chemin simple


Voir la gure 1.1 la page 7

P6 = {2, 1, 2, 3, 4} P6 = {u2 , u1 , u3 , u4 } P7 = {1, 2, 1, 2, 3} P7 = u1 , u2 , u1 , u3

est un chemin simple n'est pas un chemin simple

1.1.15 Dnition d'un graphe complet


Un graphe est dit comple si chaque sommet possde un1 arc vers tout autre sommet y compris luimme.

1.1.16 Exemple de graphe complet


1 2

Fig.

1.2: Exemple de graphe orient complet.

N sommets N 2 arcs
1 et un seul

Page 8

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

1.2 Graphes non-orients


1.2.1 Dnition d'un graphe non-orient
Un graphe non-orient G est dni par le doublet <X,U> o :  X est l'ensemble des sommes du graphe  U est l'ensemble des artes

1.2.2 Exemple de graphe non-orient


U4 2 U1 1 U2 U1 3 U6 U5 5 U8 U9 U7 4

Fig.

1.3: Exemple de graphe non-orient.

X = {1, 2, 3, 4, 5} U = {u1 , u2 , u3 , u4 , u5 , u6 , u7 , u8 , u9 }

1.2.3 Dnition d'une chaine


Une chane est une squence d'artes conscutives.

1.2.4 Exemple de chane


Voir la gure 1.3 la page 9

P8 = {1, 2, 3} P8 = {u1 , u3 }

1.2.5 Dnition d'un cycle


Un cycle est une chane ferme.

1.2.6 Exemple de cycle


Voir la gure 1.3 la page 9

P9 = {1, 2, 3, 5, 1} P9 = {u1 , u3 , u6 , u5 }

Page 9

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

10

1.2.7 Dnition d'un graphe complet


Un graphe est dit complet si chaque sommet possde une1 arte vers tout autre sommet y compris lui-mme.

1.2.8 Exemple de graphe complet


1 2

Fig.

1.4: Exemple de graphe non-orient complet.

N sommets

N (N + 1) artes 2

Dmonstation de la formule ci-dessus :

S = N + (N + 1) + ... + 1 S = 1 + 2 + ... + (N 1) + N 2S = (N + 1) + ... + (N + 1) N fois 2S = N (N + 1) S= N (N + 1) 2

Sommet Sommet Sommet Sommet Sommet Sommet Sommet Sommet

1 2 3 4

: : : :

4 artes 3 artes 2 artes 1 arte

De faon plus gnrale, on peut dire :

1 : N artes 2 : N-1 artes . . . : . . . artes N : 1 arte

1 et une seule

Page 10

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

11

1.2.9 Dnition d'un graphe simple


Un graphe est dit simple si1 il ne comporte pas de boucle et s'il n'y pas plus d'une arte entre deux sommets quelconques.

1.2.10 Exemple de graphe simple


1 2

Fig.

1.5: Exemple de graphe non-orient simple.

1 et seulement si

Page 11

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

12

1.3 Graphes connexes & fortement connexes


1.3.1 Dnition d'un graphe connexe
Un graphe non-orient est dit connexe si pour tout couple de sommet (i, j), il existe une chane joignant i et j.

1.3.2 Exemple de graphe connexe


1 2 1 4

3 Connexe

2 Non-connexe

Fig.

1.6: Exemple de graphe connexe.

1.3.3 Dnition d'un graphe fortement connexe


Un graphe orient est dit fortement connexe s'il existe un chemin entre tout couple de sommet.

1.3.4 Exemple de graphe fortement connexe


2 4 5

6 1

C1

C2

Fig.

1.7: Exemple de graphe non-fortement connexe ayant deux composantes fortement connexes

Ce graphe n'est pas connexe mais il contient deux sous-graphes fortement connexes. C1 = {1, 2, 3}

C2 = {4, 5, 6, 7}
C1 C 2

On peut en dduire un graphe rduit reprsentant les deux composantes fortement connexes
Fig.

1.8: Exemple de graphe rduit

Page 12

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

13

1.4 Chemins et circuits Hamiltoniens


1.4.1 Dnition d'un chemin et d'un circuit Hamiltonien
Un chemin Hamiltonien est un chemin passant une fois1 par chaque sommet du graphe. Un circuit est un chemin Hamiltonien se refermant sur son sommet d'origine.

1.4.2 Exemple de chemin et de circuit Hamiltonien


2 U1 3 U3 U5 1 U6 5 U4 U2 4

U7

Fig.

1.9: Exemple de chemin et de circuit Hamiltonien

H = {1, 2, 4, 3, 5} est un chemin Hamiltonien C = {1, 2, 4, 3, 5, 1} est un circuit Hamiltonien


1 Et une seule fois

Page 13

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

14

1.5 Degr et demi-degr d'un sommet


1.5.1 Graphes orients
1.5.1.1 Dnition du demi-degr extrieur d'un sommet
On appelle le demi-degr extrieur d'un sommet i not d+ le nombre d'arcs ayant pour extrmit i initiale le sommet i et comme extrmit nale j avec i =j

1.5.1.2 Exemple de demi-degr extrieur d'un sommet


U2 1 U1

d+ = 1 1

U3

Fig.

1.10: Exemple montrant un sommet pour les degrs/demi-degrs d'un graphe orient

1.5.1.3 Dnition du demi-degr intrieur d'un sommet


On appelle le demi-degr extrieur d'un sommet i not d le nombre d'arcs ayant pour extrmit i nale le sommet i et comme extrmit initiale j avec i =j

1.5.1.4 Exemple de demi-degr intrieur d'un sommet


Voir la gure 1.10 la page 14 d = 1 1

1.5.1.5 Dnition du degr d'un sommet


On appelle le degr d'un sommet i not di le nombre d'arcs ayant une1 extrmit en ce sommet.

1.5.1.6 Exemple de degr d'un sommet


Voir la gure 1.10 la page 14

d1 = 2
1 Et une seule

Page 14

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

15

1.5.2 Graphes non-orients


1.5.2.1 Dnition du degr d'un sommet
On appelle le degr d'un sommet i le nombre d'artes ayant une1 extrmit en ce sommet.

1.5.2.2 Exemple de degr d'un sommet


U2 1 U1

d1 = 2

U3

Fig.

1.11: Exemple montrant un sommet pour le degr d'un graphe non-orient

1 Et une seule

Page 15

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

16

1.6 Cocycle d'un graphe


U1 1 U4 U3 2 U5 A U2 4 3

U6

Fig.

1.12: Exemple montrant le cocycle d'un graphe

Soit :  G =< X, U >  X = {1, 2, 3, 4}  U = {u1 , u2 , u3 , u4 , u5 , u6 }  A = {1, 2} Le cocyle de l'ensemble A est not (A)

(A) = + (A) + (A) + (A) est l'ensemble d'arcs ayant leur extrmit initiale dans A et leur extrmit terminale dans A + (A) = {u1 , u2 } (A) est l'ensemble d'arcs ayant leur extrmit initiale dans A et leur extrmit terminale dans A (A) = {u4 , u5 } (A) = {u1 , u2 , u4 , u5 }
Remarque pour les graphes non-orients : (A) est l'ensemble des artes ayant une extrmit dans A et l'autre dans A

Page 16

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

17

1.7 Application multivoque d'un graphe


1 U1 2

U2 3

U3

Fig.

1.13: Exemple d'application multivoque d'un graphe

Soit :  G =< X, U >  X = {1, 2, 3}  U = {u1 , u2 , u3 } Sommet 1 : 1 est l'ensemble des successeurs du sommet 1 Sommet i : i est l'ensemble des successeurs du sommet i

i est l'application multivoque qui fait correspondre X une partie de X i : X P (X) 1 = {2, 3} 2 = {3} 3 = 0
On peut galement dnir le graphe par son application multivoque : G =< X, >=< X, U > 1 est l'application multivoque rciproque d'un graphe1 1

Faire l'exercice 1 la page 84


1 L'ensemble des prdecesseurs du sommet i

Page 17

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

18

1.8 Reprsentation des graphes


1.8.1 Matrice d'adjacence
1.8.1.1 Graphes orients
G =< X, U > Soit N le nombre de sommets et A la matrice d'adjacence A = (aij ) avec i [1, N ] et j [1, N ] Pour complter la matrice il convient de le faire de la sorte : 1  aij = 1 si (i,j) U 2  aij = 0 si (i,j) U

1 2 3 4

1 0 0 1 0

2 1 1 0 0

3 1 1 0 1

4 1 1 0 0

Fig.

1.14: Exemple de graphe orient pour exemple de matrice d'adjacence

1.8.1.2 Graphes non-orients


G =< X, U > Soit N le nombre de sommets et A la matrice d'adjacence A = (aij ) avec i [1, N ] et j [1, N ] Pour complter la matrice il convient de le faire de la sorte : 3  aij = 1 et aji = 1 si (i,j) U 4  aij = 0 et aij = 0 si (i,j) U

1 2 3 4

1 0 1 1 1

2 1 1 0 0

3 1 0 0 1

4 1 0 1 0

Fig.

1.15: Exemple de graphe non-orient pour exemple de matrice d'adjacence

1 Il 2 Il 3 Il 4 Il

faut faut faut faut

mettre mettre mettre mettre

un un un un

1 0 1 0

s'il s'il s'il s'il

existe un arc n'existe pas d'arc existe un arc n'existe pas d'arc

Page 18

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

19

1.8.2 Liste d'adjacence


1.8.2.1 Graphes orients
 G =< X, U >  N est le nombre de sommets  M est le nombre d'arcs
1

N LP M LS 1 1 2 3 3 1

1 1 4 3

2 3 5 1

3 5 6 2

4 7 7 X

N+1 lments

M+1 lments

Fig.

1.16: Exemple de graphe orient pour exemple de liste d'adjacence

Mthode : Les successeurs du sommet i se trouvent entre les indices LP [i] et LP [i + 1] 1 du tableau LS

1.8.2.2 Graphes non-orients


 G =< X, U >  N est le nombre de sommets  M est le nombre d'artes
1

N LP M LS 1 1 2 2 3 1

1 1 4 3

2 3 5 2

3 5 6 X

4 6

N+1 lments

2M+1 lments

Fig.

1.17: Exemple de graphe non-orient pour exemple de liste d'adjacence

Page 19

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

20

1.8.3 Matrice d'incidence


1.8.3.1 Graphes orients
 G =< X, U >  N est le nombre de sommets  M est le nombre d'arcs Soit A la matrice d'incidence : A = (aij ) avec i [1, N ] et j [1, M ] Pour complter la matrice il convient de le faire de la sorte : 1  aij = 1 si uj + (i) 2  aij = 1 si uj (i)  aij = 0 dans les autres cas
A u1 B 1

u4 F u5

u2

u3 E

Fig.

1.18: Exemple de graphe orient pour exemple de matrice d'incidence

Dans ce cas on voit bien que : + (1) = {u1 , u2 }

(1) = + (2) = {u3 , u4 } (2) = {u1 }


Et ainsi de suite on peut remplir la matrice suivante : 1 2 3 4
1 Les arcs partant du sommet i 2 Les arcs arrivant au sommet i

1 1 -1 0 0

2 1 0 -1 0

3 0 1 -1 0

4 0 1 0 -1

5 0 0 1 -1

Page 20

CHAPITRE 1. DFINITIONS SUR LES GRAPHES

21

1.8.3.2 Graphes non-orients


 G =< X, U >  N est le nombre de sommets  M est le nombre d'arcs Soit A la matrice d'incidence : A = (aij ) avec i [1, N ] et j [1, M ] Pour complter la matrice il convient de le faire de la sorte : 1  aij = 1 si uj (i)  aij = 0 dans les autres cas
A u1 B 1

u4 F u5

u2

u3 E

Fig.

1.19: Exemple de graphe non-orient pour exemple de matrice d'incidence

(1) = {u1 , u2 } (2) = {u1 , u3 , u4 } (2) = {u2 , u3 , u5 } (2) = {u4 , u5 }


1 2 3 4 1 1 0 0 0 2 1 0 1 0 3 0 1 1 0 4 0 1 0 1 5 0 0 1 1

Faire les exercices 2 la page 86 et 3 la page 87

1 Les boucles ne comptent pas

Page 21

Chapitre 2

Mthodes de parcours de graphe

22

CHAPITRE 2. MTHODES DE PARCOURS DE GRAPHE

23

2.1 Structures de donnes


2.1.1 Liste linaire
2.1.1.1 Dnition
Une liste linaire est une suite nie de n lments de mme type que l'on note L = (e1 , ..., en )

2.1.1.2 Oprations
 Initialiser (L) L  Chercher (x, L) p
1 2

2.1.1.3 Implmentation d'une liste


Tableau :
L 1 2 3 4 N

Fig.

2.1: Reprsentation d'une liste linaire sous forme d'un tableau

Liste chaine :
information suivant

Fig.

2.2: Reprsentation d'une liste linaire sous forme de liste chane

1 Initialise la liste L vide 2 Cherche l'lment x dans la liste L et rend la position p de l'lment

Page 23

CHAPITRE 2. MTHODES DE PARCOURS DE GRAPHE

24

2.1.2 Pile
2.1.2.1 Dnition
Une pile est une liste linaire o les insertions et suppressions ne se font que d'une extrmit
insertion sommet extraction

Fig.

2.3: Reprsentation d'une pile

2.1.2.2 Oprations
    

Initialiser (P ) P Empiler (x, P ) P Depiler (P ) P Sommet (P ) x P ileV ide (P ) b

1 2 3 4 5 6

2.1.3 File
2.1.3.1 Dnition
Une le est une liste linaire o les insertions se font d'une extrmit, et les extractions de l'autre
extraction insertion

tete

queue

Fig.

2.4: Reprsentation d'une le

2.1.3.2 Oprations
    

Initialiser (F ) F Enf iler (x, F ) P Def iler (F ) P 10 T ete (F ) x F ileV ide (F ) b

7 8 9 11 12

1 Initialise la pile P vide 2 Ajoute l'lment x dans la pile P 3 Retire l'lment le plus rcent de la pile P 4 Renvoit l'lment le plus rcent de la pile P 5 Indique si la pile est vide 6 b est un boolen valant vrai si P est vide ou faux s'il existe au mois un lment 7 Initialise la le F vide 8 Ajoute l'lment x dans la pile F 9 Retire l'lment le plus rcent de la pile F 10 Renvoit l'lment le plus rcent de la pile F 11 Indique si la le est vide 12 b est un boolen valant vrai si F est vide ou faux s'il existe au mois un lment

Page 24

CHAPITRE 2. MTHODES DE PARCOURS DE GRAPHE

25

2.2 Parcours en profondeur d'un graphe


S7 S1 S5 S8

S6

S3

S2

S4

S9

Fig.

2.5: Exemple de graphe orient pour le parcours en profondeur

S1

S3 S5 S7 S9

S2 S6

S4 S8

2.2.1 Principe
On part d'un sommet X du graphe et on s'en loigne le plus possible en cheminant le long des arcs dans l'ordre lexicographique1 . Si l'en rencontre un cul de sac, on revient en arrire et on repart. On ne s'arrte que lorsque tous les sommets ont t visits.

2.2.2 Algorithme
    M est la matrice d'adjacence du graphe N est le nombre de sommets S est le sommet courant L est la liste des sommets visits2

ParcoursProfondeur(S) Dbut L[S] = VRAI Pour i allant de 1 N faire Si M[S,i] != 0 et L[i] = FAUX alors ParcoursProfondeur(i) Fin Si Fin Pour Fin
1 L'ordre logique des sommets 2 Chaque case contient vrai si le sommet dj t visit, faux sinon

Page 25

CHAPITRE 2. MTHODES DE PARCOURS DE GRAPHE

26

ProgrammePrincipal Dbut Pour i allant de 1 N faire L[i] = FAUX Fin pour Pour i allant de 1 N faire Si L[i] = FAUX alors ParcoursProfondeur(i) Fin Si Fin Pour Fin

2.2.3 Vrication de l'algorithme


Matrice d'adjacence : 1 2 3 4 5 6 7 8 9

S1 0 1 0 0 0 0 0 0 0

S2 0 0 1 1 0 0 0 0 0

S3 1 0 0 0 0 0 0 0 0

S4 0 0 0 0 0 0 0 1 0

S5 1 0 0 0 0 0 0 1 0

S6 1 0 1 0 0 0 1 0 0

S7 1 0 0 0 0 0 0 0 0

S8 0 0 0 0 0 0 0 0 0

S9 0 0 0 1 0 0 0 0 0

volution du tableau L : L Initialisation P P (S1 )

P P (S4 ) P P (S8 )

P P (S3 ) P P (S5 ) P P (S7 ) P P (S9 )

P P (S2 ) P P (S6 )

S1 F V V V V V V V V V

S2 F F F V V F F V F V

S3 F F V V V V V V V V

S4 F F F F F F F V V V

S5 F F F F F V V V V V

S6 F F F F V V V V V V

S7 F F F F F F V V V V

S8 F F F F F F F F F V

S9 F F F F F F F F V V

Page 26

CHAPITRE 2. MTHODES DE PARCOURS DE GRAPHE

27

2.2.4 Fort courante du parcours en profondeur

S1

S4

S8

S3

S5

S7

S9

S2

S6

Fig.

2.6: Reprsentation de la fort courante dduite du parcours en profondeur

 arcs couvrants (noir ) : arc reliant un sommet x un sommet y tel que P arcoursP rof ondeur (x) P arcoursP rof ondeur (y)  arcs arrires (vert ) : arc reliant un sommet x un sommet y tel que x soit un descendant de y dans l'arborescence  arcs avant (bleu ) : arc reliant un sommet x un sommet y tel que x soit un anctre de y dans l'arborescence  arcs croiss (rouge ) : arc reliant deux sommets d'une ou deux arborescences

Faire les exercices 4 la page 89 et 5 la page 91

Page 27

CHAPITRE 2. MTHODES DE PARCOURS DE GRAPHE

28

2.3 Parcours en largeur d'un graphe


B H I

A C

L D F E

Fig.

2.7: Exemple de graphe non-orient pour raliser le parcours en largeur d'un graphe

2.3.1 Mthode de parcours


    On On On On slectionne slectionne slectionne slectionne un les les les sommet A de dpart sommets B, C, F, G qui sont une distance 1 du sommet de dpart sommets D, E, H, J, L qui sont une distance 2 du sommet de dpart sommets I, K, M qui sont une distance 3 du sommet de dpart

2.3.2 Principe
    On On On On part d'un sommet X du graphe visite tous les sommets adjacents X visite ensuite tous les sommets adjacents ceux-ci et ainsi de suite. ne s'arrte que lorsque tous les sommets ont t visits

Page 28

CHAPITRE 2. MTHODES DE PARCOURS DE GRAPHE

29

2.3.3 Algorithme
     M est la matrice d'adjacence du graphe N est le nombre de sommets F est une File S est le sommet courant L est la liste contenant l'tat de chaque sommet1

ParcoursLargeur(S) Dbut F = Initialiser(F) L[S] = VRAI F = Enfiler(S, F) Tant que (non(FileVide(F)) faire T = Tte(F) F = Dfiler(F) Pour i allant de 1 N faire Si M[T, i] = 0 et L[i] = FAUX alors F = Enfiler(i, F) L[i] = VRAI Fin Si Fin Pour Fin Tant que Fin ProgrammePrincipal Dbut Pour i allant de 1 N faire Si L[i] = FAUX alors ParcoursLargeur(i) Fin Si Fin Pour Fin

2.3.4 Vrication de l'algorithme


Matrice d'adjacence : A B C D E F G H I J K L M A 0 1 1 0 0 1 1 0 0 0 0 0 0 B 1 0 0 0 0 0 0 0 0 0 0 0 0 C 1 0 0 0 0 0 1 0 0 0 0 0 0 D 0 0 0 0 1 1 0 0 0 0 0 0 0 E 0 0 0 1 0 1 1 0 0 0 0 0 0 F 1 0 0 1 1 0 0 0 0 0 0 0 0 G 1 0 1 0 1 0 0 1 0 1 0 1 0 H 0 0 0 0 0 0 1 0 1 0 0 0 0 I 0 0 0 0 0 0 0 1 0 0 0 0 0 J 0 0 0 0 0 0 1 0 0 0 1 1 0 K 0 0 0 0 0 0 0 0 0 1 0 0 0 L 0 0 0 0 0 0 1 0 0 1 0 0 1 M 0 0 0 0 0 0 0 0 0 0 0 1 0

1 Chaque case contient vrai si le sommet dj t visit, faux sinon

Page 29

CHAPITRE 2. MTHODES DE PARCOURS DE GRAPHE

30

volution du tableau L : L Init T =A T = T =B T =C T =F T =G T =D T =E T =H T =J T =L T =I T =K T =M A F V V V V V V V V V V V V V V B F F V V V V V V V V V V V V V C F F V V V V V V V V V V V V V D F F F F F V V V V V V V V V V E F F F F F V V V V V V V V V V F F F V V V V V V V V V V V V V G F F V V V V V V V V V V V V V H F F F F F F V V V V V V V V V I F F F F F F F F F V V V V V V J F F F F F F V V V V V V V V V K F F F F F F F F F F V V V V V L F F F F F F V V V V V V V V V M F F F F F F F F F F V V V V V Contenu de F F = {A} F = F = {B, C, F, G} F = {C, F, G} F = {F, G} F = {G, D, E} F = {D, E, H, J, L} F = {E, H, J, L} F = {H, J, L} F = {J, L, I} F = {L, I, K, M } F = {I, K, M } F = {K, M } F = {M } F ={ }

Application : Une des applications possibles serait la recherche du plus court chemin, en nombre d'artes entre un sommet donn et les autres sommets du graphe. Ceci est possible en modiant lgrement l'algorithme de la fonction ParcoursLargeur prcedemment nonc :

ParcoursLargeur(S) Dbut F = Initialiser(F) L[S] = 0 F = Enfiler(S, F) Tant que (non(FileVide(F)) faire T = Tte(F) F = Dfiler(F) Pour i allant de 1 N faire Si M[T, i] = 0 et L[i] = FAUX alors F = Enfiler(i, F) L[i] = L[T] + 1 Fin Si Fin Pour Fin Tant que Fin
Ce qui donnerait la n de l'application de l'algorithme modi le rsultat suivant dans la liste L :

L=

A 0

B 1

C 1

D 2

E 2

F 1

G 1

H 2

I 3

J 2

K 3

L 2

M 3

Page 30

Chapitre 3

Reprsentation matricielle d'un graphe

31

CHAPITRE 3. REPRSENTATION MATRICIELLE D'UN GRAPHE

32

3.1 Matrice boolenne - matrice aux arcs d'un graphe


Soit le graphe orient G =< X, U > comportant N sommets :

B A C

Fig.

3.1: Exemple de graphe orient pour raliser les matrices boolennes et aux arcs

Il peut tre reprsent par une matrice d'adjacence (matrice boolenne) ou par une matrice aux arcs. Matrice d'adjacence ou matrice boolenne :

M = (aij ) ou i et j varient de 1 N On a pour chaque lment de la matrice :  aij = 1 si (i, j) U  aij = 0 si (i, j) U /
A B C D E A 0 0 0 1 1 B 1 1 0 0 0 C 1 1 0 0 1 D 0 0 1 0 0 E 1 0 0 1 0

M=

Matrice aux arcs :

A = (aij ) ou i et j varient de 1 N On a pour chaque lment de la matrice :  aij = ij si (i, j) U  aij = 0 si (i, j) U /
A B A= C D E A 0 0 0 DA EA B AB BB 0 0 0 C AC BC 0 0 EC D 0 0 CD 0 0 E AE 0 0 DE 0

Page 32

CHAPITRE 3. REPRSENTATION MATRICIELLE D'UN GRAPHE

33

3.2 Existence et dnombrement de chemins dans un graphe


3.2.1 Dnition
L'existence et le dnombrement de chemins de longueur k dans un graphe se fait en levant la puissance k la matrice boolenne aux arcs.

3.2.2 Matrice boolenne


On prend la matrice boolenne M, on l'lve successivement au carr, au cube, ..., la puissance k pour dterminer le nombre de chemins de longueur 2,3,...,k

Calcul de M 2
M2 = M M
0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 2 1 0 2 1 1 1 0 0 1 0 0 1 1 1

M2 =

L'intersection de la ligne i et de la colonne j de la matrice M 2 donne le nombre de chemins de longueur 2 entre les sommets i et j Plus gnralement l'intersection de la ligne i et de la colonne j de la matrice M k donne le nombre de chemins de longueur k entre les sommets i et j

3.2.3 Matrice aux arcs


On prend la matrice aux arcs A, on l'lve successivement au carr, au cube, ..., la puissance k pour dterminer le nombre de chemins de longueur 2,3,...,k ainsi que leur composition. L'intrt d'une telle reprsentation par rapport la reprsentation par matrice boolenne est que l'on peut lire directement dans Ak la composition des chemins de longueur k.

Calcul de A2
A2 = M M
0 0 0 DA EA AB BB 0 0 0 AC BC 0 0 EC 0 0 CD 0 0 AE 0 0 DE 0 0 0 0 DA EA AB BB 0 0 0 AC BC 0 0 EC 0 0 CD 0 0 AE 0 0 DE 0

A2 =

A B A2 = C D E

A AEA 0 CDA DEA 0

B ABB BBB 0 DAB EAB

C ABC, AEC BBC 0 DAC, DEC EAC

D ACD BCD 0 0 ECD

E 0 0 CDE DAE EAE

Page 33

CHAPITRE 3. REPRSENTATION MATRICIELLE D'UN GRAPHE

34

La mthode pour lever la matrice aux arcs au carr, au cube, etc, est d'adopter les lois de composition suivantes pour l'addition et la multiplication :  La multiplication revient concatner 2 chemins AB BC ABC  L'addition est quivalente la runion ensembliste (A, B, C) + (A, E, C) ils gurent dans la mme case de la matrice aux arcs A2 L'intersection de la ligne i et de la colonne j de la matrice A2 donne le nombre de chemins de longueur 2 entre les sommets i et j ainsi que leur composition. Plus gnralement, l'intersection de la ligne i et de la colonne j de la matrice Ak donne le nombre de chemins de longueur k entre les sommets i et j ainsi que leur composition.

3.2.4 Chemins lmentaires - chemins hamiltoniens


3.2.4.1 Dnition
L'existence et le dnombrement de chemins lmentaires de longueur k dans un graphe se fait en levant la puissance k la matrice aux arcs et en ne retenant que les chemins ne comportant pas de rprition de lettres. Soit le graphe orient G =< X, U > comportant N sommets Voir la gure 3.1 la page 32  Chemins lmentaires de longueur 1 Dans la matrice aux arcs A, on commence par supprimer tous les chemins qui ne sont pas lmentaires. (B, B) boucle sur le sommet B Ce chemin est limin de A On obtient la matrice aux arcs A' contenant les chemins lmentaires de longueur 1 A B C D E A 0 0 0 DA EA B AB 0 0 0 0 C AC BC 0 0 EC D 0 0 CD 0 0 E AE 0 0 DE 0

A =

 Chemins lmentaires de longueur 2 On calcule A 2 partir de A en ne retenant que les chemins lmentaires. (A, E) (E, A) (A, E, A) est un chemin de longueur 2 passant deux fois par le sommet A Ce chemin est limin de A 2 puisqu'il n'est pas lmentaire. On obtient la matrice aux arcs A 2 qui contient les chemins lmentaires de longueur 2 A B A2 = C D E A 0 0 CDA DEA 0 B 0 0 0 DAB AEB C ABC, AEC 0 0 DAC, DEC EAC D ACD BCD 0 0 ECD E 0 0 CDE DAE 0

 Chemins lmentaires de longueur 3 On calcule A 3 en ne retenant que les chemins lmentaires On obtient la matrice aux arcs A 3 contenant les chemins lmentaires de longueur 3

Page 34

CHAPITRE 3. REPRSENTATION MATRICIELLE D'UN GRAPHE

35

 Chemins lmentaires de longueur 4 Dans la matrice A 4 apparaissent les chemins lmentaires de longueur 4 A B A4 = C D E A 0 BCDEA 0 0 0 B 0 0 CDEAB 0 ECDAB C 0 0 0 DEABC 0 D 0 0 0 0 EABCD E ABCDE BCDAE 0 0 0

Ces chemins passent une fois et une seule par tous les sommets du graphe, ce sont donc des chemins Hamiltoniens. Si de plus les chemins Hamiltoniens ce referment sur eux-mmes, ce sont des circuits Hamiltoniens.

Page 35

CHAPITRE 3. REPRSENTATION MATRICIELLE D'UN GRAPHE

36

3.3 Fermeture transitive d'un graphe


3.3.1 Dnition
La fermeture transitive d'un graphe G =< X, U > gnre un graphe G =< X, U > auquel on rajout des arcs reliant le sommet i au sommet j s'il existe un chemin reliant le sommet i au sommet j ou si i = j .

3.3.2 Exemple
Soit le graphe orient G =< X, U > suivant :

2 1

3 4

Fig.

3.2: Exemple de graphe orient pour raliser la fermeture transitive

Et M sa matrice boolenne : 1 0 0 0 0 0 0 2 1 0 0 0 1 0 3 0 1 0 0 1 0 4 0 0 1 0 0 0 5 1 0 0 0 0 0 6 0 0 0 1 1 0

M=

1 2 3 4 5 6

La matrice boolenne M correspondant la fermeture transitive du graphe G est : 1 1 0 0 0 0 0 2 1 1 0 0 1 0 3 1 1 1 0 1 0 4 1 1 1 1 1 0 5 1 0 0 0 1 0 6 1 1 1 1 1 1

1 2 M= 3 4 5 6

Cela signie qu' partir du sommet 1 on peut accder aux sommets 2, 3, 4, 5 et 6 du graphe et qu' partir du sommet 6 on ne peut accder aucun sommet du graphe. Conclusion : La fermeture transitive d'un graphe permet de rpondre la question : "existe t'il un chemin de x y pour tout couple de sommet (x, y) du graphe"

Page 36

CHAPITRE 3. REPRSENTATION MATRICIELLE D'UN GRAPHE

37

3.3.3 Algorithme de Warshall


Warshall est parti de l'observation suivante : S'il existe un moyen d'aller du sommet x vers le sommet y ET un moyen d'aller du sommet y vers le sommet z alors il existe un moyen d'aller du sommet x vers le sommet z. Algorithme :  M est la matrice boolenne du graphe G  M est la matrice boolenne du graphe G  N est le nombre de sommets

M' = M Pour i allant de 1 N faire M'[i][i] = 1 Fin Pour Pour k allant de 1 N faire Pour i allant de 1 N faire Pour j allant de 1 N faire M'[i][j] = M'[i][j] OU (M'[i][k] ET M'[k][j]) Fin Pour Fin Pour Fin Pour
L'ide de l'algorithme est de dterminer les chemins passant par le sommet 1, le sommet 2, le sommet 3,... le somment N. Ce qui se fait en calculant M pour k = 1, k = 2, ..., k = N 1

3.3.4 Mthode matricielle


Soit le graphe orient G =< X, U > suivant : Voir la gure 3.2 la page 36 Et M sa matrice boolenne : 1 0 0 0 0 0 0 2 1 0 0 0 1 0 3 0 1 0 0 1 0 4 0 0 1 0 0 0 5 1 0 0 0 0 0 6 0 0 0 1 1 0

M=

1 2 3 4 5 6

On a vu prcdemment qu'on pouvait lever la matrice M au carr, au cube, ..., la puissance k pour dterminer le nombre de chemis de longueur 2, 3, ..., k. On se propose ici d'lever la matrice M au carr, au cube, ..., la puissance k en adoptant des lois de composition logique pour la multiplication et l'addition.

1. loi de multiplication logique ( ET ) : 11 = 1


2. loi d'addition logique ( OU ) : (1

1 = 1) ou encore (1

0 = 1)

On note les matrices obtenues partir des lois de composition M [2] , M [3] , M [4] pour les direncier des matrices boolennes calcules partir des lois de composition usuelles. Ces matrices nous permettent de savoir s'il existe au moins un chemin de longueur 2, 3, ..., k dans le graphe.
1 La matrice obtenue pour k = N donne la fermeture transitive du graphe

Page 37

CHAPITRE 3. REPRSENTATION MATRICIELLE D'UN GRAPHE

38

Calcul de M [2]

M [2]

= 0 0 0 0 0 0 1 2 3 4 5 6 1 0 0 0 0 0 0

M [1] M [1]
1 0 0 0 1 0 2 1 0 0 0 0 0 0 1 0 0 1 0 3 1 0 0 0 1 0 0 0 1 0 0 0 4 0 1 0 0 0 0 1 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 1 1 0 6 1 0 1 0 0 0

=
0 0 0 0 0 0 1 0 0 0 1 0

M M
0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0

M [2]

M [2]

La prsence d'un 1 l'intersection de la ligne i et de la colonne j de M [k] indique qu'il existe au moins un chemin de longueur k entre les sommets i et j De la mme faon on peut calculer les matrices M [3] , M [4] , M [5] et si l'on procde la somme boolenne P = M M [2] M [3] M [4] M [5] on obtient une matrice P dans laquelle la prsence d'un 1 l'intersection de la ligne i et de la colonne j indique qu'il existe au moins un chemin de longueur infrieure ou gale 5 entre les sommets i et j. 1 2 P = 3 4 5 6 1 0 0 0 0 0 0 2 1 0 0 0 1 0 3 1 1 0 0 1 0 4 1 1 1 0 1 0 5 1 0 0 0 0 0 6 1 1 1 1 1 0

On s'aperoit que la matrice P ne donne pas la fermeture transitive du graphe car elle n'est pas compose de 1 sur la diagonale, il faut donc rajouter l'expression P = M M [2] M [3] M [4] M [5] la matrice identit I compose de 1 sur la diagonale et de 0 partout ailleurs. On obtient donc l'expression suivante donnant la fermeture transitive :

P =I
1 2 P = 3 4 5 6

M
1 1 0 0 0 0 0

M [2]
2 1 1 0 0 1 0 3 1 1 1 0 1 0

M [3]
4 1 1 1 1 1 0 5 1 0 0 0 1 0

M [4]
6 1 1 1 1 1 1

M [5]

Plus gnralement, dans un graphe de N sommets, la somme boolenne suivante donne la fermeture transitive du graphe :

M [2]

M [3]

...

M [N 1] = (I

M)

[N 1]

Faire l'exercice 7 la page 92


Page 38

Chapitre 4

Chemins optimaux dans un graphe

39

CHAPITRE 4. CHEMINS OPTIMAUX DANS UN GRAPHE

40

4.1 Introduction
B 8 A 5 7 D C 6 10 5 2 4 G E 4 F 2 3 5 H

Fig.

4.1: Exemple de graphe orient pour recherche de chemins optimaux

Le but est de rechercher le plus court chemin entre les sommets A et H. numration des chemins :

(A, B, E, H) (A, B, E, F, H) (A, C, E, H) (A, C, E, F, H) (A, C, F, H) (A, D, F, H) (A, D, G, H)

19 20 20 21 12 11 19

Chemin de longueur minimale

Nous voyons donc que le plus court chemin est = (A, D, F, H) et que l () = 11

Page 40

CHAPITRE 4. CHEMINS OPTIMAUX DANS UN GRAPHE

41

4.2 Algorithme de Dijkstra


Cet algorithme pour but de raliser la recherche des plus courts chemins entre un sommet donn et tous les autres sommets du graphe1 Algorithme :       

G =< X, > le graphe X = {1, 2, . . . , N } l'ensemble des sommets du graphe N le nombre de sommets S est l'ensemble des sommets traits S l'ensemble des sommets traits P la liste des prdcesseurs la liste des distances

Hypothse : Le sommet de dpart est le sommet 1 a) Initialisation :  S = {1}  S = X S = {2, 3, . . . , N }  (1) = 0  (i) =  P(i) =

l1i si i 1 + sinon 1 1
si i 1 sinon

b) Solution :     On slectionne le sommet j S tel que (j) = min (i) avec i S S = S {j} S = S + {j} Si S = alors Fin Sinon aller en (c)

c) Calcul des distances :  Pour tout i j et i S Faire  (i) = min (i) , (j) + lji  Si (i) modi alors P(i) = j  retourner en (b)
1 Orient ou pas, mais ayant des arcs ayant un cot uniquement suprieur 0

Page 41

CHAPITRE 4. CHEMINS OPTIMAUX DANS UN GRAPHE

42

Exemple :
4 2

7 5 1 1

4 5

2 1 3 7

5 3 6

Fig.

4.2: Exemple de graphe orient pour exemple de recherche de chemins optimaux

S.S1 S 1 1 3 1, 5 1, 2 1, 6 1, 4 1, (6) = 6

3 3, 3, 3, 3,

5 5, 2 5, 2, 6 5, 2, 6, 4

(1) 0 0 0 0 0 0

(2) 7 6 5 5 5 5

(3) 1 1 1 1 1 1

(4) + + 8 8 8 8

(5) + 3 3 3 3 3

(6) + 8 8 6 6 6

P1 -1 -1 -1 -1 -1 -1

P2 1 3 5 5 5 5

P3 1 1 1 1 1 1

P4 -1 -1 5 5 5 5

P5 -1 3 3 3 3 3

P6 -1 3 3 2 2 2

P(6) = 2 P(2) = 5 P(5) = 3 P(3) = 1 (6) = l13 + l35 + l52 + l26 = (1, 3, 5, 2, 6) l() = (6) = 6

Faire l'exercice 8 la page 96

Page 42

CHAPITRE 4. CHEMINS OPTIMAUX DANS UN GRAPHE

43

4.3 Algorithme de Ford


Cet algorithme permet la recherche du plus court comme du plus long chemin entre un sommet donn et les autres sommets d'un graphe1 Algorithme :  G =< X, > le graphe  X = {1, 2, . . . , N } l'ensemble des sommets du graphe  N le nombre de sommets  P la liste des prdcesseurs  la liste des distances Hypothse : Le sommet de dpart est le sommet 1 a) Initialisation :  (1) = 0  Pour i allant de 2 N  (i) = +  Pour i allant de 1 N  P(i) = 1 b) Calcul :  Pour i allant de 2 N faire  (i) = min (i) , min ((j) + lij ) avec j 1 i  Si (i) modi alors  P(i) = j c) Retour : Recommencer l'tape (b) jusqu' ce que les (i) se stabilisent2 Exemple : Voir la gure 4.2 la page 42 Exemple pour (2) la premire itration de l'algorithme3 (2) = min (2) , min (1) + l12 , (3) + l32 , (5) + l52 qui donne en fait : (2) = min (, min (7, , )) tape Initialisation ` 1ere itration eme ` 2 itration ` 3eme itration

P1 -1 -1 -1 -1

P2 -1 1 5 5

P3 -1 1 1 1

P4 -1 2 5 5

P5 -1 3 3 3

P6 -1 2 2 2

1 0 0 0 0

7
4 4

3 1 1 1

4 11 8 8

5 3 3 3

6 8 6 6

1 Orient ou pas et comportant des arcs avec des cots ngatifs ou positifs 2 C'est dire que la dernire ligne doit tre identique sa ligne prcdente 3 En gras dans le tableau ci-dessous

Page 43

CHAPITRE 4. CHEMINS OPTIMAUX DANS UN GRAPHE

44

Remarques :  Pour calculer les plus longs chemins il convient de modier l'algorithme de Ford de la faon suivante : a) Initialisation :  (1) = 0  Pour i allant de 2 N  (i) =  Pour i allant de 1 N  P(i) = 1 b) Calcul :  Pour i allant de 2 N faire  (i) = max (i) , max ((j) + lij ) avec j 1 i  Si (i) modi alors  P(i) = j c) Retour : Recommencer l'tape (b) jusqu' ce que les (i) se stabilisent  L'existence d'une solution repose sur l'absence de circuit absorbant1 dans le graphe. u1 : i k n'empruntant pas

Fig.

4.3: Contre-exemple de graphe pour l'algorithme de Ford

l(u1 ) = 7 + 5 = 12 u2 : i k empruntant une fois l(u2 ) = 9 On voit bien que l(u2 ) l(u1 ) , ce qui provoque une boucle innie de l'algorithme.

Faire l'exercice 9 la page 98


1 Circuit de longueur ngative

Page 44

CHAPITRE 4. CHEMINS OPTIMAUX DANS UN GRAPHE

45

4.4 Algorithme de Floyd


L'algorithme permet de recherche les plus courts o les plus longs chemins sur un graphe orient ou non avec des longueurs d'arcs positives ou ngatives entre tout couple de sommets. Algorithme :     

G =< X, U > le graphe X = {1, 2, ..., N } l'ensemble des sommets du graphe U l'ensemble des arcs N le nombre de sommets L la matrice rsultat1

a) initialisation :  lij =  lij = 0 b) calcul :  Pour k allant de 1 N faire k1 k1 k1 k  lij = min lij , lik + lkj Exemple :
(0) (0)

longueur de l'arc ij +

si (i, j) U sinon

3 1 -2 2 3 4 3 1
Fig.

2 4 4

4.4: Graphe orient pour application de l'algorithme Floyd 2 3 0 + 4 3 + 2 0 4 4 3 2 1 0

L(0) =

1 2 3 4

1 0 2 -2 +

1l

ij

tant la longueur du chemin entre le sommet i et le sommet j

Page 45

CHAPITRE 4. CHEMINS OPTIMAUX DANS UN GRAPHE

46

(1) l32

Pour la case 3,2 de la matrice avec k = 1 : (0) (0) (0) = min l32 , l31 + l12 = min (+, 2 + 3) = 1

1 2 3 4 1 0 3 + 3 2 0 2 2 L(1) = 2 3 -2 1 0 1 4 + 4 4 0 Pour la case 1,3 de la matrice avec k = 2 : (2) (1) (1) (1) l13 = min l13 , l12 + l23 = min (+, 3 + 2) = 5 1 = 2 3 4 1 0 2 -2 6 1 0 0 -2 2 2 3 0 + 4 2 3 0 + 4 3 5 2 0 4 3 5 2 0 4 4 3 2 1 0 4 3 2 1 0

L(2)

1 L(3) = 2 3 4 Et L(4) = L(3)

Page 46

Chapitre 5

Problmes d'ordonnancement

47

CHAPITRE 5. PROBLMES D'ORDONNANCEMENT

48

5.1 Introduction
Exemple utiliser pour l'introduction, et les mthodes d'ordonnancement MPM & PERT Soit un projet dcoup de la faon suivante : Dsignation de la tche i a b c d e f g h i j k i Dure dij 4 6 0.5 1 2 3 8 6 1 8 12 8 Tches pralables k Ii a b b b b c,d e,f,g h,j e,f,g h,j h,j

Libell Obtention d'un permis d'exploitation Etablissement d'une piste de 6km Transport et installation de deux sondeuses Cration de btiments provisoires pour le bureau et le logement d'ouvriers Goudronnage de la piste Adduction d'eau Campagne de sondage Forage et quipement de trois puits Transport et installation au fond du matriel d'exploitation Construction de bureaux et de logements en dur Traage et amnagement du fond Construction d'une laverie

1re tape :  Identier les tches  Contraintes des tches  Dure des tches 2me tape : Rsoudre un problme d'ordonnancement en calculant les paramtres 3me tape : Utiliser une mthode MPM ou PERT

Page 48

CHAPITRE 5. PROBLMES D'ORDONNANCEMENT

49

5.2 Mthode MPM


10.5 c 6 6 b 4 6 6 10 e 10 10 f 10
Fig.

27 0.5 11 1 g 11 8 2 3 8 2 3 19 j 19 8 i 6 27 8 27 12 k 6 27 8 8 27 6 l 27 1

10 10 d 10

0 D 0

0 a 0

39 F 39

21 h 19

Dates au plus tot Dates au plus tard

5.1: Graphe dtermin partir de la mthode MPM

Calcul des dates au plus tt des direntes tches :12

tj = max(ti + di ) avec i 1 et di est la dure de la tche i j


Calcul des dates au plus tard des direntes tches :

t = min(t dj ) avec k j j k
Chemin critique : Le chemin critique d'un ordonnancement est form par la succession des tches dterminantes pour la dure totale du projet. C'est dire les tches pour lesquelles un retard ventuel se rpercute automatiquement sur la date de ralisation du projet. Les mthodes de dtermination sont les suivantes :  Appliquer un algorithme de recherche des plus longs chemins entre le sommet D et les autres sommets3  Utiliser les dates au plus tt en retrouvant la composition du plus long chemin entre le sommet D et F  En regardant la ou les dates au plus tt sont les dates au plus tard
1 Date pour laquelle les tches prcdent sont toutes termines 2 C'est donc la date maximale laquelle se terminent les prdecesseurs de la tche en question 3 L'algorithme de Ford

Page 49

CHAPITRE 5. PROBLMES D'ORDONNANCEMENT

50

Marge des direntes tches : 1. Marge totale d'une tche C'est le dlai dont on peut retarder cette tche sans aecter la date d'achvement du projet. Mj = t tj j 2. Marge libre d'une tche C'est le dlai dont on peut retarder cette tche sans aecter la date de ralisation au plus tt des tches suivantes. mj = min(tk tj dj ) avec k j 3. Marge certaine d'une tche C'est le moment o les tches prcdentes commencent leur date au plus tard et les tches suivantes leur date au plus tt. = min(tk max(t + di ) dj ) avec k j et i 1 i j

Faire l'exercice 12 la page 102

Page 50

CHAPITRE 5. PROBLMES D'ORDONNANCEMENT

51

5.3 Mthode PERT


Nous utiliserons le mme nonc que donn page 48

11 c0.5 4b 11 27 6b h6 27 6 27 l8 7t 39
Fig.

39 7b i1 39

0 0 1 a4 4 2 b6 10 3 10 f3 d1 11 4 11 g8 5 19

0 4 Dates au plus tot Dates au plus tard

e2 19 5b 19 0

27 0 k12

0 39 7 0 39 39

j8 19

5.2: Graphe dtermin partir de la mthode PERT

Calcul des dates au plus tt des direntes tapes : 1 tj = max(ti + dij ) avec i 1 j Calcul des dates au plus tard des direntes tapes : 2 t = min(t djk ) avec k j j k Chemin critique : 1. Appliquer un algorithme permettant de dterminer le plus long chemin entre l'tape de dpart et l'tape de n3 2. Utiliser le calcul des dates au plus tt

= (a, b, d, g, j, k)
Marge des direntes tches : 1. Marge totale d'une tche Mj = t ti dij j 2. Marge libre d'une tche mj = tj ti dij 3. Marge certaine d'une tche = tj t dij i

Faire l'exercice 13 la page 104


1 La date au plus tt d'un sommet avec un ou plusieurs sommets ctifs est gale au maximum des dates au plus tt. 2 La date au plus tard d'un sommet avec un ou plusieurs arcs ctifs avec l'arc allant du sommet rel au sommet ctif,

on prends le minimum des deux dates au plus tard 3 Ford

Page 51

Chapitre 6

Flot maximal sur un rseau de transport

52

CHAPITRE 6. FLOT MAXIMAL SUR UN RSEAU DE TRANSPORT

53

6.1 Dnitions
6.1.1 Rseau de transport
Un rseau de transport est un graphe G =< X, U > dans lequel les deux conditions suivantes sont respectes :  Il existe deux sommets uniques :

Le sommet source S tel que 1 = S Le sommet puits T tes que S =


 Chaque arc doit tre muni d'un nombre Cu 0 appel capacit de l'arc1

Exemple

S U1 [6] A U3 [6] U2 [8] U6 [3] B U4 [3] C U8 [6] T D

U5 [3]

U7 [8]

Fig.

6.1: Exemple de rseau de transport

6.1.2 Flot dans un rseau de transport


Soit G =< X, U > un rseau de transport, et G0 =< X, U 0 > un graphe dduit de G avec un arc du sommet puits vers le sommet source.

Exemple

S U1 [6] A U3 [6] U2 [8] U6 [3] B U0 U4 [3] C U8 [6] T D

U5 [3]

U7 [8]

Fig.

6.2: Exemple de rseau de transport avec arc retour

1 Not entre crochets sur les graphes

Page 53

CHAPITRE 6. FLOT MAXIMAL SUR UN RSEAU DE TRANSPORT

54

= [0 , 1 , 2 , . . . , m ] est un ot sur G0 si et seulement si :


1. La somme des ots sortants est gale la somme des ots entrants1 u = u
u + (i) u (i)

2. Aux sommets S et T la somme des ots sortants sur S est gale la somme des ots entrants sur T : 2 u = u avec u = 0
u + (S) u (T )

Exemple

3 U1 [6] A U3 [6] 0 C 3 U7 [8]

6 U2 [8] U6 [3] 3 B U0 U4 [3] 3 D 6 U8 [6] 9

U5 [3] 3

flot

Fig.

6.3: Exemple de rseau de transport avec arc retour et ots

= [0 , 1 , . . . , 8 ] = [9, 3, 6, 0, 3, 3, 3, 3, 6] est un ot sur G0 car il respecte les rgles.

Faire les exercices 14 la page 105 et 15 la page 106


1 Cette proprit doit tre vrie pour chaque sommet de G0 exception faite des sommets S et T 2 est le ot sur l'arc retour
u

Page 54

CHAPITRE 6. FLOT MAXIMAL SUR UN RSEAU DE TRANSPORT

55

6.2 Algorithme de Ford-Fulkerson


6.2.1 Graphe d'cart
Soit G =< X, U > un rseau de transport et = [1 , 2 , . . . , m ] un ot sur G.

G() =< X, U () >


L'ensemble U () est dtermin de la faon suivante :  chaque arc u+ = (i, j) avec u U , on associe au plus deux arcs de G()  u+ = (i, j) si u < Cu  u = (j, i) si > 0  On associe une capacit chaque arc de G()  Cu u si u < Cu  u si u > 0 Graphe d'cart dduit du rseau de transport reprsent sur la gure 6.3 la page 54 :

S U1+ 3 A U3+ 6 U1- 3 U5- 3 U2- 6 U6- 3 U2+ 2 B U4- 3 C D U7- 3 U8- 6 U7+ 5 T

Fig.

6.4: Graphe d'cart dduit du rseau de transport reprsent sur la gure 6.3

6.2.2 nonc de l'algorithme


Soit G =< X, U > un rseau de transport 1. Initialisation Appliquer un ot 0 initial sur G 0 = (0, 0, . . . , 0) 0 Calculer le graphe d'cart associ G(0 ) 2. A l'itration k , soit k le ot courant Rechercher un chemin P k de S T dans le graphe G(k ) S'il n'y pas de chemin on est arriv la n (le ot k est maximal) Sinon aller en 3 3. Soit k la capacit rsiduelle du chemin P k On va calculer k+1 k+1 = k + k si u+ P k u u k+1 = k k si u P k u u k+1 = k + k 0 0 Faire k + + Calculer le graphe d'cart G(k ) Retourner en 2 Page 55

CHAPITRE 6. FLOT MAXIMAL SUR UN RSEAU DE TRANSPORT

56

6.2.3 Application de l'algorithme


1. = [1 , 2 , . . . , 8 ] = [3, . . . , 6] le ot initial 2. k = 0

P 0 = (S, A, C, T )
12
=3 =6 =5

3. on peut crire P 0 = ( u+ , u+ , u+ ) 1 3 7 Donc 0 = 3 1 = 6 1 1 = 0 + 0 = 3 3 3 1 = 6 7 1 = 0 + 0 = 12 0 0 k=1


Min

S U1- 6 A U3- 3 U5- 3 U2- 6 U6- 3 U2+ 2 B U4- 3 D U7- 6 U8- 6 U7+ 2 T

U3+ 3

6.5: Graphe d'cart dduit de l'application de l'algorithme de Ford-Fulkerson sur le graphe d'cart reprsent sur la gure 6.4
Fig.

Lorsque l'on retourne l'tape 2 de l'algorithme, on s'apperot qu'il n'existe pas de chemin de S T dans G(1 ). Fin de l'algorithme

1 est maximal et vaut 12.

Faire l'exercice 17 la page 108


1 On prends donc le minimum des capacits sur le graphe d'cart 2 C'est la valeur dont on augmente le ot

Page 56

CHAPITRE 6. FLOT MAXIMAL SUR UN RSEAU DE TRANSPORT

57

6.3 Proprits sur les ots


6.3.1 Flot complet
Un ot est dit complet si tous les chemins de S T comportent au moins un arc satur (u = Cu )

6.3.2 Coupe
On appelle coupe sparant S et T un ensemble d'arcs de la forme + (A) o A est un sous-ensemble de sommets1 tel que S A et T A Exemple de coupe du graphe 6.1 la page 53 : A = {S, B} + (A) = {u1 , u4 , u6 }

6.3.3 Capacit d'une coupe


C(A) =
+ uA

Cu

O C(A) est la capacit de la coupe, et Cu est la capacit de l'arc u En reprenant l'exemple donn en 6.3.2 la page 57 : C(A) = Cu1 + Cu4 + Cu6 = 6 + 3 + 3 = 12

6.3.4 Flot maximal


T.
La valeur de ot maximal de S T est gale la valeur minimale de toutes les coupes sparant S de

Faire l'exercice 17b la page 111


1 Un sous-ensemble contient au moins un sommet

Page 57

CHAPITRE 6. FLOT MAXIMAL SUR UN RSEAU DE TRANSPORT

58

6.4 Problme particulier de transport


6.4.1 Enonc du problme
Soit le tableau suivant traduisant les cots pour chaque unite transfre entre les sources (A, B, C) et les puits (1, 2, 3, 4, 5) : A B C cij 1 4 6 5 40 2 1 4 2 50 3 2 3 6 70 4 6 5 4 90 5 9 7 8 90

ai 100 120 120

O :  ai sont les quantits disponibles  bj sont les demandes  xij sont les quantits de l'origine i la destination j  n le nombre de destinations  m le nombre d'origines 
m i=1

ai =

 Min z =  
n i=1 m i=1

j=1 m

bj
n

i=1 j=1

xij cij

xij = ai pour i = 1, 2, ..., n xij = bi pour j = 1, 2, ..., m


4 A 100

1 6 40 5 1 2 50 2 3 6 5 70 6 4 90 9 5 90

4 2

B 120

4 C 120 8 7

Fig.

6.6: Graphe du problme d'ordonnancement particulier d'ordonnancement

Le problme est que l'on souhaiterait amliorer le cot global dans ce graphe.

Page 58

CHAPITRE 6. FLOT MAXIMAL SUR UN RSEAU DE TRANSPORT

59

6.4.2 Algorithme du Stepping Stone


Mthode : 1. Rechercher une solution de base 2. Amliorer la solution de base 1. Recherche d'une solution de base On assouvit les besoins des destinations en utilisant source aprs source. 1 40 2 50 3 10 60 70 4 60 30 90 5 100 120 120

A B C

40

50

90 90

Dans cette conguration z = 1550, et voici le schma illustrant cette conguration :


40 A 100 1 40 50 2 10 B 120 60 30 C 120 90 60 50 3 70 4 90 5 90

Fig.

6.7: Schma illustrant la solution de base de l'algorithme du Stepping Stone

2. Amlioration de la solution de base (a) calculer les cots marginaux nots ij pour chaque liaison non-aecte (b) Si tous les ij sont positifs ou nuls Fin Sinon, prendre le cycle de substitution associ au ij le plus petit  soit l'ensembles des arcs du cycle reprsentant les liaisons sur lesquelles la quantit transporte est diminue. q = min [xij ] avec (i, j) xij = xij q pour (i, j)  xij = xij + q pour (i, j) + (c) retour en a

Page 59

CHAPITRE 6. FLOT MAXIMAL SUR UN RSEAU DE TRANSPORT

60

Application de l'algorithme : La mthode de dtermination des cots marginaux de l'algorithme est trs graphique, il faut prendre toutes les lignes non utilises avec la solution de base dtermine en 1, et pour chacune d'elle essayer de faire passer une unit sur celle-ci tout en prservant l'quilibre originel du graphe. A titre d'exemple, si l'on prends la liaison (A, 4), elle n'est pas utilise dans la solution de base, nous allons donc essayer de faire passer une unit dessus. Les modications apportes dans le tableau sont donc : 1 A B C 40 50 2 3 -1 +1 70 4 +1 -1 90 5 100 120 120 90

Puis aprs, on dtermine les cots marginaux en additionnant un un les cots que les changements engendrent (voir le calcul de A4 ). Dtermination des cots marginaux :  A4 = (+1) 6 + (1) 2 + (1) 5 + (+1) 3 = 2  A5 = (+1) 9 + (1) 2 + (+1) 3 + (1) 5 + (+1) 4 + (1) 8 = 1  B1 = 1  B2 = 2  B5 = 2 minimal  C1 = 1  C2 = 1  C3 = 4 On dtermine maintenant le cycle de substitution de B5 : = {B5, C5, C4, B4}

= {C5, B5} + = {B5, C4} q = min(xC5 , xB4 ) = min(90, 60) = 60


On dtermine donc les modications eectuer au nal : xC5 = 90 60 = 30 xB4 = 60 60 = 0 xB5 = 0 + 60 = 60

xC4 = 30 + 60 = 90

Page 60

CHAPITRE 6. FLOT MAXIMAL SUR UN RSEAU DE TRANSPORT

61

On obtient donc le schma suivant et le tableau suivant :


40 A 100 50

1 40 2 50 3 70

10 B 120 90 C 120 30 60

4 90 60 5 90

A B C

1 40

2 50

3 10 60 70

5 60 30 90 100 120 120

40

50

90 90

6.8: Schma illustrant la premire optimisation de l'algorithme du Stepping Stone


Fig.

On retourne maintenant l'tape 1 de l'algorithme : Calcul des cots marginaux ij :  A4 = 4  A5 = 3  B1 = 1  B2 = 2  B4 = 2  C1 = 1  C2 = 1  C3 = 2 on dtermine maintenant le cycle de substitution correspondant C1 : = {C1, A1, A3, B3, B5, C5}

+ = {C1, A3, B5} = {A1, B3, C5} q = min(xA1 , xB3 , xC5 ) = min(40, 60, 30) = 30
On dtermine donc les modications eectuer au nal : xC1 = 0 + 30 = 30

xA3 = 10 + 30 = 40 xB5 = 60 + 30 = 90 xA1 = 40 30 = 10 xB3 = 60 30 = 30 xC5 = 30 30 = 0

Page 61

CHAPITRE 6. FLOT MAXIMAL SUR UN RSEAU DE TRANSPORT

62

On obtient donc le schma suivant et le tableau suivant :


10 30 A 100 50

1 40 2 50 3 70

40 B 120 90 C 120 30

4 90 90 5 90

A B C

1 10 30 40

2 50

3 40 30 70

5 90 90 100 120 120

50

90 90

6.9: Schma illustrant la deuxime optimisation de l'algorithme du Stepping Stone


Fig.

On retourne maintenant l'tape 1 de l'algorithme :        

A4 = 3 A5 = 3 B1 = 1 B2 = 2 B4 = 1 C2 = 0 C3 = 3 C5 = 1

Tous les ij 0, la solution trouve est optimale, et le cot nal du transport est gale 1400.*

Faire l'exercice 19 la page 114

Page 62

Chapitre 7

Arbre couvrant de cot minimum

63

CHAPITRE 7. ARBRE COUVRANT DE COT MINIMUM

64

7.1 Dnitions
7.1.1 Arbre
Un graphe G de N sommets avec n 2 est un arbre s'il est connexe et sans cycle.

Exemple
1 2

Fig.

7.1: Exemple d'arbre

7.1.2 Arbre couvrant de cot minimum


Soit G =< X, U > un graphe
3

1 2 3 4

2 3 5 1 3

Fig.

7.2: Exemple de graphe pour recherche d'arbre couvrant

Exemple
1 2 4 1 3 2 3

F1 =< X, U1 > o W (F1 ) est le cot de l'arbre F1 ; W (F1 ) = 6 ici.

7.3: Exemple d'arbre couvrant


Fig.

Soit un graphe non-orient G =< X, U >. Le problme de l'arbre couvrant de cot minimum est de trouver un arbre F =< X, U > de G tel que :  W (F ) = min(W (F ))  W (F ) = W (u) avec u U

Page 64

CHAPITRE 7. ARBRE COUVRANT DE COT MINIMUM

65

7.2 Algorithme de Kruskal


 G =< X, U > un graphe non-orient  F =< X, U > l'arbre couvrant de cot minimal  Une liste qui contient les artes du graphe G dans l'ordre croissant des poids

Donnes

U = {u1 }1 l'tape k , c'est l'arte uk U qui est lue Si uk ne forme pas un cycle avec les artes de U alors : uk est retenue U = U + {uk } On passe l'arte suivante

Principe

Exemple
a 19 13 e 5 b 4 5 d 10 13 5 7 23 11 c g 7 f 2 19 9 h

Fig.

7.4: Exemple de graphe pour application de l'algorithme de Kruskal

u1 (h, f ) = 2 u2 (b, d) = 4 u3 (a, g) = 5 u4 (b, e) = 5 u5 (d, e) = 5

u6 (a, f ) = 7 u7 (g, f ) = 7 u8 (g, h) = 9 u9 (e, c) = 10 u10 (c, f ) = 11

u11 (a, b) = 13 u12 (d, c) = 13 u13 (a, e) = 19 u14 (c, h) = 19 u15 (a, c) = 23

On obtient donc F =< X, U > avec U = {hf, bd, ag, be, af, ec, cf }
5 7 e 5 b 4 5 d 10 13 23 11 c 9 2 19 h

a 19 13

g 7 f

Fig.

7.5: Rsultat de l'application de l'algorithme de Kruskal

W (F ) = W (u) avec u U = 44
1 u est la premire arte dans la liste des artes 1

Page 65

CHAPITRE 7. ARBRE COUVRANT DE COT MINIMUM

66

7.3 Algorithme de Prim


Donnes
     

G =< X, U > N le nombre de sommets a un sommet quelconque T la liste des sommets visits (T ) est le cocycle de T U est l'ensemble des artes de l'arbre

Algorithme
T=a U'= Pour i allant de 1 N-1 faire choisir une arte (x,y) de cot minimal de (T ) U' = U' + (x,y) T = T + y Fin Pour

Faire l'exercice 18 la page 117

Page 66

Chapitre 8

Complexit des algorithmes

67

CHAPITRE 8. COMPLEXIT DES ALGORITHMES

68

8.1 Temps d'excution d'un programme et complexit d'un algorithme


8.1.1 Exemple 1
On cherche analyser le programme qui cherche l'indice du plus petit lment d'une portion d'un tableau.

1 T 4

2 3

3 7

4 8

5 9

6 4

7 5

8 8

portion
8.1: Exemple de tableau pour analyse du temps d'excution de l'algorithme qui retourne le plus petit indice d'un tableau
Fig.

8.1.1.1 Algorithme i : Indice du premier lment de la portion du tableau analyser. (i = 3 dans l'exemple) n : Indice du dernier lment de la portion du tableau analyser. (n = 7 dans l'exemple)
indice_min = i Pour j allant de i+1 n faire Si T[j] < T[indice_min] alors indice_min = j Fin Si Fin Pour

8.1.1.2 But
Evaluer le temps d'excution du programme pour des donnes de taille n. Pour le faire, il faut compter le nombre d'instructions eectues dans l'algorithme. Les instructions basiques sont spares en deux parties de base :  aectation : a  comparaison : comp

8.1.1.3 Dcoupage en nombre d'instructions de base de l'algorithme


indice_min = i j =i+1 j>n j =j+1 Si T [j] < T [indice_min] indice_min = j 1a 1a ((n i) + 1)comp (n i)a (n i)comp 0 a siT [i] est minimal (le cas le plus favorable) (n i) a si les T [i] sont classs de faon dcroissante (le cas le plus dfavorable) (ni) a dans le cas moyen 2

Page 68

CHAPITRE 8. COMPLEXIT DES ALGORITHMES

69

8.1.1.4 Somme des instructions


T (n) = 1a + 1a + (n i + 1)comp + (n i)a + (n i)comp + (n i)a = [2 + 2(n i)]a + [2(n i) + 1]comp

Si i = 1 T (n) = 2na + 2(n 1)comp Le temps d'excution est fonction1  du nombre d'lments traiter dans le tableau (n)  du temps d'excution d'une opration d'aectation  du temps d'excution d'une opration de comparaison Dans la pratique, il est dicile de quantier le temps que prend un ordinateur pour faire une aectation ou une comparaison, c'est pourquoi, dans une optique de simplication, on ne fera pas de dirence entre les deux, une tape2 regroupe les instructions d'aectation et de comparaison. On pose E = comp = a et obtient T (n) = 2nE + (2n 1)E = 4nE E En prenant E = 1 unit de temps, on exprime T (n) en fonction de n :

T (n) = 4n 1

8.1.1.5 Conclusion
1. T (n) nous donne une information sur le nombre d'tapes excutes par le programme et non plus sur le temps d'excution. 2. Le nombre d'tapes excutes par le programme crot linairement en fonction de la taille n des donnes traiter.

8.1.2 Exemple 2
1 T T T T 4 1 1 1 2 3 3 3 3 3 7 7 7 4 4 8 8 8 8 5 9 9 9 9 6 1 4 4 7 7 5 5 5 5

T
Fig.

8.2: Exemple de droulement de l'algorithme du tri par slection

1 Dans le cas o i = 1 2 Une tape vaut une unit de temps

Page 69

CHAPITRE 8. COMPLEXIT DES ALGORITHMES

70

8.1.2.1 Algorithme T : tableau n : nombre d'lments du tableau


Pour i allant de 1 n-1 faire indice_min = i Pour j allant de i+1 n faire Si T[j] < T[indice_min] alors indice_min = j Fin Si Fin Pour Tmp = T[i] T[i] = T[indice_min] T[indice_min] = Tmp Fin Pour

8.1.2.2 Evaluation du nombre d'tapes de l'algorithme


On value le nombre d'tapes de l'algorithme (E = a = comp) :  i = 1 1E  1ere itration : (i = 1)

i > n 1 1E T (n) = [2 + 2(n i)]E + [2(n i) + 1]E = [2 + 2(n 1)]E + [2(n 1) + 1]E = 4(n 1)E + 3E T mp = T [i] T [i] = T [indice_min] T [indice_min] = T mp i =i+1
On donc pour la premire itration : T1 (n) = 4(n 1)E + 8E  2eme itration : (i = 2)

(si i = 1) 4E

i > n 1 1E T (n) = [2 + 2(n i)]E + [2(n i) + 1]E = [2 + 2(n 2)]E + [2(n 2) + 1]E = 4(n 2)E + 3E T mp = T [i] T [i] = T [indice_min] T [indice_min] = T mp i =i+1
On donc pour la deuxime itration : T2 (n) = 4(n 2)E + 8E  (n 1)eme itration : (i = n - 1)

(si i = 2) 4E

i > n 1 1E T (n) = [2 + 2(n i)]E + [2(n i) + 1]E = [2 + 2(1)]E + [2(1) + 1]E (si i = n 1) = 4(1)E + 3E T mp = T [i] T [i] = T [indice_min] 4E T [indice_min] = T mp i =i+1

Page 70

CHAPITRE 8. COMPLEXIT DES ALGORITHMES

71

On a donc pour la (n 1)eme itration : T(n1) (n) = 4(1)E + 8E  et enn i > n 1 1E Au nal il y a au total :

T (n) = 1E

+4(n 1)E + 8E +4(n 2)E + 8E . . . +4(1)E + 8E +1E +S(n)

= 2E

S(n) = 4(n 1)E + 8E + 4(n 2)E + 8E + . . . + 4(1)E + 8E +S(n) = 4(1)E + 8E + 4(2)E + 8E + . . . + 4(n 1)E + 8E 2S(n) = (4nE + 16E) + (4nE + 16E) + . . . + (4nE + 16E) = (n 1)(4nE + 16E) = 4E(n1)(n+4) 2 = 2E(n 1)(n + 4)
(n - 1)fois

S(n) S(n)

Si on nglige 2E on peut dire que T (n) = S(n)

T (n) = 2E(n 1)(n + 4) = 2E(n2 + 3n 4) = E(2n2 + 3n 8)


Si E = 1 unit de temps alors : T (n) = 2n2 + 6n 8 Et donc si n est grand, T (n) = 2n2 On peut dire que :  Le calcul dtaill est long et fastidieux. Un ordre de grandeur du nombre d'tapes excutes par l'algortihme sut.  Pour cela on slectionne une tape lmentaire1 de l'algorithme pour obtenir un rsultat d'un ordre de grandeur similaire celui obtenu via le calcul dtaill, dans l'exemple prcdent. L'tape lmentaire est T [j] < T [indice_min] (c'est l'tape qui excute le plus souvent dans l'algorithme).

8.1.2.3 Calcul du nombre d'tapes excutes par l'algorithme en ne tenant compte que de l'tape lmentaire
 1ere itration : (i = 1)

T1 (n) =
 2eme itration : (i = 2)

j=2n (n 1)E

T2 (n) =
 (n 1)eme itration : (i = n - 1)

j=3n (n 2)E

Tn1 (n) =

j=nn 1E

1 Instruction qui est excute le plus souvent dans le programme

Page 71

CHAPITRE 8. COMPLEXIT DES ALGORITHMES

72

Nombre total d'excution de l'opration lmentaire :

T (n) + 2T (n) T (n)


Si E = 1 unit de temps, T (n) = 2 Si n est grand, on T (n) = n 2

= T1 (n) + T2 (n) + . . . + Tn1 (n) = (n 1)E + (n 2)E + . . . + 1E = 1E + 2E + . . . + (n 1)E = nE + nE + . . . + nE =


n2 2 (n1) fois 2 n(n1)E = E( n 2 2 n 2

n) 2

Dnition de la complexit d'un algorithme


Soit A un algorithme et n une donne d'entre de A. On appelle complexit de A pour n le nombre de fois que l'opration lmentaire est excute lors de l'excution de A sur n.

Page 72

CHAPITRE 8. COMPLEXIT DES ALGORITHMES

73

8.2 Ordre de grandeur d'un algorithme


L'ordre de grandeur d'un algorithme permet de quantier sa complexit an de pouvoir le comparer avec d'autres algorithmes permettant de rsoudre un mme problme lorsque la taille des donnes traiter devient grand. Un ordre de grandeur sur la complexit de l'algorithme sut dterminer son ecacit. On utilise la notation en O pour exprimer l'ordre de grandeur : On dit que T (n) = O(f (n)) s'il existe un entier n0 et une constante c > 0 tel que pour tout entier n n0 nous avons T (n) = c f (n).

8.2.1 Reprise de l'exemple de recherche de l'indice du plus petit lment d'un tableau
On dtermin plus haut (8.1.1 la page 68) que : T (n) = 4n 1 avec un dcompte prcis T (n) = n 1 avec le dcompte de l'opration lmentaire T [j] < T [indicem in] On peut dire alors que T (n) est en O(n) T (n) = O(n) Si c = 2 et n0 = 1 : n0 1 2n pour n n0 f (n) = n donc T (n) = O(n)

Fig.

8.3: Exemple de droulement de l'algorithme du tri par slection

On peut donc dire que T (n) = O(n2 )

Page 73

CHAPITRE 8. COMPLEXIT DES ALGORITHMES

74

8.2.2 Reprise du tri par permutation


T (n) =
n2 2

n 2

T (n) = O(n) on peut dire que T (n) est O(n2 )


Si c = 1 et n0 = 1
n2 2

n 2

2n2 pour n n0 1

8.2.3 Echelle de comparaison de la complexit des algorithmes


Valeur de f (n) 1 log(n) n n2 nk 2n Complexit constante logarithmique Linaire Quadratique Polinomiale1 Exponentielle Temps mis pour n lments 100 10000 100000 1, 75ms 17s 17min 0, 5ms 100ms 1, 2s 5 102969 jours

Algorithme Tri par slection Tri rapide Algorithme exponentiel

Complexit n2 n log(n) 2n

1 Quand k 3

Page 74

Chapitre 9

Les rseau de Ptri

75

CHAPITRE 9. LES RSEAU DE PTRI

76

9.1 Dnition
Un rseau de Ptri est un graphe reprsentant les relations entre trois ensembles d'lments : 1. places 2. transitions 3. arcs

exemple
P2 place T1 T2 P4

P1

jeton

transition P3

Fig.

9.1: Exemple de rseau de Ptri

Les rseaux de Ptri sont utiliss pour modliser la dynamique d'un systme. Le marquage dans le rseau de Ptri se fait au moyen d'un jeton (correspondant un nombre entier que l'on va attribuer chaque place). On reprsente communment un marquage par un vecteur colonne M : 1 0 M0 = 0 0 Une transition est valide ou franchissable si toutes ses places d'entre sont marques (toutes les marques contiennent au moins un jeton). Dans l'exemple, T1 est franchissable alors que T2 ne l'est pas. Pour franchir une transition on utilise la rgle suivante :  on retire un jeton de chacune des places d'entre  on ajoute un jeton dans chacune des des places de sortie Si on franchit T1 on obtient donc le marquage M1 suivant : 0 1 M1 = 1 0

Page 76

CHAPITRE 9. LES RSEAU DE PTRI

77

9.2 Utilisation d'un rseau de Ptri


Les rseaux de Ptri sont souvents utiliss dans des systmes informatiques (surtout quand cela utlise du paralllisme, synchronisation de processus, ressources partages) ou dans les systmes automatiques.

Exemple de modlisation de rseau de Ptri

depot

retrait

producteur

stock 3 max

consommateur

Fig.

9.2: Exemple modliser en rseau de Ptri

P1

P2

P3

P1 : Prt dposer P2 : Places libres P3 : Consommateur P4 : Place production P5 : Places occupes P6 : Prt consommer T1 : Fin de production T2 : Dpot

T1

T2

T3

T4

P4

P5
Fig.

P6

T3 : Retrait T4 : Fin de consommation

9.3: Exemple de modlisation de rseau de Ptri

Page 77

CHAPITRE 9. LES RSEAU DE PTRI

78

9.3 Proprits des rseaux de Ptri


Vrier les proprits d'un rseau de Ptri permet de voir s'ils comportent des erreurs de modlisation.

9.3.1 Rseau de Ptri vivant


Un rseau de Ptri vivant est tel qu' partir du marquage initial et de tout marquage conscutif, toute transition du rseau puisse tre franchie.
P1 T1 P2 T2 P3

T3

Fig.

9.4: Exemple de rseau de Ptri non-vivant

T1 n'est plus franchie au bout d'un certain temps alors le rseau n'est pas vivant.

9.3.2 Rseau de Ptri pseudo-vivant


Un rseau de Ptri dit est pseudo-vivant si pour chacun des marquages accessibles, il existe au moins une transition pouvant tre franchie. Si l'on prends l'exemple sur la gure 9.4 (page 78), on peut dire qu'il est pseudo-vivant car T2 et T3 sont franchies. Autre exemple :
P1 T1 P2 T2 P3

Fig.

9.5: Exemple de rseau de Ptri non-pseudo-vivant

Lorsque P3 est marque, on arrive une situation de blocage, car aucune transition ne peut tre franchie. 1 0 0 M0 = 0 M1 = 1 M2 = 0 T1 T2 0 0 1

Page 78

CHAPITRE 9. LES RSEAU DE PTRI

79

9.3.3 Rseau de Ptri born


Un rseau de Ptri est born si, pour tout marquage conscutif du marquage initial, le nombre de marques contenues dans chaque place du rseau est infrieur au nombre k . Exemple non-born :
P1 T1 P2

Fig.

9.6: Exemple de rseau de Ptri non-born

La valeur de P2 n'arrte pas d'augmenter. Exemple born :


P1 T1 P2 T2 P3

T3

Fig.

9.7: Exemple de rseau de Ptri born

9.3.4 Rseau de Ptri avec conits


9.3.4.1 Conits structurels
Un conit structurel correspond un ensemble d'au moins deux transitions T1 et T2 qui ont en commun k =< Pi , |T1 , . . . , T2 | >
P1

T1

T2

Fig.

9.8: Exemple de conit structurel dans un rseau de Ptri born

Page 79

CHAPITRE 9. LES RSEAU DE PTRI

80

9.3.4.2 Conit eectif


Un conit eectif est l'existance d'un conit structurel k et d'un marquage M tel que le nombre de marques dans Pi est infrieur au nombre de transitions de Pi qui sont valides par M not k e =< Pi , |T1 , . . . , T2 |, M >
P1

T1

T2

Fig.

9.9: Exemple de conit eectif dans un rseau de Ptri born

9.3.5 Recherche de proprits dans un rseau de Ptri


9.3.5.1 Mthode du graphe des marquages
On reprend l'exemple vu sur la gure 9.4 la page 78, le graphe des marquages dduit de ce graphe est le suivant :

M0 =
Proprits dduites :

1 0 0

T1

M1 =

0 1 0

T3 T2

M2 =

0 0 1

 Il n'est pas vivant car T1 n'est pas franchissable qu'une fois  Il est pseudo-vivant car pour tous les marquages accessibles, on a au moins une transition qui est franchie  Il est born car le nombre de marques dans chaque place est infrieur ou gal k

9.3.5.2 Mthode de l'arborescence et graphe de couverture d'un rseau de Ptri


Mthode de construction de l'arborescence de couverture d'un rseau de Ptri 1.  A partir d'un marquage initial M0 qui est la racine de l'arborescence, on indique toutes les transitions valides et les marquages successeurs correspondants.  Si un des marquages couvre strictement M0 , on met pour chacune des composantes suprieures aux composantes correspondantes de M0 . 2. Pour chaque nouveau marquage Mi de l'arborescence, on fait soit le 2.a ou le 2.b (a) S'il existe sur le chemin de M0 Mi 1 un marquage Mj = Mi alors Mi n'a pas de successeur. (b) Sinon, on prolonge l'arborescence en ajoutant tous les successeurs de Mi . Pour chaque successeur Mk de Mi faire :  Une composante de Mi reste une composante de Mk  S'il existe un marquage Mj sur le chemin M0 Mk tel que Mk couvre strictement Mj , alors on met pour chacune des composantes suprieures aux composantes de Mj .
1 Ce dernier exclu

Page 80

CHAPITRE 9. LES RSEAU DE PTRI

81

Remarques : 1. On dit que le marquage M1 couvre le marquage M2 si le marquage de chaque place Pi dans M1 est suprieur ou gal son marquage dans M2 . M1 M2 M1 (Pi ) M2 (Pi ) pour toute place Pi 2. On dit que le marquage M1 est suprieur au marquage M2 1 si M1 couvre M2 avec au moins une place Pi telle que M1 (Pi ) > M2 (Pi ) M1 > M2 M1 M2 et il y au moins une place Pi telle que M1 (Pi ) > M2 (Pi ) Exemple :
P1

T3

T1

P2 T2

P3

9.10: Exemple de rseau de Ptri pour application de la mthode de construction de l'arbre de couverture
Fig.

1 0 Etape 1 : M0 = 0 M1 = 1 T1 0 1 M1 ne couvre pas strictement le marquage M0

Etape 2 : Etape pour M1 2.2


M1 = 0 1 1
T2 T3

M2 =

0 0 0 1 0

M3 =

M2 n'est ni suprieur M0 ni M1 M3 est suprieur M0 mais pas M1

1 0 Etape 2.b pour M3 : M3 = 0 M4 = 1 Composantes de M4 : T1  La composante de M3 reste gale dans M4  Il n'y pas de marquage Mj sur le chemin de M0 M4 tel que M4 > Mj
1 On couvre strictement le marquage M 2

Etape 2.b pour M2 : Aucune transition n'est valide, pas de nouveau marquage.

Page 81

CHAPITRE 9. LES RSEAU DE PTRI

82

Etape 2 : Etape pour M4 2.b


M4 = 0 1
T2 T3

M5 =

0 0

1 M6 = 0 M5 n'a pas de successeur et est une situation de blocage. M3 = M6 donc M6 n'a pas de successeur
On obtient donc au nal cet arbre de couverture : 1 0 0 M0 = 0 M1 = 1 M2 = 0 T2 T1 0 0 1
T3

M3 =
Dductions :

1 0

T1

M4 =

0 1

T6

M5 =

0 0

 Les places P1 et P2 sont bornes mais la place P3 n'est pas borne le rseau n'est pas born  Il y une innit de blocages lis au marquage M5 le rseau n'est ni vivant ni pseudo-vivant.

Faire l'exercice 21 la page 121

Page 82

Annexe A

Exercices

83

ANNEXE A. EXERCICES

84

A.1 Exercice 1
A

B 1

Fig.

A.1: Exercice 1

A.1.1 Questions
1. numrer A , 1 , ..., F , 1 A F 2. Donner les demi-degrs intrieurs et extrieurs de chaque sommet 3. Dommenr un exemple de chemin simple mais non-lmentaire 4. Existe-t'il un circuit Hamiltonien ? 5. Tracer le graphe simple non-orient G' dduit de G 6. G' est-il connexe ? G est-il fortement connexe ?

A.1.2 Rponses
1. Application multivoque : Sommet A B C D E F

Sommet F A, C, E D B, C, E B, E, F A, C

1 Sommet B,F D, E B, D, F C B, D, E A, E

2. Demi-degrs interieurs et extrieurs du graphe Demi-degr de d+ d 3. P = {B, C, D, B, A} 4. P = {A, F, C, D, E, B, A} A 1 2 B 3 2 C 1 3 D 3 1 E 2 2 F 2 2

Page 84

ANNEXE A. EXERCICES

85

5. Le graphe non-orient G' dduit de G :

B 1

Fig.

A.2: Rponse la question 5 de l'exercice 1

6. Le fait qu'il existe un chemin Hamiltonien implique que le graphe orient G soit fortement connexe et que le graphe non-orient G' soit fortement connexe

Page 85

ANNEXE A. EXERCICES

86

A.2 Exercice 2
.

A.2.1 Questions
Soit le graphe G =< X, U > de 6 sommets et 10 arcs. On associe chaque arc un cot.
1 u10 5 u8 1 6 u7 4 u6 2 u9 2 5 4 1 u4 3 u2 1 3 1 1 u1 3 2 1

u3 2

u5 3

Fig.

A.3: Exercice 2

1. Reprsenter le graphe G par une matrice d'adjacence donnant le cot de chaque arc 2. Reprsenter le graphe G par une liste d'adjacence donnant le cot des arcs 3. Reprsenter le graphe G par une matrice d'incidence donnant le cot des arcs

A.2.2 Rponses
1. 1 2 3 4 5 6 2. 1 0 0 0 0 0 0 2 3 0 0 3 0 0 4 3 0 1 0 0 0 0 4 4 0 2 0 3 2 5 0 0 0 0 0 0 6 5 1 0 0 2 0 10 11 3 4 5 2 4 6 5 0 0 0 -3 3 0 6 0 0 0 -2 0 2 7 4 0 0 -4 0 0

LP : 1

6 7 8 Cots : LC & LS : Suivants : 1 2 3 4 5 6 1 3 -3 0 0 0 0 2 0 1 -1 0 0 0 3 0 0 2 -2 0 0 4 0 -3 0 3 0 0

1 3 8 0 1 0 0 0 -1

1 6

2 4 9 0 0 0 0 2 -2

3 2 10 5 0 0 0 0 -5

3 4

2 6

2 4

3.

Page 86

ANNEXE A. EXERCICES

87

A.3 Exercice 3
A.3.1 Questions
Soit un circuit de train lectrique ayant le schma suivant :

A B 1

3 C E + 2 +

Fig.

A.4: Exercice 3

Le train peut se dplacer soit en marche avant (+) soit en marche arrire (-). Le circuit t dcoup en 5 tronons : A, B, C, D et E. Les aiguillages permettent les passages suivants1 :  Passage de A vers B ou E (sens -) et de E vers A (sens +) et de B vers A(sens +)  Passage de D vers C ou E (sens +) et de E vers D (sens -) et de C vers D (sens -)  Passage de A vers B ou C (sens + et sens -), de B vers A ou D (sens - et sens +), de C vers A ou D (sens - et sens +) et de D vers B ou C (sens + et sens -) 1. Dessiner le graphe dcrivant les dplacements du train sur ce circuit, en associant chaque tronon X deux sommets X + et X suivant le sens de dplacement du train sur ce tronon. 2. Montrer qui si l'on maintient constant le sens de marche du train, ce train n'emprunte plus jamais le tronon E au bout d'un certain temps. (a) Montrer que le graphe possde quatre composantes fortement connexes {C1 , C2 , C3 , C4 } (b) Faire des observations sur la topologie du graphe rduit pour conclure que le train n'emprunte plus le tronon E au bout d'un certain temps
venir plutt qu'aux trois points ci-dessous qui ne sont pas des modles de clart
1 Aprs ralisation de l'exercice, il est prfrable de n'utiliser que le schma ci-dessus pour rpondre aux questions

Page 87

ANNEXE A. EXERCICES

88

A.3.2 Rponses
1. Schma :

A+

B+

E-

A-

B-

C-

D-

C+

D+

E+

Fig.

A.5: Rponse la question 1 de l'exercice 3

2. (a) Les composantes fortement connexes sont les suivantes :  C1 = {A+ , B + , C , D }  C2 = {A , B , C + , D+ }  C3 = {E + }  C4 = {E } (b) Voici le graphe dduit des observations :
C3

C1

C2

C4

Fig.

A.6: Rponse la question 2.b de l'exercice 3

3. C3 et C4 sont des tapes transitives1 . En maintenant le sens constant un certain temps, le train n'emprunte plus le tronon E.
1 tats par lesquels on ne peut passer qu'une fois au plus

Page 88

ANNEXE A. EXERCICES

89

A.4 Exercice 4
A.4.1 Questions
Soit le graphe G =< X, U > suivant :

D F E

Fig.

A.7: Exercice 4

On rappelle qu'un graphe non-orient est connexe si tous les sommets du graphe partir d'un sommet donn. On propose un algorithme de recherche des composantes connexes qi se droule en trois phases : 1. eectuer un parcours en profondeur partir d'un sommet quelconque du graphe l'ensemble des sommets rencontrs l'issue de ce parcours forme une composante connexe 2. si tous les sommets du graphe ont t rencontrs n 3. sinon, on retourne en 1 en partant d'un sommet qui n' pas encore t explor Traduire cet algorithme en pseudo-code.

Page 89

ANNEXE A. EXERCICES

90

A.4.2 Rponses
M : Matrice d'adjacence du graphe N : Nombre de sommets S : Sommet courant L : Liste contenant le numro de composante connexe1 k : Compteur incrmentiel

ParcoursProfondeurConnexe(S,k) Dbut L[S] = k Pour i allant de 1 N faire Si M[S,i] != 0 et L[i] = 0 alors ParcoursProfondeurConnexe(i,k) Fin Si Fin Pour Fin ProgrammePrincipal Dbut Pour i allant de 1 N faire L[i] = 0 Fin pour Pour i allant de 1 N faire Si L[i] = 0 alors ParcoursProfondeurConnexe(i,k) Fin Si Fin Pour Fin

Vrication
Init. (A, 1)

(B, 1) (C, 1) (F, 1)

(D, 1)

(E, 1)

(G, 1)

(H, 2) (J, 3)

(I, 2) (K, 3) (L, 3)

(M, 3)

A 0 1 1 1 1 1 1 1 1 1 1 1 1 1

B 0 0 1 1 1 1 1 1 1 1 1 1 1 1

C 0 0 0 1 1 1 1 1 1 1 1 1 1 1

D 0 0 0 0 0 1 1 1 1 1 1 1 1 1

E 0 0 0 0 0 0 1 1 1 1 1 1 1 1

F 0 0 0 0 1 1 1 1 1 1 1 1 1 1

G 0 0 0 0 0 0 0 1 1 1 1 1 1 1

H 0 0 0 0 0 0 0 0 2 2 2 2 2 2

I 0 0 0 0 0 0 0 0 0 2 2 2 2 2

J 0 0 0 0 0 0 0 0 0 0 3 3 3 3

K 0 0 0 0 0 0 0 0 0 0 0 3 3 3

L 0 0 0 0 0 0 0 0 0 0 0 0 3 3

M 0 0 0 0 0 0 0 0 0 0 0 0 0 3

1 Contient 0 si le sommet n'a pas encore t visit

Page 90

ANNEXE A. EXERCICES

91

A.5 Exercice 5
A.5.1 Questions
Soit le graphe G =< X, U > de 6 sommets et 10 arcs. On associe chaque arc un cot.
1 6 2 3

Fig.

A.8: Exercice 5

1. Appliquer l'algorithme de parcours en profondeur en partant du sommet 1 2. Par rapport la fort d'exploration obtenue, prciser :  les arcs couvrants  les arcs avant  les arcs arrires  les arcs croiss

A.5.2 Rponses
1.

S1

S2

S3 S6

S4

S5 2. noir : arcs couvrants, vert : arcs arrires, bleu : arcs avant, rouge : arcs croiss

2 5 3 6

Fig.

A.9: Rponse la question 2 de l'exercice 5

Page 91

ANNEXE A. EXERCICES

92

A.6 Exercice 7
A.6.1 Questions
Soit la matrice M suivante : A 0 0 0 0 0 B 1 0 0 0 0 C 0 1 0 1 0 D 1 0 0 0 0 E 0 0 1 1 0

A B M= C D E 1. Tracer le graphe associ cette matrice 2. Calculer M 2 , M 3 , M 4

3. Calculer A 2 , A 3 , A 4 , existe-t'il un chemin Hamiltonien ? 4. Calculer M [2] , M [3] , M [4]

M M [2] M [3] M [4] 6. Appliquer l'algorithme de WARSHALL


5. Calculer P = I

A.6.2 Rponses
1.

C E

Fig.

A.10: Rponse la question 1 de l'exercice 7

2. A B  M2 = C D E A B  M3 = C D E A B  M4 = C D E A 0 0 0 0 0 A 0 0 0 0 0 A 0 0 0 0 0 B 0 0 0 0 0 B 0 0 0 0 0 B 0 0 0 0 0 C 2 0 0 0 0 C 0 0 0 0 0 C 0 0 0 0 0 D 0 0 0 0 0 D 0 0 0 0 0 D 0 0 0 0 0 E 1 1 0 1 0 E 2 0 0 0 0 E 0 0 0 0 0 Page 92

ANNEXE A. EXERCICES

93

3. A B  A2 = C D E A B  A3 = C D E A B  A = C D E
4

A 0 0 0 0 0 A 0 0 0 0 0 A 0 0 0 0 0

B 0 0 0 0 0 B 0 0 0 0 0 B 0 0 0 0 0

C D E ABC, ADC 0 ADE 0 0 BCE 0 0 0 0 0 DCE 0 0 0 C D E 0 0 ABCE, ADCE 0 0 0 0 0 0 0 0 0 0 0 0 C D E 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

L'absence de valeur dans la matrice A 4 indique qu'il n'existe pas de chemin Hamiltonien dans le graphe. 4. A B = C D E A B = C D E A B = C D E A 1 0 0 0 0 A 0 0 0 0 0 A 0 0 0 0 0 A 0 0 0 0 0 B 1 1 0 0 0 B 0 0 0 0 0 B 0 0 0 0 0 B 0 0 0 0 0 C 1 1 1 1 0 C 1 0 0 0 0 C 0 0 0 0 0 C 0 0 0 0 0 D 1 0 0 1 0 D 0 0 0 0 0 D 0 0 0 0 0 D 0 0 0 0 0 E 1 1 1 1 1 E 1 1 0 1 0 E 1 0 0 0 0 E 0 0 0 0 0

 M [2]

 M [3]

 M [4]

5. A B P = C D E

Page 93

ANNEXE A. EXERCICES

94

6. Droulement de l'algorithme :

k=A

A B C D E

A 1 0 0 0 0

B 1 1 0 0 0

C 0 1 1 1 0

D 1 0 0 1 0

E 0 0 1 1 1

M'[A][A] M'[A][B] M'[A][C] M'[A][D] M'[A][E] M'[B][A] M'[B][B] M'[B][C] M'[B][D] M'[B][E] M'[C][A] M'[C][B] M'[C][C] M'[C][D] M'[C][E] M'[D][A] M'[D][B] M'[D][C] M'[D][D] M'[D][E] M'[E][A] M'[E][B] M'[E][C] M'[E][D] M'[E][E] M'[A][A] M'[A][B] M'[A][C] M'[A][D] M'[A][E] M'[B][A] M'[B][B] M'[B][C] M'[B][D] M'[B][E] M'[C][A] M'[C][B] M'[C][C] M'[C][D] M'[C][E] M'[D][A] M'[D][B] M'[D][C] M'[D][D] M'[D][E] M'[E][A] M'[E][B] M'[E][C] M'[E][D] M'[E][E]

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

M'[A][A] M'[A][B] M'[A][C] M'[A][D] M'[A][E] M'[B][A] M'[B][B] M'[B][C] M'[B][D] M'[B][E] M'[C][A] M'[C][B] M'[C][C] M'[C][D] M'[C][E] M'[D][A] M'[D][B] M'[D][C] M'[D][D] M'[D][E] M'[E][A] M'[E][B] M'[E][C] M'[E][D] M'[E][E] M'[A][A] M'[A][B] M'[A][C] M'[A][D] M'[A][E] M'[B][A] M'[B][B] M'[B][C] M'[B][D] M'[B][E] M'[C][A] M'[C][B] M'[C][C] M'[C][D] M'[C][E] M'[D][A] M'[D][B] M'[D][C] M'[D][D] M'[D][E] M'[E][A] M'[E][B] M'[E][C] M'[E][D] M'[E][E]

OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU OU

( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (

M'[A][A] M'[A][A] M'[A][A] M'[A][A] M'[A][A] M'[B][A] M'[B][A] M'[B][A] M'[B][A] M'[B][A] M'[C][A] M'[C][A] M'[C][A] M'[C][A] M'[C][A] M'[D][A] M'[D][A] M'[D][A] M'[D][A] M'[D][A] M'[E][A] M'[E][A] M'[E][A] M'[E][A] M'[E][A] M'[A][B] M'[A][B] M'[A][B] M'[A][B] M'[A][B] M'[B][B] M'[B][B] M'[B][B] M'[B][B] M'[B][B] M'[C][B] M'[C][B] M'[C][B] M'[C][B] M'[C][B] M'[D][B] M'[D][B] M'[D][B] M'[D][B] M'[D][B] M'[E][B] M'[E][B] M'[E][B] M'[E][B] M'[E][B]

ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET ET

M'[A][A] M'[A][B] M'[A][C] M'[A][D] M'[A][E] M'[A][A] M'[A][B] M'[A][C] M'[A][D] M'[A][E] M'[A][A] M'[A][B] M'[A][C] M'[A][D] M'[A][E] M'[A][A] M'[A][B] M'[A][C] M'[A][D] M'[A][E] M'[A][A] M'[A][B] M'[A][C] M'[A][D] M'[A][E] M'[B][A] M'[B][B] M'[B][C] M'[B][D] M'[B][E] M'[B][A] M'[B][B] M'[B][C] M'[B][D] M'[B][E] M'[B][A] M'[B][B] M'[B][C] M'[B][D] M'[B][E] M'[B][A] M'[B][B] M'[B][C] M'[B][D] M'[B][E] M'[B][A] M'[B][B] M'[B][C] M'[B][D] M'[B][E]

) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

k=B

A B C D E

A 1 0 0 0 0

B 1 1 0 0 0

C 1 1 1 1 0

D 1 0 0 1 0

E 0 0 1 1 1

Page 94

ANNEXE A. EXERCICES

95

k=C

A B C D E

On voit que la de mme.

M'[A][A] = M'[A][B] = M'[A][C] = M'[A][D] = M'[A][E] = M'[B][A] = M'[B][B] = M'[B][C] = M'[B][D] = M'[B][E] = A B C D E M'[C][A] = 1 1 1 1 1 M'[C][B] = 0 1 1 0 1 M'[C][C] = 0 0 1 0 1 M'[C][D] = 0 0 1 1 1 M'[C][E] = 0 0 0 0 1 M'[D][A] = M'[D][B] = M'[D][C] = M'[D][D] = M'[D][E] = M'[E][A] = M'[E][B] = M'[E][C] = M'[E][D] = M'[E][E] = fermeture transitive est dj obtenue

M'[A][A] OU ( M'[A][C] ET M'[A][B] OU ( M'[A][C] ET M'[A][C] OU ( M'[A][C] ET M'[A][D] OU ( M'[A][C] ET M'[A][E] OU ( M'[A][C] ET M'[B][A] OU ( M'[B][C] ET M'[B][B] OU ( M'[B][C] ET M'[B][C] OU ( M'[B][C] ET M'[B][D] OU ( M'[B][C] ET M'[B][E] OU ( M'[B][C] ET M'[C][A] OU ( M'[C][C] ET M'[C][B] OU ( M'[C][C] ET M'[C][C] OU ( M'[C][C] ET M'[C][D] OU ( M'[C][C] ET M'[C][E] OU ( M'[C][C] ET M'[D][A] OU ( M'[D][C] ET M'[D][B] OU ( M'[D][C] ET M'[D][C] OU ( M'[D][C] ET M'[D][D] OU ( M'[D][C] ET M'[D][E] OU ( M'[D][C] ET M'[E][A] OU ( M'[E][C] ET M'[E][B] OU ( M'[E][C] ET M'[E][C] OU ( M'[E][C] ET M'[E][D] OU ( M'[E][C] ET M'[E][E] OU ( M'[E][C] ET maintenant, mais l'algorithme

M'[C][A] ) M'[C][B] ) M'[C][C] ) M'[C][D] ) M'[C][E] ) M'[C][A] ) M'[C][B] ) M'[C][C] ) M'[C][D] ) M'[C][E] ) M'[C][A] ) M'[C][B] ) M'[C][C] ) M'[C][D] ) M'[C][E] ) M'[C][A] ) M'[C][B] ) M'[C][C] ) M'[C][D] ) M'[C][E] ) M'[C][A] ) M'[C][B] ) M'[C][C] ) M'[C][D] ) M'[C][E] ) continue tout

Page 95

ANNEXE A. EXERCICES

96

A.7 Exercice 8
A.7.1 Questions
4 1 X1 0 X0 X2 3 1 X3 4 2 X6 2 5 X7 6 2 3 7 0 X5 4 4 X4 2 X8 1 X9

Fig.

A.11: Exercice 8

1. Appliquer l'algorithme de Dijkstra au graphe ci-dessus partir du sommet X0 2. Dterminer la composition du chemin de valeur minimale allant de X0 X9 3. Montrer l'aide d'un contre exemple que cet algorithme n'est pas applicable lors que certaines valuations sont strictement ngatives 4. Modier l'algorithme pour la recherche d'un chemin de valeur minimale de X0 vers un sommet donn Xk

A.7.2 Rponses
1. SS 0 2 3 1 5 7 6 9 4 8 0 0 0 0 0 0 0 0 0 0 0 1 4 4 4 4 4 4 4 4 4 4 2 1 1 1 1 1 1 1 1 1 1 3 3 2 2 2 2 2 2 2 2 2 4 8 8 7 7 7 7 7 7 7

x 5 7 4 4 4 4 4 4 4 4

6 5 5 5 5 5 5 5 5

7 4 4 4 4 4 4 4 4

8 8 8 8 8 8 8

9 6 6 6 6 6

0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

1 0 0 0 0 0 0 0 0 0 0

2 0 0 0 0 0 0 0 0 0 0

3 0 2 2 2 2 2 2 2 2 2

4 -1 2 2 1 1 1 1 1 1 1

Px 5 -1 2 3 3 3 3 3 3 3 3

6 -1 -1 3 3 3 3 3 3 3 3

7 -1 -1 3 3 3 3 3 3 3 3

8 -1 -1 -1 -1 5 5 5 5 5 5

9 -1 -1 -1 -1 -1 7 7 7 7 7

2. (9) = 6 P(9) = 7 P(7) = 3 P(3) = 2 P(2) = 0 (9) = l02 + l23 + l37 + l79 = (0, 2, 3, 7, 9) l = (9) = 6

Page 96

ANNEXE A. EXERCICES

97

3.
2 3 4 1 2 3 4

-6

Fig.

A.12: Rponse la question 3 de l'exercice 8

Les valeurs relles sont les suivantes :  12=3  14=7  13=1 Et si on 1 1 0 3 0 2 0 4 0 applique l'algorithme de Dijkstra 2 3 4 3 2 3 2 3 2 7 3 2 7

On voit bien que sur la dernire ligne la distance entre le sommet 4 et le sommet 2 n'est pas calcule car le sommet 2 dj t slectionn. 4. remplacer dans l'algorithme :

   

b) Solution

On slectionne le sommet j S tel que (j) = min (i) avec i S S = S {j} S = S + {j} Si Xk S alors Fin Sinon aller en (c)

Page 97

ANNEXE A. EXERCICES

98

A.8 Exercice 9
A.8.1 Questions
X0 2 X1 1 X3 5 1 X2
Fig.

7 4

X4

A.13: Exercice 9

1. Appliquer l'algorithme de Ford au graphe ci-dessus partir du sommet X0 2. Dterminer la composition du chemin de valeur minimale allant de X0 X4 3. Le nombre d'itrations dpend-il de la numrotation des sommets du graphe

A.8.2 Rponses
1. tape Initialisation ` 1ere ` 2eme eme 3`

P0 -1 -1 -1 -1

P1 -1 0 0 0

P2 -1 0 3 3

P3 -1 1 1 1

P4 -1 1 2 2

0 0 0 0 0

1 2 2 2

2 5 4 4

3 3 3 3

4 9 8 8

2. X0 X4 P(4) = 2 P(2) = 3 P(3) = 1 P(1) = 0 P = l01 + l13 + l32 + l24 = 8 3. Oui, le nombre d'itrations change si l'ordre des sommets change. Par exemple si on inverse X2 et X3 dans le graphe prcdent, X2 sera dtermin avant X3 car X1 sera dtermin auparavant dans le droulement de l'algorithme. tape P0 P1 P2 P3 P4 0 1 2 3 4 Initialisation -1 -1 -1 -1 -1 0 ` 1ere -1 0 1 2 3 0 2 3 4 8 ` 2eme -1 0 1 2 3 0 2 3 4 8

Page 98

ANNEXE A. EXERCICES

99

A.9 Exercice 11
A.9.1 Questions

1 3 6 1 1 5
Fig.

2 4 3 4

5 1 3

A.14: Exercice 11

Dans certains problmes de communications on besoin de connatre le point (les points) le moins loign de tous les autres points d'un rseau. C'est le centre de gravit du graphe. D'autre part, on appelle excentricit d'un sommet x, dans un graphe orient G =< X, U > et valu par les cots positifs, la quantit :

exc(x) = max( ppdistance(y, x) ) //plus petite distance avec y X {x}


C'est la distance maximale ncessaire pour atteindre x depuis chaque sommet. On appelle centre de gravit du graphe G, un sommet d'exentricit minimale. C'est donc un sommet tel que :

exc(centre_gravite) = min(exc(x)) avec x X


1. Trouve le centre de gravit du graphe 2. Proposer un algorithme permettant de trouver le centre de gravit d'un graphe

Page 99

ANNEXE A. EXERCICES

100

A.9.2 Rponses
1. 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 0 1 3 1 0 1 3 1 0 1 3 1 0 6 1 2 3 1 0 5 1 2 4 3 1 0 5 1 2 4 3 2 8 0 2 8 0 9 2 8 0 9 2 8 0 9 10 2 8 0 9 10 12 2 8 0 9 10 12 3 5 4 0 1 3 8 3 4 4 0 1 3 8 3 5 0 1 3 5 0 1 3 13 5 0 1 16 3 13 5 0 1 16 4 4 3 0 2 4 3 3 4 0 2 4 4 3 0 2 4 4 3 0 2 4 4 3 0 2 4 4 3 0 2 5 1 6 3 0 0 5 1 6 3 0 0 5 1 0 0 5 1 0 0 5 1 0 0 5 1 7 3 0 0 6 0 6 0 6 0 6 0 6 0 6 0

L(0) =

L(1) =

L(2) =

L(3) =

L(4) =

L(5) =

L(6) =

L(5)

Page 100

ANNEXE A. EXERCICES

101

Dtermination du/des centres d'excentricit :

exc(c) = max(ppdistance(y, x)) avec y X {x} exc(1) = max(ppdistance(y, 1)) avec y {2, 3, 4, 5, 6} = max(5, 1, 2, 4, 3) = 5 partir du sommet 2 exc(2) = 12 partir du sommet 5 exc(3) = 4 partir du sommet 1 centres de gravits car min(exc(x)) avec x X exc(4) = 4 partir du sommet 3 exc(5) = 6 partir du sommet 2 exc(6) = + partir du sommet 1 2. Algorithme
Soit :  L la matrice rsultat  N le nombre de sommets  EXC la liste des excentricits de chaque sommet initialise 0

Debut L = FLOYD() //Retourne la matrice rsultant de l'algorithme de Floyd Pour j allant de 1 N faire Pour i allant de 1 N faire Si L[i, j] > EXC[j] alors EXC[j] = L[i, j] Fin Si Fin Pour Fin Pour centre_gravit = indice_min(EXC) retourner( centre_gravit) Fin

Page 101

ANNEXE A. EXERCICES

102

A.10 Exercice 12
A.10.1 Questions
On doit excuter sept tches a, b, c, d, e, f, g soumises aux contraintes de succession rapportes dans le tableau ci-dessous : Tches a b c d e f g Dure 6 3 6 2 4 3 1 Contraintes

b acheve b acheve d et a acheves f, e, c acheves

1. Dessiner le graphe potentiel-tches associ (Mthode MPM de B. ROY) 2. Aprs avoir remarqu que ce graphe ne comporte pas de circuit, former le tableau des prdecesseurs et calculer, l'aide de ce tableau, les dates au plus tt de dbut des tches. 3. Dterminer le chemin critique ; est-il unique ? 4. Calculer, en formant le tableau des successeurs, les dates au plus tard des tches lorsque la dure de l'ordonnancement est optimale. 5. Calculer les marges totales, libres et certaines des tches. 6. Dessier un diagramme de GANTT de l'ordonnancement  au plus tt  (on dit aussi  cal gauche ), c'est dire dans lequel toute tche est commence sa date de dbut au plus tt.

A.10.2 Rponses
1.

0 a 0 0 D 0 0 c 0 0 0 b 1 0 3

6 2 3

6 6 3 3 4 g 9 6 9 1 10 F 10

d 3

4 e

3 5

Fig.

A.15: Rponse la question 1 de l'exercice 12

Page 102

ANNEXE A. EXERCICES

103

2.

x 1 x Date au plus tt

D 0 0

a D 0

b D 0

c D 0

d b 3

e b 3

f d, a 6

g f, e, c 9

F g 10

3. le chemin critique est compos des sommets suivants : D, a, f, g, F 4. x x D a,b,c b 1 0 0 a f c 3 3 3 b d,e d 1 1 0 c g e 2 2 1 d f f 0 0 0 e g g 0 0 0 f g g F F 0

5. Marges : j a j 0 mj 0 j 0

6. Diagramme de Gantt :

a b c e g d f

Fig.

A.16: Rponse la question 6 de l'exercice 12

Page 103

ANNEXE A. EXERCICES

104

A.11 Exercice 13
A.11.1 Questions
Reprendre l'nonc de l'exercice 12 la page 102 1. Dessiner un graphe PERT en associant chaque tche i des vnements dbut et n de tche et en introduisant des vnements dbut et n de l'ordonnancement. 2. Calculer les dates au plus tt des vnements du graphe. Quel est le chemin critique ? Quelles sont les dates au plus tard ? Calculer les marges totales, libres et certaines des tches.

A.11.2 Rponses
1.
6 2 a6 0 1 0 b3 3 3 4 c6 Dates au plus tot Dates au plus tard e4 9 4 9 g1 10 5 10 d2 6 f3

Fig.

A.17: Rponse la question 1 de l'exercice 13

2.

Mij mij ij

a 0 0 0

b 1 0 0

c 3 3 3

d 1 1 0

e 2 2 1

f 0 0 0

g 0 0 0

Page 104

ANNEXE A. EXERCICES

105

A.12 Exercice 14
A.12.1 Questions
Un projet peut tre dcompos en sept tches lmentaires. Dans le tableau ci-dessous, on a indiqu pour chaque tche quelle est sa dure et quelles sont les conditions de son dmarrage. Tche a b c d e f g Conditions de dmarrage dbut du projet dbut du projet dbut du projet dbut du projet a et b termines b, c et d termines c termin Dure en jours 3 6 5 6 4 7 6

1. Tracer le graphe PERT associ ce problme 2. Calculer les dates au plus tt et au plus tard des vnements 3. Calculer les marges totales de toutes les tches. Quelles sont les tches critiques ? 4. On suppose que, lors de l'excution du projet, la tche b a t retarde d'une journe alors que la tche d a t retarde de 2 jours. Quel est l'eet de ces 2 retards sur le droulement du projet ?

A.12.2 Rponses
1. 2.
6 3 a3 2 0 1 0 d6 5 0 c5 4 6 6 5 g6 b6 0 6 f7 6 e4 13 6 13 0 6 9

Dates au plus tot Dates au plus tard

Fig.

A.18: Rponse aux questions 1 et 2 de l'exercice 14

3.

a b c d e f g Mij 6 0 1 0 3 0 2 Il existe dans ce graphe deux chemins critiques u1 = (b, f ) et u1 = (d, f ) avec l(u1 ) = l(u2 ) = 13

4. L'tape 2 sera retarde de 2 jours, ainsi que l'tape 5 et la date 6

Page 105

ANNEXE A. EXERCICES

106

A.13 Exercice 15
A.13.1 Questions
Un graphe de n = 8 sommets (indices par i) et m = 13 arcs (indices par j) est dcrit par les tableaux ci dessous : i d+ i 1 3 2 2 1 3 3 1 2 5 4 2 3 8 5 0 4 3 6 2 5 6 7 2 6 8 8 1 7 2 8 7 9 3 10 8 11 1 12 3 13 5

j ext(j)

On rappelle que d+ dsigne le nombre d'arcs ayant le sommet xi comme extrmit initiale, c'est i dire le nombre de successeurs de xi . Le tableau ext(j) liste dans l'ordre lexicographique les extrmits terminales des arcs issus de x1 (c'est dire les successeurs de x1 ) puis celles des arcs issus de x2 et ainsi de suite. Ainsi x1 a 3 successeurs qui sont x3 , x5 et x8 . 1. Quel est l'intrt informatique de cette reprsentation d'un graphe ? 2. Construire le graphe grande chelle, aprs avoir dtermin son entre et sa sortie. On disposera les sommets de telle sorte que les arcs ne s'intersectent pas. 3. En fait, dans un contexte d'ordonnancement, tout arc j reprsente une tche et est valu par une dure D(j) donne dans le tableau ci-dessous : tout sommet correspond vnement (tape). Le graphe obtenu est le graphe PERT d'un projet comportant 13 tches (sans tches ctives). Donner l'indice du sommet "dbut et celui du sommet "n" de ce projet. j D(j) A 1 4 B 2 2 C 3 1 D 4 3 E 5 3 F 6 2 G 7 1 H 8 5 I 9 1 J 10 3 K 11 2 L 12 2 M 13 1

Retracer le graphe en reprsentant chaque tche par une lettre et valuer l'arc correspondant par sa dure 4. Calculer les dates au plus tt et au plus tard des tapes. 5. Donner le chemin critique 6. Calculer les marges totales et libres des tches

Page 106

ANNEXE A. EXERCICES

107

A.13.2 Rponses
1. L'intrt est de pouvoir utiliser le premier tableau comme un pointeur sur le second. Le fait d'utiliser des listes est moins gourmand en espace mmoire qu'une matrice par exemple. 2. 3. 4.
4 6 Dates au plus tot Dates au plus tard 1 2 g1 0 4 0 h5 7 5 7 5 k2 d3 e3 i1 11 3 11 a4 7 1 7 b2 14 14 5 f2 13 c1 8 13 m1 10

j3

l2

Fig.

A.19: Rponse aux questions 2, 3 et 4 de l'exercice 15

5. Le chemin critique est le suivant : H, K, A, F, M 6. A 0 0 B 5 5 C 5 5 D 7 7 E 6 0 F 0 0 G 6 0 H 0 0 I 6 6 J 6 6 K 0 0 L 4 4 M 0 0

Mj mj

Page 107

ANNEXE A. EXERCICES

108

A.14 Exercice 17
A.14.1 Questions
Avant d'tablir un projet de construction d'autoroute on dsire tudier la capacit du rseau autoroutier, reprsent par le graphe ci-dessous, reliant la ville E la ville S. Pour cela, on a valu le nombre maximal de vhicules que chaque route peut couler par heure, compte tenu des ralentissements aux traverses des villes et villages, des arrts aux feux etc... Ces valuations sont indiques en centaines de vhicules par heure sur les arcs du graphe. Les temps de parcours entre villes sont tels que les automobilistes n'emprunteront que les chemins reprsents par le graphe. Quel est le dbit horaire total maximal de vhicules susceptible de s'couler entre les villes E et S ? En utilisant l'algorithme de Ford-Fulkerson, augmenter le ot entre les sommets E et S jusqu' ce qu'il devienne maximal. (La valeur initiale du ot : valeurs indiques ct des capacits)
a u1 [5] 5 u2 [10] 9 u8 [7] 1 c u6 [8] 6 u7 [10] 4 E b u4 [1] 1 u3 [8] 5 e u5 [2] 2 u10 [2] 2 u13 [2] 0 u9 [4] 4 f d u14 [7] 7 g u11 [4] 2 u12 [6] 6 u15 [6] 4 u16 [10] 9 S

Fig.

A.20: Exercice 17

A.14.2 Rponses
Application de l'algorithme de Ford-Fulkerson : On applique un ot de retour 0 sur le graphe

a u1 [5] 5 u2 [10] 9

u8 [7] 1

c u6 [8] 6

u14 [7] 7 g u11 [4] 2 u12 [6] 6 u15 [6] 4 u13 [2] 0 u16 [10] 9 S 19

u7 [10] 4 E b u4 [1] 1 u3 [8] 5 e u5 [2] 2 u10 [2] 2 d

u9 [4] 4

Fig.

A.21: Application d'un ot de retour sur le graphe A.20

Page 108

ANNEXE A. EXERCICES

109

1. G(0 ) :
u8+ 6 u8 - 1 u6+ 2

a u7- 4 u1- 5 u2+ 1 E u2- 9 u3- 5 u3+ 3 u4- 1 b

u14- 7 u11+ 2 u7+ 6 d u13- 0 g u16- 9 u11- 2 u12- 6 u13+ 2 f u15- 4 S u15+ 2 u16+ 1

u6- 6 u5- 2

u10- 2 e u9- 4

Fig.

A.22: Graphe d'cart dduit du graphe A.20

2. k = 0 P 0 = (E, b, c, a, d, f ) = (u+ , u+ , u , u+ , u+ , u+ ) 6 8 7 13 15 2
1 2 1 6 2 2

3.

0 u2 u6 u8 u7 u13 u15

=1 = 10 =7 =0 =5 =1 =5

1 u0 = 20

a u1 [5] 5

u8 [7] 0

c u6 [8] 7

u14 [7] 7 g u11 [4] 2 u12 [6] 6 u15 [6] 5 u13 [2] 0 u16 [10] 9 S

u7 [10] 5 E b u4 [1] 1 u3 [8] 5 e u5 [2] 2 u10 [2] 2 d

u2 [10] 10

u9 [4] 4

Fig.

A.23: Graphe dduit de l'augmentation du ot sur le graphe A.22

Page 109

ANNEXE A. EXERCICES

110

1. G(1 ) :
u8+ 7 a u7- 5 u1- 5 u6- 7 E u3- 5 u2- 10 u3+ 3 e b u4- 1 u10- 2 u9- 4 f u5- 2 u6+ 1 c

u14- 7 u11+ 2 u7+ 5 d u13- 1 g u16- 9 u11- 2 u12- 6 u13+ 1 u15- 5 S u15+ 1 u16+ 1

Fig.

A.24: Graphe d'cart dduit du graphe A.22

Il n'existe pas de chemin entre E et S , l'algorithme s'arrte, 0 est maximal et vaut 20.

Page 110

ANNEXE A. EXERCICES

111

A.15 Exercice 17b


A.15.1 Questions
Soit le graphe G =< X, U > de n = 5 sommets et m = 7 arcs, valu par des capacits et dni par les tableaux suivants :  Le tableau NARC dsigne le demi-degr extrieur de chacun des sommets du graphe. N ARC(I) indique le nombre d'arcs ayant le sommet I comme extrmit initiale.

I N ARC(I)

1 1

2 2

3 2

4 0

5 2

 Le tableau SUCC liste d'abord les successeurs (s'ils existent) du sommet 1, puis du sommet 2 et ainsi de suite. SU CC(J) dsigne l'indice du sommet qui est l'extrmit terminale de l'arc d'indice J : On numrot les arcs en commencant par ceux issus du sommet 1, puis du sommet 2, etc . . .

J SU CC(J)

1 4

2 1

3 4

4 2

5 5

6 1

7 2

 Le tableau CAPA dsigne la capacit de l'arc d'indice J

J CAP A(J)

1 1

2 4

3 7

4 3

5 5

6 2

7 2

 Le tableau FLOT indique le ot transport sur l'arc d'indice J

J F LOT (J)

1 1

2 1

3 4

4 3

5 2

6 0

7 2

1. Tracer le graphe G grande chelle. On doit trouver pour chaque arc son numro, sa capacit entre crochet et le ot transport. Le tout devant apparaitre trs clairement et trs lisiblement. 2. Donner la valeur du ot dni dans le tableau FLOT. 3. Ce ot est-il complet ? 4. Dterminer toutes les coupes du rseau de transport et donner leur capacit. Donner la coupe de capacit minimale. Le ot est-il optimal ? 5. Sinon l'optimiser en utilisant l'algorithme de Ford-Fulkerson.

Page 111

ANNEXE A. EXERCICES

112

A.15.2 Rponses
1.

2 u 4 [3] 3

u 3 [7] 4

4 u 1 [1] 1

u 2 [4] 1 3 u 7 [2] 2 1 u 6 [2] 0

u 5 [5] 2 5

Fig.

A.25: Rponse la question 1 de l'exercice 17b

2. Le ot vaut 5. 3. Oui, le ot est complet car il existe au minimim un arc satur. 4.

C(3) = 8 C(3, 2) = 16 C(3, 5) = 7 C(3, 2, 1) = 13 C(3, 5, 1) = 6 Valeur minimale, comme la capacit est infrieure au ot, le ot n'est pas maximal C(3, 1) = 9 C(3, 5, 2, 1) = 8 5. Application de l'algorithme de Ford-Fulkerson :
u 3+ 3 2 u 3- 4 4

u 4- 3 u 2- 1 3 u 5+ 3 u 7- 2 u 2+ 3 u 1- 1 1 u 6+ 2

u 5- 2

A.26: Rponse la question 5 de l'exercice 17b - premire tape de l'application de l'algorithme de Ford-Fulkerson
Fig.

Page 112

ANNEXE A. EXERCICES

113

P 0 = (3, 5, 1, 2, 4) = (u+ , u+ , u , u+ ) 35 51 12 24
3 2 1 3

=1 1 = 3 35 1 = 1 51 1 = 0 12 1 = 5 24 1 = 6 0
2 u4 [3] 3 u3 [7] 5 4 u1 [1] 1 u2 [4] 0 3 u7 [2] 2 1 u6 [2] 1

u5 [5] 3 5

A.27: Rponse la question 5 de l'exercice 17b - deuxime tape de l'application de l'algorithme de Ford-Fulkerson
Fig.

On obtient donc le graphe d'cart suivant :


u3+ 2 2 u3- 5 4

u4- 3 u2+ 4 u1- 1 3 u5+ 2 u7- 2 u6+ 1 1

u5- 3

u6- 1

A.28: Rponse la question 5 de l'exercice 17b - graphe d'cart nal dduit de l'application de l'algorithme de Ford-Fulkerson
Fig.

Il n'existe plus de chemin de 3 4, l'algorithme s'arrte. Le ot est optimal et vaut 6.

Page 113

ANNEXE A. EXERCICES

114

A.16 Exercice 19
A.16.1 Questions
Une socit de distribution doit eectuer le transport d'un produit de trois centres de production A, B , C vers trois points de vente X , Y , Z . Le schma ci-dessous donne la localisation de ces centres et la conguration du rseau de communication constitu d'une voie ferre et de routes. N est un simple point intermdiaire.
B 20km A 50km 60km Z X 30km 20km 40km N 20km Voie ferree C Route 65km 60km Y

Fig.

A.29: nonc de l'exercice 19

On suppose que :  le transport d'une tonne de produit par voie ferre cote 2 units montaires/km  le transport d'une tonne de produit par route cote 3 units montaires/km  le transfert d'une tonne de produit de la voie ferre vers la route et inversement cote 20 units montaires 1. Vrier la valeur, couple par couple (centre de production, point de vente) du chemin de moindre cot, par comparaison des divers chemins possibles et indiquer les points ou centres par lesquels passe ce chemin de moindre cot. X 100 160 150 Y 300 195 200 Z 180 180 60

A B C

Comment pourrait-on procder de faon systmatique si le rseau tait de plus grande taille ? (introduire un graphe valu - le tracer pour l'exemple ci-dessus - et proposer une mthode de rsolution adapte. 2. Les productions des trois centres A, B , C sur la priode tudie sont :  A : 300 tonnes  B : 400 tonnes  C : 300 tonnes Les demandes des trois points de vente X , Y , Z , pendant le mme temps, sont respectivement :  270 tonnes  310 tonnes  420 tonnes Comment organiser le transport pour que les demandes de X , Y , Z soient exactement satisfaites et que le cot de ce transport soit le plus petit possible ? On utilisera un algorithme appropri sur un rseau de transport dans lequel tout chemin de moindre cot obtenu la question prcdente sera gur par un arc : (centre de production, point de vente) valu convenablement.

Page 114

ANNEXE A. EXERCICES

115

A.16.2 Rponses
1. Il faudrait modliser le rseau de transport, puis appliquer l'algorithme de Ford pour trouver les plus courts chemins des centres de production vers les points de vente.
Avf 20 Avr 100 Xvf 20 Xvr 80 Nvf 120 20 Nvr Yvf 20 Yvr

180 Z

90 60

60 C

60 B

195

Fig.

A.30: Rponse la question 1 de l'exercice 19

2. On cherche une solution de base au problme :


270 30

A B C

X 270

Y 30 280 310

Z 120 300 420 300 400 300


B

280 120

270

300

Fig.

A.31: Solution de base de l'algorithme du stepping stone dans la question 2 de l'exercice 19

AZ = 105 on slectionne AZ car il est le plus petit cot marginal. BX = 165 CX = 275 CY = 120 = {AZ, BZ, BY, AY } = {BZ, AY } + = {AZ, BY } q = min[xBZ , xAY ] = min(120, 30) = 30 xBZ = 120 30 = 90 xAY = 30 30 = 0 xAZ = 0 + 30 = 30 xBY = 280 + 30 = 310

Page 115

ANNEXE A. EXERCICES

116

On obtient donc la solution suivante :


270

A B C

X 270

Y 310 310

270

Z 30 90 300 420

300 400 300

310 90

Y 30 Z

300

A.32: Rsultat de la premire itration de l'algorithme du stepping stone dans la question 2 de l'exercice 19
Fig.

On recalcule les cots marginaux : = AY = 105

= BX = 60 = CX = 170 = CY = 125
Tous les cots marginaux sont suprieurs 0, l'algorithme s'arrte. z = 127050

Page 116

ANNEXE A. EXERCICES

117

A.17 Exercice 18
A.17.1 Questions
Une banque dsire installer au moindre cot un rseau de transmissions de donnes entre son agence centrale situe dans le quartier de la bourse Paris et sept de ses succursales. Il s'agit d'un rseau arborescent compos de lignes prives point point 2400 bauds avec des possibilits de concentrateurs. Le cot de construction d'une ligne entre deux agences est donn par le tableau suivant (en units montaires) : B 5 18 9 13 7 38 22 O 17 11 7 12 38 15 E 27 23 15 20 25 R

Bourse Opra Etoile Rpublique St-Lazare Louvre Neuilly Chtelet

St L

20 15 40 25

15 40 30

35 10

45

(Ces cots ont t dtermins en fonction des distances entre les direntes agences et du chire d'aaires de chaque surrursale). 1. Quel problme classique reconnaissez-vous ? 2. Dterminez la solution optimale du problme.

A.17.2 Rponses
1. On reconnait un problme de recherche d'arbre couvrant de cot minimal 2. Application de l'algorithme de Prim1 : T = {B} U = (a) B O E R StL L N C

U = {(B, O)} T = T + {O} = {B, O}

B 5 18 9 13 7 38 22

O 17 11 7 12 38 15

E 27 23 15 20 25

St L

20 15 40 25

15 40 30

35 10

45

1 On va barrer, au fur et a mesure que l'on ajoute des sommets dans la liste U , des cots dans le tableau correspondant aux liens existants entre tous les sommets de la liste U

Page 117

ANNEXE A. EXERCICES

118

(b) B O E R St L N C

U = {(B, O), (O, S L)} T = {B, O, S t L}

B 5 18 9 & 13 & 7 38 22 B 5 18 9 & 13 & 7 38 22 B 5 18 9 & 13 & 7 38 22 B 5 18 9 & 13 & 7 38 & 22 & B 5 & 18 & 9 & 13 & 7 38 & 22 &

O 17 11 7 12 38 15 O 17 11 7 & 12 & 38 15 O 17 & 11 & 7 & 12 & 38 15 O 17 & 11 & 7 & 12 & 38 & 15 & O & 17 & & 11 & 7 & 12 & 38 & 15 &

E 27 23 15 20 25 E 27 23 15 20 25 E 27 23 15 20 25 E 27 23 15 20 25 E & 27 & & 23 & & 15 & 20 & 25 &

St L

20 15 40 25 R

15 40 30

35 10 L

45 N

(c) B O E R St L N C

St L

U = {(B, O), (O, S t L), (B, L)} T = {B, O, S t L, L}

20 15 40 25 R

& 15 & 40 30

35 10 L

45 N

(d) B O E R St L N C

St L

U = {(B, O), (O, S t L), (B, L), (B, R)} T = {B, O, S L, L, R}


t

& 20 & & 15 & 40 25 R

& 15 & 40 30

35 10 L

45 N

(e) B O E R St L N C

St L

U = {(B, O), (O, S t L), (B, L), (B, R), (L, C)} T = {B, O, S L, L, R, C}
t

& 20 & & 15 & 40 & 25 & R

& 15 & 40 & 30 &

35 & 10 & L

45 N

(f) B O E R St L N C

St L

U = {(B, O), (O, S t L), (B, L), (B, R), (L, C), (L, E)} T = {B, O, S L, L, R, C, E}
t

& 20 & & 15 & 40 & 25 &

& 15 & 40 & 30 &

35 & 10 &

45

Page 118

ANNEXE A. EXERCICES

119

(g) B O E R St L N C

U = {(B, O), (O, S t L), (B, L) (B, R), (L, C), (L, E), (E, N )} T = {B, O, S L, L, R, C, E, N }
t

B 5 & 18 & 9 & 13 & 7 & 38 & & 22 &

O & 17 & & 11 & 7 & 12 & & 38 & & 15 &

E & 27 & & 23 & & 15 & & 20 & & 25 &

St L

& 20 & & 15 & & 40 & & 25 &

& 15 & & 40 & & 30 &

& 35 & & 10 &

& 45 &

On obtient donc nalement un arbre couvrant de cot gal 73 de la forme :


N E L C B R O SL

Fig.

A.33: Arbre couvrant dduit de l'algorithme de Prim

Page 119

ANNEXE A. EXERCICES

120

A.18 Exercice 20
A.18.1 Questions
Le principe du calcul du produit de deux matrices1 est le suivant :

cij =

N k=1

aik bjn pour i et j [1, N ]

1. Ecrire l'algorithme de multiplication des matrices 2. valuer la complexit de l'algorithme

A.18.2 Rponses
1. Pour a allant de 1 N faire nE Pour i allant de 1 N faire (n n)E Pour j allant de 1 N faire (n n n)E Cai = Cai + (Aaj Bij) (n n n)E Fin pour (n n n)E Fin pour (n n)E Fin pour nE 2.

T (n) = T1 (n) + T2 (n) + . . . + Tn (n) = n2 E + n2 E + . . . + n2 E


N fois

=nn = n3

Si E = 1U T , alors T (n) = n3 et T (n) = O(n3 )


1 On a comme hypothse que les matrices soient toutes deux de taille N N

Page 120

ANNEXE A. EXERCICES

121

A.19 Exercice 21
A.19.1 Questions
P1

T1 P2 P3

P4

T2

T3

P5

P6

T4

T5

Fig.

A.34: Rseau de Ptri Analyser

1. Construire le graphe des marquages du rseau de Ptri 2. Le rseau est-il born ? Sans blocage ?

A.19.2 Rponses
1. Arbre de couverture :

M0 =

1 0 1 0 0 0

T1

M1 =

0 1 2 1 0 0

T2

M2 =

0 0 1 1 1 0

T4

M0

T3

M4 =

0 0 0 0 1 1

M3 =

0 1 1 0 0 1

T5

M0

2. Oui le graphe est born (k = 2) et il n'est pas sans blocage (M4 est un marquage de blocage)

Page 121

Table des gures


1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 2.1 2.2 2.3 2.4 2.5 2.6 2.7 3.1 3.2 4.1 4.2 4.3 4.4 5.1 5.2 6.1 6.2 6.3 6.4 6.5 Exemple Exemple Exemple Exemple Exemple Exemple Exemple Exemple Exemple Exemple Exemple Exemple Exemple Exemple Exemple Exemple Exemple Exemple Exemple de graphe orient. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de graphe orient complet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de graphe non-orient. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de graphe non-orient complet. . . . . . . . . . . . . . . . . . . . . . . . . . . . de graphe non-orient simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . de graphe connexe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de graphe non-fortement connexe ayant deux composantes fortement connexes de graphe rduit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de chemin et de circuit Hamiltonien . . . . . . . . . . . . . . . . . . . . . . . . montrant un sommet pour les degrs/demi-degrs d'un graphe orient . . . . . montrant un sommet pour le degr d'un graphe non-orient . . . . . . . . . . . montrant le cocycle d'un graphe . . . . . . . . . . . . . . . . . . . . . . . . . . d'application multivoque d'un graphe . . . . . . . . . . . . . . . . . . . . . . . de graphe orient pour exemple de matrice d'adjacence . . . . . . . . . . . . . de graphe non-orient pour exemple de matrice d'adjacence . . . . . . . . . . . de graphe orient pour exemple de liste d'adjacence . . . . . . . . . . . . . . . de graphe non-orient pour exemple de liste d'adjacence . . . . . . . . . . . . . de graphe orient pour exemple de matrice d'incidence . . . . . . . . . . . . . . de graphe non-orient pour exemple de matrice d'incidence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 8 9 10 11 12 12 12 13 14 15 16 17 18 18 19 19 20 21 23 23 24 24 25 27 28 32 36 40 42 44 45 49 51 53 53 54 55 56

Reprsentation d'une liste linaire sous forme d'un tableau . . . . . . . . . . . . Reprsentation d'une liste linaire sous forme de liste chane . . . . . . . . . . Reprsentation d'une pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reprsentation d'une le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de graphe orient pour le parcours en profondeur . . . . . . . . . . . . Reprsentation de la fort courante dduite du parcours en profondeur . . . . . Exemple de graphe non-orient pour raliser le parcours en largeur d'un graphe

Exemple de graphe orient pour raliser les matrices boolennes et aux arcs . . . . . . . . Exemple de graphe orient pour raliser la fermeture transitive . . . . . . . . . . . . . . . Exemple de graphe orient pour recherche de chemins optimaux . Exemple de graphe orient pour exemple de recherche de chemins Contre-exemple de graphe pour l'algorithme de Ford . . . . . . . Graphe orient pour application de l'algorithme Floyd . . . . . . . . . . . . optimaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Graphe dtermin partir de la mthode MPM . . . . . . . . . . . . . . . . . . . . . . . . Graphe dtermin partir de la mthode PERT . . . . . . . . . . . . . . . . . . . . . . . Exemple de rseau de transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de rseau de transport avec arc retour . . . . . . . . . . . . . . . . . . . Exemple de rseau de transport avec arc retour et ots . . . . . . . . . . . . . . . Graphe d'cart dduit du rseau de transport reprsent sur la gure 6.3 . . . . . Graphe d'cart dduit de l'application de l'algorithme de Ford-Fulkerson sur le d'cart reprsent sur la gure 6.4 . . . . . . . . . . . . . . . . . . . . . . . . . . 122 . . . . . . . . . . . . . . . . . . . . graphe . . . . .

TABLE DES FIGURES

123

6.6 6.7 6.8 6.9 7.1 7.2 7.3 7.4 7.5 8.1 8.2 8.3 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 9.10

Graphe du problme d'ordonnancement particulier d'ordonnancement . . . . Schma illustrant la solution de base de l'algorithme du Stepping Stone . . . Schma illustrant la premire optimisation de l'algorithme du Stepping Stone Schma illustrant la deuxime optimisation de l'algorithme du Stepping Stone Exemple d'arbre . . . . . . . . . . . . . . . . . . . . . Exemple de graphe pour recherche d'arbre couvrant . Exemple d'arbre couvrant . . . . . . . . . . . . . . . . Exemple de graphe pour application de l'algorithme de Rsultat de l'application de l'algorithme de Kruskal . . . . . . . . . . . . . . . . Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

58 59 61 62 64 64 64 65 65 68 69 73 76 77 77 78 78 79 79 79 80 81 84 85 86 87 88 88 89 91 91 92 96 97 98 99 102 103 104 105 107 108 108 109 109 110 112 112 113

Exemple de tableau pour analyse du temps d'excution de l'algorithme qui retourne le plus petit indice d'un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de droulement de l'algorithme du tri par slection . . . . . . . . . . . . . . . . . Exemple de droulement de l'algorithme du tri par slection . . . . . . . . . . . . . . . . . Exemple de rseau de Ptri . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple modliser en rseau de Ptri . . . . . . . . . . . . . . . . . . . . Exemple de modlisation de rseau de Ptri . . . . . . . . . . . . . . . . . . Exemple de rseau de Ptri non-vivant . . . . . . . . . . . . . . . . . . . . . Exemple de rseau de Ptri non-pseudo-vivant . . . . . . . . . . . . . . . . . Exemple de rseau de Ptri non-born . . . . . . . . . . . . . . . . . . . . . Exemple de rseau de Ptri born . . . . . . . . . . . . . . . . . . . . . . . . Exemple de conit structurel dans un rseau de Ptri born . . . . . . . . . Exemple de conit eectif dans un rseau de Ptri born . . . . . . . . . . . Exemple de rseau de Ptri pour application de la mthode de construction couverture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de l'arbre de . . . . . . . .

A.1 Exercice 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Rponse la question 5 de l'exercice 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.3 Exercice 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.4 Exercice 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.5 Rponse la question 1 de l'exercice 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.6 Rponse la question 2.b de l'exercice 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.7 Exercice 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.8 Exercice 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.9 Rponse la question 2 de l'exercice 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.10 Rponse la question 1 de l'exercice 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.11 Exercice 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.12 Rponse la question 3 de l'exercice 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.13 Exercice 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.14 Exercice 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.15 Rponse la question 1 de l'exercice 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.16 Rponse la question 6 de l'exercice 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.17 Rponse la question 1 de l'exercice 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.18 Rponse aux questions 1 et 2 de l'exercice 14 . . . . . . . . . . . . . . . . . . . . . . . . . A.19 Rponse aux questions 2, 3 et 4 de l'exercice 15 . . . . . . . . . . . . . . . . . . . . . . . . A.20 Exercice 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.21 Application d'un ot de retour sur le graphe A.20 . . . . . . . . . . . . . . . . . . . . . . . A.22 Graphe d'cart dduit du graphe A.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.23 Graphe dduit de l'augmentation du ot sur le graphe A.22 . . . . . . . . . . . . . . . . . A.24 Graphe d'cart dduit du graphe A.22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.25 Rponse la question 1 de l'exercice 17b . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.26 Rponse la question 5 de l'exercice 17b - premire tape de l'application de l'algorithme de Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.27 Rponse la question 5 de l'exercice 17b - deuxime tape de l'application de l'algorithme de Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 123

TABLE DES FIGURES

124

A.28 Rponse la question 5 de l'exercice 17b - graphe d'cart nal dduit de l'application de l'algorithme de Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.29 nonc de l'exercice 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.30 Rponse la question 1 de l'exercice 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.31 Solution de base de l'algorithme du stepping stone dans la question 2 de l'exercice 19 . . A.32 Rsultat de la premire itration de l'algorithme du stepping stone dans la question 2 de l'exercice 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.33 Arbre couvrant dduit de l'algorithme de Prim . . . . . . . . . . . . . . . . . . . . . . . . A.34 Rseau de Ptri Analyser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

113 114 115 115 116 119 121

Page 124

Bibliographie
[Des] Desbazeille. Exercices et problmes de Recherche Oprationnelle. Dunod. [Faua] Faure. Guide de la Recherche Oprationnelle : Les Applications, volume 2. Masson. [Faub] Faure. Guide de la Recherche Oprationnelle : Les Fondements, volume 1. Masson. [Fauc] Faure. Prcis de Recherche Oprationnelle. Dunod. [Gon] Gondrand. Graphes et algorithmes. Eyrolles. [Rosa] Roseaux. Exercices et problmes rsolus de Recherche Oprationnelle : Les graphes, leurs usages et leurs algorithmes, volume 1. Masson. [Rosb] Roseaux. Exercices et problmes rsolus de Recherche Oprationnelle : Phnomnes alatoires en Recherche oprationnelle, volume 2. Masson.

125