Vous êtes sur la page 1sur 11

Recherche Opérationnelle (TD4 corrigé) : Optimisation de réseaux

Prof. A. El maliki

Excercice 1.(Problème du chemin le plus court)

Une société casablancaise doit livrer une commande dans un délai de 25 minutes. Beaucoup de rues étant en
sens unique, chaque arc du graphe représenté par la figure ci-dessus indique la direction et la durée, exprimée en
minutes, des trajets entre les différents croisements des itinéraires possibles. La société est située au sommet A du
graphe et la livraison doit s’effectuer au sommet H.
1. Dites pour quelles raisons le livreur peut résoudre son problème en utilisant l’algorithme de Dijkstra.
C’est un problème du chemin le plus court l’origine (sommet A) et la destination (sommet H) puisque on
a un réseau avec des sommets reliés par des arcs caractérisés par des distances (attributs) positives. Ici, les
distances aux arcs correspondent aux temps de parcours entre deux sommets.
2. Appliquez l’algorithme de Dijkstra. Dans un tableau, vous indiquerez le sommet exploré à chaque étape
ainsi que les valeurs associées à chaque sommet.
La commande arrivera-t-elle à temps ?
Pour appliquer l’algorithme du Dijkstra il faut que les valeur des attributs (distances) soient positives.
Le chemin le plus court est : A→C→G→H. C’est celui qui minimise le temps de parcours total entre le
sommet A et sommet H, qui est de 24min pour ce chemin.
Voici les étapes de l’algorithme de Dijkstra, sous forme de tableau :

La commande est livré en 24 min, donc une avance d’une minute.

1
Excercice 2.(Problème du chemin le plus court)
Une société de transport doit distribuer la marchandise de son client situéau noeud A vesr ses points de ventes
B, C, D, E et F. Le temps nécessaire pour aller d’un point de vente vers un autre ainsi que le sens de circulation
est donné par le graphe suivant :

(a). Résolvez ce problème par l’algorithme de Dijkstra.


On considère l’origine (sommet) A et la destination (sommet) D (par exemple).

Le chemin le plus court entre A et D est A −→ C −→ E −→ D et le temps minimum correspondant est 8.

2
Excercice 3. (Problème du chemin le plus court)
Un vol direct de Seattle (SE) à Londres (LN) peut emprunter différentes routes, en fonction des conditions
météorologiques. Le graphe orienté suivant indique, sur chaque arc, le temps de parcours (en heures), en fonction
des conditions météorologiques actuelles :

On cherche à minimiser le temps de parcours total entre Seattle et Londres, étant donné les conditions météo-
rologiques actuelles.
1. Modélisez ce problème comme celui de trouver un chemin le plus court dans un graphe orienté. Que repré-
sentent les distances aux arcs ?
C’est un problème du chemin le plus court l’origine (SE) et la destination (LN) puisque on a un réseau
avec des sommets reliés par des arcs caractérisés par des distances (attributs). Ici, les distances aux arcs
correspondent aux temps de parcours entre deux sommets.
2. Dites pour quelles raisons le problème peut être résolu en utilisant l’algorithme de Dijkstra.
Pour appliquer l’algorithme du Dijkstra il faut que les valeur des attributs (distances) soient positives.
3. Résolvez ce problème par l’algorithme de Dijkstra. Spécifiez le déroulement de chacune des itérations de
l’algorithme.
Le chemin le plus court est : SE→C→E→LN. C’est celui qui minimise le temps de parcours total entre
Seattle et Londres, qui est de 11,3h pour ce chemin. Voici les étapes de l’algorithme de Dijkstra, sous forme
de tableau :

3
Excercice 4. (Problème du flot maximal)
Nous considérons le réseau de transport donné dans la figure suivant, où l’on cherche à déterminer un flot
maximal de la source s au puits t. La capacité et le flux sont indiqués sur chaque arc du réseau.

1. Vérifier que les flux donnés forment un flot. Déterminer la valeur de ce flot.
Si on compare les valeurs du flot et les valeurs des capacités indiqueés sur le graphe, on vérifie bien que
fij ≤ uij (par exemple fCE = 3 ≤ uCE = 5 et de plus pour chaque sommet le flot entrant= flot sortant. La
valeur du flot du graphe est v(f ) = 6 + 3 = 9
2. Le flot donné est-il optimal ? Si non, déterminer la valeur d’un flot maximal.
On peut améliorer le chemin non orienté SADBCET de la quantité : min(8−3, 2−0, 6, 5−3, 5−3, 9−6) = 2.

Excercice 5. (Problème du flot maximal)


Soit le graphe G ci-dessous (sur la même figure on a indiqué la capacité de chaque arc) :

4
On donne le flot initial suivant :
ϕ(s, d) = ϕ(d, e) = 4; ϕ(e, t) = 4; ϕ(s, b) = 3; ϕ(e, b) = 1; ϕ(b, c) = 4; ϕ(c, t) = 3; ϕ(c, e) = 1
1. Quelle est la valeur de ce flot ?
Voir le graghe 2. La valeur du flot est v(f ) = 7
2. Le flot donné est-il optimal ? Si non, déterminer la valeur d’un flot maximal. Il y a encore un chemin
améliorant non orienté : s − b − e − t, min(7 − 3, 1, 8 − 4) = 1. Maintenant il n’y a plus de chemin améliorant
et la valeur maximale du flot est vmax (f ) = 8

Excercice 6.
Nous considérons le réseau de transport donné dans la figure suivant, où l’on cherche à déterminer le chemin
qui donne le coût minimal de la source s au puits t. Les coûts sont indiqués sur chaque arc du réseau.

S\j s a b c d t
s .0... ∞ ∞ ∞ ∞ ∞
c ....... 7(s) ∞ 4(s) ∞ ∞
b ....... 7(s) 6(c) ....... 12(c) ∞
a ....... 7(s) ....... ....... 7(b) 10(b)
d ....... ....... ....... ....... 7(b) 10(b)
t ....... ....... ....... ....... ...... 10(b)

1. Calcul du coût minimal :


(a). Dites pour quelles raisons le problème peut être résolu en utilisant l’algorithme de Dijkstra.
On peut appliquer l’algorithme du Dijkstra car on a un problème du chemin le plus court et on a un
réseau avec des attributs (distances) sont positifs
(b). Résolvez ce problème par l’algorithme de Dijkstra (utilisez le taleau ci-haut). Donnez le coût minimal
et le chemin permettant d’obtenir ce coût. Voir le tableau ci-haut. Le coût minimal est 4 + 2 + 4 = 10 et
le chemin permettant d’obtenir ce coût est s → c → b → t
2. Flot maximum :
On suppose que les valeurs indiquées sur chaque arc du réseau ci-haut sont des capacités et on donne le flot
initial suivant :
ϕ(s, a) = 5; ϕ(s, c) = 4; ϕ(a, b) = 3; ϕ(a, c) = 2; ϕ(b, d) = 1;
ϕ(b, t) = 4; ϕ(c, b) = 2; ϕ(c, d) = 4; ϕ(d, a) = 0; ϕ(d, t) = 5
(a). Vérifier que les flux donnés forment un flot. Déterminer la valeur de ce flot.

5
Si on compare les valeurs du flot et les valeurs des capacités indiqueés sur le graphe, on vérifie bien que
fij ≤ uij (par exemple fab = 3 ≤ uab = 5 et de plus pour chaque sommet le flot entrant= flot sortant.
La valeur du flot est v(f ) = 5 + 4
(b). Le flot donné est-il optimal ? Si non, déterminer la valeur d’un flot maximal. Il y a encore un chemin
améliorant non orienté : s − a − b − c − d − t, min(7 − 5, 5 − 3, 2, 8 − 4, 8 − 5) = 2. Maintenant il n’y a
plus de chemin améliorant et la valeur maximale du flot est vmax (f ) = 11

3. Flot à coût minimum


Considérez le graphe orienté (figure 2), pour lequel : sur chaque arc (i,j) la valeur correspond au coût unitaire
cij ; la valeur entre parenthèses sur deux des arcs, (A,D) et (B,E), correspond à la capacité uij (les autres
arcs sont à capacité infinie) ; la valeur [entre crochet] en chaque sommet i correspond à bi (> 0, s’il s’agit
d’un sommet d’offre ; < 0, s’il s’agit d’un sommet de demande ; = 0, s’il s’agit d’un sommet de transfert).
(a). Formulez à l’aide d’un modèle de programmation linéaire le problème de flot à coût minimum corres-
pondant.

6
Excercice 7.
Nous considérons le réseau de transport donné dans la figure suivant, où l’on cherche à déterminer le chemin
qui donne le coût minimal de la source S au puits T . Les coûts sont indiqués sur chaque arc du réseau.

1. (a). Donner la raison pour laquelle l’algorithme de Dijkstra peut être appliqué ici. Pourquoi cet algorithme
est considéré efficace ?
On peut appliquer l’algorithme du Dijkstra car on a un problème du chemin le plus court et on a un
réseau avec des attributs (distances) sont positifs
(b). Résoudre ce problème par l’algorithme de Dijkstra. Donner le coût minimal et le chemin permettant
d’obtenir ce coût.

Le chemin le plus court de la source S au semmet T est : s − b − c − T . Le coût minimal associé à ce


chemin est Cmin = 14
2. On suppose maintenant que les valeurs indiquées sur chaque arc du réseau ci-haut (graphe 2) sont des
capacités et on donne le flot initial suivant :
ϕ(S, a) = 7; ϕ(a, c) = 4; ϕ(a, d) = 3; ϕ(c, T ) = 4; ϕ(d, T ) = 3
et ϕ(i, j) = 0 sur tout autre arc (i, j)

(a). Vérifier que les flux donnés forment un flot. Déterminer la valeur de ce flot.

7
on peut vérifier facilement
P Prespectent les capacités Xi,j ≤ Ui,j . Pour chaque sommet le loi
que les flux
de conservation est : entrant Xi,j = sortant Xi,j .
La valeur de ce flot est F = 7.
(b). En utilisant l’algorithme de Ford-Fulkerson (chemin d’augmentation), trouver la valeur du flot maxi-
mum.

Puisque tous les arcs sortant de la source sont saturés alors le flot trouvé est maximal Fmax = 15
(c). Formuler ce problème du flot maximum par un programme linéaire ?
Xij flux sur l’arc (i, j) : la quantité de marchandise à acheminer de i vers j.
max v(F) = XSa + XSb X
 X

 xij = xji

 entrant sortant
s.c exemple : XSa = Xab + Xac + Xad
 0 ≤ xij ≤ uij



exemple : XSa ≤ 7
3. Considérez le graphe orienté ci-haut (figure 3), pour lequel : sur chaque arc (i,j) la valeur correspond au
coût unitaire cij ; la valeur entre parenthèses sur les arcs, (s,a), (a,c) et (b,c), correspond à la capacité uij
(les autres arcs sont à capacité infinie) ; la valeur [entre crochet] en chaque sommet i correspond à bi (> 0,
s’il s’agit d’un sommet d’offre ; < 0, s’il s’agit d’un sommet de demande ; = 0, s’il s’agit d’un sommet de
transfert).
(a). Formulez à l’aide d’un modèle de programmation linéaire le problème de flot à coût minimum
correspondant.
Xij flux sur l’arc (i, j) : la quantité de marchandise à acheminer de i vers j.
max v(F) = 2Xsa + 3Xsb + 5Xac + 1X Xad + 2Xbc + 2Xbd + 2Xct + 4Xdt
 X

 xij = xji

 entrant sortant




 of f re(s) : Xsa + Xsb = 30



 demande(t) : −X sa − Xsb = −30



 transf ert(a) : Xac + X ad − Xsa = 0
 transf ert(b) : X + X
bc bd − Xsb = 0
s.c

 transf ert(d) : Xdt − (Xad + Xbd ) = 0
 transf ert(c) : X


 ct − (Xac + Xbc ) = 0
 0≤x ≤ 30


 sa
 0≤x ≤ 10


 ac
 0≤x ≤ 20


 bc
Xi,j ≥ 0
(b.) Donner la quantité du flot reçue par un client qui se trouve en T.
la quantité du flot reçue par un client qui se trouve en T est égale à la demande=30

8
(c.) La solution optimale du programme linéaire trouvé en (a.) est donnée par

X = (xsa , xsb , xac , xad , xbc , xbd , xct , xdt ) = (10, 20, 10, 0, 20, 0, 30, 20)

Trouver les valeurs manquantes de Xet calculer le coût minimum.


la première équation donne : Xsa = 30 − Xsb = 10
De même l’équation Xdt − (Xad + Xbd ) = 0 donne Xdt = (Xad + Xbd ) = 20.
On remplace les valeur de Xi,j dans l’objectif et on obtient Cmin = 310.

Excercice 8.
Formuler le problème du flot maximum (graphe suivant) par un programme linéaire.

Utiliser l’algorithme de Ford-Fulkerson (chemin d’augmentation) pour déterminer la valeur du flot maximal de
ce problème.

Puisque tous les arcs arrivant à la destination F sont saturés alors le flot trouvé est maximal Fmax = 15

Excercice 9.
1. Quel est l’objectif du problème de flot maximal ?
Objectif du problème de flot maximal est d’acheminer le maximum de marchandises de la source vers la
destination :max v(F) = X1,2 + X1,3 + X1,4

9
2. Formulate the maximum flow problem as a linear programming problem. Xij flux sur l’arc (i, j) : la quantité
de marchandise à acheminer de i vers j.
max v(F) = X1,2 + X1,3 +X X1,4
 X

 xij = xji

 entrant sortant
s.c exemple : X1,2 = X2,5
 ≤ xij
0 ≤ uij



exemple : X1,2 ≤ 6
3. Déterminer la valeur du flot maximal du graphe ci-haut.

Excercice 10.
Considérez le graphe orienté (figure 2), pour lequel : sur chaque arc (i,j) la valeur correspond au coût unitaire
cij ; la valeur entre parenthèses sur deux des arcs, (C,D) et (E,F), correspond à la capacité uij (les autres arcs
sont à capacité infinie) ; la valeur (entre crochet) en chaque sommet i correspond à bi (> 0, s’il s’agit d’un sommet
d’offre ; < 0, s’il s’agit d’un sommet de demande ; = 0, s’il s’agit d’un sommet de transfert).

10
(a.) Formulez à l’aide d’un modèle de programmation linéaire le problème de flot à coût minimum corres-
pondant.
(b.) La solution optimale du programme linéaire trouvé en (a.) est donnée par
X = (xAB , xAC , xBC , xBE , xCD , xDF , xED , xEF ) = (10, 20, ..., ..., 20, 80, 60, 0).
Trouver les valeurs manquantes et calculer le coût minimum.
(c.) Donner la quantité de marchandise reçue par le client qui se trouve au sommet F.

11

Vous aimerez peut-être aussi