Algoritmiek 2 november 2010 Snelweg hiërarchieën voor route planning

Slides:



Advertisements
Verwante presentaties
Minimum Spanning Tree. Wat is MST? • Minimum spanning tree • De meest efficiënte manier vinden om een verbonden netwerk op te bouwen.
Advertisements

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.
Advanced Algorithms Groep: EII7AAb
Graph Begrippen: knoop, vertices kant, zijde, edge
Jan Talmon Medische Informatica Universiteit Maastricht
Motion Planning in Games Pathfinding with A * Ronald Treur.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
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)
Oplossen van een doolhof
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.
Fundamentele Informatica IN3120
TU Delft Groep Parallelle en Gedistribueerde Systemen Fundamentele Informatica In3 005 Deel 2 College 1 Cees Witteveen Parallelle en Gedistribueerde Systemen.
Divide and Conquer in Multi-agent Planning Multi-Agent Planning as the Process of Merging Distributed Sub-plans Eithan Ephrati and Jeffrey S. Rosenschein.
Inleidend probleem Data structuur (hiërarchie van classes)
1 Complexiteit Bij motion planning is er sprake van drie typen van complexiteit –Complexiteit van de obstakels (aantal, aantal hoekpunten, algebraische.
Practicum I&M College deel 1
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
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 3.
Datastructuren Sorteren, zoeken en tijdsanalyse
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 3 Cees Witteveen.
TU Delft Groep Parallelle en Gedistribueerde Systemen Fundamentele Informatica IN3120 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit EWI,
Scriptieseminarie 3 Methode – Experimenteel onderzoek
Workshop nieuwe release Roy-data september Agenda Aanleiding en uitgangspunten nieuwe release Roy-data 1 x nieuwe zoekfunctionaliteit, 4 logistieke.
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 ∞-∞
Plan voor uitvoering. Gebruik je boek Begin bij 8.4 de innovatiecyclus Stap 1 is eigenlijk het onderzoek wat je al gedaan hebt Je begint je ontwerp met.
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
Verschillende rollen en stijlen
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.
Netwerkstroming Algoritmiek. 2 Vandaag Netwerkstroming: definitie en toepassing Het rest-netwerk Verbeterende paden Ford-Fulkerson algoritme Minimum Snede.
Divergeren Deze powerpoint ga je aan de slag met verschillende divergerende technieken. Hierbij bedenk je zoveel mogelijk ideeën. Bij een brainstormsessie.
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 –…
Gerandomiseerde algoritmes
Kortste Paden Algoritmiek.
Doorzoeken van grafen Algoritmiek.
Berekening van de Orde Van een Algoritme
All-Pairs Shortest paths
Datastructuren voor graafrepresentatie
Minimum Opspannende Bomen
Benaderingsalgoritmen
Gevorderde programmeer Les
Openstaande discussies B&I
Modderdorp UNPLUGGED Bron: csunplugged.org.
Route planning in wegen netwerken
Arrangeren en Leermiddelenbeleid Utrecht, 13 december
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.
Transcript van de presentatie:

Algoritmiek 2 november 2010 Snelweg hiërarchieën voor route planning Opmerkingen over het practicum Onderzoek naar Algoritmiek in Utrecht Bart Jansen 25-12-2018

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 Bart Jansen 25-12-2018

Edgser Wiebe Dijkstra 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 Jansen 25-12-2018

Dijkstra’s algoritme 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 Jansen 25-12-2018

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 25-12-2018

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 25-12-2018

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 25-12-2018

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 25-12-2018

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

Probleem opgelost? Dijkstra’s algoritme doet single-source kortste paden, dus ook single-pair Bart Jansen 25-12-2018

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

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 Informatie voor alle paren kost W(n2) geheugen Niet haalbaar op mobiele apparaten Bart Jansen 25-12-2018

Ontwerpdoelen voor 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 25-12-2018

Heuristiek voor routeplanning Korte afstand Geldermalsen naar oprit snelweg Klein netwerk Via snelweg van Geldermalsen naar de Uithof Afrit bij Uithof naar Leuvenlaan Bart Jansen 25-12-2018

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 25-12-2018

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 25-12-2018

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 25-12-2018

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 25-12-2018

De hiërarchie Kern 2 Snelweg 2 Kern 1 Snelweg 1 Snelweg 0 = Kern 0 Verwijder knopen Verwijder kanten Verwijder knopen Verwijder kanten Bart Jansen 25-12-2018

Snelweg netwerk Si+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 25-12-2018

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 25-12-2018

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 25-12-2018

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 25-12-2018

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 25-12-2018

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 25-12-2018

Algoritme voor selecteren snelweg kanten 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 25-12-2018

Het overzicht Hierarchie met niveaus N0 , .. , NL Kern 2 Snelweg 2 Kern 1 Snelweg 1 Snelweg 0 = Kern 0 Kern 2 Snelweg 2 Kern 1 Snelweg 1 Snelweg 0 = Kern 0 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 25-12-2018

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 25-12-2018

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 25-12-2018

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} 13 1 4 2 1 2 7 3 2 4 11 12 Bart Jansen 25-12-2018

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} 13 1 2 11 12 Bart Jansen 25-12-2018

Details van reductie tot de kern Kortste paden tussen knopen in de kern blijven behouden Herinner dat S0 = K0 = 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)) Zorgt ervoor dat de graaf ijl blijft Simpel iteratief algoritme voor vinden overbodige knopen Bart Jansen 25-12-2018

Samenvatting van constructie stappen 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 Jansen 25-12-2018

Route queries Hoe helpt de hiërarchie om zoekopdrachten te versnellen? Bart Jansen 25-12-2018

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 25-12-2018

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 pad in K1 Gebruik de buurt van u en het snelweg netwerk om dit zoeken te versnellen Bart Jansen 25-12-2018

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 25-12-2018

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 25-12-2018

Voorbeeld van een query Voorbeeld van een query nabij Karlsruhe Verschillende niveaus in verschillende kleuren http://algo2.iti.kit.edu/schultes/hwy/demo/ Bart Jansen 25-12-2018

Bart Jansen 25-12-2018

Bart Jansen 25-12-2018

Bart Jansen 25-12-2018

Bart Jansen 25-12-2018

Bart Jansen 25-12-2018

Bart Jansen 25-12-2018

Bart Jansen 25-12-2018

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 tov. Dijkstra: factor 4002 Enkele milliseconden per query Bart Jansen 25-12-2018

Afweging 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>1 000 000 x) Bart Jansen 25-12-2018

Tot slot 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 Jansen 25-12-2018

Het practicum Mars vs. Aarde

Datastructuren voor input 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 Jansen 25-12-2018

Overtuig jezelf van correctheid! 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 Jansen 25-12-2018

Algoritmiek in Utrecht Bart Jansen 25-12-2018

Vakgroep Algorithmic Systems Planning Roosters maken Graaf algoritmiek Exacte oplossingen voor NP-complete problemen … dus niet in polynomiale tijd Bart Jansen 25-12-2018

Voorbeeld: Driehoekjes in grafen Hans Bodlaender, Johan van Rooij en Marcel van Kooten-Niekerk NP-compleet O(1.0222n) algoritme SOFSEM conferentie Januari 2011, Slowakije Bart Jansen 25-12-2018

Geparameterizeerde analyse Los probleem bv. in O(2k 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(2k n) tijd Bart Jansen 25-12-2018

Onderzoek naar preprocessing 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 Jansen 25-12-2018

Concreet: Vertex Cover 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 Jansen 25-12-2018

Experimentation Project 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 Jansen 25-12-2018