De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

1. Snelweg hiërarchieën voor route planning 2. Opmerkingen over het practicum 3. Onderzoek naar Algoritmiek in Utrecht 1-4-2015Bart Jansen1.

Verwante presentaties


Presentatie over: "1. Snelweg hiërarchieën voor route planning 2. Opmerkingen over het practicum 3. Onderzoek naar Algoritmiek in Utrecht 1-4-2015Bart Jansen1."— Transcript van de presentatie:

1 1. Snelweg hiërarchieën voor route planning 2. Opmerkingen over het practicum 3. Onderzoek naar Algoritmiek in Utrecht 1-4-2015Bart Jansen1

2 Snelweg hiërarchieën versnellen kortste-pad queries Bart Jansen

3  Zoek kortste pad van a naar b in een gewogen, gerichte graaf (“single pair”)  Geen: ◦ Single source shortest paths ◦ All-pairs shortest paths ◦ Negatieve gewichten 1-4-2015Bart Jansen3

4  Vooraanstaande Nederlanse informaticus  11 mei 1930 – 6 augustus 2002  Bedacht een algoritme voor single-source shortest paths in 1959  Algemeen bekend als “Dijkstra’s Algoritme” 1-4-2015Bart Jansen4

5  Iteratief algoritme  Werkt alleen als afstanden niet-negatief zijn!  Voor iedere knoop v in de graaf wordt bijgehouden: ◦ de status: voorlopig of definitief ◦ d[v]: bovengrens op de afstand source  v  Algoritme werkt door in de juiste volgorde knopen te bezoeken  Bij bezoeken van knoop v: ◦ Knoop v wordt definitief ◦ Alle kanten vanuit v worden gerelaxeerd 1-4-2015Bart Jansen5

6  Dijkstra(source s)  Initialisatie: ◦ d[v] = ∞, voor alle v ≠ s ◦ d[s] = 0 ◦ Alle knopen zijn voorlopig  While (er is een voorlopige knoop) ◦ Kies voorlopige knoop v met laagste d[v] waarde ◦ Maak v definitief ◦ Relaxeer uitgaande kanten (v,u)  d[u]  min (d[u], d[v] + w[v,u]) 1-4-2015Bart Jansen6 DeleteMin DecreaseKey

7  Kortste pad van s naar t 7 s s 3 3 t t 2 2 6 6 7 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6

8 8 s s 3 3 t t 2 2 6 6 7 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6        0 distance label

9 9 s s 3 3 t t 2 2 6 6 7 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6        0 distance label delmin

10 s s 10 3 3 t t 2 2 6 6 7 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 distance label decrease key  X   X X

11 11 s 3 3 t t 2 2 6 6 7 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0 distance label  X   X X delmin

12 12 s 3 3 t t 2 6 6 7 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0  X   X X

13 13 s 3 3 t t 2 6 6 7 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0  X   X X decrease key X 33

14 14 s 3 3 t t 2 6 6 7 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0  X   X X X 33 delmin

15 15 s 3 3 t t 2 6 7 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9    14  0  X   X X X 33 44 X X 32

16 16 s 3 3 t t 2 6 7 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0  X   X X 44 X delmin  X 33 X 32

17 17 s 3 3 t t 2 6 7 4 4 5 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0  X   X X 44 X 35 X 59 X 24  X 33 X 32

18 18 s 3 3 t t 2 6 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0  X   X X 44 X 35 X 59 X delmin  X 33 X 32

19 19 s 3 t t 2 6 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0  X   X X 44 X 35 X 59 XX 51 X 34  X 33 X 32

20 20 s 3 t t 2 6 7 4 4 5 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0  X   X X 44 X 35 X 59 XX 51 X 34 delmin  X 33 X 32 24

21 21 s 3 t t 2 6 7 4 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0  X   X X 44 X 35 X 59 XX 51 X 34 24 X 50 X 45  X 33 X 32

22 22 s 3 t t 2 6 7 4 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0  X   X X 44 X 35 X 59 XX 51 X 34 24 X 50 X 45 delmin  X 33 X 32

23 23 s 3 t t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0  X   X X 44 X 35 X 59 XX 51 X 34 24 X 50 X 45  X 33 X 32

24 24 s 3 t t 2 6 7 4 5 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0  X   X X 44 X 35 X 59 XX 51 X 34 X 50 X 45 delmin  X 33 X 32 24

25 25 s 3 t 2 6 7 4 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0  X   X X 44 X 35 X 59 XX 51 X 34 X 50 X 45  X 33 X 32

26 26 s s 3 3 t t 2 2 6 6 7 7 4 4 5 5 24 18 2 9 14 15 5 30 20 44 16 11 6 19 6 15 9   14  0  X   X X 44 X 35 X 59 XX 51 X 34 X 50 X 45  X 33 X 32

27  Invariant: als v definitief wordt, is d[v] de lengte van een kortste s-v pad ◦ Correctheidsbewijs in het boek  Voor single-source kortste paden moeten alle knopen worden ontdekt  Maar bij een single pair s-t query: ◦ Algoritme kan stoppen als t definitief wordt gemaakt! 1-4-2015Bart Jansen27

28  Knopen worden definitief in volgorde van oplopende afstand  Algoritme maakt een wolk van definitieve knopen rondom het startpunt  Terminatie als de wolk het eindpunt raakt  Tijd die wordt gebruikt afhankelijk van hoeveelheid knopen waar naar gerelaxeerd wordt (“ontdekte knopen”) 1-4-2015Bart Jansen28

29  Zoek in 2 richtingen ◦ Voorwaarts vanaf s ◦ Achterwaarts vanaf t  Stop met zoeken zodra 1 knoop van beide kanten definitief is  Oppervlakte van twee wolken met straal (d/2) kleiner dan een wolk met straal d  Ongeveer 2x zo snel 1-4-2015Bart Jansen29 st st

30 1-4-2015Bart Jansen30 s t Achterwaarts Voorwaarts

31 Dijkstra’s algoritme doet single-source kortste paden, dus ook single-pair 1-4-2015Bart Jansen31

32 Bart Jansen32 Slechts 3 miljoen van de in totaal 23 miljoen kanten

33  Bij route planning worden meerdere queries gedaan op dezelfde graaf  Gebruik preprocessing om toekomstige queries te versnellen  Bijvoorbeeld: Algoritme voor all-pairs kortste paden ◦ Na preprocessen: optimale afstand in O(1) tijd bekend ◦ Informatie voor alle paren kost  (n 2 ) geheugen ◦ Niet haalbaar op mobiele apparaten 1-4-2015Bart Jansen33

34  Snelheidswinst voor queries  Geheugengebruik moet praktisch blijven (linear)  Exacte berekening van kortste paden, geen benaderingen  Maak gebruik van de karakteristieken van wegennetwerken ◦ Hierarchische structuur; sommige wegen zijn belangrijk, anderen niet ◦ Wegennetwerken zijn ijle grafen: m is Θ(n) 1-4-2015Bart Jansen34

35 1-4-2015Bart Jansen35 Korte afstand Geldermalsen naar oprit snelweg Klein netwerk Via snelweg van Geldermalsen naar de Uithof Korte afstand Afrit bij Uithof naar Leuvenlaan

36  Uitbreidbaar naar meerdere typen wegen ◦ Maak wegen belangrijker naarmate ze dichter bij s of t lopen ◦ Bij verwerken van knopen die ver weg liggen van s en t: relaxeer geen onbelangrijke wegen  Kwaliteit van de gevonden routes hangt af van de wegen classificatie (handmatig bijstellen!)  Dit is gebruikt in route planners voor auto’s 1-4-2015Bart Jansen36

37 1-4-2015Bart Jansen37  Dominik Schultes & Peter Sanders, University of Karlsruhe (2005)  Technieken ervan zijn gebruikt voor het winnen van de 9 e DIMACS implementatie challenge (2006)

38  Slim preprocessen om een classificatie van wegen te verkrijgen  Zoekopdrachten worden op dezelfde manier uitgevoerd als door de heuristiek ◦ Minder belangrijke wegen zijn niet relevant als je ver weg bent van je start en eind ◦ Zoeken met een bidirectionele versie van Dijkstra’s algoritme  De zorgvuldige classificatie verzekert optimaliteit 1-4-2015Bart Jansen38

39  Snelweg hiërarchie voor graaf G bestaat uit niveaus N 0, N 1,.., N L voor vantevoren gekozen L  Elk niveau N i heeft een snelweg netwerk S i en een kern netwerk K i  Inductieve definitie: ◦ S 0 = K 0 = G ◦ Snelweg netwerk S i+1 afgeleid van kern K i ◦ Kern K i afgeleid van snelweg netwerk S i  Transformatie van kern i naar snelweg netwerk i+1: verwijder kanten  Transformatie van snelweg netwerk i naar kern i: verwijder knopen (toevoegen shortcuts) 1-4-2015Bart Jansen39

40 Kern 2Snelweg 2Kern 1Snelweg 1Snelweg 0 = Kern 0 1-4-2015Bart Jansen40 Verwijder knopen Verwijder kanten Verwijder knopen Verwijder kanten

41  Afgeleid van kern K i  Kies een buurt-straal r i (u) voor iedere knoop u op niveau i ◦ Vooruit-buurt van knoop u: alle knopen met afstand ≤ r l (u) vanaf u ◦ Achteruit-buurt van knoop u: alle knopen met afstand ≤ r l (u) naar u  Een kant (u,v) uit K i zit alleen in het snelweg netwerk als er een kortste pad is tussen knopen in K i zodat: ◦ v niet in de vooruit-buurt van s zit ◦ u niet in de achteruit-buurt van t zit  Knopen zonder aangrenzende kanten worden verwijderd  In de praktijk: kies een buurt-straal zodat de buurten een bepaalde grootte krijgen 1-4-2015Bart Jansen41

42  Een kant (u,v) uit K i zit alleen in het snelweg netwerk als er een kortste pad is tussen knopen in K i zodat: ◦ v niet in de vooruit-buurt van s zit ◦ u niet in de achteruit-buurt van t zit 1-4-2015Bart Jansen42

43  Een kant (u,v) uit K i zit alleen in het snelweg netwerk als er een kortste pad is tussen knopen in K i zodat: ◦ v niet in de vooruit-buurt van s zit ◦ u niet in de achteruit-buurt van t zit  Buurt: de 4 dichtsbijzijnde knopen 1-4-2015Bart Jansen43

44  Een kant (u,v) uit K i zit alleen in het snelweg netwerk als er een kortste pad is tussen knopen in K i zodat: ◦ v niet in de vooruit-buurt van s zit ◦ u niet in de achteruit-buurt van t zit  Bekijk kant (a,b)  Alleen nodig voor paden vanaf a  Eindpunt altijd in vooruit-buurt s  Geen snelweg kant  Soortgelijk voor (b,a) 1-4-2015Bart Jansen44

45  Een kant (u,v) uit K i zit alleen in het snelweg netwerk als er een kortste pad is tussen knopen in K i zodat: ◦ v niet in de vooruit-buurt van s zit ◦ u niet in de achteruit-buurt van t zit  Bekijk kant (e,f)  Nodig op kortste pad van b naar g  Knoop f niet in vooruit-buurt b  Knoop e niet in achteruit-buurt g  Dus snelweg kant! 1-4-2015Bart Jansen45

46  Een kant (u,v) uit K i zit alleen in het snelweg netwerk als er een kortste pad is tussen knopen in K i zodat: ◦ v niet in de vooruit-buurt van s zit ◦ u niet in de achteruit-buurt van t zit 1-4-2015Bart Jansen46

47  Voor iedere knoop v: ◦ Bepaal alle kortste paden vanuit v met Dijkstra ◦ Stop wanneer bepaalde condities gelden ◦ Evalueer gevonden kortste paden om snelweg kanten te vinden  Stopcriterium is essentieel voor snelheid! ◦ Preprocessen voor heel West-Europa kan in 16 minuten  Intuitie: ◦ “delegeer” overgebleven werk aan latere opdrachten 1-4-2015Bart Jansen47

48 Kern 2Snelweg 2Kern 1Snelweg 1Snelweg 0 = Kern 0Kern 2Snelweg 2Kern 1Snelweg 1Snelweg 0 = Kern 0  Hierarchie met niveaus N 0,.., N L  Ieder niveau i bevat 2 grafen: snelweg netwerk S i en kern K i  Gezien: stap van kern K i-1 naar snelweg S i  Nu: snelweg S i naar kern K i ◦ (Verwijderen van knopen) 1-4-2015Bart Jansen48

49  Afgeleid van snelweg netwerk S i ◦ Bepaal een verzameling O overbodige knopen ◦ Alle knopen uit S i die niet overbodig zijn, komen in de kern K i ◦ Alle kanten uit S i tussen knopen die niet overbodig zijn, worden overgenomen  En we voegen extra kanten als shortcuts toe ◦ Als er een u-v pad is van overbodige knopen:  voeg directe kant (u,v) toe  w(u,v) wordt lengte van het oude u-v pad 1-4-2015Bart Jansen49

50  Als er een u-v pad bestaat dat (op u en v na) helemaal bestaat uit overbodige knopen, voegen we een directe kant toe van u naar v  Kies O = {1, 2} 1-4-2015Bart Jansen50 1 2 1 2 4 3 2 4 7

51  Als er een u-v pad bestaat dat (op u en v na) helemaal bestaat uit overbodige knopen, voegen we een directe kant toe van u naar v  Kies O = {1, 2} 1-4-2015Bart Jansen51 1 2 1 2 4 3 2 4 7 13 11 12

52  Als er een u-v pad bestaat dat (op u en v na) helemaal bestaat uit overbodige knopen, voegen we een directe kant toe van u naar v  Kies O = {1, 2} 1-4-2015Bart Jansen52 13 11 12 1 2

53  Kortste paden tussen knopen in de kern blijven behouden  Herinner dat S 0 = K 0 = G ◦ Het 0e niveau bevat alle knopen  De voorwaartse en achterwaartste zoekopdrachten starten in niveau 0  Query algoritme zorgt voor correctheid voor hogere niveaus  Knoop u is overbodig als: ◦ # shortcuts ≤ c (graad in (u) + graad uit (u)) ◦ Zorgt ervoor dat de graaf ijl blijft  Simpel iteratief algoritme voor vinden overbodige knopen 1-4-2015Bart Jansen53

54  Afwisselen tussen reduceren van kanten, en reduceren van knopen  In ieder niveau dalen n en m ruwweg met een constante factor ◦ Geobserveerd tijdens experimenten  Constructie kan efficient gedaan worden  Geheugengebruik is beperkt tot O(L) extra informatie per knoop of kant ◦ Buurt grootte, niveaus waarin het object voorkomt, of de knoop overbodig is 1-4-2015Bart Jansen54

55 Hoe helpt de hiërarchie om zoekopdrachten te versnellen? 1-4-2015Bart Jansen55

56  Beschouw een s-t query  De query start in niveau 0  Bezoek alle knopen in de voortwaarts buurt van s, en achterwaarts buurt van t  Kijk naar een kant (u,v) zodat v buiten de voorwaarts- buurt van s ligt, en u buiten de achterwaarts-buurt van t ◦ Als (u,v) geen snelweg kant is, dan ligt hij niet op een kortste s-t pad (via definitie van de snelweg) ◦ Dus buiten de buurten van s en t zijn alleen snelweg kanten relevant ◦ Andere kanten hoeven niet te worden gerelaxeerd 1-4-2015Bart Jansen56

57  Beschouw de eerste knoop u die definitief wordt, en die buiten de buurt van s ligt  Stel dat er een kortste s-t pad P is, dat u bevat ◦ Dus P =  Het subpad moet een kortste pad zijn, en moet (buiten de buurt van t) alleen snelweg- kanten bevatten ◦ Pas hetzelfde idee opnieuw toe, en zoek verder naar een u-t pad in K 1 ◦ Gebruik de buurt van u en het snelweg netwerk om dit zoeken te versnellen 1-4-2015Bart Jansen57

58  In de praktijk: meerdere gelijktijdige zoekfronten, op verschillende niveaus  Ieder zoekfront zit als entry in de priority queue van het Dijkstra algoritme ◦ Een key voor knoop u bevat:  een afstands label d(s,u) (zoals normaal)  het niveau van dat zoekfront  het gat van het zoekfront: de afstand tot de rand van de buurt  Query algoritme gebruikt classificatie van kanten voor versnelling, en classificatie van overbodige knopen  Details zijn complex 1-4-2015Bart Jansen58

59  In normaal bi-directioneel zoeken, stoppen we zodra 1 knoop van beide kanten definitief is  Dit werkt niet meer in een snelweg hiërarchie ◦ Zoekfronten kunnen in verschillende niveaus bezig zijn, en elkaar missen  Simpele oplossing ◦ Zodra een knoop van 2 kanten definitief is, kennen we een (mogelijk niet optimaal) s-t pad ◦ Stop met het behandelen van knopen als die een afstand hebben die groter is dan de lengte van het bekende pad  Dit is correct omdat de afstands-waarden monotoon stijgen  Blijkt erg goed te werken; minder dan 1% van de zoekruimte bestaat uit knopen die zijn behandeld nadat de 2 zoekfronten elkaar hebben gevonden 1-4-2015Bart Jansen59

60  Voorbeeld van een query nabij Karlsruhe  Verschillende niveaus in verschillende kleuren  http://algo2.iti.kit.edu/schultes/hwy/demo/ http://algo2.iti.kit.edu/schultes/hwy/demo/ 1-4-2015Bart Jansen60

61 1-4-2015Bart Jansen61

62 1-4-2015Bart Jansen62

63 1-4-2015Bart Jansen63

64 1-4-2015Bart Jansen64

65 1-4-2015Bart Jansen65

66 1-4-2015Bart Jansen66

67 1-4-2015Bart Jansen67

68  Netwerk van West-Europa (n = 18 * 10 6, m = 23 * 10 6 )  Preprocessen in 16 minuten  27 bytes geheugen per knoop ◦ Totaal 486 MB geheugen gebruik  Query tijden zijn gemeten voor random gekozen paren knopen ◦ Gemiddelde versnelling tov. Dijkstra: factor 4002  Enkele milliseconden per query 1-4-2015Bart Jansen68

69 Voordelen Nadelen  Snel preprocessen  Weinig extra geheugen nodig  Goede versnelling (4002 x)  Kan worden gecombineerd met doel-gericht zoeken (8320 x)  Simpel concept  Statische hiërarchie die niet inspeelt op wijzigingen (aanpassen van de graaf of gewichtsfunctie)  Er zijn snellere methoden (versnelling>1 000 000 x) 1-4-2015Bart Jansen69

70  Snelweg hiërarchieën reduceren de graaf recursief ◦ Knoop reductie (shortcuts) ◦ Kant reductie (snelweg kanten)  Query gebaseerd op bidirectionele versie van Dijkstra’s algoritme  Kan worden geimplementeerd met beperkt geheugengebruik  Orden van grootte sneller dan Dijkstra  SOFSEM 2009: theoretische analyse van shortcuts 1-4-2015Bart Jansen70

71 Mars vs. Aarde

72  In de input krijg je een lijst van alle kanten in de graaf  Stel je doet een Breadth-first search ◦ for each v in Adj[u]: … ◦ kost degree(v) tijd met een adjacency-list ◦ Totale BFS looptijd O(|V| + |E|)  Maar vergelijk: ◦ for (Road r in roads) if (r.sideA == v || r.sideB == v) … ◦ kost O(|E|) tijd! ◦ Totale BFS looptijd O(|V| * |E|) 1-4-2015Bart Jansen72

73  Wat niet werkt:  while (er is een s-t pad in de graaf) ◦ Zoek een s-t pad met breadth-first search, blaas de goedkoopste kant op het pad op 1-4-2015Bart Jansen73

74 1-4-2015 Bart Jansen 74

75  Planning  Roosters maken  Graaf algoritmiek ◦ Exacte oplossingen voor NP-complete problemen  … dus niet in polynomiale tijd 1-4-2015Bart Jansen75

76 1-4-2015Bart Jansen76  Hans Bodlaender, Johan van Rooij en Marcel van Kooten-Niekerk  NP-compleet ◦ O(1.0222 n ) algoritme  SOFSEM conferentie ◦ Januari 2011, Slowakije

77  Los probleem bv. in O(2 k n) tijd op  n is de grootte van de input, k meet een specifiek aspect van de input  Vertex Cover ◦ Heeft graaf G een Vertex Cover van grootte k? ◦ Oplosbaar in O(2 k n) tijd 1-4-2015Bart Jansen77

78  Stel we hebben een ingewikkeld geformuleerde ja/nee vraag x  Het berekenen van het antwoord is NP- compleet  Voor de beschrijving van x kan een grote graaf nodig zijn (veel bits in de beschrijving)  In hoeverre is het mogelijk om vraag x in polynomiale tijd te herformuleren, zonder het antwoord te veranderen? ◦ We kunnen het antwoord niet in polynomiale tijd berekenen 1-4-2015Bart Jansen78

79  Heeft graaf G een vertex cover van grootte k? ◦ Om te vormen in equivalente vraag:  Heeft graaf G’ een vertex cover van grootte k’? ◦ Aantal knopen in G’ hangt alleen af van k, niet van G  Voor andere problemen kunnen we juist bewijzen zodat zoiets niet bestaat 1-4-2015Bart Jansen79

80  Officieel: onderdeel van masteropleiding  7.5 of 15 ECTS (1 of 2 perioden)  Experimentation project over algoritmiek?  Achtergrond ◦ Sommige NP-complete graafproblemen zijn sneller op te lossen als de “complexiteit” van de graaf laag is ◦ Verschillende manieren om complexiteit te meten; leiden tot verschillende snelheidswinsten ◦ Opdracht: implementeer algoritmen om de complexiteit van bestaande grafen te bepalen, om een schatting te kunnen maken van de te boeken snelheidswinst ◦ Meer info bij Bart 1-4-2015Bart Jansen80


Download ppt "1. Snelweg hiërarchieën voor route planning 2. Opmerkingen over het practicum 3. Onderzoek naar Algoritmiek in Utrecht 1-4-2015Bart Jansen1."

Verwante presentaties


Ads door Google