2WO12: Optimalisering in Netwerken

2WO12: Optimalisering in Netwerken
Leo van Iersel
Technische Universiteit Eindhoven (TU/E)
en Centrum Wiskunde & Informatica (CWI)
24 februari 2014
http://homepages.cwi.nl/~iersel/2WO12/
[email protected]
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
1 / 40
Overzicht
Tot nog toe:
grafen, kleuren en routeren
graafrepresentaties en complexiteit
Vandaag
acyclische gerichte grafen
kortste pad algoritmes
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
2 / 40
Definitie
Een acyclische gerichte graaf is een gerichte graaf die geen gerichte
circuits bevat.
Lemma
Elke acyclische gerichte graaf bevat een punt met ingraad nul en een punt
met uitgraad nul.
c
a
b
a
d
f
e
g
Acyclische gerichte graaf
Leo van Iersel (TUE/CWI)
c
b
e
d
f
g
Cyclische gerichte graaf
2WO12: Optimalisering in Netwerken
24 februari 2014
3 / 40
Toepassing: fylogenetische netwerken
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
4 / 40
Definitie
Een topologische ordening van een gerichte graaf is een nummering van
de punten met volgnummers 1, . . . , n zodanig dat:
(i, j) ∈ A
=⇒
i <j
1
3
2
4
8
5
6
7
9
Stelling
Een gerichte graaf heeft een topologische ordening dan en slechts dan als
de graaf acyclisch is.
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
5 / 40
Probleem
TOPORD
Gegeven: gerichte graaf D
Gevraagd: is D acyclisch? Zo ja, geef een topologische ordening; zo
nee, geef een gericht circuit.
Stelling
Er bestaat een lineair algoritme voor TOPORD.
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
6 / 40
Algoritme (TOPORD)
1
i := 1
2
Als er geen punt met ingraad nul is, dan is er een gericht circuit.
Geef zo’n gericht circuit als uitvoer en stop.
Als er wel een punt v met ingraad 0 is, doe dan het volgende:
3
I
I
I
4
Geef punt v nummer i
Verwijder v (en alle pijlen die uit v vertrekken) uit de graaf
i := i + 1
Herhaal stappen 2 en 3 totdat alle punten uit de graaf verwijderd zijn
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
7 / 40
Toepassing: voorkeurslijstjes
Stel er zijn n kandidaten en m beoordelers die elk een voorkeurslijst
hebben ingediend.
Gevraagd wordt om een volgorde van de kandidaten te vinden die met
alle voorkeurslijsten overeenstemt.
Voorbeeld
Kandidaten: A,B,C,D,E
Beoordeler 1: B,A,E
Beoordeler 2: D,C,E
Beoordeler 3: D,E
Beoordeler 4: D,C,A
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
8 / 40
Probleem
Kortste Pad
Gegeven: D = (V , A), lengtefunctie ` : A → R en punt s ∈ V
Bepaal: voor alle t ∈ V een s − t pad P in D van minimale lengte
X
`(a)
a∈A(P)
A(P) is de verzameling pijlen van pad P
d(u, v ) is de lengte van een kortste pad van u naar v
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
9 / 40
Algoritme voor Kortste Pad in een acyclische gerichte graaf:
Algoritme
Zet de punten in topologische volgorde 1, 2, . . . , n.
Neem aan dat s = 1.
d(1) := 0, A0 := ∅
Voor i = 2, . . . , n
I
d(i) :=
min
d(k) + `(k, i)
k<i|(k,i)∈A
I
Voeg een pijl (k, i) waarvoor dit minimum wordt aangenomen toe aan
verzameling A0
d(i) is de afstand van s tot i over een kortste pad
De pijlen van A0 vormen een kortste-pad-boom. D.w.z. elk pad dat
alleen pijlen van A0 gebruikt is een kortste pad.
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
10 / 40
Voorbeeld
Vind de lengte van een kortste pad vanuit s naar elk ander punt.
s
3
3
5
1
2
3
1
Leo van Iersel (TUE/CWI)
3
2
7
3
3
2
2WO12: Optimalisering in Netwerken
24 februari 2014
11 / 40
Voorbeeld
Een topologische ordening van de punten is: (s, a, b, c, d, e, f , g , h).
s
3
3
a
5
1
Leo van Iersel (TUE/CWI)
3
2
c
2
d
1
f
b
3
e
g
7
3
3
2
h
2WO12: Optimalisering in Netwerken
24 februari 2014
12 / 40
Toepassing: projectplanning
Voorbeeld
Gegeven zijn een aantal taken die uitgevoerd moeten worden en
zogenaamde precedentie-eisen, bovendien heeft elke taak een zekere
tijdsduur.
Plan de taken zo in dat aan alle precedentieeisen voldaan wordt en de
laatste taak zo vroeg mogelijk is afgerond.
Modelleer als kortste pad probleem in gerichte acyclische graaf:
punten zijn taken
pijlen zijn precedentie-eisen
lengte van pijl (u, v ) is tijdsduur van taak v
de korst mogelijke tijdsduur van het totale project is nu:
min duur(s) + max d(s, t)
s∈V
Leo van Iersel (TUE/CWI)
t∈V \{s}
2WO12: Optimalisering in Netwerken
24 februari 2014
13 / 40
Algoritme voor kortste pad in een ongewogen (gerichte) graaf:
Algoritme
V0 := {s}
V1 , . . . , Vn , A0 := ∅
Voor i = 1, . . . , |V |
I
I
voor elke v ∈ V \ (V0 ∪ V1 ∪ . . . ∪ Vi ),
als er een u ∈ Vi is waarvoor (u, v ) ∈ A, dan
F
F
stop v in Vi+1
stop (u, v ) in A0 (voor ´e´en zo’n u)
Vi bevat de punten met afstand i van s (via een kortste pad)
V 0 := V0 ∪ V1 ∪ . . . ∪ Vn bevat all punten bereikbaar vanuit s
(V 0 , A0 ) is een kortste-pad-boom vanuit s,
d.w.z. elk s-v pad in (V 0 , A0 ) is een kortste pad in D
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
14 / 40
Voorbeeld
Vind een kortste-pad-boom vanuit s.
s
b
a
c
g
d
f
Leo van Iersel (TUE/CWI)
e
h
2WO12: Optimalisering in Netwerken
24 februari 2014
15 / 40
Stelling
Het algoritme voor het vinden van een kortste pad in een ongewogen graaf
heeft looptijd O(|A|).
Definitie
Een s − t snede (cut) is een verzameling δ + (U) voor U ⊂ V met s ∈ U
en t ∈ V \ U.
Stelling
De lengte van een kortste s − t pad is gelijk aan het maximale aantal
disjuncte s − t snedes.
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
16 / 40
Algoritme van Dijkstra voor het vinden van kortste paden in een graaf
met niet-negatieve lengtefunctie ` : A → Q+
Algoritme
U := V
f (s) := 0
f (v ) := ∞ voor alle v 6= s
Herhaal tot U leeg is:
1
Vind u ∈ U met minimale f (u)
2
Voor elke a = (u, v ) ∈ A met f (v ) > f (u) + `(a)
I
I
f (v ) := f (u) + `(a)
verwijder u uit U
Na afloop is f (t) de afstand van s tot t, voor alle t ∈ V
Een kortste-pad-boom wordt gegeven door de verzameling pijlen A0
met voor elke v ∈ V een pijl a = (u, v ) ∈ A met f (v ) = f (u) + `(a)
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
17 / 40
Voorbeeld
Vind de afstand over een kortste pad van s naar elk ander punt.
s
4
3
a
5
c
2
d
1
f
Leo van Iersel (TUE/CWI)
b
2
3
1
2
4
e
g
4
2
1
h
2WO12: Optimalisering in Netwerken
24 februari 2014
18 / 40
Stelling
Voor een gerichte graaf D = (V , A) met niet-negatieve lengtefunctie `
en s, t ∈ V is de waarde f (t) gevonden door het algoritme van Dijkstra de
lengte van een kortste s-t pad in D.
Stelling
Dijkstra’s algoritme heeft een looptijd van O(|V |2 ).
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
19 / 40
Definitie
Een binaire heap voor een functie f : V → R is een binaire
boom T = (V , A) waarvoor geldt:
als (u, v ) ∈ A dan f (u) ≤ f (v )
alle lagen m.u.v. de laatste laag zijn volledig gevuld
s(0)
a(5)
c(5)
f(7)
b(4)
g(7)
d(7)
e(1)
h(1)
Lemma
Gegeven een binaire heap voor f : V → R, kunnen we in constante tijd
een element v ∈ V vinden waarvoor f (v ) minimaal is.
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
20 / 40
Lemma
Na het verwijderen van het element v ∈ V waarvoor f (v ) minimaal is
kunnen we de binaire heap “repareren” in tijd O(log(|V |)).
s(0)
a(5)
c(5)
f(7)
b(4)
g(7)
d(7)
e(1)
h(1)
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
21 / 40
Lemma
Na het verwijderen van het element v ∈ V waarvoor f (v ) minimaal is
kunnen we de binaire heap “repareren” in tijd O(log(|V |)).
h(1)
a(5)
c(5)
b(4)
g(7)
d(7)
e(1)
f(7)
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
22 / 40
Lemma
Na het verwijderen van het element v ∈ V waarvoor f (v ) minimaal is
kunnen we de binaire heap “repareren” in tijd O(log(|V |)).
b(4)
a(5)
c(5)
h(1)
g(7)
d(7)
e(1)
f(7)
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
23 / 40
Lemma
Na het verwijderen van het element v ∈ V waarvoor f (v ) minimaal is
kunnen we de binaire heap “repareren” in tijd O(log(|V |)).
b(4)
d(7)
a(5)
c(5)
g(7)
h(1)
e(1)
f(7)
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
24 / 40
Lemma
Na het verlagen van f (v ) voor een v ∈ V kunnen we de binaire heap
“repareren” in tijd O(log(|V |)).
b(4)
d(7)
a(5)
c(5)
g(2)
h(1)
e(1)
f(7)
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
25 / 40
Lemma
Na het verlagen van f (v ) voor een v ∈ V kunnen we de binaire heap
“repareren” in tijd O(log(|V |)).
b(4)
g(2)
c(5)
d(7)
a(5)
h(1)
e(1)
f(7)
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
26 / 40
Lemma
Na het verlagen van f (v ) voor een v ∈ V kunnen we de binaire heap
“repareren” in tijd O(log(|V |)).
g(2)
b(4)
c(5)
d(7)
a(5)
h(1)
e(1)
f(7)
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
27 / 40
Stelling
Een implementatie van Dijkstra’s algoritme met een binaire heap heeft een
looptijd van O(|A| log(|V |)).
Stelling
Een implementatie van Dijkstra’s algoritme met een “Fibonacci heap”
heeft een looptijd van O(|A| + |V | log(|V |)).
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
28 / 40
Kortste paden in gewogen grafen met willekeurige lengtefunctie ` : A → Q,
dus negatieve lengtes zijn toegestaan!
Een “path” in the CO dictaat noemen wij een “wandeling”
Een “simple path” in het CO dictaat noemen wij een “pad”
Als negatieve lengtes zijn toegestaan, dan hoeft een kortste s − t
wandeling niet te bestaan
Voorbeeld
In de onderstaande graaf bestaat er geen kortste s-t wandeling door een
gericht circuit (a, b, c, d, e) met negatieve lengte 3 − 1 − 3 + 2 − 2 = −1.
a
3
s
3
-2
b
Leo van Iersel (TUE/CWI)
-2
-1
c
e
-1
2
-3
t
d
2WO12: Optimalisering in Netwerken
2
24 februari 2014
29 / 40
Stelling
Gegeven D = (V , A) en ` : A → R met `(C ) ≥ 0 voor elk gericht
circuit C . Als er dan een s − t pad bestaat, dan bestaat er ook een kortste
s-t wandeling, en er bestaat een kortste s-t wandeling die een s − t pad is.
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
30 / 40
Probleem
Gegeven: gewogen graaf D = (V , A) met lengtefunctie ` : A → Q
zonder gerichte circuits met negatieve lengte en s ∈ V .
Vind: een kortste s − t pad voor alle t ∈ V .
Algoritme van Bellman en Ford.
Algoritme
f0 (s) := 0
f0 (v ) := ∞ voor alle v 6= s
Voor k = 0, 1, . . . , n − 1
Voor alle v ∈ V
fk+1 (v ) := min{fk (v ), min (fk (u) + `(u, v ))}
(u,v )∈A
Na afloop is fn−1 (t) de afstand van s tot t (via een kortste pad), voor
alle t ∈ V (met n = |V |)
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
31 / 40
Voorbeeld
Voer het Bellman-Ford algoritme uit op de onderstaande graaf.
a
2
1
c
s
-4
2
d
2
f
1
-1
e
Leo van Iersel (TUE/CWI)
b
-3
-2
h
-1
1
-3
2WO12: Optimalisering in Netwerken
g
3
24 februari 2014
32 / 40
a
2
1
c
s
2
e
s
0
0
0
0
0
0
0
0
Leo van Iersel (TUE/CWI)
a
∞
2
2
2
2
2
2
2
-4
-2
d
2
f
1
-1
f0
f1
f2
f3
f4
f5
f6
f7
b
-3
b
∞
∞
−1
−1
−1
−1
−1
−1
c
∞
∞
0
0
0
0
0
−4
d
∞
∞
∞
−5
−5
−5
−5
−5
1
g
-3
e
∞
−1
−1
−1
−1
−1
−5
−5
h
-1
f
∞
∞
∞
∞
−3
−3
−3
−3
2WO12: Optimalisering in Netwerken
3
g
∞
∞
∞
∞
∞
−2
−2
−2
h
∞
∞
∞
−3
−3
−4
−4
−4
24 februari 2014
33 / 40
Voorbeeld
Voor elk punt v is fn−1 (v ) de afstand van s tot v (via een kortste pad).
a
2
0
s
2
-1
-3
1
-1
-4
-5
1
e -5
Leo van Iersel (TUE/CWI)
-4
2
c
b
-3
-2
d
2 -3 -1
f
1
3
g
-2
2WO12: Optimalisering in Netwerken
-4
h
24 februari 2014
34 / 40
Voorbeeld
De dikke lijnen vormen een kortste-pad-boom.
a
2
0
s
2
-1
-3
1
-1
-4
-5
1
e -5
Leo van Iersel (TUE/CWI)
-4
2
c
b
-3
-2
d
2 -3 -1
f
1
3
g
-2
2WO12: Optimalisering in Netwerken
-4
h
24 februari 2014
35 / 40
Lemma
Voor alle k = 0, . . . , n − 1 en alle v ∈ V :
fk (v ) = min{`(P) | P is een s − v wandeling over hoogstens k pijlen}
Stelling
Gegeven een gerichte graaf D = (V , A), s, t ∈ V en een lengtefunctie
` : A → Q zodanig dat D geen gericht circuit met negatieve lengte heeft,
kan men een kortste s − t pad vinden in tijd O(|V ||A|).
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
36 / 40
Stelling (1.5)
Laat D = (V , A) een gerichte graaf zijn, s, t ∈ V en ` : A → Z+ een
lengtefunctie.
De minimale lenge van een s − t pad is gelijk aan het maximale aantal
s − t snedes C1 , . . . , Ck (herhaling toegestaan) waarvoor geldt dat
elke a ∈ A in hooguit `(a) van deze snedes voorkomt.
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
37 / 40
Toepassing: sociale netwerken
Kortste paden tussen Facebook gebruikers
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
38 / 40
Toepassing: sociale netwerken
Samenhangende componenten van de Facebook graaf
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
39 / 40
Kortste pad d.m.v. slijmzwam
http://www.youtube.com/watch?v=czk4xgdhdY4
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
24 februari 2014
40 / 40