1 / 70

Route planning in wegen netwerken

Route planning in wegen netwerken. Snelweg hiërarchieën versnellen kortste-pad queries. Bart Jansen. Routeplanning. 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.

gilon
Download Presentation

Route planning in wegen netwerken

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Route planning in wegen netwerken Snelweg hiërarchieën versnellen kortste-pad queries Bart Jansen

  2. Routeplanning • 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 Jansen

  3. EdgserWiebeDijkstra • VooraanstaandeNederlanseinformaticus • 11 mei 1930 – 6 augustus 2002 • Bedachteenalgoritmevoor single-source shortest paths in 1959 • Algemeenbekendals “Dijkstra’sAlgoritme” Bart Jansen

  4. Dijkstra’salgoritme • Iteratiefalgoritme • Werktalleenalsafstandenniet-negatiefzijn! • Vooriedereknoop v in de graafwordtbijgehouden: • de status: voorlopigof definitief • d[v]: bovengrens op de afstand source  v • Algoritmewerkt door in de juistevolgordeknopentebezoeken • Bijbezoeken van knoop v: • Knoop v wordtdefinitief • Allekantenvanuit v wordengerelaxeerd Bart Jansen

  5. Dijkstra’s algoritme • 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]) DeleteMin DecreaseKey Bart Jansen

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

  7. Dijkstra's Shortest Path Algorithm   2 24 3 0 9 s 18  14 6 2 6  4  19 30 11 5 15 5 6 16 20 t 7 44  distance label 

  8. Dijkstra's Shortest Path Algorithm delmin   2 24 3 0 9 s 18  14 6 2 6  4  19 30 11 5 15 5 6 16 20 t 7 44  distance label 

  9. Dijkstra's Shortest Path Algorithm decrease key   9 X 2 24 3 0 9 s 18  14 X 14 6 2 6  4  19 30 11 5 15 5 6 16 20 t 7 44  distance label  15 X

  10. Dijkstra's Shortest Path Algorithm delmin   9 X 2 24 3 0 9 s 18  14 X 14 6 2 6  4  19 30 11 5 15 5 6 16 20 t 7 44  distance label  15 X

  11. Dijkstra's Shortest Path Algorithm   9 X 2 24 3 0 9 s 18  14 X 14 6 2 6  4  19 30 11 5 15 5 6 16 20 t 7 44   15 X

  12. Dijkstra's Shortest Path Algorithm decrease key  33 X  9 X 2 24 3 0 9 s 18  14 X 14 6 2 6  4  19 30 11 5 15 5 6 16 20 t 7 44   15 X

  13. Dijkstra's Shortest Path Algorithm  33 X  9 X 2 24 3 0 9 delmin s 18  14 X 14 6 2 6  4  19 30 11 5 15 5 6 16 20 t 7 44   15 X

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

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

  16. Dijkstra's Shortest Path Algorithm 32  33 X X  9 X 2 24 3 0 9 s 18  14 X 14 6 2 6  35 44 X 4  X 19 30 11 5 15 5 6 16 20 t 7 44  59 X  15 X

  17. Dijkstra's Shortest Path Algorithm delmin 32  33 X X  9 X 2 24 3 0 9 s 18  14 X 14 6 2 6  35 44 X 4  X 19 30 11 5 15 5 6 16 20 t 7 44  59 X  15 X

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

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

  20. Dijkstra's Shortest Path Algorithm 32  33 X X  9 X 2 24 3 0 9 s 18  14 X 14 6 2 6  45 35 34 X 44 X X 4  X 19 30 11 5 15 5 6 16 20 t 7 44  50 51 59 X X X  15 X

  21. Dijkstra's Shortest Path Algorithm 32  33 X X  9 X 2 24 3 0 9 s 18  14 X 14 6 2 6  45 35 34 X 44 X X 4  X 19 30 11 5 delmin 15 5 6 16 20 t 7 44  50 51 59 X X X  15 X

  22. Dijkstra's Shortest Path Algorithm 32  33 X X  9 X 2 24 3 0 9 s 18  14 X 14 6 2 6  45 35 34 X 44 X X 4  X 19 30 11 5 15 5 6 16 20 t 7 44  50 51 59 X X X  15 X

  23. Dijkstra's Shortest Path Algorithm 32  33 X X  9 X 2 24 3 0 9 s 18  14 X 14 6 2 6  45 35 34 X 44 X X 4  X 19 30 11 5 15 5 6 16 20 t 7 44  delmin 50 51 59 X X X  15 X

  24. Dijkstra's Shortest Path Algorithm 32  33 X X  9 X 2 24 3 0 9 s 18  14 X 14 6 2 6  45 35 34 X 44 X X 4  X 19 30 11 5 15 5 6 16 20 t 7 44  50 51 59 X X X  15 X

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

  26. Dijkstra’salgoritme: analyse • 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]) n keer: DeleteMin m keer: DecreaseKey Bart Jansen

  27. Eigenschappen van Dijkstra • 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 Jansen

  28. Dijkstra: Wolk van definitieve knopen • 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 Jansen

  29. Bi-directioneel zoeken • 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 s t s t Bart Jansen

  30. Uni- vs. bi-directioneelzoeken t Achterwaarts Voorwaarts s Bart Jansen

  31. Probleemopgelost? Dijkstra’s algoritme doet single-source kortste paden, dus ook single-pair Bart Jansen

  32. Slechts 3 miljoen van de in totaal 23 miljoen kanten Bart Jansen

  33. Wat nu? Preprocessen! • 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 • Opslaan van alle paden kost O(n2) geheugen • Niet haalbaar op mobiele apparaten Bart Jansen

  34. Ontwerpdoelenvoor preprocessing • 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 Jansen

  35. Heuristiekvoorrouteplanning Bart Jansen

  36. Verfijning van de heuristiek • 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 Jansen

  37. Highway hierarchies • Dominik Schultes & Peter Sanders, University of Karlsruhe (2005) • Technieken ervan zijn gebruikt voor het winnen van de 9e DIMACS implementatie challenge (2006) Bart Jansen

  38. Kenmerken van snelweg hiërarchieën • 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 Jansen

  39. Definitie van snelweg hiërarchieën • Snelweg hiërarchie voor graaf G bestaat uit niveaus N0, N1, .. , NL voor vantevoren gekozen L • Elk niveau Ni heeft een snelweg netwerk Si en een kern netwerk Ki • Inductieve definitie: • S0 = K0 = G • Snelweg netwerk Si+1 afgeleid van kern Ki • Kern Ki afgeleid van snelweg netwerk Si • Transformatie van kern i naar snelweg netwerk i+1: verwijder kanten • Transformatie van snelweg netwerk i naar kern i: verwijder knopen (toevoegen shortcuts) Bart Jansen

  40. De hiërarchie Verwijder knopen Verwijder kanten Verwijder knopen Verwijder kanten Bart Jansen

  41. SnelwegnetwerkSi+1 • Afgeleid van kern Ki • Kies een buurt-straal ri(u) voor iedere knoop u op niveau i • Vooruit-buurt van knoop u: alle knopen met afstand ≤ rl(u) vanaf u • Achteruit-buurt van knoop u: alle knopen met afstand ≤ rl(u) naar u • Een kant (u,v) uit Ki zit alleen in het snelweg netwerk als er een kortste pad is <s,..,u,v,..,t> tussen knopen in Ki 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 Jansen

  42. Voorbeeld van snelweg kanten • Een kant (u,v) uit Ki zit alleen in het snelweg netwerk als er een kortste pad is <s,..,u,v,..,t> tussen knopen in Ki zodat: • v niet in de vooruit-buurt van s zit • u niet in de achteruit-buurt van t zit Bart Jansen

  43. Voorbeeld van snelweg kanten • Een kant (u,v) uit Ki zit alleen in het snelweg netwerk als er een kortste pad is <s,..,u,v,..,t> tussen knopen in Ki 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 Jansen

  44. Voorbeeld van snelweg kanten • Een kant (u,v) uit Ki zit alleen in het snelweg netwerk als er een kortste pad is <s,..,u,v,..,t> tussen knopen in Ki 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 Jansen

  45. Voorbeeld van snelweg kanten • Een kant (u,v) uit Ki zit alleen in het snelweg netwerk als er een kortste pad is <s,..,u,v,..,t> tussen knopen in Ki 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 Jansen

  46. Voorbeeld van snelweg kanten • Een kant (u,v) uit Ki zit alleen in het snelweg netwerk als er een kortste pad is <s,..,u,v,..,t> tussen knopen in Ki zodat: • v niet in de vooruit-buurt van s zit • u niet in de achteruit-buurt van t zit Bart Jansen

  47. Algoritmevoorselecterensnelwegkanten • 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 Jansen

  48. Het overzicht • Hierarchie met niveaus N0 , .. , NL • Ieder niveau i bevat 2 grafen: snelweg netwerk Si en kern Ki • Gezien: stap van kern Ki-1 naar snelweg Si • Nu: snelweg Si naar kern Ki • (Verwijderen van knopen) Bart Jansen

  49. De kern Ki • Afgeleid van snelweg netwerk Si • Bepaal een verzameling O overbodige knopen • Alle knopen uit Si die niet overbodig zijn, komen in de kern Ki • Alle kanten uit Si 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 Jansen

  50. Voorbeeld van shortcuts • 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 2 1 2 7 3 2 4 Bart Jansen

More Related