Graphes, plus court chemin et ordonnancement de projets
Objectifs du chapitre — À la fin de ce chapitre, vous saurez :
- représenter un réseau par un graphe (sommets, arcs, valuations) ;
- calculer un plus court chemin par l'algorithme de Dijkstra ;
- construire un arbre couvrant de poids minimal par l'algorithme de Kruskal ;
- ordonnancer un projet par la méthode PERT : dates au plus tôt, au plus tard, marges ;
- identifier le chemin critique et raisonner sur la réduction de la durée d'un projet.
6.1 Les graphes
Définition — Graphe : ensemble de sommets (ou nœuds) reliés par des arêtes (liaisons non orientées) ou des arcs (liaisons orientées). Un graphe est valué quand chaque arc porte un nombre : distance, coût, durée, capacité.
Les graphes modélisent les réseaux routiers et ferroviaires, les réseaux logistiques (entrepôts et magasins), les réseaux électriques et de télécommunication, mais aussi les relations d'antériorité entre les tâches d'un projet. Vocabulaire utile :
- un chemin est une suite d'arcs consécutifs ; sa longueur est la somme des valuations ;
- un circuit est un chemin qui revient à son point de départ ;
- un graphe est connexe si l'on peut relier deux sommets quelconques ;
- un arbre est un graphe connexe sans cycle ; avec $n$ sommets, il compte exactement $n - 1$ arêtes.
6.2 Le plus court chemin : l'algorithme de Dijkstra (1959)
Il calcule le plus court chemin d'un sommet de départ vers tous les autres, quand toutes les valuations sont positives.
- Donner l'étiquette 0 au sommet de départ et $+\infty$ aux autres.
- Choisir le sommet non définitif de plus petite étiquette et le rendre définitif.
- Pour chacun de ses voisins non définitifs, calculer « étiquette du sommet + longueur de l'arc » ; si c'est plus petit que l'étiquette du voisin, la remplacer et noter le prédécesseur.
- Recommencer jusqu'à ce que tous les sommets soient définitifs. Le chemin se lit en remontant les prédécesseurs.
Exemple. Un livreur part d'un dépôt A. Les distances (en km) des tronçons sont : A-B 7, A-C 9, A-F 14, B-C 10, B-D 15, C-D 11, C-F 2, D-E 6, E-F 9.
| Étape | Sommet fixé | A | B | C | D | E | F |
|---|---|---|---|---|---|---|---|
| 1 | A | 0 | 7 (A) | 9 (A) | ∞ | ∞ | 14 (A) |
| 2 | B | 7 | 9 | 22 (B) | ∞ | 14 | |
| 3 | C | 9 | 20 (C) | ∞ | 11 (C) | ||
| 4 | F | 20 | 20 (F) | 11 | |||
| 5 | D | 20 | 20 | ||||
| 6 | E | 20 |
Le plus court chemin de A à E mesure 20 km : A → C → F → E (9 + 2 + 9). On remarque que la liaison directe A-F (14 km) est moins intéressante que le détour par C (11 km). Les applications de navigation et les logiciels de tournées reposent sur des versions améliorées de cet algorithme.
6.3 L'arbre couvrant de poids minimal : l'algorithme de Kruskal (1956)
Problème : relier tous les sommets d'un réseau (raccorder des agences par fibre optique, des douars au réseau électrique) avec une longueur totale minimale, sans redondance.
- Classer les arêtes par valuation croissante.
- Les examiner dans cet ordre : retenir une arête si elle ne crée pas de cycle avec les arêtes déjà retenues.
- S'arrêter quand on a retenu $n - 1$ arêtes.
L'algorithme est dit glouton : il fait à chaque étape le meilleur choix local, et l'on démontre que, pour ce problème, cela donne l'optimum global. Ce n'est pas le cas en général (chapitre 7).
6.4 L'ordonnancement de projets : la méthode PERT
Un projet (construction d'une usine, lancement d'un produit, organisation d'un événement) se décompose en tâches liées par des contraintes d'antériorité : une tâche ne peut commencer que lorsque ses prédécesseurs sont terminés. La méthode PERT (Program Evaluation and Review Technique, US Navy, 1958) et la méthode du chemin critique (CPM) permettent de calculer la durée minimale du projet et les tâches à surveiller.
Pour chaque tâche $i$ de durée $d_i$ :
- date de début au plus tôt $ES_i$ = maximum des dates de fin au plus tôt de ses prédécesseurs ; fin au plus tôt $EF_i = ES_i + d_i$ ;
- la durée minimale du projet est la plus grande date de fin au plus tôt ;
- date de fin au plus tard $LF_i$ = minimum des dates de début au plus tard de ses successeurs (pour la dernière tâche, la durée du projet) ; début au plus tard $LS_i = LF_i - d_i$.
Définition — Marge totale : $MT_i = LS_i - ES_i$, retard maximal que peut prendre une tâche sans retarder la fin du projet.
Définition — Marge libre : $ML_i$ = (plus petite date de début au plus tôt des successeurs) $- EF_i$, retard possible sans retarder le début au plus tôt d'aucune autre tâche.
Définition — Chemin critique : suite de tâches de marge totale nulle, qui relie le début et la fin du projet. Sa longueur est la durée minimale du projet ; tout retard sur une tâche critique retarde le projet d'autant.
On représente le projet par un graphe : dans la convention PERT, les tâches sont des arcs et les sommets des étapes (ce qui oblige parfois à ajouter des tâches fictives) ; dans la convention potentiel-tâches (MPM, Roy, 1958), les tâches sont des sommets, ce qui est plus simple. Le diagramme de Gantt présente ensuite le calendrier sous forme de barres.
6.5 Réduire la durée d'un projet
Pour raccourcir un projet, il faut agir sur le chemin critique : accélérer une tâche non critique ne sert à rien. On peut affecter plus de ressources à une tâche critique (heures supplémentaires, sous-traitance) en comparant le coût de l'accélération par jour gagné au gain (pénalités de retard évitées). Attention : en raccourcissant le chemin critique, un autre chemin peut devenir critique.
Dans le PERT probabiliste, chaque durée est estimée par trois valeurs (optimiste $a$, la plus probable $m$, pessimiste $b$) : durée moyenne $\dfrac{a + 4m + b}{6}$ et variance $\left(\dfrac{b - a}{6}\right)^2$. La durée du projet suit approximativement une loi normale dont la moyenne et la variance sont les sommes de celles des tâches critiques.
6.6 Méthode : ordonnancer un projet
- Dresser le tableau des tâches : durée et prédécesseurs immédiats.
- Calculer, dans l'ordre des tâches, les dates au plus tôt (passage avant).
- Fixer la durée du projet et calculer les dates au plus tard en remontant (passage arrière).
- Calculer les marges totales et libres.
- Identifier le chemin critique (marges totales nulles) et vérifier que sa durée est celle du projet.
- Tracer le diagramme de Gantt et commenter les tâches à surveiller.
Les pièges à éviter
- Prendre le minimum des fins des prédécesseurs pour la date au plus tôt (c'est le maximum : il faut attendre le dernier).
- Prendre le maximum des débuts des successeurs pour la date au plus tard (c'est le minimum).
- Confondre marge totale et marge libre.
- Appliquer Dijkstra à un graphe qui a des valuations négatives.
- Dans Kruskal, retenir une arête qui ferme un cycle.
Exercice 1 — Lancement d'un nouveau produit
Une PME de cosmétiques à base d'huile d'argan prépare le lancement d'une nouvelle crème. Les tâches sont :
| Tâche | Description | Durée (semaines) | Prédécesseurs |
|---|---|---|---|
| A | Étude de marché | 4 | — |
| B | Conception de la formule | 6 | — |
| C | Choix des fournisseurs d'emballage | 3 | A |
| D | Réalisation du prototype | 5 | B |
| E | Tests auprès des consommateurs | 2 | C, D |
| F | Préparation de la campagne publicitaire | 4 | A |
| G | Production de la première série | 6 | D |
| H | Lancement commercial | 1 | E, F, G |
Travail à faire :
- Calculez les dates au plus tôt et la durée minimale du projet.
- Calculez les dates au plus tard.
- Calculez les marges totales et libres ; identifiez le chemin critique.
- La conception de la formule (B) prend 2 semaines de retard. Quelle conséquence ? Et si c'est l'étude de marché (A) ?
Voir le corrigé
1) et 2) Dates (en semaines)
| Tâche | Durée | $ES$ | $EF$ | $LS$ | $LF$ | Marge totale | Marge libre |
|---|---|---|---|---|---|---|---|
| A | 4 | 0 | 4 | 8 | 12 | 8 | 0 |
| B | 6 | 0 | 6 | 0 | 6 | 0 | 0 |
| C | 3 | 4 | 7 | 12 | 15 | 8 | 4 |
| D | 5 | 6 | 11 | 6 | 11 | 0 | 0 |
| E | 2 | 11 | 13 | 15 | 17 | 4 | 4 |
| F | 4 | 4 | 8 | 13 | 17 | 9 | 9 |
| G | 6 | 11 | 17 | 11 | 17 | 0 | 0 |
| H | 1 | 17 | 18 | 17 | 18 | 0 | — |
Passage avant : $ES_E = \max(EF_C ; EF_D) = \max(7 ; 11) = 11$ ; $ES_H = \max(13 ; 8 ; 17) = 17$. Durée minimale : 18 semaines.
Passage arrière : $LF_H = 18$, $LS_H = 17$ ; $LF_G = LF_E = LF_F = 17$ ; $LF_D = \min(LS_E ; LS_G) = \min(15 ; 11) = 11$ ; $LF_C = LS_E = 15$ ; $LF_A = \min(LS_C ; LS_F) = \min(12 ; 13) = 12$ ; $LF_B = LS_D = 6$.
3) Marges libres : A : $\min(ES_C ; ES_F) - EF_A = 4 - 4 = 0$ ; C : $ES_E - EF_C = 11 - 7 = 4$ ; E et F : $ES_H - EF = 17 - 13 = 4$ et $17 - 8 = 9$.
Chemin critique : B → D → G → H, de durée $6 + 5 + 6 + 1 = 18$ semaines .
4) B est critique : 2 semaines de retard repoussent le lancement à la semaine 20. A a une marge totale de 8 semaines : un retard de 2 semaines ne retarde pas le projet. Mais sa marge libre est nulle : C et F commenceront 2 semaines plus tard, en consommant une partie de leurs propres marges.
Exercice 2 — Plus court chemin d'un réseau de livraison
Un réseau relie un entrepôt S à un client T. Longueurs des tronçons (km) : S-A 4, S-B 2, B-A 1, A-C 5, B-C 8, B-D 10, C-D 2, C-T 6, D-T 2.
Appliquez l'algorithme de Dijkstra depuis S et donnez le plus court chemin vers T.
Voir le corrigé
| Étape | Fixé | S | A | B | C | D | T |
|---|---|---|---|---|---|---|---|
| 1 | S | 0 | 4 (S) | 2 (S) | ∞ | ∞ | ∞ |
| 2 | B | 3 (B) | 2 | 10 (B) | 12 (B) | ∞ | |
| 3 | A | 3 | 8 (A) | 12 | ∞ | ||
| 4 | C | 8 | 10 (C) | 14 (C) | |||
| 5 | D | 10 | 12 (D) | ||||
| 6 | T | 12 |
Plus court chemin : S → B → A → C → D → T, longueur 12 km. Passer par B pour rejoindre A (3 km) est plus court que la liaison directe S-A (4 km).
Exercice 3 — Raccorder cinq agences
Une banque veut relier cinq agences par fibre optique au moindre coût. Coûts des liaisons possibles (en dizaines de milliers de DH) : A-B 4, A-C 3, B-C 2, B-D 5, C-D 7, C-E 6, D-E 4.
- Appliquez l'algorithme de Kruskal.
- Quel est le coût total ? Combien de liaisons ?
Voir le corrigé
1) Ordre croissant : B-C 2, A-C 3, A-B 4, D-E 4, B-D 5, C-E 6, C-D 7.
- B-C (2) : retenue ; A-C (3) : retenue ;
- A-B (4) : rejetée, elle fermerait le cycle A-B-C ;
- D-E (4) : retenue ; B-D (5) : retenue, elle relie le groupe {A, B, C} au groupe {D, E}. Quatre arêtes pour cinq sommets : l'arbre est complet.
2) Coût : $2 + 3 + 4 + 5 = \mathbf{14}$, soit 140 000 DH, avec 4 liaisons ($n - 1$).
L'essentiel — Graphes et ordonnancement
- Graphe : sommets + arêtes (non orientées) ou arcs (orientés), éventuellement valués ; arbre à $n$ sommets = $n - 1$ arêtes, connexe, sans cycle.
- Dijkstra (valuations positives) : fixer le sommet non définitif de plus petite étiquette, mettre à jour ses voisins, noter les prédécesseurs.
- Kruskal : arêtes par valuation croissante, retenir celles qui ne créent pas de cycle, jusqu'à $n - 1$ arêtes.
- PERT/CPM : $ES$ = max des fins au plus tôt des prédécesseurs ; $LF$ = min des débuts au plus tard des successeurs.
- Marge totale $= LS - ES$ ; marge libre $= \min ES_{succ} - EF$.
- Chemin critique : tâches de marge totale nulle ; sa durée = durée minimale du projet.
- Réduire un projet = accélérer une tâche critique (un autre chemin peut devenir critique).
- PERT probabiliste : durée $(a + 4m + b)/6$, variance $((b - a)/6)^2$.
S'entraîner sur des sujets réels
Des sujets réels de concours (master, licence d'excellence) avec une épreuve de Intelligence Artificielle et Recherche Opérationnelle : énoncé complet et corrigé indicatif.
- 2022Logistique et Commerce InternationalFEG Guelmim · Guelmim
- 2019Management Logistique AppliquéeFSJES · Mohammedia
- 2018Actuariat et Finance de marchésFSJES Casablanca Ain Sebaa · Casablanca
- 2017Actuariat et Finance de marchésFSJES Casablanca Ain Sebaa · Casablanca