Académique Documents
Professionnel Documents
Culture Documents
Exercice 1
Sur le graphe ci-dessous X, Y, Z et T représentent des zones de stationnement à l’intérieur
d’une agglomération et A, B, C, trois portes de sorties de l’agglomération. Les arcs
représentent des voies à sens unique. Tous les véhicules partant d’une zone de
stationnement se dirigent indifféremment vers l’une des portes de sortie à vitesse
sensiblement constante. Une fois passées les limites de l’agglomération, on suppose qu’il
n’y a plus de problème de circulation.
La capacité de chaque voie est donnée en nombre de véhicules par heure, sur les arcs
correspondants dans le graphe ci-dessous :
1000 800
X 1 A
600
500 300
400 1000
Y 2 B
200 800
900
600
Z 3
700
800
700
T C
Arc (i,j) (X,1) (Y,1) (Y,2) (Z,2) (Z,3) (T,3) (T,C) (1,A) (1,B) (1,2) (2,B) (2,3) (3,B) (3,C)
Flux 1.000 500 400 500 600 700 700 800 400 300 1.000 200 800 700
800 1400
700
T C
1000/1000 800/800
X 1 A 800/800
400/600
1000/1000 500/500 300/
300
400/400 1000/1000 2200/2400
900/900 Y 2 B
800/800
1100/1500 500/900 200/ P
S
200
600/600
Z 3 1400/1400
1400/1500 700/700
700/800
700/700
T C
800
1000
X 1 A 800
200
1000 500 300 400
400 1000 200
900 Y 2 B
1000/1000 800/800
X 1 A 800/800
600/600
1000/1000 500/500 100/
300
400/400 1000/1000 2400/2400
900/900 Y 2 B
800/800
1300/1500 700/900 200/ P
S
200
600/600
Z 3 1400/1400
1400/1500 700/700
700/800
700/700
T C
800
1000
X 1 A 800
1000/1000 800/800
X 1 A 800/800
400/600
1000/1000 500/500 300/
300
400/400 1000/1000 2200/2400
900/900 Y 2 B
M 800/800
1100/1500 500/900 200/ P
S M
(+) 200
(+) 600/600
Z 3 1400/1400
1400/1500 700/700
700/800
M
700/700
T C
1000/1000 800/800
X 1 A 800/800
400/600
1000/1000 500/500 300/
M 300
400/400 1000/1000 2200/2400
900/900 Y 2 B
M 800/800
1100/1500 500/900 200/ P
S
(+) M (+) M 200
(+) 600/600
Z 3 1400/1400
1400/1500 (+) 700/700
700/800
M
700/700
T C
M
1000/1000 800/800
X 1 A 800/800
400/600
1000/1000 500/500 (-) 300/
M
400/400 (-)M 300
1000/1000 2200/2400
900/900 Y 2 B
M 800/800
1100/1500 500/900 200/ P
S
(+) M (+) M 200
(+) 600/600
Z 3 1400/1400
1400/1500 (+) 700/700
700/800
M
700/700
T C
Sommet 1 :
• arc (1, A) saturé.
• arc (X, 1) a un flux positif, on l’indique par (−) et on marque X avec M.
• arc (1, B) non saturé et B non marqué, on met donc (+) sur l’arc et on marque B.
• Les arcs (1,2), (Y,1) ont des sommets marqués.
• On barre le sommet 1.
M M
1000/1000(-) 800/800
X 1 A 800/800
400/600
1000/1000 500/500 (-) 300/ (+)
M M
M 300
400/400 (-) 1000/1000 2200/2400
900/900 Y 2 B
M 800/800
1100/1500 500/900 200/ P
S
(+) M (+) M 200
(+) 600/600
Z 3 1400/1400
1400/1500 (+) 700/700
700/800
M
700/700
T C
Coupe minimale de
capacité 4600
M M
1000/1000 (-) 800/800
X 1 A 800/800
600/600
(-) 100/
1000/1000 M 500/500
M 300
400/400 (-) 1000/1000 2400/2400
900/900 Y 2 B
M (+) 800/800
1300/1500 700/900 200/ P
S M
(+) M 200
(+) 600/600
Z 3 1400/1400
1400/1500 (+) 700/700
700/800
M
700/700
T C
On voit qu’on ne peut plus marquer aucun sommet puisque tous les arcs sont saturés. On
ne peut donc pas marquer P. La solution actuelle est donc optimale avec un flot égal à
4600 voitures/ heure.
Une coupe minimale : C(NS,NP), NS ={S, X, Y, Z, T, 1, 2, 3}, NP={A, B, C, P}.
Les arcs correspondent à des conduites d’eau, et les valeurs sur les arcs désignent les
capacités en m3/heure. Le nœud 1 correspond à une source limitée à 10 m3/heure, et le
nœud 2 à une station de pompage dans un fleuve, limitée à 15 m3/heure. Les nœuds 6, 7
et 8 correspondent à 3 villes dont les demandes respectives sont de 9, 10 et 6 m3/heure.
A cause de la gravité, l’écoulement entre deux nœuds se fait dans un seul sens, sauf entre
les nœuds 3 et 5 où une pompe permet, si nécessaire, de ramener de l’eau du nœud 5 au
nœud 3.
9
6 6
2
1 3 2 2
10 3
10 1
3 2 P
4 7
S 2 5 9
1 6
3 1
7 6
6 9
14 2 4 8
14
Une coupe minimale est donnée par : C(NS,NP), NS ={S, 1, 2, 3, 4}, NP={5, 6, 7, 8, P}.
Coupe minimale de
capacité 24
9
6 6
2
1 3 2 2
10 3
10 1
3 2 P
4 7
S 2 5 9
1 6
3 1
7 6
6 9
14 2 4 8
14
3. Quelles sont les conduites qui doivent être élargies pour augmenter le débit ?
Justifier.
Les conduites qui doivent être élargies sont représentées par les arcs qui
appartiennent à la coupe minimale et qui se dirigent vers P, à savoir : (3,6), (3,5),
(4,5) et (4,8).
9/9
6/6 6
10/12
1 3 2/2 3/5
10/10
9/10
3 6/8 P
2/6 7
S 5
14/15 7/7
3/4 6/6
14/20 9/9
2 4 8
9
6 6
2
1 3 2 2
10 3
10 1
3 2 P
4 7
S 2 5 9
1 6
7 5 3 1
6
6
14 2 4 8
9
14
9
6 6
2
1 3 2 2
10 3
10
3 2 P
4 7
S 2 5 10
6
7 4 3 1
6
5 1
15 2 4 8
9
15
9/9
6/6 6
10/12
1 3 2/2 3/5
10/10
10/10
3 6/8 P
2/6 7
S 5
15/15 1/5
7/7
3/4 6/6
15/20 9/9
2 4 8
Une nouvelle coupe minimale est donnée par : C(NS,NP), NS ={S, 1, 2, 3, 4, 5, 6, 7, 8},
NP={P}.
Coupe minimale de
capacité 25
9
6 6
2
1 3 2 2
10 3
10
3 2 P
4 7
S 2 5 10
6
7 4 3 1
6
5 1
15 2 4 8
9
15
Variables de décision :
xij : Quantité de flot circulant de i vers j.
Fonction objectif :
Max Σj xSj
Contraintes :
Conservation de flot Σj xij - Σj xji = 0 ∀ i ∈ X\{S, T}
Capacité xij ≤ cij ∀ (i, j) ∈ X * X
xij ≥ 0 ∀ (i, j) ∈ X * X
Exercice 4
Un industriel doit transporter d’urgence 200 tonnes de matériel d’une usine à un chantier
éloigné. Les transporteurs contactés, vu l’urgence, ne peuvent lui offrir qu’une capacité de
transport limitée. Les trajets élémentaires possibles sont décrits par le tableau suivant. Le nœud
1 désigne l’usine et le nœud 6 le chantier. Chaque arc correspond à une ligne de camionnage
ou une liaison ferroviaire, avec une capacité en tonnes et un coût de transport par tonne.
De plus, le nœud 2 est un hub de capacité non limitatrice et à partir duquel partent de gros
camions, le coût de groupage des marchandises en ce nœud est de 5$/tonne. L’industriel veut
savoir quelles quantités expédier sur les différents itinéraires pour acheminer le matériel à coût
minimal.
Nœud Successeurs Mode Capacité (t) Coût ($/t)
1 2 Route 150 50
3 Rail 150 15
2 5 Route 300 20
4 Rail 50 10
3 2 Route 200 30
4 Route 100 60
4 6 Route 150 60
5 6 Route 100 40
Rail Route
150t, 15D/t 3 4 150t, 60D/t
Route
100t, 60D/t
Le hub 2 peut être éclaté en deux noeuds 2 et 2’, reliés par un arc de capacité infinie (car la
capacité du hub est non limitatrice) et de coût 5. Attention, pour tenir compte du coût de
groupage 5, les arcs du réseau initial (2, 4) et (2, 5) partent désormais de 2’ et non plus de.
Voici le graphe résultant :
Hub
infini, 5D/t
Route 2 2’ Route
150t, 50D/t 100t, 60D/t
Route Rail
1 200t, 30D/t 50t, 10D/t 6
Rail Route
150t, 15D/t 3 4 150t, 60D/t
Route
100t, 60D/t
2. La capacité offerte par les transporteurs permet-elle d’acheminer les 200 tonnes (en
dehors de toute considération de coût) ?
On trouve facilement un flot de débit 200 tonnes. Pour un graphe de taille supérieure, il
faudrait appliquer l’algorithme de Ford-Fulkerson pour calculer le flot maximal et vérifier
si le flux correspondant est bien supérieur ou égal à 200 tonnes. On peut aussi arrêter
l’algorithme de Ford-Fulkerson dès qu’on atteint 200 tonnes.
Exemple de flot de 200 tonnes :
Hub
150/infini, Route
Route 2 5D/t 2’ 100/100t,
150/150t, 60D/t
50D/t
Route Rail
1 200t, 30D/t 50/50t, 6
10D/t
Rail Route
50/150t, 3 4 100/150t,
15D/t Route 60D/t
50/100t,
60D/t
Il s’agit d’un problème de flot de débit imposé (200 tonnes) et de coût minimal.
ITERATION 1
Etape 0 : Prendre pour flot initial ϕ0 un flot nul de valeur v(ϕ0) = 0. Le graphe d’écart G0’(1)
est alors identique au graphe G, poser i = 0.
Itération 1 2 3 2’ 4 6
0 0 50 15
1 0 45 15 55 75
2 0 45 15 50 65 115
3 0 45 15 50 60 110
4 0 45 15 50 60 110
Etape 2 : On peut améliorer le flot dans G de la quantité maximale permise par cette chaîne,
soit 100 tonnes, d’où le flot ϕ1 de valeur 100.
Hub
infini, 5D/t
Route 2 2’ Route
100, -5D/t 100t, -60D/t
150t, 50D/t
Route
100t, -30D/t Rail
Route
1 Rail 50t, 10D/t 6
100t, 30D/t
100t, -15D/t
Rail Route
50t, 15D/t 3 4 150t, 60D/t
Route
100t, 60D/t
ITERATION 2
Etape 1 : On applique l’algorithme de Ford pour trouver un chemin de coût minimal allant de
1 à 6 dans le graphe d’écart G1’.
Itération 1 2 3 2’ 4 6
0 0 50 15
1 0 45 15 55 75
2 0 45 15 50 65 135
3 0 45 15 50 60 125
4 0 45 15 50 60 120
5 0 45 15 50 60 120
Etape 2 : On peut améliorer le flot dans G de la quantité maximale permise par cette chaîne,
soit 50 tonnes, d’où le flot ϕ2 de valeur 150.
ITERATION 3
Etape 1 : On applique l’algorithme de Ford pour trouver un chemin de coût minimal allant de
1 à 6 dans le graphe d’écart G2’.
Itération 1 2 3 2’ 4 6
0 0 50
1 0 50 20 55
2 0 50 20 55 80
3 0 50 20 55 80 140
4 0 50 20 55 80 140
Etape 2 : On peut améliorer le flot dans G de la quantité maximale permise par cette chaîne,
soit 100 tonnes, sauf que on n’a besoin que de 50 tonnes supplémentaires pour atteindre le
flux demandé, d’où le flot ϕ de valeur 200.
C’est la fin car on a atteint le flux imposé de 200 tonnes. La solution optimale est donc la
suivante :
ϕ(1, 2) = 50, ϕ(1, 3) = 150, ϕ(3, 2) = 100, ϕ(2, 2’) = 150, ϕ(3, 4) = 50, ϕ(2’, 4) = 50,
ϕ(2’, 6) = 100, ϕ(4, 6) = 100.
Le flux total = 200 cartons de coût = 100*110 + 50*120 + 50*140 = 24.000 DT.
4. Que faut-il faire en plus pour déterminer le tonnage maximal de marchandise qui
pourrait traverser le réseau, à coût minimal ?
Pour trouver le flot maximal de coût minimal, il suffit de poursuivre l’algorithme du
flot maximal à coût minimal.
Route Rail
Route
1 100t, -50D/t 150t, 30D/t 50t, -10D/t Route 6
Route 150t, -60D/t
50t, -30D/t
Rail
150t, -15D/t
3 4
Route
100t, -60D/t
On remarque qu’il n’y a plus de chemin de 1 vers 6. Cette solution est donc optimale.
ϕ(1, 2) = 100, ϕ(1, 3) = 150, ϕ(3, 2) = 100, ϕ(2, 2’) = 150, ϕ(3, 4) = 100, ϕ(2’, 4) = 50,
ϕ(2’, 6) = 100, ϕ(4, 6) = 150.
Le flux total = 250 cartons de coût = 100*110 + 50*120 + 100*140 = 31.000 DT.
Exercice 5
Le responsable d’un projet informatique vient de terminer l’analyse et l’implantation d’un
nouveau système. Il a divisé le travail à effectuer en 5 modules qu’il doit maintenant répartir
entre les 5 programmeurs de l’entreprise.
L’expérience a montré qu’imposer une tâche à un de ses employés ne permet pas d’avoir de
bons résultats. C’est pourquoi le responsable du projet a demandé aux programmeurs leurs
préférences par rapport aux différentes tâches comme l’indique le tableau suivant :
On remarque qu’un programmeur ne peut être affecté qu’au plus à un seul module, et qu’un
module ne peut pas être partagé entre plusieurs programmeurs.
P1 M1 1
1
1 1
1
1
P2 M2
1 1
1 1
1 1
S P3 M3 T
1
1
1
1 1
P4 1 M4
1 1
P5 M5
1
P1 1 M3 1
1
M4 1
1 1
1 P4 M5
1
1 1
S 1 T
1 1
1
P2 M1
1
1
P3 1
1
1
P5 M2
En faisant la résolution du problème, on se rend compte que le flot max possible a une valeur
de 4. Il n’est donc pas possible de respecter les préférences des développeurs si on veut affecter
tous les modules.
M4 1
1/1 1/1
1/1 P4 M5
1/1 1
1
S 1/1 T
1 1/1
1/1
P2 M1
1/1
1
P3 1
1/1
1/1
P5 M2
2. De plus le chef de projet a des contraintes de budget à respecter. Il doit affecter les
modules aux programmeurs en assurant un coût minimal. En considérant le salaire de
ses employés et les temps nécessaires pour la réalisation de chaque module, il définit un
coût associé à l’affectation d’un employé à chaque module comme l’indique le tableau
suivant
a) Modéliser le problème par un graphe pour lequel vous précisez ses éléments ?
M4
240
P4 M5
320
S 300 T
240
P2 M1
240
P3 240
320
P5 M2
Pour trouver l’affectation optimale, cela revient à trouver le flot max à coût min. La solution
est trouvée au bout de 4 itérations :
180
P1 M3
140
160 140
M4
160
240
P4 M5 140
320
S 300 240 T
240
P2 M1
240
P3 240
240
320
P5 M2
180
P1 M3
140
160
M4
240
240
P4 M5 240
320
S 300 240 T
240
P2 M1
240
P3 240
240
320
P5 M2
180
P1 M3
140
160
M4
240
P4 M5 240
320
S 300 240 T
240
P2 M1
240
P3 240
240
320
P5 M2
180
P1 M3
140
160
M4
240
P4 M5 240
320
S 300 T
240
P2 M1
240
P3 240
240
320
P5 M2
180
P1 M3
140
160
M4
240
P4 M5 240
320
S 300 T
240
P2 M1
240
P3 240
240
320
P5 M2