Optimisation discrète : Séance 2 (corrigés, indications)
FLOTS ET CHEMINS DANS UN RÉSEAU
1 Flot maximum
Prop 1 La valeur d’un flot ne peut dépasser la capacité d’une coupe.
Car une unité allant deaàbdoit traverser (au moins une fois) un arc de la coupe.
Thm 1 Le flot est maximum s’il est égal à la capacité miminale d’une coupe.
Le flot est maximal car on ne peut rien ajouter sur cette coupe.
La coupe est minimale car la flot ne pourrait passer sur une coupe de capacité moindre.
Algo 1 Algorithme de Ford-Fulkerson. . .
Exercice
On convient (ici, dans ce document) de représenter les données de la façon suivante :
1 2 3 4 5 6 7 dea
1 0 −∞ −∞ 10 15 −∞ 20 45
2 −∞ 0 −∞ 20 5 15 −∞ 25
3 −∞ −∞ 0 −∞ −∞ 10 10 30
4 – – −∞ 0 −∞ −∞ −∞
5 – – −∞ −∞ 0 −∞ −∞
6 −∞ – – −∞ −∞ 0 −∞
7 – −∞ – −∞ −∞ −∞ 0
versb 30 10 20 30 ϕ
Ex 1 Flot au jugé :ϕ= 70, avec, à l’entrée :30,25,15, et, à la sortie :20,10,20,20.
1 2 3 4 5 6 7
1 0 −∞ −∞ 10 10 −∞ 10 30
2 −∞ 0 −∞ 10 0 15 −∞ 25
3 −∞ −∞ 0 −∞ −∞ 5 10 15
4 – – −∞ 0 −∞ −∞ −∞
5 – – −∞ −∞ 0 −∞ −∞
6 −∞ – – −∞ −∞ 0 −∞
7 – −∞ – −∞ −∞ −∞ 0
20 10 20 20 ϕ=70
Ex 2 Flot complet (ϕ= 80).
1 2 3 4 5 6 7
1 0 −∞ −∞ 10 10 −∞ 20 40
2 −∞ 0 −∞ 10 0 15 −∞ 25
3 −∞ −∞ 0 −∞ −∞ 5 10 15
4 – – −∞ 0 −∞ −∞ −∞
5 – – −∞ −∞ 0 −∞ −∞
6 −∞ – – −∞ −∞ 0 −∞
7 – −∞ – −∞ −∞ −∞ 0
20 10 20 30 ϕ=80
Ex 3 Procédure de marquage.
On arrive à marquerb, par la chaîne :
A[+]−→3[+ 0]−→6[+ 3]←−2[−6]−→4[+ 2]−→B[+ 4]
Ex 4 Amélioration.
D’où l’amélioration :
1 2 3 4 5 6 7
1 0 −∞ −∞ 10 10 −∞ 20 40
2 −∞ 0 −∞ 15 0 10 −∞ 25
3 −∞ −∞ 0 −∞ −∞ 10 10 20
4 – – −∞ 0 −∞ −∞ −∞
5 – – −∞ −∞ 0 −∞ −∞
6 −∞ – – −∞ −∞ 0 −∞
7 – −∞ – −∞ −∞ −∞ 0
25 10 20 30 ϕ=85
On reprend la procédure de marquage :
A[+]−→1[+ 0]−→5[+ 1]
On ne peut plus marquerb: le flot est donc maximum (ϕ= 85).
Convergence
Ex 5 L’algorithme comporte un nombre fini d’étapes.
Ceci n’est vrai qu’en nombres entiers.
Ex 6 L’arrêt définit une coupe.
En effet, par construction, sommets marqués et sommets non marqués forment alors une partition deX.
Ex 7 Alors le flot est maximum.
Le flot est égal à : + (plus) ce qui entre dans l’ensemble non marqué (capacité de la coupe) et – (moins) ce qui en sort (zéro).
2 Ordonnancement
Algo 2 Algorithme de Ford.
for i = 1:n for j = 2:n
if v(i,j) == 0 then continue, end tt = t(i) + v(i,j)
if t(j) < tt then t(j) = tt
if j < i then i = j, j = 1, end j = j+1
end end end
Exercice
Dictionnaire (du graphe et des données) :
0 7→ 1(2), 3(6), 4(4), 2(4) 1 7→ 3(3), 4(5)
2 7→ 6(7) 3 7→ 5(6)
4 7→ 2(2), 5(4), 6(3) 5 7→ 7(2)
6 7→ 7(3) 7 7→ 8(4) Ex 8 Graphe du projet.
Ex 9 Dates au plus tôt, durée optimale, dates au plus tard.
1. Dates au plus tôt :
0(0), 1(2), 2(9), 3(6), 4(7), 5(12), 6(16), 7(19), 8(23) 2. Dates au plus tard :
0(0), 1(2), 2(9), 3(11), 4(7), 5(17), 6(16), 7(19), 8(23) Ex 10 Chemin critique.
0−→1−→4−→2−→6−→7−→8
Méthode algébrique
Prop 2 M(p) =M[p]
Par récurrence :C=A[∗]B ⇒ Cij = max(Aik+Bkj) Algo 3 Méthodes de résolution :
Résolution d’un système linéaire par une méthode itérative : – méthode de Jacobi = algorithme de Bellmann,
– méthode de Gauss-Seidel = algorithme de Ford.
3 Couplage
Exercice
Exemple numérique :
C=
7 3 5 7 10
6 ∞ ∞ 8 7
6 5 1 5 ∞
11 4 ∞ 11 15
∞ 4 5 2 10
ou, de façon équivalente :
C0 =
1 0 4 5 3
0 ∞ ∞ 6 0
0 2 0 3 ∞
4 0 ∞ 8 7
∞ 1 4 0 3
Ex 11 Résultat cherché : un zéro par ligne et par colonne.
Ex 12 Résolution par Ford-Fulkerson.
On sature ainsi les arcs
(L1, C2),(L2, C1), L3, C3),(L5, C4)
et le flot est alors maximum car une tentative de marquage ne peut atteindre la sortie : E→L4→C2←L1
Prop 3 Le couplage est maximum si et seulement si aucune chaîne alternée ne relie deux som- mets insaturés.
L’ensemble des rangées deC0 correspondant auxXimarqués (sur lesquels on peut revenir) et auxYjnon marqués (sur lesquels on peut arriver) comporte alors un plus petit élément qui indique l’arc à ajouter au couplage.
On ajoute donc le meilleur arc parmi les suivants :
1 . 4 5 3
. . . . . . . . . .
4 . ∞ 8 7
. . . . .
c’est à dire(L1, C1).
Dans ce nouveau graphe, on recherche une chaîne alternée entre deux sommets non saturés). On constate alors que la chaîne :
(L4, C2, L1, C1, L2, C5) est alternée entre deux sommets insaturés.
On y permute les arcs saturés et les non saturés, ce qui donne un arc de plus.
Le couplage obtenu :
(L1, C1); (L2, C5); (L3, C3); (L4, C2); (L5, C4) est alors, dans ce cas particulier, maximum (sans être unique).
Sa valeur est :
7 + 7 + 1 + 4 + 2 = 21