Kortste Paden. Algoritmiek

Vergelijkbare documenten
Kortste Paden. Algoritmiek

Minimum Opspannende Bomen. Algoritmiek

Grafen. Indien de uitgraad van ieder punt 1 is, dan bevat de graaf een cykel. Indien de ingraad van ieder punt 1 is, dan bevat de graaf een cykel.

Doorzoeken van grafen. Algoritmiek

Benaderingsalgoritmen

Netwerkstroming. Algoritmiek

TW2020 Optimalisering

Minimum Spanning Tree

TW2020 Optimalisering

2WO12: Optimalisering in Netwerken

Twaalfde college complexiteit. 11 mei Overzicht, MST

Elfde college algoritmiek. 10 mei Algoritme van Dijkstra, Gretige Algoritmen

Tiende college algoritmiek. 14 april Gretige algoritmen

Discrete modellen in de toegepaste wiskunde (WISB136) Uitwerkingen proeftentamen.

Netwerkstroming. Algoritmiek

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

Tiende college algoritmiek. 26 april Gretige algoritmen

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Greedy algoritmes. Algoritmiek

Tiende college algoritmiek. 13/21 april Gretige Algoritmen Algoritme van Dijkstra

Discrete Wiskunde, College 12. Han Hoogeveen, Utrecht University

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

Vierde college complexiteit. 14 februari Beslissingsbomen

Datastructuren en Algoritmen

Grafen en netwerken I Datastructuren en doorzoeken. Algoritmiek

Grafen en BFS. Mark Lekkerkerker. 24 februari 2014

Tiende college algoritmiek. 2 mei Gretige algoritmen, Dijkstra

Vierde college complexiteit. 26 februari Beslissingsbomen en selectie Toernooimethode Adversary argument

Examen Datastructuren en Algoritmen II

Tiende college algoritmiek. 4 mei Gretige Algoritmen Algoritme van Dijkstra

Amorized Analysis en Union-Find Algoritmiek

Tentamen combinatorische optimalisatie Tijd:

Het Eindfeest. Algoritmiek Opgave 6, Voorjaar

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

Oefententamen in2505-i Algoritmiek

Examen Datastructuren en Algoritmen II

Transport, Routing- en Schedulingproblemen. Ir. H.N. Post

Discrete Structuren. Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie

Vierde college complexiteit. 16 februari Beslissingsbomen en selectie

2WO12: Optimalisering in Netwerken

Bomen. 8.8 ongerichte bomen 9.4 gerichte bomen ch 10. binaire bomen. deel 1. Negende college

Elfde college algoritmiek. 21 april Dijkstra en Branch & Bound

Datastructuren Uitwerking jan

TW2020 Optimalisering

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Overzicht. 1. Definities. 2. Basisalgoritme. 3. Label setting methoden. 4. Label correcting methoden. 5. Ondergrenzen. 6.

Universiteit Utrecht Betafaculteit. Examen Discrete Wiskunde II op donderdag 6 juli 2017, uur.

Datastructuren en algoritmen voor CKI

definities recursieve datastructuren college 13 plaatjes soorten Graph = ( V, E ) V vertices, nodes, objecten, knopen, punten

Twaalfde college algoritmiek. 13 mei Branch & Bound Heap, Heapsort & Heapify

Algoritmes in ons dagelijks leven. Leve de Wiskunde! 7 April 2017 Jacobien Carstens

Heuristieken en benaderingsalgoritmen. Algoritmiek

V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen.

TW2020 Optimalisering

Oefententamen in2505-i Algoritmiek

Algoritmiek. 2 februari Introductie

Je hebt twee uur de tijd voor het oplossen van de vraagstukken. µkw uitwerkingen. 12 juni 2015

Bomen. 8.8 ongerichte bomen 9.4 gerichte bomen ch 10. binaire bomen

software constructie recursieve datastructuren college 15 5 stappen plan ontwerpen de software bestaat uiteindelijk uit datatypen functies

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber

Transport, Routing- en Schedulingproblemen. ir. H.N. Post

Universiteit Utrecht Betafaculteit. Examen Discrete Wiskunde op donderdag 13 april 2017, uur.

1.2 Bomen Algemeen 1.2. BOMEN 7

Tentamen in2505-i Algoritmiek

Cover Page. The handle holds various files of this Leiden University dissertation.

1 Complexiteit. of benadering en snel

Elfde college algoritmiek. 16 mei Dijkstra, Gretige algoritmen en Branch & Bound

Examen Datastructuren en Algoritmen II

De statespace van Small World Networks

Uitwerking tentamen Algoritmiek 9 juli :00 13:00

Tentamen Discrete Wiskunde 1 10 april 2012, 14:00 17:00 uur

Tentamen in2505-i Algoritmiek

De volgende opgave gaat over de B-bomen van het college, waar sleutels zowel in de bladeren als ook in de interne knopen opgeslagen worden.

Gödels theorem An Incomplete Guide to Its Use and Abuse, Hoofdstuk 3

Elfde college algoritmiek. 29 april Algoritme van Dijkstra, Branch & Bound

public boolean egualdates() post: returns true i f f there i f the l i s t contains at least two BirthDay objects with the same daynumber

Optimaliseren in Netwerken

Vijfde college complexiteit. 21 februari Selectie Toernooimethode Adversary argument

TW2020 Optimalisering

Zevende college complexiteit. 7 maart Mergesort, Ondergrens sorteren (Quicksort)

Dynamische routering. Routeringsalgoritmes

Achtste college complexiteit. 2 april Polynoomevaluatie Matrixvermenigvuldiging Euler- en Hamiltonkringen

1 In deze opgave wordt vijftien maal telkens drie beweringen gedaan waarvan er één juist is. Kruis de juiste bewering aan. (2pt. per juist antwoord).

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

TW2020 Optimalisering

Begrenzing van het aantal iteraties in het max-flow algoritme

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Radboud Universiteit Nijmegen

8C080 deel BioModeling en bioinformatica

l e x e voor alle e E

TW2020 Optimalisering

Derde college complexiteit. 7 februari Zoeken

(On)Doenlijke problemen

Tiende college algoritmiek. 14 april Dynamisch Programmeren, Gretige Algoritmen, Kortste Pad met BFS

In dit gedeelte worden drie problemen genoemd die kunnen voorkomen in netwerken.

Hoofdstuk 8: Algoritmen en Complexiteit

Algoritmiek. 15 februari Grafen en bomen

Transcriptie:

Kortste Paden

Toepassingen Kevin Bacon getal Six degrees of separation Heeft een netwerk de small-world eigenschap? TomTom / Google Maps 2

Kortste paden Gerichte graaf G=(N,A), en een lengte L(v,w) voor elke pijl (v,w) in A. Knopen x, y in N. Probleem: gegeven G, L, x, y, wat is de afstand van x naar y? Wat is het kortste pad? Afstand: som van pijllengtes 3 d(x,y) x 3 a 2 b 5 4 3 1 c 3 d 1 y

Over de definitie Ongerichte grafen Vervang elke kant door twee pijlen en los probleem op gerichte graaf op Negatieve pijl-lengtes vaak nuttig Sommige algoritmes werken alleen als alle lengtes niet-negatief zijn Bij negatieve lengtes kunnen er negatieve cycles zijn: kortste pad hoeft niet goed gedefinieerd te zijn dan 4

Versies All pairs shortest paths Bereken voor alle paren knopen v, w de kortste afstand van v naar w Single source shortest paths Gegeven knoop v, bereken voor elke knoop w de kortste afstand van v naar w Single target shortest paths Gegeven knoop w, bereken voor elke knoop v de kortste afstand van v naar w Single pair shortest path Gegeven knopen v en w, bereken de kortste afstand van v naar w. 5

Vandaag Single Source Shortest Path Dijkstra s algoritme Bellman-Ford All-Pairs Shortest Path Floyd-Warshall Dinsdag: verder met APSP Johnson s algoritme 6

Single source algoritmen Een startknoop s: wat is de afstand van s naar v, voor elke andere knoop v? Twee algoritmes: Dijkstra: sneller, alleen bij niet-negatieve pijllengtes Bellman-Ford: trager, werkt ook bij negatieve pijl-lengtes Maar niet bij negatieve cycles Beide gebruiken zelfde principe 7

Algemeen principe: relaxatie Elke knoop heeft een waarde D[v]: een schatting van de afstand d(s,v): Initieel: D[s]= 0; voor alle andere v: D[v] = Invariant van het algoritme: D[v] >= d(s,v) Idee: Relaxatie verlaagt de schattingen terwijl we wel de invariant in stand houden 8

Relaxatie We bekijken de mogelijkheid dat het kortste pad van s naar w via v en de pijl (v,w) gaat Relax (v,w) { (v,w) is een pijl in G} If D[w] > D[v] + L(v,w) Then D[w] = D[v]+ L(v,w) Behoudt invariant s v w 9

Algemeen principe: subpad optimaliteit Stel v 0, v 1,..., v k is een kortste pad van v 0 naar v k Dan voor iedere i < j, v i... v j is een kortste pad van v i naar v j v 0 v 1 v i v j v k-1 v k Als dit een kortste pad is, dan kan ik nergens afsnijden 10

DIJKSTRA S ALGORITME 11

Dijkstra s algoritme: De Wolk Bouw langzaam een verzameling knopen u waarvoor we zeker weten dat D[u] = d(s,u) De Wolk W Greedy algoritme voegt in iedere stap knoop toe aan De Wolk Maar welke knoop? s W 12

Initialisatie D[s] = 0; W = {s}; For alle knopen w do D[w] = For alle pijlen (s,u) do D[u] = L(s,u); 13

Greedy Loop While W N do Relax(v,u) Kies een element v uit N-W waarvoor D[v] minimaal is t.o.v. de andere elementen uit N-W Stop v in W For alle pijlen (v,u) met u in N-W do If D[u] > D[v] + L(v,u) then D[u] = D[v] + L(v,u) We gaan bewijzen dat voor deze v D[v] = d(s,v) 14

Voorbeeld 15

Waarom werkt Dijkstra? Invarianten 1. Voor elke knoop u: D[u] d(s,u) 2. Voor elke knoop u in W: D[u] = d(s,u). 16

Invarianten zijn initieel geldig 1. Voor elke knoop u: D[u] d(s,u) 2. Voor elke knoop u in W: D[u] = d(s,u). D[s] = 0; W = {s}; For alle knopen w do D[w] = For alle pijlen (s,u) do D[u] = L(s,u); 17

Invarianten blijven geldig 1. Voor elke knoop u: D[u] d(s,u) Relaxatie werkt 2. Voor elke knoop u in W: D[u] = d(s,u) Voor elke knoop u die al in W zat: D[u] wordt nooit meer gewijzigd, dus D[u] = d(s,u) Dus te bewijzen dat D[v] = d(s,v) voor knoop v gekozen in algoritme 18

De Wolk werkt (1) Te bewijzen dat D[v] = d(s,v) voor knoop v gekozen in algoritme Uit invariant weten we dat D[v] d(s,v) Stel dat D[v] > d(s,v) Wat hebben we fout gedaan? Hoe loopt dat kortste pad dus echt? 19

De Wolk werkt (2) Bekijk kortste pad P van s naar v P gaat van knoop in wolk (s) naar knoop buiten de wolk (v) Bekijk eerste knoop w op P buiten de wolk Mogelijk: w = v Bewering: D[w] < D[v] 20 En dus hadden we w moeten kiezen in het algoritme s w W v

De Wolk werkt (3): D[w] < D[v] u is voorganger van w op P Dan D[w] D[u] + L(u,w) = d(s,u) + L(u,w) u zit al in wolk W = d(s,w) sub-pad optimaliteit d(s,v) Relax(u,w) al gedaan w ligt onderweg naar v, sub-pad optimaliteit en pijl-lengtes niet-negatief 21 s u w W v

De Wolk werkt (4) Bewering was: D[w] < D[v] Net bewezen: D[w] d(s,v) Aanname was: D[v] > d(s,v) Dus D[w] < D[v] Daarom hadden we w moeten kiezen ipv v Contradictie! Dus D[v] = d(s,v) 22

Dijkstra: Correctheid Invarianten zijn correct 1. Voor elke knoop u: D[u] d(s,u) 2. Voor elke knoop u in W: D[u] = d(s,u). Algoritme is klaar als N=W Dus voor alle u: D[u] = d(s,u) While W N do 23

Greedy Loop While W N do Relax(v,w) Kies een element v uit N-W waarvoor D[v] minimaal is t.o.v. de andere elementen uit N-W Stop v in W For alle pijlen (v,u) met u in N-W do If D[u] > D[v] + L(v,u) then D[u] = D[v] + L(v,u) 24

Implementatie Simpel, behalve hoe we v kiezen en D updaten Welke datastructuur? Priority queue! Extract-min: 1 keer per knoop: n keer Update: hooguit 1 keer per pijl (bij relaxatie): a keer 25

Verschillende priority queues Binaire zoekboom Goede keuze: min-heap Minimum zoeken en update: O(log n) per keer O((n+a) log n) tijd totaal Fibonnaci (of hollow) heap O(a + n log n) tijd 26

Inzichten (1): hoe hangen schattingen af van de wolk? uitgaande buren x van W alleen schatting van d(s,x) bekend Wolk D[u]=d(s,u) rest van G niets over bekend 27

Inzichten (1): hoe hangen schattingen af van de wolk? Voor iedere u in W: D[u] = d(s,u), en het kortste pad dat Dijkstra s algoritme vindt gebruikt alleen knopen die in W liggen op het moment dat u werd toegevoegd Voor elke knoop u in N-W: D[u] is de lengte van het kortste pad P(W,u) van s naar u dat alleen s, u, en knopen in W gebruikt Gevolg: knopen u niet in W en zonder uitgaande pijl vanuit W hebben D[u] = 28

Inzichten (2): waarom alleen While W N do Relax(v,w) updates in N-W? Kies een element v uit N-W waarvoor D[v] minimaal is t.o.v. de andere elementen uit N-W Stop v in W For alle pijlen (v,u) met u in N-W do If D[u] > D[v] + L(v,u) then D[u] = D[v] + L(v,u) 29

Inzichten (2): waarom alleen While W N do Relax(v,w) updates in N-W? Kies een element v uit N-W waarvoor D[v] minimaal is t.o.v. de andere elementen uit N-W Stop v in W For alle pijlen (v,u) do If D[u] > D[v] + L(v,u) then D[u] = D[v] + L(v,u) 30

Inzichten (3): Prim-Jarnik? Prim-Jarnik Ook een wolk : de deelboom B die we telkens uitbouwen Voeg kant toe die B verlaat met minimum lengte Kant naar knoop dichtste bij B Dijkstra Wolk W Voeg knoop v toe buiten W met kleinste waarde van D Knoop die geschat dichtste bij s ligt 31

Inzichten (3): Prim-Jarnik? Prim-Jarnik doet net iets anders Prim-Jarnik zou kortste pad van lengte 10 van s naar t ontdekken 5 v 5 s 8 t 32

Inzichten (4): negatieve lengtes? Waarom werkt Dijkstra niet? Volgorde hoe we aan wolk toevoegen is s, t, x, v We moeten alle afstanden weer opnieuw berekenen nadat we v zien Ihb D[t], D[x] Dat kost te veel tijd 5 v -20 s 1 t 2 x 33

Inzichten (4): negatieve lengtes? Wat nou als we gewoon een grote constante optellen bij alle lengtes? Lengte van het pad (onder L) is iets anders dan aantal pijlen op pad! -1 v -1 1 v 1 s -1 t s 1 t 34

Negatieve cycles nog steeds niet toegestaan! NEGATIEVE LENGTES: BELLMAN-FORD 35

Bellman-Ford: Algoritme Initieel: D[s] = 0; voor alle andere u: D[u] = Herhaal n-1 keer: Voor alle pijlen (v,w): Relax(v,w) Als er dan nog een pijl (v,w) is waarvoor Relax mogelijk is, dwz D[v]+L(v,w) > D[w], dan is er een negatieve cycle bereikbaar uit s Tijd: O(na) 36

Voorbeeld 37

Bellman-Ford: Correctheid (1) Stelling: Als er een pad van s naar u is met k pijlen en lengte x, dan is na k iteraties van de hoofdloop van het algoritme D[u] <= x. Bewijs: met inductie naar k Initieel waar Een kortste pad s = v 0 v k = u met k pijlen is een kortste pad s = v 0.. v k-1 met k-1 pijlen plus pijl (v k-1,v k ) Sub-pad optimaliteit 38

Bellman-Ford: Correctheid (2) Stelling: Als er een pad van s naar u is met k pijlen en lengte x, dan is na k iteraties van de hoofdloop van het algoritme D[u] <= x. Uit stelling volgt correctheid: Negatieve cycle bereikbaar uit s: relaxaties blijven altijd mogelijk Geen negatieve cycle: elk kortste pad heeft hooguit n-1 pijlen 39

Single source algoritmen Een startknoop s: wat is de afstand van s naar v, voor elke andere knoop v? Twee algoritmes: Dijkstra: O(a + n log n), alleen bij nietnegatieve pijl-lengtes Bellman-Ford: O(na), werkt ook bij negatieve pijl-lengtes Maar niet bij negatieve cycles 40

REFLECTIE OP KORTSTE PADEN (1) 41

Reflectie (1): praktijk Kijk eens naar routebepaling op wegennetwerk Europa O(n+a) is al te veel Technieken: Bidirectional search A* of goal-oriented search Gebruik van hierarchie en preprocessing 42

Reflectie (1): praktijk Highway node routing Univ. Karlsruhe Gelaagde structuur van netwerken: optimale route gebruikt lagen 1, 2, 3, r-1, r, r-1, 3, 2, 1 Partitioning using natural cuts Microsoft research Gebruikt dat er natuurlijke snedes in een wegenwerk zijn en partitioneert netwerk daarmee Snedes worden met stromingstechnieken gevonden 43