Lo c H elou et [email protected]/Loic.Helouet/Teaching/AlgosFlots.pdfMod ele...
Transcript of Lo c H elou et [email protected]/Loic.Helouet/Teaching/AlgosFlots.pdfMod ele...
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Algorithmes de flots
Loıc [email protected]
Prepa agreg 2014/2015
Algorithmes de flots – Prepa Agreg – 2014/2015, 1
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Bibliographie
CLR Thomas Cormen, Charles Leiserson, Ronald RivestIntroduction a l’algorithmique (Chap 26).Dunod, 1994
GM Michel Gondran, Michel MinouGraphes et Algorithmes (chap. 5).Eyrolles, 1985.
BBC Jean Berstel, Daniele Beauquier et Philippe Chretienne.Elements d’algorithmique (chap. 8).Masson, 1992.
Algorithmes de flots – Prepa Agreg – 2014/2015, 2
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Plan
1 Reseaux de transport, probleme du flot maximal
2 Methode de Ford-Fulkerson
3 Focus : terminaison de Ford Fulkerson
4 Application: Couplage dans un graphe biparti
5 Algorithmes avec Preflots
6 Conclusion
Algorithmes de flots – Prepa Agreg – 2014/2015, 3
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Reseau de Transport
Reseau de Transport
Un Reseau de Transport est un graphe G = (S ,A) oriente, dans lequel chaquearc a une capacite
c(u, v) ≥ 0 si (u, v) ∈ A,c(u, v) = 0 sinon.
nb: c(u, v) peut etre une capacite entiere, rationnelle, reelle.
On distingue deux sommets particuliers : la source s et le puits t.On supposera, par commodite qu’il existe toujours un chemin permettantd’aller de s a t.
10
5
4
9
11
10
910S T
Algorithmes de flots – Prepa Agreg – 2014/2015, 4
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Exemples de reseaux de transport
I Reseau electrique : haute tension, circuit,....
I Reseau routier, ferroviaire : transport de marchandises,
I Reseau de fluides, gaz, hydrocarbures,
I Logistique, processus industriels
I ....
pour transporter un flux de la source vers le puits, sans exceder la capacite descanaux.
Probleme classique : comment maximiser ce flux ?
Algorithmes de flots – Prepa Agreg – 2014/2015, 5
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Exemples de reseaux de transport
La societe ZZZ livre par train a Nice des containers demarchandises remplis a Paris.
Probleme : une entreprise a le droit d’envoyer un nombrelimite de containers par jour sur chaque troncon de voie.
Comment expedier un maximum de containers chaque jour?
Lille
ParisStrasbourg
Nantes
Bordeaux
Toulouse
Lyon
Grenoble
NiceMarseille
7
15
6
5
8
5
2
8
10
5
6
Algorithmes de flots – Prepa Agreg – 2014/2015, 6
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Flots
Flot
Soit G un reseau de transport de capacite c(., .). Un Flot est une fonctionf : S × S → R avec les contraintes suivantes :
I Capacite : ∀u, v , f (u, v) ≤ c(u, v)
I Symetrie : f (u, v) = −f (v , u)
I Conservation du flot : ∀u ∈ S \ {s, t}, Σv∈S
f (u, v) = 0
Valeur d’un flot
La valeur d’un flot est :|f | =
∑v∈S
f (s, v)
|f ∗| = max{|f | | f flot de G}
Remarque : |f | =∑v∈S
f (s, v) =∑v∈S
f (v , t)
Algorithmes de flots – Prepa Agreg – 2014/2015, 7
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Probleme du flot maximal
Soit G = (S ,A) un reseau de transport de source s et de puits t et c(., .) unefonction de capacite,
Probleme : trouver un flot f de valeur maximale.
Contrainte de Flot :respecter les contraintes de capacite, symetrie, et conservation du flot
Maximalite : ∀f ′, flot de G , |f ′| ≤ |f |
Algorithmes de flots – Prepa Agreg – 2014/2015, 8
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Flux
Soit f : S × S → R un flot.
flux positif entrant/sortant
Le flux positif total entrant dans un sommet v est defini par∑u ∈ Sf (u, v) > 0
f (u, v)
Le flux positif total sortant d’un sommet v est defini par∑u ∈ Sf (v , u) > 0
f (v , u)
Flux net total
Le flux net total fnt(v) d’un sommet v est egal au flux positif sortant de v moinsle flux positif total entrant dans le sommet.
Recriture de la regle de conservation : pour tout sommet v 6= s, t, fnt(v) = 0
Exemples de flots.
Algorithmes de flots – Prepa Agreg – 2014/2015, 9
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Sources, Cibles multiples
Le probleme de flux maximal reste identique avec sources ou cibles multiples.
10
5
4
9
11
10
910
5
S1
S2
10
5
4
9
11
10
910
5
S1
S2
t
88
t
10
5
4
9
11
10
910
5
s
t2
t110
5
4
9
11
10
910
5
s
t2
t1 8
8
Homework : Montrer que si un flot f∞ est maximal dans un reseau avecsupersource s∞, alors la somme des flux sortant de l’ensemble des sources dureseau initial est maximale.
Algorithmes de flots – Prepa Agreg – 2014/2015, 10
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Flux et valeurs d’ensembles de sommets
Sommation Implicite
Soient X ,Y ⊆ S f (X ,Y ) =∑x∈X
∑y∈Y
f (x , y)
Conservation de flots : ∀u ∈ S \ {s, t}, f (u,S) = 0
Valeur d’un flot
La valeur |f | d’un flot f definit la taile du flux qui peut s’ecouler dans un reseaude transport:|f | = f (s,S) = f (S , t)
Somme de deux flots
Soient f1, f2 deux fonctions de flot. La somme de f1 et f2 est definie par
(f1 + f2)(u, v) = f1(u, v) + f2(u, v)
Algorithmes de flots – Prepa Agreg – 2014/2015, 11
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Capacite residuelle
Principe: etant donne un reseau G = (S ,A) et un flot f , maintenir un reseauresiduel constitue des arcs qui peuvent supporter un flux plus important quecelui defini par f
Capacite residuelle
La capacite residuelle de u vers v apres application du flot f est definie par
cf (u, v) = c(u, v)− f (u, v)
Exemple : c(u, v) = 20, f (u, v) = 11, cf (u, v) = 9
Algorithmes de flots – Prepa Agreg – 2014/2015, 12
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Reseau residuel
Reseau Residuel
Soit G = (S ,A) un reseau de transport, f un flot.Le reseau residuel de G induit par f est Gf = (S ,Af ), ouAf = {(u, v) ∈ S × S | cf (u, v) > 0}
Algorithmes de flots – Prepa Agreg – 2014/2015, 13
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Annulation
Soient : c(u, v) = x , c(v , u) = 0
Choisissons f (u, v) = y < x
on a donc cf (u, v) = x − y ,
A cause de la contrainte de symetrie : f (v , u) = −y etcf (v , u) = c(v , u)− f (v , u) = 0 + y
De nouveaux arcs apparaissent !
10 10
16
10 10
s
t
u v
5
5
5
s
t
u v
105
11
5 10
s
t
u v5
5
5
G f Gf
Interpretation : On peut annuler un flux pour obtenir un meilleur flot.Algorithmes de flots – Prepa Agreg – 2014/2015, 14
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Proprietes des graphes residuels
Ajout de flot du reseau residuel
Soit G un graphe de transport, et f un flot de G .
Soit Gf le reseau residuel de G induit par f et f ′ un flot de Gf , alors,
f + f ′ est un flot de G de valeur |f |+ |f ′|.
Preuve: Verifier les proprietes de flots (capacite, symetrie, conservation) endecomposant f + f ′.
Idee d’algorithme: trouver une succession de flots f1 dans G , f2 dans Gf1 , f3dans Gf1+f2 ....
Algorithmes de flots – Prepa Agreg – 2014/2015, 15
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Chemins ameliorants
Chemin Ameliorant
Un chemin ameliorant de source s et cible t est un chemin elementaire de s verst dans le graphe residuel Gf .La capacite d’un chemin ameliorant ρ est cf (ρ) = min{cf (u, v) | (u, v) ∈ ρ}
La capacite d’un chemin ameliorant est la plus petite capacite d’un arc duchemin (le ’maillon faible’)
Proprietes des chemins ameliorants(1)
Soit G un reseau de transport, et f un flot de G . Soit ρ un chemin ameliorantdu reseau residuel Gf
Soit fρ(u, v) =
cf (ρ) si (u, v) ∈ ρ−cf (ρ) si (v , u) ∈ ρ0 sinon
Alors fρ est un flot de Gf et |fρ| > 0
Algorithmes de flots – Prepa Agreg – 2014/2015, 16
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Algorithme de Ford Fulkerson (1956)
Proprietes des chemins ameliorants(2)
Soit G un reseau de transport, et f un flot de G . Soit ρ un chemin ameliorantdu reseau residuel Gf , alors f + fρ est un flot de G de valeur superieure a |f |.
Preuve : propriete des flots du graphe residuel.
Algorithme:
Input : G = (S ,A)for all (u, v) ∈ S × S do
f (u, v) = 0end forwhile ∃ρ chemin ameliorant do
augmenter f avec ρend whileretourner f
Algorithmes de flots – Prepa Agreg – 2014/2015, 17
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Coupe
Questions :
I L’algorithme est-il correct ?
I L’algorithme termine-t-il ?
Coupe
Une coupe d’un Rdt de source s et de cible t est une partition de S en (E ,T )ou s ∈ E et t ∈ T .La capacite d’une coupe est c(E ,T ) =
∑u∈E ,v∈T
c(u, v)
Une coupe minimale est une coupe dont la capacite est minimale (pour G)
Flot net d’une coupe
si f est un flot de G , le flot net a travers (E ,T ) est f (E ,T ).
Algorithmes de flots – Prepa Agreg – 2014/2015, 18
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Coupe
Le flot net a travers une coupe est toujours le meme !
Propriete du flot net
Soit f un flot de G , et (E ,T ) une coupe de G , alors f (E ,T ) = |f |
Explication : on peut passer d’une coupe a une autre en ”‘ajoutant/enlevantun sommet, mais en vertu de la conservation du flot, cela ne change pas le flotnet entre E et T .
Majoration par les coupes
La valeur maximale d’un flot de G est inferieure a la capacite de toute coupe deG .
Demo : |f | = f (E ,T ) =∑E
∑T
f (u, v) ≤∑E
∑T
c(u, v) = c(E ,T )
Algorithmes de flots – Prepa Agreg – 2014/2015, 19
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Max Flow, Min Cut
Si f est un flot dans un reseau de transport G = (S ,A) de source s et de puitst, alors les conditions suivantes sont equivalentes :
1) f est un flot maximal de G .
2) Le reseau residuel Gf ne contient aucun chemin ameliorant.
3) |f | = c(E ,T ) pour une certaine coupe (E ,T ) de G .
Algorithmes de flots – Prepa Agreg – 2014/2015, 20
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
FF : Terminaison et correction
Terminaison
L’algorithme de Ford Fulkerson termine en O(|f ∗|.|A|) lorsque la capacite dureseau est entiere ou rationnelle.
Correction
Lorsque l’algorithme de Ford Fulkerson termine, il retourne un flot de capacitemaximale.
Algorithmes de flots – Prepa Agreg – 2014/2015, 21
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
FF : efficacite
1 000 000
1
1 000 000
1 000 000
1
1 000 000 1 000 000
1 000 000 999 999
1
1 000 000 999 999
1 000 000
Gf G'
1
1
999 999
1
1 000 000 999 999
1 000 000
1
1
G'
1
1 000 000
1 000 000999 999
1
999 999
1
1
G''
999 999
999 999
1
1f'
Algorithmes de flots – Prepa Agreg – 2014/2015, 22
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
FF : Terminaison
Le probleme de flot maximal peut aussi se poser avec des capcites reellesL’algorithme peut ne pas terminer !
Algorithmes de flots – Prepa Agreg – 2014/2015, 23
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Amelioration: Algorithme de Edmonds-Karp (1972)
Algorithme:
for all (u, v) ∈ S × S dof (u, v) = 0
end forwhile il existe un chemin ameliorant do
choisir ρ parmi les plus courts chemins de s vers t.augmenter f avec ρ
end whileretourner f
Algorithmes de flots – Prepa Agreg – 2014/2015, 24
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Algorithme de Edmonds-Karp
Terminaison et correction
Soit G un reseau de transport. L’algorithme d’Edmond Karp termine enO(|S |.|A|2), et retourne un flot maximal.
Correction : facile, on ne choisit que des chemins ameliorants, comme dansFord Fulkerson.
Terminaison : chaque chemin ameliorant ajoute la capacite d’un ’arc critique’,qui est annule. Un arc ne redevient critique qu’au bout d’un certain nombre depas de l’algorithme. Au bout d’un moment il n’existe plus de chemin de s vertt.
Algorithmes de flots – Prepa Agreg – 2014/2015, 25
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Application: le Couplage maximal
Couplage
Soit un graphe non oriente G = (S ,A).Un couplage de G est un sous ensemble M d’arretes de G tel que pour toutsommet v ∈ S , au plus une arrete de M est incidente a v .La valeur |M| d’un couplage M est le nombre d’arretes dans M.Un couplage M est dit maximal si pour tout couplage M ′, |M| ≥ |M ′|.
Ici, probleme du couplage maximal pour des graphes bipartis: G = (L ] R,A)avec A ⊆ L× R ∪ R × L.
Application :
I L: machines de production,
I R:ensemble de taches.
Trouver une affectation des taches aux machines qui soit la plus rentablepossible (utilisant le plus de machines).
Algorithmes de flots – Prepa Agreg – 2014/2015, 26
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Couplage maximal
Du Couplage aux Reseaux
Soit G = (L ] R,A) un graphe biparti.
Le reseau de transport correspondant est un reseau G ′ = ({s, t} ] L ] R,A′)avec
A′ = {(s, u) | u ∈ L} ∪ (A ∩ L× R) ∪ {(v , t) | v ∈ R}
La capacite associee a G ′ est c(u, v) = 1 pour tout (u, v) ∈ A′
ST
Algorithmes de flots – Prepa Agreg – 2014/2015, 27
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Couplage maximal
Relation entre valeur des flots et taille de couplage
Soit G un graphe biparti, G ′ son reseau de transport correspondant.
I Si M est un couplage de G , alors il existe un flot a valeurs entieres f dansG ′ tel que |M| = |f |.
I Si un flot a valeurs entieres f dans G ′, alors il existe un couplage M de Gtel que |M| = |f |.
Algorithmes de flots – Prepa Agreg – 2014/2015, 28
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Couplage Maximal
Pas encore suffisant :
Theoreme de l’integralite
Si la fonction de capacite prend des valeurs entieres, alors Ford Fulkerson retourneun flot maximal a valeur entiere.
Corollaire
La valeur d’un couplage maximal dans un graphe biparti est la valeur du flotmaximal dans le reseau de transport correspondant
Algorithmes de flots – Prepa Agreg – 2014/2015, 29
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Couplage maximal
Algorithme de recherche de couplage
Input = un graphe biparti G = (S ,A)Calculer un graphe de transport G ′ = (S ′,A′)f = Ford − Fulkerson(G ′) (en O(|f ∗|.A′)M = {(u, v) | f (u, v) > 0}
Remarque: un couplage maximal possede au plus min(|L|, |R|) arcs.La valeur du flot correspondant est donc en O(S)),et |f ∗| < min(|L|, |R|)l’algorithme tourne donc en O(S .A)
Algorithmes de flots – Prepa Agreg – 2014/2015, 30
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Preflots
I Algorithmes plus efficace en principe. Goldberg (1988) O(S2.A)
I S’appliquent a des problemes de flots minimaux et autres
Principe : considerer les sommets et leur voisinage dans le reseau residuelplutot que les chemins.
On ne maintient pas la propriete de conservation de flot.
On debute en initialisant des flux utilisant la capacite maximale des arcsquittant la source, et on cherche ensuite a eviter les ’debordements’ enpropageant ou reduisant ces flux.
Algorithmes de flots – Prepa Agreg – 2014/2015, 31
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Preflots
Preflot
Un preflot d’un GdT G est une fonction f : S×S → R, satisfaisant les proprietesde symetrie, et de capacite d’un flot, et la propriete suivante :
∀u ∈ S \ {s}, f (S , u) ≥ 0
e(u) = f (S , u) est appele l’excedent de flot sur u.
u ∈ S \ {s, t} deborde si f (S , u) > 0
Important : s et t ne peuvent pas deborder.
Algorithmes de flots – Prepa Agreg – 2014/2015, 32
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Preflots
Hauteur
Soit G = (S ,A) un reseau de transport de source s et de puits t et soit f unpreflot. Une fonction h : S → N est une fonction de hauteur si h(s) = |S |,h(t) = 0 et h(u) ≤ h(v) + 1 pour tout arc residuel (u, v) ∈ Af .
Hauteur et arcs residuels
Soit G = (S ,A) un reseau de transport, soit f un preflot de G et soit h unefonction de hauteur. Pour deux sommets u, v ∈ S quelconques, si h(u) >h(v) + 1, alors (u, v) n’est pas un arc du graphe residuel.
Algorithmes de flots – Prepa Agreg – 2014/2015, 33
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Poussage
POUSSER(u, v)s’applique quand : u deborde, cf (u, v) > 0 et h(u) = h(v) + 1.action : pousser df (u, v) = min(e[u], cf (u, v)) unites de flot de u vers v.df (u, v) := min(e[u], cf (u, v))f [u, v ] := f [u, v ] + df (u, v)f [v , u]:=−f [u, v ]e[u]:= e[u]− df (u, v)e[v ]:=e[v ] + df (u, v)
Explication : le sommet u possede un excedent positif e[u] et la capaciteresiduelle de (u, v) est positive. Il est donc possible d’augmenter le flot entre uet v d’une quantite df (u, v) = min(e[u], cf (u, v)) sans que e(u) ne deviennenegatif ou que la capacite c(u, v) de l’arc ne soit depassee.
Algorithmes de flots – Prepa Agreg – 2014/2015, 34
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Poussage
Poussage Saturant
Un poussage de u vers v est saturant si l’arc (u, v) devient sature (cf (u, v) = 0apres poussage).
NB: apres un poussage non saturant, un sommet u n’est plus debordant.
Algorithmes de flots – Prepa Agreg – 2014/2015, 35
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Reetiquetage
REETIQUETER(u)s’applique quand : u est debordant et, pour tout v ∈ S tel que (u, v) ∈ Af ,h[u] ≤ h[v ]action : accroit la hauteur de u.h[u] := 1 + min{h[v ] | (u, v) ∈ Af }
Donner a u la plus grande valeur permise par les contraintes d’une fonction dehauteur.
Cela permettra ensuite de pousser un flot de u vers un de ses successeurs.
Algorithmes de flots – Prepa Agreg – 2014/2015, 36
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Algoritme generique de Preflot
INITIALISER-PREFLOT(G, s)
for all u ∈ S (sommets) doh[u] := 0e[u] := 0
end forfor all (u, v) ∈ A (arcs) do
f [u, v ] := 0f [v , u] := 0
end forh[s] := |S |for all u adjacent a s do
f [s, u] := c(s, u)f [u, s] := −c(s, u)e[u] := c(s, u)e[s] := e[s]− c(s, u)
end for
Algorithmes de flots – Prepa Agreg – 2014/2015, 37
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Preflot Generique
PREFLOT-GENERIQUE(G)INITIALISER-PREFLOT(G,s)while il est possible d’appliquer un poussage ou un reetiquetage do
Choisir un poussage ou un reetiquetage et l’appliquerend while
Algorithmes de flots – Prepa Agreg – 2014/2015, 38
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Correction, terminaison
Terminaison
L’algorithme de Preflot generique termine
Idee : On maintient constamment une fonction de hauteur parpoussage-reetiquetageSi f est un preflot, alors apres poussage ou reetiquetage, on conserve un preflot.Durant toute l’execution de l’algorithme, il n’existe aucun chemin de s a t dansle reseau residuel Gf .Si u est un sommet debordant, alors on peut lui appliquer un poussage ou unreetiquetage.Si u est un sommet debordant, alors il existe un chemin de u vers s dans legraphe residuel (on pourra eliminer l’excedent).Chaque operation de pousssage-reetiquetage ne peut etre appliquee qu’unnombre borne de fois.
Algorithmes de flots – Prepa Agreg – 2014/2015, 39
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Correction
Validite de l’algorithme de preflot
Si l’algorithme de preflot termine pour un reseau G = (S ,A) de source s et depuits t, alors le preflot f calcule est un flot maximal de G .
Facile : a la fin de l’algorithme, plus aucun sommet ne deborde, i.e e(f)=0, ona donc conservation des flots, et f est un flot.
Et comme Gf ne contient pas de chemin de s a t (et donc pas de cheminameliorant), f est maximal.
Algorithmes de flots – Prepa Agreg – 2014/2015, 40
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Complexite des preflots
Terminaison et Complexite
L’algorithme de preflot sur un graphe G = (S ,A) termine et s’execute enO(S2A).
Voir [Cormen] : le nombre de reetiquetage, poussage saturants, poussages nonsaturants son respectivement < 2s2, < 2SA, et < 4|S |2(|S |+ |A|).
Algorithmes de flots – Prepa Agreg – 2014/2015, 41
Modele de reseau de Transport Ford-Fulkerson Couplage maximal Preflots
Conclusion
Les Flots / graphes de transport : des objets qu’on trouve partout
Application pratique et polynomilae pour des questions d’affectations deresources
Complexites:
I Ford Fulkerson : O(|f ∗|.A)
I Edmonds - Karp : O(|S |.|A|2)
I Preflot : O(|S |2.|A|)
Algorithmes de flots – Prepa Agreg – 2014/2015, 42