1. Que peut-on faire avec la théorie des graphes ?
Concepts généraux en théorie des graphes
2. Le problème du plus court chemin
3. Flots et réseaux de transport
PROBLEME DU FLOT MAXIMUM
Recherche de flots maximaux
Objectif : Faire transiter la plus grande quantité (informations, marchandises, personnes) d’une source vers une destination au sein d’un réseau.
Un réseau avec capacités R = (X,U,C) d’ordre n est un graphe orienté asymétrique* valué dans lequel :
–
-1(x
1) = Ø x
1est le sommet entrée (source)
– (x
n) = Ø x
nest le sommet sortie (destination)
* (x
i,x
j) U (x
j,x
i) U (arc à sens unique)
Notation : (x
i,x
j) U : C(x
i,x
j) = C
ijcapacité de l’arc
(x
i,x
j)
a d b
e
c
[5]
[4]
[7]
[2]
[5]
[2]
[3]
Sortie
Entrée
Définition du flot réalisable
Un flot F sur un réseau avec capacités R = (X,U,C) est une valuation de l’ensemble des arcs U. Le flot correspond à la quantité qui transite sur le réseau.
Notation : (x
i,x
j) U : F(x
i,x
j) = F
ijflot sur l’arc (x
i,x
j) Un flot F sur R = (X,U,C) est réalisable s’il satisfait les contraintes de :
1. Capacité des arcs
Le flot sur un arc ne dépasse pas la capacité de cet arc.
2. Conservation du flux (loi de Kirchhoff)
La somme des flots entrant dans un sommet est
égale à la somme des flots sortant de ce sommet.
La valeur d’un flot F sur R = (X,U,C) correspond à la quantité totale qui transite sur le réseau. La valeur du flot correspond à la somme des flots sortant de l’entrée qui est égale à la somme des flots convergeant vers la sortie (conservation du flux).
Un flot F sur R = (X,U,C) est maximal si F
est un flot réalisable qui maximise la
valeur du flot.
• Connaissant les capacités des arcs d'un réseau de transport, le problème du flot maximum consiste à trouver quelle est la quantité maximum de flot qui peut circuler de la source à la destination. L'algorithme le plus connu pour résoudre ce problème est celui de Ford et Fulkerson. Nous
verrons l’approche par cette méthode qui consiste à construire un graphe "d'écart"
dans lequel on recherche un chemin.
Construction du graphe d’écart
Un arc (xi,xj) du réseau R = (X,U,C) est saturé par le flot F si : Fij = Cij (capacité maximale atteinte)
Un arc (xi,xj) du réseau R = (X,U,C) est antisaturé par F si : Fij = 0 (flot inexistant)
A partir du réseau R = (X,U,C) et d’un flot F, on peut construire le graphe d’écart G = (X,F(U),E) qui traduit les augmentations ou diminutions possibles du flot F dans le réseau.
(xi,xj) U :
Si Fij < Cij (non saturé) alors (xi,xj) F(U) , Eij = Cij-Fij (augmentation) Si Fij > 0 (non antisaturé) alors (xj,xi) F(U) , Eji = Fij(diminution)
a d b
c
4 [5]
2 [4]
5 [7]
2 [2]
3 [3]
a d
b
c
1 2
2
2 3
Réseau R = (X,U,C) Graphe d’écart G = (X,F(U),E)
4
5 2
Construction d’un flot maximal
Algorithme de Ford-Fulkerson
Initialisation du flot F : F
ij= 0 (arcs antisaturés) Fin = FAUX
Tant que NON Fin
Construction du graphe d’écart G = (X,F(U),E)
Recherche d’un chemin C dans G depuis l’entrée vers la sortie
Si C existe Alors
Calcul de l’augmentation
Affectation de l’augmentation Sinon
Fin = VRAI
ALGORITHME DE FORD-FULKERSON, GRAPHE D'ECART
• on part d'un flot compatible. Ensuite, on construit un graphe d'écart à partir de ce flot. Ce graphe d'écart représente les modifications de flot possibles sur chaque arc. Sur ce graphe, les noeuds ont
exactement la même signification que dans le réseau de transport.
• Par contre, un arc indiquera de combien il est possible d'augmenter le flot entre deux noeuds. Ainsi,
• pour un arc u = (x;y), on créera dans le graphe d'écart:
un arc de x à y de capacité c'((x;y)) = c(u) - f(u) si c(u) > f(u), un arc de y à x de capacité c'((y;x)) = f(u) si f(u)> 0.
• Ensuite, dans ce graphe d'écart, on cherchera un chemin de l’entrée à la sortie. Si on n'en trouve pas, le problème est résolu. Sinon, on augmente le flot sur ce chemin. Le flot sera augmenté de la plus
petite capacité des arcs du chemin. Autrement dit, le chemin C sera augmenté de:
• min{c'(u) | u étant sur le chemin C}
Exemple : réseau et graphe d’écart correspondant
• (A,B,C,D,F,G) est un chemin pour aller de A à G. On peut augmenter le flot de:
• 2 entre A et B, 3 entre B et C,1 entre C et D,4 entre D et F, 2 entre F et G.
• On augmentera donc le flot de 1 sur ce chemin, ce qui signifie:
• augmenter de 1 entre A et B,réduire de 1 entre
C et B,augmenter de 1 entre C et D,augmenter
de 1 entre D et F,augmenter de 1 entre F et G.
3. Flots dans les réseaux
• On veut acheminer un produit à partir de 3 entrepôts (1,2,3) vers 4 clients (a,b,c,d)
– Quantités en stock : 45, 25, 25
– Demande des clients : 30,10, 20, 30
– Limitations en matière de transport d’un entrepôt à un client
10 10
- -
3
- 5
5 20 2
20 -
15 10
1
d c
b a
E
1
2
3
a
b
d c
S [0,10]
[0,15]
[0,20]
[0,5]
[0,5]
[0,10]
[0,10]
[0,45] [0,25]
[0,25]
[0,30]
[0,10]
[0,20]
3. Flots dans les réseaux
E
1
2
3
a
b
d c
S [0,10], 10
[0,15], 5 [0,20], 15
[0,5], 5
[0,5], 5 [0,10], 10
[0,10], 10 [0,45], 35
[0,25], 25 [0,25], 20
[0,30], 25 [0,10], 10 [0,20], 15
Valeur du flot = 80
Ce flot est un flot complet, c-à-d, tout chemin de
E à S comporte au moins un arc saturé
3. Flots dans les réseaux
1. Détermination d’un flot réalisable ou compatible
2. Détermination d’un flot maximum
3. Flots dans les réseaux