2WO12: Optimalisering in Netwerken

2WO12: Optimalisering in Netwerken
Leo van Iersel
Technische Universiteit Eindhoven (TU/E)
en Centrum Wiskunde & Informatica (CWI)
20 februari 2014
http://homepages.cwi.nl/~iersel/2WO12/
[email protected]
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
1 / 32
Overzicht
Tot nog toe: grafen, kleuren en routeren
Vandaag: graafrepresentaties en complexiteit
problemen en algoritmes
representeren van grafen (in een computer)
complexiteit (effici¨entie) van algoritmes
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
2 / 32
Problemen
Een algoritmische probleemklasse (kortweg probleem) bestaat uit
karakterisaties van toegelaten invoer (input) en gewenste uitvoer
(output) als functie van de invoer. Een instantie ontstaat als ´e´en
toegelaten invoer gekozen wordt.
Voorbeeld
Probleem: Euler Graaf (EG)
Gegeven: een samenhangende graaf G
Gevraagd: is G een Euler graaf?
Een instantie van dit probleem is bijvoorbeeld:
Is K4 een Euler graaf?
Een probleem is een beslissingsprobleem als het vraagt om een ja- of
nee-antwoord. Bijvoorbeeld probleem EG is een beslissingsprobleem.
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
3 / 32
Voorbeeld
Probleem: Hamilton Circuit (HC)
Gegeven: een graaf G
Bepaal of G een Hamilton graaf is en zo ja, geef een Hamilton-circuit
van G
HC is een constructieprobleem
Voorbeeld
Pobleem: Travelling Salesman Problem (TSP)
Gegeven: een volledige graaf G = (V , E ) en een kostenfunctie
c : E → R+
Gevraagd: een Hamilton circuit in G van minimale kosten
TSP is een optimaliseringsprobleem
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
4 / 32
Voorbeeld
Probleem: Number of Hamilton Circuits (#HC)
Gegeven: een graaf G
Bepaal hoeveel Hamilton-circuits G heeft
HC is een telprobleem
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
5 / 32
Definitie
Een algoritme (algorithm) voor een probleem is een methode om elke
mogelijke instantie van het probleem op te lossen, die voldoet aan:
(1) eindigheid (beschreven door eindige text)
(2) uitvoerbaarheid (instructies mechanisch uit te voeren)
(3) terminatie (stopt na eindig aantal stappen)
(4) gedetermineerdheid (geen gokken)
Definitie
Een niet-deterministisch algoritme is een methode die aan (1-3) voldoet
maar niet aan (4).
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
6 / 32
Voorbeeld
Probleem: Euler Graaf (EG)
Gegeven: een samenhangende graaf G
Gevraagd: is G een Euler graaf?
Een algoritme voor het probleem Euler Graaf:
bepaal voor elk punt van G de graad
als alle graden even zijn, geef dan als antwoord
ja (G is een Euler graaf)
als er een oneven graad voorkomt, geef dan als antwoord
nee (G is geen Euler graaf)
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
7 / 32
Voorbeeld
Pobleem: Travelling Salesman Problem (TSP)
Gegeven: een volledige graaf G = (V , E ) en een kostenfunctie
c : E → R+
Gevraagd: een Hamilton circuit in G van minimale kosten
Een algoritme voor het probleem Travelling Salesman Problem (TSP):
voor elke permutatie (v1 , v2 , . . . , vn ) van de punten van G
bepaal de kosten van het Hamilton circuit (vn = v0 , v1 , v2 , . . . , vn ),
d.w.z.
n−1
X
c(vi , vi+1 )
i=0
geef als uitvoer een Hamilton circuit met laagste kosten
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
8 / 32
Graafrepresentaties: Lijst van lijnen
2
1
3
4
Lijst van lijnen: [[1, 2], [2, 3], [2, 4], [1, 4], [3, 4]]
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
9 / 32
Lijst van pijlen
2
1
3
4
Lijst van pijlen: [(1, 2), (2, 3), (4, 2), (1, 4), (3, 4)]
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
10 / 32
Verbindingsmatrix ongerichte graaf
2
1
3
4
Verbindingsmatrix:
Leo van Iersel (TUE/CWI)
0 1
1 0
2
1
3 0
4 1
2
1
0
1
1
3
0
1
0
1
4
1
1

1
0
2WO12: Optimalisering in Netwerken
20 februari 2014
11 / 32
Verbindingsmatrix gerichte graaf
2
1
3
4
Verbindingsmatrix:
Leo van Iersel (TUE/CWI)
0 1
1 0
2
0
3 0
4 0
2
1
0
0
1
3
0
1
0
0
4
1
0

1
0
2WO12: Optimalisering in Netwerken
20 februari 2014
12 / 32
Incidentiematrix ongerichte graaf
2
2
1
1
3
4
3
5
4
Incidentiematrix:
Leo van Iersel (TUE/CWI)
0 1
1 1
2
1
3 0
4 0
2
0
1
1
0
3
0
1
0
1
4
1
0
0
1
5
0
0

1
1
2WO12: Optimalisering in Netwerken
20 februari 2014
13 / 32
Incidentiematrix gerichte graaf
2
2
1
1
3
4
3
5
4
Incidentiematrix:
Leo van Iersel (TUE/CWI)
0  1 −2 −3 −4 −5 
1 1
0
0
1
0

2
−1
1
−1
0
0


3  0 −1 0
0
1
4 0
0
1 −1 −1
2WO12: Optimalisering in Netwerken
20 februari 2014
14 / 32
Verbindingslijsten
2
1
3
4
Verbindingslijsten:
A1 = [2, 4]
A3 = [2, 4]
A2 = [1, 3, 4] A4 = [1, 2, 3]
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
15 / 32
In- en uitlijsten gerichte graaf
2
1
3
4
Uitlijsten:
Auit
1 = [2, 4]
Auit
2 = [3]
Auit
3 = [4]
Auit
4 = [2]
Inlijsten:
Ain
1 = []
Ain
2 = [1, 4]
Ain
3 = [2]
Ain
4 = [1, 3]
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
16 / 32
Incidentielijsten
2
2
1
1
3
4
3
5
4
Incidentielijsten:
A1 = [(1, 2), (4, 4)]
A2 = [(1, 1), (2, 3), (3, 4)]
A3 = [(2, 2), (5, 4)]
A4 = [(3, 2), (4, 1), (5, 3)]
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
17 / 32
Definitie
De (tijds)complexiteit (time complexity) van een algoritme A is de
functie f : N → N met f (n) het aantal elementaire stappen dat A in het
ergste geval (“worst-case”) nodig heeft om een instantie met
invoerlengte n op te lossen.
de invoerlengte van een instantie is het aantal bits dat nodig is om
de invoer van de instantie te representeren
het begrip “elementaire stap” hangt af van het gekozen
computermodel
de tijdscomplexiteit van een algoritme wordt ook vaak de looptijd
(running time) genoemd
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
18 / 32
RAM computermodel
RAM = Random Access Machine
elementaire stappen: o.a. rekenkundige bewerkingen van getallen
(optellen, vermenigvuldigen, enz.), vergelijken van getallen, lezen en
schrijven van een geheugenplaats, volgen van pointer
in ´e´en geheugenplaats past een 0,1-string van eindige maar
onbeperkte lengte
Elk element van de invoer (elk punt, elke lijn, elk rationeel getal) kan
gecodeerd als 0-1 string in ´e´en geheugenplaats worden opgeslagen
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
19 / 32
Om complexiteit (of andere functies) af te schatten wordt vaak de
volgende “big-O notatie” gebruikt:
Definitie
Laten f en g twee functies van N naar R+ zijn, dan is
f (n) = O(g (n)) als er c > 0 en n0 ∈ N bestaan zodanig dat
f (n) ≤ c · g (n) voor alle n ≥ n0
f (n) = Ω(g (n)) als als er c > 0 en n0 ∈ N bestaan zodanig dat
f (n) ≥ c · g (n) voor alle n ≥ n0
f (n) = Θ(g (n)) als f (n) = O(g (n)) en f (n) = Ω(g (n))
Definitie
Een algoritme is polynomiaal als het tijdscomplexiteit O(p(n)) heeft
met p(n) een polynoom.
Definitie
Een algoritme is exponentieel als het tijdscomplexiteit Ω(f (n)) heeft
met f (n) een exponenti¨ele functie (f (n) = an voor een constante a > 1).
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
20 / 32
Definitie
De klasse P is de klasse van alle beslissingsproblemen waarvoor een
polynomiaal algoritme bestaat.
Definitie
De klasse N P is de klasse van alle beslissingsproblemen waarvoor een
polynomiaal niet-deterministisch algoritme bestaat.
E´en van de zeven millennium problemen ($1.000.000):
is P = N P?
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
21 / 32
Graafalgoritmes
Stel een graafalgoritme heeft als invoer een graaf met:
|V | punten
|E | lijnen
W het maximale gewicht van een punt/lijn (in het geval het een
gewogen graaf betreft)
Definitie
Een graafalgoritme is polynomiaal als zijn complexiteit een polynoom
in |V |, |E | en log(W ) is.
Definitie
Een graafalgoritme is sterk polynomiaal als zijn complexiteit een
polynoom in |V | en |E | is.
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
22 / 32
Voorbeeld
Probleem: Euler Graaf (EG)
Gegeven: een samenhangende graaf G
Gevraagd: is G een Euler graaf?
Een algoritme voor het probleem Euler Graaf:
bepaal voor elk punt van G de graad
als alle graden even zijn, geef dan als antwoord
ja (G is een Euler graaf)
als er een oneven graad voorkomt, geef dan als antwoord
nee (G is geen Euler graaf)
Wat is de complexiteit van dit algoritme?
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
23 / 32
Voorbeeld
Pobleem: Travelling Salesman Problem (TSP)
Gegeven: een volledige graaf G = (V , E ) en een kostenfunctie
c : E → R+
Gevraagd: een Hamilton circuit in G van minimale kosten
Een algoritme voor het probleem Travelling Salesman Problem (TSP):
voor elke permutatie (v1 , v2 , . . . , vn ) van de punten van G
bepaal de kosten van het Hamilton circuit (vn = v0 , v1 , v2 , . . . , vn ),
d.w.z.
n−1
X
c(vi , vi+1 )
i=0
geef als uitvoer een Hamilton circuit met laagste kosten
Wat is de complexiteit van dit algoritme?
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
24 / 32
”To find the way out of a labyrinth,”William recited, ”there is only one means. At
every new junction, never seen before, the path we have taken will be marked
with three signs. If, because of previous signs on some of the paths of the
junction, you see that the junction has already been visited, you will make only
one mark on the path you have taken. If all the apertures have already been
marked, then you must retrace your steps. But if one or two apertures of the
junction are still without signs, you will choose any one, making two signs on it.
Proceeding through an aperture that bears only one sign, your will make two
more, so that now the aperture bears three. All the parts of the labyrinth must
have been visited if, arriving at a junction, you never take a passage with three
signs, unless none of the other passages is now without signs.”
”How do you know that? Are you an expert on labyrinths?”
”No, I am citing an ancient text I once read.”
”And by observing this rule you get out?”
”Almost never, as far as I know. But we will try it, all the same. And besides,
within the next day or so I will have lenses and time to devote myself more to the
books.”
(The Name of the Rose, Umberto Eco)
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
25 / 32
De uitgang vinden van een labyrint
Wanneer je een gang inloopt:
Markeer de ingang met een kruis ×
Wanneer je een kamer voor de eerste keer inloopt:
Markeer de gang waardoor je binnenkomt met een cirkel ◦
Wanneer je een kamer uitgaat:
1. Neem nooit een gang gemarkeerd met een ×
2. Neem alleen een gang gemarkeerd met een ◦
als er geen andere opties zijn
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
26 / 32
Lemma (1)
Je gaat nooit twee keer door dezelfde gang in dezelfde richting.
Lemma (2)
Als je vast komt te zitten dan:
1
ben je in de beginkamer en
2
zijn alle aanliggende gangen al in beide richtingen doorlopen.
Lemma (3)
Als je vast komt te zitten dan zijn alle gangen die bereikbaar zijn vanuit de
beginkamer al in beide richtingen doorlopen.
Stelling
Als er een weg naar een uitgang is, dan vind je die.
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
27 / 32
Depth-first-search (DFS) vanuit een punt s in een graaf gegeven door
verbindingslijsten Av voor v ∈ V :
Algoritme
zet s in een lijst Q en markeer s als bezocht
herhaal de volgende stappen totdat Q leeg is:
I
I
beschouw het laatste punt v uit lijst Q
als er een punt w in Av is dat nog niet bezocht is
F
F
F
I
zet w achteraan in lijst Q
markeer w als bezocht
zet lijn {v , w } in een lijst van gebruikte lijnen
als alle buren van v al bezocht zijn, verwijder v uit Q
De gebruikte lijnen vormen een “opspannende boom”. Deze boom wordt
de DFS-boom genoemd.
Dezelfde methode kan ook gebruikt worden voor gerichte grafen.
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
28 / 32
Breadth-first-search (BFS) vanuit een punt s in een graaf gegeven door
verbindingslijsten Av voor v ∈ V :
Algoritme
zet s in een lijst Q en markeer s als bezocht
herhaal de volgende stappen totdat Q leeg is:
I
verwijder het eerste punt v uit lijst Q
I
voor elk punt w uit Av dat nog niet bezocht is:
F
F
F
zet w achteraan in lijst Q
markeer w als bezocht
zet lijn {v , w } in een lijst van gebruikte lijnen
De gebruikte lijnen vormen een “opspannende boom”. Deze boom wordt
de BFS-boom genoemd.
Dezelfde methode kan ook gebruikt worden voor gerichte grafen.
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
29 / 32
Voorbeeld
Wat is de complexiteit van het algoritme van Ford-Fulkerson voor het
vinden van een maximum stroom, als alle capaciteiten geheeltallig zijn?
Maximum-stroom algoritme:
1
Begin met f (a) = 0 voor alle a ∈ A
2
Vind een betere stroom met het stroomvermeerderingsalgoritme
3
Herhaal stap (2) totdat het stroomvermeerderingsalgoritme een snede
geeft
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
30 / 32
Stroomvermeerderingsalgoritme
Maak een hulpgraaf Df = (V , Af ) als volgt.
Voor elke pijl (u, v ) van D:
als f (u, v ) < c(u, v ) dan (u, v ) ∈ Af
als f (u, v ) > 0
dan (v , u) ∈ Af
Geval 1: er bestaat een pad P van s naar t in Df . Definieer:
α := min({c(u, v ) − f (u, v ) | (u, v ) ligt op P}
∪ {f (u, v ) | (v , u) ligt op P})
Vermeerder stroom f als volgt tot stroom f 0 :
f 0 (u, v ) := f (u, v ) + α
f 0 (u, v ) := f (u, v ) − α
f 0 (u, v ) := f (u, v )
als (u, v ) op P ligt
als (v , u) op P ligt
anders
Geval 2: er bestaat geen pad van s naar t in Df . Definieer:
U := {u ∈ V | er bestaat een pad van s naar u in Df }
Dan is δ + (U) een s-t snede met cap(δ + (U)) =waarde(f ).
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
31 / 32
Stelling (Dinits en Edmonds-Karp)
Het Ford-Fulkerson algoritme heeft polynomiale looptijd als elke iteratie
een kortste stroomvermeerderende pad gekozen wordt.
µ(D) := lengte kortste s-t-pad in D
α(D) := verzameling van pijlen die op minstens ´e´en kortste s-t-pad
liggen
←−−−
α(D) := {(v , u)|(u, v ) ∈ α(D)}
Lemma
←−−−
Als D = (V , A) en D 0 = (V , A ∪ α(D)) dan is µ(D) = µ(D 0 )
en α(D) = α(D 0 ).
Leo van Iersel (TUE/CWI)
2WO12: Optimalisering in Netwerken
20 februari 2014
32 / 32