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 Bart 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 Bart 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” Bart 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 Bart 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]) Bart Jansen6 DeleteMin DecreaseKey

7  Kortste pad van s naar t 7 s s 3 3 t t

8 8 s s 3 3 t t        0 distance label

9 9 s s 3 3 t t        0 distance label delmin

10 s s t t    14  0 distance label decrease key  X   X X

11 11 s 3 3 t t    14  0 distance label  X   X X delmin

12 12 s 3 3 t t    14  0  X   X X

13 13 s 3 3 t t    14  0  X   X X decrease key X 33

14 14 s 3 3 t t    14  0  X   X X X 33 delmin

15 15 s 3 3 t t    14  0  X   X X X X X 32

16 16 s 3 3 t t   14  0  X   X X 44 X delmin  X 33 X 32

17 17 s 3 3 t t   14  0  X   X X 44 X 35 X 59 X 24  X 33 X 32

18 18 s 3 3 t t   14  0  X   X X 44 X 35 X 59 X delmin  X 33 X 32

19 19 s 3 t t   14  0  X   X X 44 X 35 X 59 XX 51 X 34  X 33 X 32

20 20 s 3 t t   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   14  0  X   X X 44 X 35 X 59 XX 51 X X 50 X 45  X 33 X 32

22 22 s 3 t t   14  0  X   X X 44 X 35 X 59 XX 51 X X 50 X 45 delmin  X 33 X 32

23 23 s 3 t t   14  0  X   X X 44 X 35 X 59 XX 51 X X 50 X 45  X 33 X 32

24 24 s 3 t t   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   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   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! Bart 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”) Bart 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 Bart Jansen29 st st

30 Bart Jansen30 s t Achterwaarts Voorwaarts

31 Dijkstra’s algoritme doet single-source kortste paden, dus ook single-pair Bart 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 Bart 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) Bart Jansen34

35 Bart 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 Bart Jansen36

37 Bart 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 Bart 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) Bart Jansen39

40 Kern 2Snelweg 2Kern 1Snelweg 1Snelweg 0 = Kern Bart 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 Bart 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 Bart 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 Bart 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) Bart 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! Bart 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 Bart 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 Bart 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) Bart 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 Bart 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} Bart Jansen

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} Bart Jansen

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} Bart Jansen

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 Bart 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 Bart Jansen54

55 Hoe helpt de hiërarchie om zoekopdrachten te versnellen? Bart 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 Bart 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 Bart 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 Bart 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 Bart Jansen59

60  Voorbeeld van een query nabij Karlsruhe  Verschillende niveaus in verschillende kleuren  Bart Jansen60

61 Bart Jansen61

62 Bart Jansen62

63 Bart Jansen63

64 Bart Jansen64

65 Bart Jansen65

66 Bart Jansen66

67 Bart 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 Bart 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> x) Bart 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 Bart 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|) Bart 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 Bart Jansen73

74 Bart Jansen 74

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

76 Bart Jansen76  Hans Bodlaender, Johan van Rooij en Marcel van Kooten-Niekerk  NP-compleet ◦ O( 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 Bart 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 Bart 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 Bart 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 Bart 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