De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Route planning in wegen netwerken

Verwante presentaties


Presentatie over: "Route planning in wegen netwerken"— Transcript van de presentatie:

1 Route planning in wegen netwerken
Snelweg hiërarchieën voor het versnellen van route queries Bart Jansen

2 Overzicht Achtergrond Technieken Conclusie Opbouw Zoekmethode
Praktisch probleem Theoretische resultaten Doel van versnellings methoden Technieken Dijkstra and uitbreidingen Highway hierarchies Opbouw Zoekmethode Conclusie Bart Jansen

3 Praktisch probleem Zoek een kortste pad van a naar b in een gerichte graaf (“single pair”) We behandelen niet: Single source shortest paths All-pairs shortest paths Negatieve gewichten Bart Jansen

4 De theorie Dijkstra’s algoritme (1959)
Voor een gerichte graaf met n knopen en m kanten: O(n log n + m) time, O(n) ruimte met Fibonnaci heaps Te langzaam voor grote netwerken 18 miljoen knopen, 23 miljoen kanten voor een volledige beschrijving van West-Europa Voor mobiele apparaten is zelfs O(n + m) te langzaam Bart Jansen

5 Slechts 3 miljoen van de in totaal 23 miljoen kanten
Bart Jansen

6 Preprocessing Bij route planning worden meerdere queries gedaan op dezelfde graaf Gebruik preprocessing om toekomstige queries te versnellen 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

7 Ontwerpdoelen 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 Netwerken zijn dunne grafen: m is Θ(n) Bart Jansen

8 Dijkstra’s algoritme Query vanaf een startpunt s
Houd een afstands bovengrens d[v] bij voor iedere knoop v Status voor iedere knoop: voorlopig of definitief Aan het begin: d[v] = ∞, voor alle v ≠ s d[s] = 0 Alle knopen zijn voorlopig Herhaal: Kies voorlopige knoop v met laagste d[v] waarde Maak v definitief Relaxeer uitgaande kanten (v,u) naar voorlopige knopen d[u]  min (d[u]), d[v] + w[u] ) Bart Jansen

9 Eigenschappen van Dijkstra
Invariant: als v definitief wordt, is d[v] de lengte van een kortste s-v pad Algoritme kan stoppen als t definitief wordt gemaakt Implementatie met een priority queue om efficient te bepalen welke voorlopige knoop definitief moet worden Bart Jansen

10 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

11 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 r=(d/2) kleiner dan een schijf r=d Geeft ongeveer een factor 2 snelheidswinst s t s t Bart Jansen

12 Uni- vs. bi-directioneel zoeken
Achterwaarts Voorwaarts s Bart Jansen

13 Een heuristiek voor route planning
Voor route planning van s naar t: Bepaal snelweg oprit s’ dichtbij s Bepaal snelweg afrit t’ dichtbij t Rest van de query in drie delen Eerst een kortste pad s  s’ naar de oprit Dan een kortste pad s’  t’ over de snelweg Tot slot een pad t’  t van de afrit naar je doel Waarom is dit sneller? Oprit en afrit zijn dichtbij het start- en eindpunt – worden dus snel bereikt door Dijkstra’s algoritme Het netwerk van snelwegen is relatief klein, dus zoeken naar paden over snelwegen is veel sneller omdat er minder wegen hoeven worden getest Bart Jansen

14 Verfijning van de heuristiek
Uitbreidbaar naar meerdere typen wegen Kies een categorie op basis van de afstand tot s en t Kwaliteit van de gevonden routes hangt af van de wegen classificatie (handmatig bijstellen!) Dit is gebruikt in route planners voor auto’s Bart Jansen

15 Highway hierarchies Dominik Schultes & Peter Sanders, University of Karlsruhe Eerste versie gemaakt in 2005 Technieken ervan zijn gebruikt voor het winnen van de 9e DIMACS implementatie challenge (2006) Bart Jansen

16 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

17 Definitie van snelweg hiërarchieën
Snelweg hiërarchie voor graaf G bestaat uit niveaus N0, N1, .. , NL voor bepaalde L Elk niveau Nl heeft een snelweg netwerk Gl en een kern netwerk G’l Inductieve definitie: G0 = G’0 = G Snelweg netwerk Gl+1 afgeleid van kern G’l Kern G’l afgeleid van snelweg netwerk Gl Transformatie van kern l naar snelweg netwerk l+1: verwijder kanten Transformatie van snelweg netwerk l naar kern l: verwijder knopen (toevoegen shortcuts) Bart Jansen

18 Snelweg netwerk Gl+1 = (Vl+1, El+1)
Afgeleid van kern G’l = (V’l, E’l) Kies een buurt-straal rl(u) voor iedere knoop u op niveau l Voorwaarts-buurt van knoop u bevat alle knopen met afstand ≤ rl(u) vanaf u Achterwaarts-buurt van knoop u bevat alle knopen met afstand ≤ rl(u) naar u Een kant (u,v) uit E’l zit alleen in het snelweg netwerk als er een kortste pad is <s,..,u,v,..,t> tussen 2 willekeurige knopen in V’l zodat: v niet in de voorwaarts-buurt van s zit u niet in de achterwaarts-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

19 Voorbeeld van snelweg kanten
Een kant (u,v) uit E’l zit alleen in het snelweg netwerk als er een kortste pad is <s , .. , u, v, .., t> tussen 2 willekeurige knopen in V’l zodat: v niet in de voorwaarts-buurt van s zit u niet in de achterwaarts-buurt van t zit 6 2 1 3 5 7 8 4 Bart Jansen

20 Voorbeeld van snelweg kanten
Kortste pad <2, 3, 4> Alle knopen liggen zowel in de voorwaarts- als in de achterwaarts buurten van s=2 en t=4 Dus geen snelweg kanten 6 2 1 3 5 7 8 4 Bart Jansen

21 Voorbeeld van snelweg kanten
Kortste pad <1, 3, 5, 7> Kijk naar kant <3, 5> Knoop 5 ligt niet in de voorwaarts-buurt van 1 Knoop 3 ligt niet in de achterwaarts-buurt van 7 Dus kant <3,5> is een snelweg kant! 6 2 1 3 5 7 8 4 Bart Jansen

22 Voorbeeld van snelweg kanten
Kortste pad <1, 3, 5, 7> Kijk naar kant <3, 5> Knoop 5 ligt niet in de voorwaarts-buurt van 1 Knoop 3 ligt niet in de achterwaarts-buurt van 7 Dus kant <3,5> is een snelweg kant! 6 2 1 3 5 7 8 4 Bart Jansen

23 Voorbeeld van snelweg kanten
Kortste pad <1, 3, 5, 7> Kijk naar kant <3, 5> Knoop 5 ligt niet in de voorwaarts-buurt van 1 Knoop 3 ligt niet in de achterwaarts-buurt van 7 Dus kant <3,5> is een snelweg kant! 3 5 Bart Jansen

24 Algoritme voor selecteren snelweg kanten
Doe voor iedere knoop u: Voer Dijkstra uit met knoop u als startpunt, en houd alle kortste paden (via predecessor waarden) bij Bij meerdere paden met minimum kosten, worden deze dus allemaal bewaard (een knoop heeft meerdere predecessors) Stop Dijkstra zodra de knopen aan een stopcriterium voldoen Evalueer de kortste paden om snelweg kanten te vinden Het stopcriterium is heel belangrijk! Dit voorkomt dat iedere keer de hele graaf doorzocht wordt Preprocessen voor heel West-Europa kan in 16 minuten Het idee achter het stop criterium: Stop met zoeken vanuit u zodra we zeker weten dat alle snelweg kanten die nog niet gevonden zijn, wel gevonden moeten worden bij het zoeken vanuit een andere knoop (“delegeer” de rest van het werk aan de Dijkstra opdrachten vanuit andere knopen) Bart Jansen

25 Het overzicht Snelweg hierarchie bestaat uit L niveaus
Ieder niveau l bevat 2 grafen: een snelweg netwerk Gl en een kern G’l We hebben net gezien hoe het snelweg netwerk Gl ontstaat uit de kern G’l-1 Snelweg netwerk ontstaat door het verwijderen van kanten Nu: hoe de kern G’l ontstaat uit het snelweg netwerk Gl (verwijderen van knopen) Bart Jansen

26 De kern (G’l = V’l, E’l) Afgeleid van snelweg netwerk Gl = (Vl, El)
Bepaal een verzameling Ol  Vl overbodige knopen Alle knopen uit Vl die niet overbodig zijn, komen in de kern V’l Alle kanten uit El tussen knopen die niet overbodig zijn, worden overgenomen En we voegen extra kanten als shortcuts toe 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 Gewicht van de shortcut-kant wordt gelijk aan de lengte van het pad Bart Jansen

27 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 Ol = {1, 2} 1 2 Bart Jansen

28 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 Ol = {1, 2} 1 2 Bart Jansen

29 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 Ol = {1, 2} Bart Jansen

30 Details van reductie tot de kern
Kortste paden tussen knopen in de kern blijven behouden Herinner dat G0 = G’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 (graadin(u) + graaduit(u)) Verzekert dat |E’l| is O(|Vl| + |El|) als c < 2 Simpel iteratief algoritme met een stack volstaat voor vinden van overbodige knopen Bart Jansen

31 Samenvatting van constructie stappen
Afwisselen tussen reduceren van kanten, en reduceren van knopen In ieder niveau dalen |V| en |E| ruw weg 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 Jansen

32 Zoeken in een snelweg hiërarchie
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 Jansen

33 Zoeken - vervolgd 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 = <s, .. , u , .. , t > Het subpad <u , .. , t> 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 path in G1 Gebruik de buurt van u en het snelweg netwerk om dit zoeken te versnellen Bart Jansen

34 Queries in de praktijk 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 Jansen

35 Terminatie criterium 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 Jansen

36 Voorbeeld van een query
Voorbeeld van een query nabij Karlsruhe Verschillende niveaus in verschillende kleuren Bart Jansen

37 Bart Jansen

38 Bart Jansen

39 Bart Jansen

40 Bart Jansen

41 Bart Jansen

42 Bart Jansen

43 Bart Jansen

44 Experimentele evaluatie
Netwerk van West-Europa (n = 18 * 106, m = 23 * 106) 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 ivm. Dijkstra: factor 4002 Enkele milliseconden per query Bart Jansen

45 Voor- en nadelen Voordelen Nadelen Snel preprocessen
Weinig extra geheugen nodig Goede versnelling (4002 x) Kan worden gecombineerd met doel-gericht zoeken (8320 x) Simpel concept Nadelen Statische hiërarchie die niet inspeelt op wijzigingen (aanpassen van de graaf of gewichtsfunctie) Er zijn snellere methoden (versnelling > x) Bart Jansen

46 Conclusie 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 Bart Jansen

47 Correctheid van bi-directioneel zoeken
Stel er is een knoop u van beide kanten definitief Claim: er is een kortste pad over over die allemaal van minstens 1 kant definitief zijn Bewijs: Stel er is een knoop v op een s-t pad, van beide kanten niet definitief d[s,u] ≤ d [s,v] (want u is eerder definitief van s) d[u,t] ≤ d [v,t] (want u is eerder definitief naar t) d[s,u] + d [u,t] ≤ d [s,v] + d [v,t] Dus het pad over u is minstens zo kort als een pad over v Bart Jansen


Download ppt "Route planning in wegen netwerken"

Verwante presentaties


Ads door Google