Route planning in wegen netwerken

Slides:



Advertisements
Verwante presentaties
Ingave via het scherm Algemene beschrijving van de toepassing De toepassing is opgebouwd uit drie niveaus : Niveau 1 : verzending en afzender Niveau 2.
Advertisements

Averechtse selectie & marktfalen “Een Experiment”
Asymmentrische informatie
1 Motion Planning (simpel) •Gegeven een “robot” A in een ruimte W, een verzameling obstakels B, en een start en doel positie, bepaal een beweging voor.
Minimum Spanning Tree. Wat is MST? • Minimum spanning tree • De meest efficiënte manier vinden om een verbonden netwerk op te bouwen.
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen.
Base: bewerkingen 2 soorten - Oplopend- Aflopend.
Graph Begrippen: knoop, vertices kant, zijde, edge
Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.
Jan Talmon Medische Informatica Universiteit Maastricht
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
Inleiding Adaptieve Systemen
Visibility-based Probabilistic Roadmaps for Motion Planning Tim Schlechter 13 februari 2003.
Dijkstra Kortste pad algoritme.
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Assenstelsels en het plotten van Functies in LOGO
Onderzoeksmethode Oftewel: met welke specifieke onderzoeksmethode kan ik het best mijn onderzoeksvraag beantwoorden.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 Oplossing Langste Pad Probleem Cees Witteveen
Inleidend probleem Data structuur (hiërarchie van classes)
Approximate Cell Decomposition
1 Complexiteit Bij motion planning is er sprake van drie typen van complexiteit –Complexiteit van de obstakels (aantal, aantal hoekpunten, algebraische.
Motion planning with complete knowledge using a colored SOM Jules Vleugels, Joost N. Kok, & Mark Overmars Presentatie: Richard Jacobs.
1 Datastructuren Skiplists. 2 Skiplists  Vrij eenvoudige datastructuur  “Makkelijker” dan gebalanceerde bomen  Kunnen hetzelfde als gebalanceerde bomen.
Indeling Inleiding op PRM-planners & Medial Axis Retraction van configuraties op de Medial Axis Verbetering van retraction Verbetering van sampling Expliciete.
Lokale zoekmethoden Goed in de praktijk:
Advanced Algorithms Groep: EII7AAb
Netwerken / Internet ICT Infrastructuren David N. Jansen.
Datastructuren Sorteren, zoeken en tijdsanalyse
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
Cooperative Transport Planning
Inhoud college Lijnbalancering Comsoal Random Sequence Generation
De rommel van de programmeur Pieter van Ede. Handmatig geheugenbeheer Programmeur gooit zelf objecten weg Veel fouten mee gemaakt Geheugenlekken ‘Dangling.
1. Snelweg hiërarchieën voor route planning 2. Opmerkingen over het practicum 3. Onderzoek naar Algoritmiek in Utrecht Bart Jansen1.
Representatie & Zoeken
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
Instructie Programmeren Task 7
Grafentheorie Graaf Verzameling knopen al dan niet verbonden door takken, bijv:
Recursie…. De Mandelbrot Fractal De werking… De verzameling natuurlijke getallen… 0 ∞-∞
De PCR reactie.
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
Informatica-Actief I&I-conferentie, november 2007.
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
Doorzoeken van grafen Algoritmiek. Algoritmiek: Divide & Conquer2 Vandaag Methoden om door grafen te wandelen –Depth First Search –Breadth First Search.
Kortste Paden Algoritmiek. 2 Vandaag Kortste Paden probleem All pairs / Single Source / Single Target versies DP algoritme voor All Pairs probleem (Floyd’s.
Heuristieken en benaderingsalgoritmen Algoritmiek.
Divide & Conquer: Verdeel en Heers vervolg Algoritmiek.
Datastructuren voor grafen Algoritmiek. 2 Grafen Model van o.a.: –Wegennetwerk –Elektrische schakeling –Structuur van een programma –Computernetwerk –…
Kortste Paden Algoritmiek.
Doorzoeken van grafen Algoritmiek.
Berekening van de Orde Van een Algoritme
Kan je zien of iemand holebi is?
All-Pairs Shortest paths
Datastructuren voor graafrepresentatie
Minimum Opspannende Bomen
Training: Cliëntsessies
Gevorderde programmeer Les
Algemene beschrijving van de toepassing
Kiezen voor keuzedelen
Training: Cliëntsessies
Webinar SharePoint Standaard Werkstromen
Algoritmiek 2 november 2010 Snelweg hiërarchieën voor route planning
Slim tellen.
Modderdorp UNPLUGGED Bron: csunplugged.org.
Slim tellen.
Doolhof. doolhof doolhof Maak een routine die de ‘hekken’ tussen de cellen weghaalt Maak een 2-dimensionale array met kolommen en rijen aangeklikt.
Leren programmeren met Scratch
Transcript van de presentatie:

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

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

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

Slechts 3 miljoen van de in totaal 23 miljoen kanten 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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) 20-11-2018 Bart Jansen

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] ) 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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”) 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

Uni- vs. bi-directioneel zoeken Achterwaarts Voorwaarts s 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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) 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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) 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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) 20-11-2018 Bart Jansen

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) 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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} 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

Voorbeeld van een query Voorbeeld van een query nabij Karlsruhe Verschillende niveaus in verschillende kleuren 20-11-2018 Bart Jansen

20-11-2018 Bart Jansen

20-11-2018 Bart Jansen

20-11-2018 Bart Jansen

20-11-2018 Bart Jansen

20-11-2018 Bart Jansen

20-11-2018 Bart Jansen

20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 > 1 000 000 x) 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen

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 20-11-2018 Bart Jansen