Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdΜέδουσα Βασιλειάδης Laatst gewijzigd meer dan 6 jaar geleden
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
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.