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
© Copyright 2024 ExpyDoc