arcs sortants et entrantsstehlikm/... · 2020. 11. 15. · arcs sortants et entrants définition...
TRANSCRIPT
-
Arcs sortants et entrants
DéfinitionSoient G = (V,E) un graphe orientéet U ⊆ V . Alors, on note ∂+(U)l’ensemble des arcs dont le débutest dans U . De même, on note∂−(U) l’ensemble des arcs dont lafin est dans U .
U
δ+(U)
δ−(U)
1
-
Arcs sortants et entrants
DéfinitionSoient G = (V,E) un graphe orientéet U ⊆ V . Alors, on note ∂+(U)l’ensemble des arcs dont le débutest dans U . De même, on note∂−(U) l’ensemble des arcs dont lafin est dans U .
U
δ+(U)
δ−(U)
1
-
Degré sortant et degré entrant
Définition
• le degré entrant d−(v), est le nombred’arcs dont la fin est v.
• le degré sortant d+(v), est le nombred’arcs dont le début est v.
• On a d−(v) = |∂−({v})| etd+(v) = |∂+({v})|.• v est une source si d−(v) = 0.• v est un puits si d+(v) = 0.
v
d+(v) = 1
d−(v) = 2
2
-
Degré sortant et degré entrant
Définition
• le degré entrant d−(v), est le nombred’arcs dont la fin est v.
• le degré sortant d+(v), est le nombred’arcs dont le début est v.
• On a d−(v) = |∂−({v})| etd+(v) = |∂+({v})|.• v est une source si d−(v) = 0.• v est un puits si d+(v) = 0.
v
d+(v) = 1
d−(v) = 2
2
-
Flot max et coupe min
• Deux problèmes classiques de l’optimisation combinatoire.• Exemple de la dualité mathématique.
Quelques applications
• Fouille de données.• Sélection de projets.• Ordonnancement (par exemple compagnies aériennes).• Segmentation de l’image.• Connectivité et fiabilité des réseaux.• Calcul distribuée. . .
3
-
Réseaux
DéfinitionUn réseau est un graphe orientéG = (V,E) avec :
• deux sommets spéciaux :• la source s tel que d−(s) = 0• le puits t tel que d+(s) = 0
• une fonction de capacitéc : E → R+.
s t
2
2
8
3
2
3
4
1
2
5
2 7
4
2
3
A
4
-
Coupes
DéfinitionUne s− t coupe est une partition(A,B) de V telle que s ∈ A et t ∈ B
DéfinitionLa capacité d’une coupe (A,B) estcap(A,B) =
∑e∈δ+(A) c(e).
s t
2
2
8
3
2
3
4
1
2
5
2 7
4
2
3
A
cap(A,B) = 2 + 4 + 1 + 2 + 5 = 14
5
-
Le problème de la coupe minimum
ProblèmeTrouver une s− t coupe de capacitéminimum.
s t
2
2
8
3
2
3
4
1
2
5
2 7
4
2
3
A
cap(A,B) = 2 + 2 + 2 + 3 = 9
6
-
Flots
DéfinitionUn s− t flot est une fonctionf : E → R+ qui vérifie
• Pour tout e ∈ E, 0 ≤ f(e) ≤ c(e)(contrainte de capacité)
• Pour tout v ∈ V − {s, t},∑e∈δ−(v) f(e) =
∑e∈δ+(v) f(e)
(conservation de flot).
DéfinitionLa valeur d’un flot f estval(f) =
∑e∈δ+(s) f(e).
s t
2/2
1/2
3/8
0/3
2/2
0/3
0/4
1/1
0/2
3/5
0/2 2/7
0/4
1/2
3/3
val(f) = 2 + 1 + 3 = 6
7
-
Le problème du flot maximum
ProblèmeTrouver un s− t flot de valeurmaximum.
s t
2/2
2/2
5/8
0/3
2/2
0/3
2/4
0/1
2/2
3/5
0/2 4/7
0/4
2/2
3/3
val(f) = 2 + 2 + 5 = 9
8
-
Un peu d’histoire : le réseau ferroviaire soviétique
2
Soviet Rail Network, 1955
Reference: On the history of the transportation and maximum flow problems.Alexander Schrijver in Math Programming, 91: 3, 2002.
9
-
Flots et coupes
LemmeSoit f un flot et (A,B) une s− tcoupe. Alors, le flot qui traverse lacoupe est égal au flot qui sort de s.∑e∈δ+(A)
f(e)−∑
e∈δ−(A)
f(e) = val(f).
s t
2/2
2/2
5/8
0/3
2/2
0/3
2/4
0/1
2/2
3/5
0/2 4/7
0/4
2/2
3/3
A
val(f) = 2 + 2 + 5
= 5 + 2− 2 + 4
10
-
Flots et coupes
Démonstration
val(f) =∑
e∈δ+(s)
f(e)
=∑
e∈δ+(s)
f(e)−∑
e∈δ−(s)
f(e)
=∑v∈A
∑e∈δ+(v)
f(e)−∑
e∈δ−(v)
f(e)
=
∑e∈δ+(A)
f(e)−∑
e∈δ−(A)
f(e).
11
-
Dualité faible
LemmeSoit f un flot et (A,B) une s− t coupe quelconques. Alors, la valeur de fest inférieure ou égale à la capacité de la coupe.
Démonstration
val(f) =∑
e∈δ+(A)
f(e)−∑
e∈δ−(A)
f(e)
≤∑
e∈δ+(A)
f(e)
≤∑
e∈δ+(A)
c(e)
= cap(A,B).
12
-
Certificat d’optimalité
CorollaireSoit f un flot et (A,B) une coupe. Si val(f) = cap(A,B), alors f est un flotmax et (A,B) est une coupe min.
s t
2/2
2/2
5/8
0/3
2/2
0/3
2/4
0/1
2/2
3/5
0/2 4/7
0/4
2/2
3/3
A G
val(f) = 9
cap(A,B) = 9
13
-
Vers un algorithme de flot max
Un algorithme glouton
• Commencer par le flot nul, càd, f(e) = 0pour chaque arc e ∈ E.• Trouver un s− t chemin P où tout arc
vérifie f(e) < c(e).
• Augmenter le flot le long le chemin P .• Répéter jusqu’à devenir coincé.
s t
0/6
0/3
0/9
0/3
0/6
val(f) = 6
14
-
Vers un algorithme de flot max
Un algorithme glouton
• Commencer par le flot nul, càd, f(e) = 0pour chaque arc e ∈ E.• Trouver un s− t chemin P où tout arc
vérifie f(e) < c(e).
• Augmenter le flot le long le chemin P .• Répéter jusqu’à devenir coincé.
s t
0/6
0/3
0/9
0/3
0/6
val(f) = 6
14
-
Vers un algorithme de flot max
Un algorithme glouton
• Commencer par le flot nul, càd, f(e) = 0pour chaque arc e ∈ E.• Trouver un s− t chemin P où tout arc
vérifie f(e) < c(e).
• Augmenter le flot le long le chemin P .• Répéter jusqu’à devenir coincé.
s t
6/6
0/3
6/9
0/3
6/6
val(f) = 6
14
-
Le graphe résiduel
Arc originel :
• e = (u, v) ∈ E.• Flot f(e), capacité c(e).
Arc résiduel :
• “annuler” le flot envoyé.• e = (u, v) et eR = (v, u).• Capacité résiduelle :
cf (e) =
c(e)− f(e) si e ∈ Ef(e) si eR ∈ E.
4/6
arc de G
2
4
arcs de Gf
15
-
Le graphe résiduel
Graphe résiduel :
• Arcs résiduels avec capacité résiduellepositive.
• Ef = {e | f(e) < c(e)} ∪ {eR | f(e) > 0}.Chemin augmentant :
• Un chemin augmentant est un s–tchemin simple dans le graphe résiduelGf .
• La capacité cap(Gf , P ) d’un cheminaugmentant P est le minimum descapacités résiduelles parmi tous les arcsde P .
s t
6/6
0/3
6/9
0/3
6/6
s t
6
3
3 6
3
6
16
-
Propriété clé
• Soit f un flot et P un cheminaugmentant dans Gf .
• En envoyant un flot de valeur cap(Gf , P )on obtient un nouveau flot f ′ de valeurval(f ′) = val(f) + cap(Gf , P ).
Augment(f,c,P):
ε← min{cf (e) : e ∈ E(P )}for e ∈ E(P ):
if e ∈ E:f(e)← f(e) + ε
else:
f(eR)← f(e)− εreturn f
s t
6/6
0/3
6/9
0/3
6/6
G
s t
6
3
3 6
3
6
Gf17
-
Propriété clé
• Soit f un flot et P un cheminaugmentant dans Gf .
• En envoyant un flot de valeur cap(Gf , P )on obtient un nouveau flot f ′ de valeurval(f ′) = val(f) + cap(Gf , P ).
Augment(f,c,P):
ε← min{cf (e) : e ∈ E(P )}for e ∈ E(P ):
if e ∈ E:f(e)← f(e) + ε
else:
f(eR)← f(e)− εreturn f
s t
6/6
0/3
6/9
0/3
6/6
G
s t
6
3
3 6
3
6
Gf17
-
Propriété clé
• Soit f un flot et P un cheminaugmentant dans Gf .
• En envoyant un flot de valeur cap(Gf , P )on obtient un nouveau flot f ′ de valeurval(f ′) = val(f) + cap(Gf , P ).
Augment(f,c,P):
ε← min{cf (e) : e ∈ E(P )}for e ∈ E(P ):
if e ∈ E:f(e)← f(e) + ε
else:
f(eR)← f(e)− εreturn f
s t
6/6
0/3
6/9
0/3
6/6
G
s t
6
3
3 6
3
6
Gf17
-
Propriété clé
• Soit f un flot et P un cheminaugmentant dans Gf .
• En envoyant un flot de valeur cap(Gf , P )on obtient un nouveau flot f ′ de valeurval(f ′) = val(f) + cap(Gf , P ).
Augment(f,c,P):
ε← min{cf (e) : e ∈ E(P )}for e ∈ E(P ):
if e ∈ E:f(e)← f(e) + ε
else:
f(eR)← f(e)− εreturn f
s t
6/6
3/3
3/9
3/3
6/6
G
s t
6
3
6 3
3
6
Gf17
-
Algorithme de Ford–Fulkerson
Ford-Fulkerson(G, s, t, c):
for e ∈ E(G):f ← 0
Gf ← graphe residuelwhile ∃ chemin augmentant P:
f ← Augment(f, c, P )mettre a jour Gf
return f
s t
6/6
0/3
6/9
0/3
6/6
G
s t
6
3
3 6
3
6
Gf18
-
Algorithme de Ford–Fulkerson
Ford-Fulkerson(G, s, t, c):
for e ∈ E(G):f ← 0
Gf ← graphe residuelwhile ∃ chemin augmentant P:
f ← Augment(f, c, P )mettre a jour Gf
return f
s t
6/6
0/3
6/9
0/3
6/6
G
s t
6
3
3 6
3
6
Gf18
-
Algorithme de Ford–Fulkerson
Ford-Fulkerson(G, s, t, c):
for e ∈ E(G):f ← 0
Gf ← graphe residuelwhile ∃ chemin augmentant P:
f ← Augment(f, c, P )mettre a jour Gf
return f
s t
6/6
0/3
6/9
0/3
6/6
G
s t
6
3
3 6
3
6
Gf18
-
Algorithme de Ford–Fulkerson
Ford-Fulkerson(G, s, t, c):
for e ∈ E(G):f ← 0
Gf ← graphe residuelwhile ∃ chemin augmentant P:
f ← Augment(f, c, P )mettre a jour Gf
return f
s t
6/6
3/3
3/9
3/3
6/6
G
s t
6
3
6 3
3
6
Gf18
-
Le théorème flot-max/coupe-min
Théorème des chemins augmentantsUn flot f est maximum ssi il n’y a pas de chemin augmentant.
Théorème (Elias–Feinstein–Shannon 1956 ; Ford–Fulkerson 1956)La valeur maximum d’un flot est égale à la capacité minimum d’unecoupe.
On va prouver les deux théorèmes en même temps en démontrant que lesénoncés suivants sont équivalents :
(1) Il existe une coupe (A,B) telle que val(f) = cap(A,B).
(2) Le flot f est maximum.
(3) Il n’existe pas de chemin augmentant par rapport à f .
19
-
Démonstration du théorème flot-max/coupe-min (1/2)
(1) ⇒ (2) Corollaire à la dualité faible.
(2) ⇒ (3) Soit f un flot. S’il existe un chemin augmentant P , on peutaugmenter f en envoyant un flot le long P .
(3) ⇒ (1)
• Soit f un flot sans chemin augmentant.• Soit A un ensemble de sommets atteignables depuis s dans le graphe
résiduel.
• Par la définition de A, s ∈ A.• Par la définition de f , t /∈ A.
20
-
Démonstration du théorème flot-max/coupe-min (2/2)
val(f) =∑
e∈δ+(A)
f(e)−∑
e∈δ−(A)
f(e)
=∑
e∈δ+(A)
c(e)
= cap(A,B)
s t
2/2
2/2
5/8
0/3
2/2
0/3
2/4
0/1
2/2
3/5
0/2 4/7
0/4
2/2
3/3
A G
s t
2
2
35
3
2
3
22
1
2
23
2 34
4
2
3
A Gf
21
-
Comment trouver une coupe minimum?
• Il suffit de prendre A comme l’ensemble des sommets atteignables àpartir de s dans le graphe résiduel Gf .
• C’est-à-dire, v ∈ A ssi il existe un chemin orienté dans Gf avec sommetde départ s et sommet d’arrivée v.
• Si vous trouvez que t ∈ A, alors il existe un chemin augmentant et fn’est pas maximum — dans ce cas, il faut encore faire tournerFord–Fulkerson !
22