Algorithmen für Routenplanung 11. Vorlesung, Sommersemester 2012 Daniel Delling 6. Juni 2012 MICROSOFT RESEARCH SILICON VALLEY KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
Letztes Mal Beschleunigung von one-to-all Anfragen PHAST anstatt Dijkstra Vorteil: Ausnutzung von moderner Hardware Architektur Folie 2 6. Juni 2012
Anfrageszenarien Punkt-zu-Punkt zwei Punkte kürzester Weg wird für Routenplanung benutzt Beschleunigungstechniken HubLabels 10M schneller One-to-Many ein (variierender Knoten) und eine (feste) Menge Distanz zu allen Knoten in der Menge wichtig für POI One-to-All ein Knoten Distanzen zu allen Knoten wird für Vorberechnung benutzt PHAST 500 schneller (auf GPU) nutzt Hardware aus Many-to-Many zwei Mengen Distanztabelle wichtig für Vehicle Routing Folie 3 6. Juni 2012
Das One-to-Many Problem Problem Definition: Eingabe: eine Knoten s und eine Menge T Ausgabe: Distanz von s zu allen t T Annahme: wir fiieren T und variieren s offensichtliche Lösungen: Dijkstras Algorithmus (mit Stoppkriterium) Performance stark abhängig von T und Verteilung von T T p2p Anfragen (mit HL) Performance stark abhängig von T benutze PHAST (kein Stoppkriterium!) Overkill (vor allem für kleine T ) Folie 4 6. Juni 2012
Erste Ideen Vorschläge? Folie 5 6. Juni 2012
Ungerichtete Bidir. Techniken Definition: σ (s, t): Suchraum der Vorwärtssuche von s nach t σ (s, t) analog eine bidirektionale Suche ist Ziel-unabhängig, gdw. (s, t 1, t 2 ) V 3 : σ (s, t 1 ) = σ (s, t 2 ) (s 1, s 2, t) V 3 : σ (s 1, t) = σ (s 2, t) und Beispiele: Bidirektionaler Dijkstra ohne Stoppkriterium, lass laufen bis Queues leer sind Folie 6 6. Juni 2012
Hierarchische Techniken Beobachtung: suchen nur aufwärts sind nicht zielgerichtet somit: Bidirektionaler Dijkstra Reach Contraction Hierarchies 6 5 2 3 2 s 1 ohne Stoppkriterium, lass laufen bis Queues leer sind HL node order 8 2 4 3 1 2 3 t 5 Folie 7 6. Juni 2012
Vorgehen Idee: führe T Rückwärtssuchen aus speicher für jedes besuchte u die Abstände zu allen t T verwalte temporäres Distanzarray D T führe Vorwärtssuche aus aktualisiere Einträge in D T Problem: verwalten der Suchräume? Folie 8 6. Juni 2012
Schneiden der Suchräume während Rückwärtssuchen: breche nicht ab für jedes erreichte u: füge Element (u, t, d(u, t)) in einen Vektor ein Kompression: sortiere Einträge nach u speichere für jeden Knoten u einen Bucket β(u) mit allen (t, d(u, t)) ab mittels Adjazenzarray p 4 p 1 p 2 s während Vorwärtssuche: breche nicht ab für jedes erreichte u: durchsuche Bucket β(u) aktualisiere Distanzarray p 3 p 5 Folie 9 6. Juni 2012
RPHAST Beobachtung: Idee: Sweep über den Graphen ist der Flaschenhals etrahiere relevanten Teil des Graphen (Ziel Selektion) Aufwärtssuche im vollen Graphen Sweep auf etrahiertem Graphen s T Startknoten kann im ganzem Graphen liegen Grösse des etrahierten Graphen hängt von Verteilung und Anzahl T ab kann wie PHAST parallelisiert werden GPU implementation möglich Folie 10 6. Juni 2012
Eperimente I input: Westeuropa (18M Knoten), T = 2 14 Query Time [ms] 0.1 1 10 100 1000 Dijkstra RPHAST query HL RPHAST select PHAST BCH query BCH select BHL query BHL select 0.1 1 10 100 1000 2 14 2 15 2 16 2 17 2 18 2 19 2 20 2 21 2 22 2 23 2 24 Ball Size Folie 11 6. Juni 2012
Eperimente II input: Westeuropa (18M Knoten), T = 2 18 Query Time [ms] 0.1 1 10 100 1000 10000 Dijkstra RPHAST query HL RPHAST selection PHAST BCH query BCH selection BHL query BHL selection 0.1 1 10 100 1000 10000 2 18 2 19 2 20 2 21 2 22 2 23 2 24 Ball Size Folie 12 6. Juni 2012
Many-to-Many Kürzeste Wege Gegeben: Graph Knotenmengen S, T V Gesucht: Distanzmatri D T Anwendungen: vehicle routing traveling salesman S Lösung: S one-to-many Anfragen speicher Distanzen in der Tabelle RPHAST kann multiples Setup (SSE) nutzen Folie 13 6. Juni 2012
Eperimente I input: Westeuropa (18M Knoten), S = T = 2 10 Query Time [s] 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 HL BCH BHL RPHAST SSE RPHAST 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 2 10 2 11 2 12 2 13 2 14 2 15 2 16 2 17 2 18 2 19 2 20 2 21 2 22 2 23 2 24 Ball Size Beobachtung: alle Techniken unter einer Sekunde Folie 14 6. Juni 2012
Eperimente II input: Westeuropa (18M Knoten), S = T = 2 12 Query Time [s] 0 1 2 3 4 5 6 HL BCH BHL RPHAST SSE RPHAST 0 1 2 3 4 5 6 2 12 2 13 2 14 2 15 2 16 2 17 2 18 2 19 2 20 2 21 2 22 2 23 2 24 Ball Size Beobachtung: SSE PHAST am schnellsten Folie 15 6. Juni 2012
Eperimente III input: Westeuropa (18M Knoten), S = T = 2 14 Query Time [s] 0 20 40 60 80 100 HL BCH BHL RPHAST SSE RPHAST 0 20 40 60 80 100 2 14 2 15 2 16 2 17 2 18 2 19 2 20 2 21 2 22 2 23 2 24 Ball Size Beobachtung: SSE PHAST am schnellsten Folie 16 6. Juni 2012
Nächster POI Szenario: Zielknoten sind POIs finde k nächste POIs von einem Startknoten s Lösung: wie one-to-many ordne die buckets pro Knoten auch nach aufsteigender Distanz in jedem Bucket müssen nur die k nächsten POIs durchsucht werden Laufzeit für POI Query nicht abhängig von Anzahl POIs im System Laufzeit: Suchraum k p 4 p 1 p 2 s p 3 p 5 Folie 17 6. Juni 2012
Bester Via Knoten Szenario: Zielknoten sind POIs finde k best Via Knoten POIs von einem Startknoten s zu einem Startknoten t minimiere dist(s, p) dist(p, t) über alle POIs p Lösung: Vorwärts- und Rückwartssuche von jedem POI speicher Kreuzprodukt der beiden Suchräume mit Distanz durch den POI Such von s und t: evaluiere jedes Paar Laufzeit: Suchraum 2 k p 1 s p 2 p 3 t Folie 18 6. Juni 2012
Aufgabenstellung Beobachtung: Queries sind schnell genug Visualisierung und Netzwerklatenz der Flaschenhals schwieriger und hoch optimierter Code Können wir Geschwindigkeit gegen einfachere Bedienbarkeit eintauschen? Idee: Implementier Routenplanung direkt in SQL auch die Erweiterungen Folie 19 6. Juni 2012
Location Services in SQL Vorteile: einfach zu nutzen Daten meist eh schon in SQL skalieren einfach (bestehende Datenbanksysteme, Cloud SQL) auch für Nicht-Routing-Eperten zu nutzen Eternal Memory Implementation frei Nachteile: SQL viel langsamer als optimierter C Code keine aufwändigen Datenstrukturen (Graph, Priority Queue) Dijkstra-basierte Techniken sind keine Option Folie 20 6. Juni 2012
Ideensammlung Welcher Ansatz? keine Priority Queue? keine Graphdatenstruktur? Idee: Hub Labeling Folie 21 6. Juni 2012
Hub Labeling Vorberechung: für jeden Knoten u, berechne zwei Label L f (u), L b (u) ein Label ist eine Menge von Knoten (Hubs) und Distanzen dist(u, v) für jeden Hub v L f (u) dist(v, u) für jeden Hub v L b (u) die Label müssen die cover property einhalten: s, t, L f (s) L b (t) überdeckt den kürzesten s t Pfad s s t Anfrage: finde Knoten v L f (s) L b (t)...... der dist(s, v) dist(v, t) minimiert Beobachtungen: Label der Grösse 70 für Europe sehr schnelle Queryzeiten Set operationen t Folie 22 6. Juni 2012
Speichern der Label Idee: berechne Label mit C (wie bei HubLabels) aber speicher die Label direkt in der Datenbank ein Vorwärtslabel von Knoten v mit k Hubs: erzeugt k Triples (v, u, d(v, u)) in Tabelle forward Rückwärtslabel genauso in backward ungefähr 1.35 Milliarden Zeilen pro Tabelle (ca. 19 GB pro Richtung) indiziere nach node (primary) und hub (secondary) L f (1) 1,0 4,1 5,2 7,3 L b (2) 2,0 6,1 7,4 Folie 23 6. Juni 2012 forward node hub dist 1 1 0 1 4 1 1 5 2 1 7 3 2 14 2... backward node hub dist 1 1 0 1 4 4 2 2 0 2 6 1 2 7 4...
SQL Query 1 2 3 4 5 6 7 Algorithm 1: SQL_DIST Input: source s V, target t V SELECT MIN(forward.distbackward.dist) FROM forward,backward WHERE forward.node = s AND backward.node = t AND forward.hub = backward.hub Bemerkung: berechnet nur die Distanz s t Folie 24 6. Juni 2012
Pfadentpackung Idee: 2 Phasen speicher jeden Shortcut aus G eplizit (als Sequenz von Kanten IDs) in Tabelle shortcuts ca. 5 GB in Tabelle Phase 1: erzeuge Pfad in G durch Hubs auf dem Pfad erweitere Tabellen forward und backward um 2 Spalten: Parent und Shortcut erhöht Speicherverbrauch der Tabelle von 19 auf 32 GB Phase 2: erzeuge Pfad in G durch matchen von G mit shortcuts Folie 25 6. Juni 2012
Ergebnisse Setup: MS SQL Server 2008 R2 mit Daten auf HDD, kalter Cache query time [ms] 0 50 100 150 200 path retrieval compact path distance only eternal 0 50 100 150 200 10 1 10 2 10 3 10 4 10 5 10 6 number of queries Beobachtung: Nicht schnell genug Folie 26 6. Juni 2012
Ergebnisse (SSD) Setup: MS SQL Server 2008 R2 mit Daten auf SSD, kalter Cache query time [ms] 0 5 10 15 20 25 path retrieval compact path distance only eternal 0 5 10 15 20 25 10 1 10 2 10 3 10 4 10 5 10 6 number of queries Beobachtung: SSD macht Queries schnell genug Folie 27 6. Juni 2012
Lokale Anfrage Setup: Anfragen mit verschiedenem Rank, 10000 Anfragen, kalter Cache query time [ms] 0 2 4 6 8 10 path retrieval compact path distance only eternal 0 2 4 6 8 10 2 10 2 12 2 14 2 16 2 18 2 20 2 22 2 24 ball size Beobachtung: praisrelevante Anfragen sehr schnell Folie 28 6. Juni 2012
POI Anfragen in SQL Idee: Query: etrahiere die Rückwartslabel aus backward speicher sie in neuer Tabelle poilab indiziere nach hub und dist iteriert über alle ausgehenden Hubs für jeden Hub werden nur die (k) nächsten POIs betrachtet p 4 Antwort: die k insgesamt nächsten POIs p 1 p 2 s p 3 p 5 Folie 29 6. Juni 2012
Ergebnisse POI Setup: verschiedene Anzahl POIs, zufällig gewählt query time [ms] 0.1 1 10 100 closest 16 closest C oracle 0.1 1 10 100 2 0 2 2 2 4 2 6 2 8 2 10 2 12 2 14 2 16 2 18 number of candidates eternes Punkt-zu-Punkt Orakel: skaliert schlecht SQL Anfragen unabhängig von Anzahl POIs weitere Constraints einfach ( jetzt geöffnet ) Folie 30 6. Juni 2012
Demo Folie 31 6. Juni 2012
Zusammenfassung one-to-many shortest paths many-to-many POI Anfragen bester Via Knoten Anfragen Location Services in SQL Folie 32 6. Juni 2012
Ende Literatur: Sebastian Knopp, Peter Sanders, Dominik Schultes, Frank Schulz, and Dorothea Wagner: Computing Many-to-Many Shortest Paths Using Highway Hierarchies In: Proceedings of the 9th Workshop on Algorithm Engineering and Eperiments (ALENEX 07), pages 36-45, 2007. Daniel Delling, Andrew V. Goldberg, Renato F. Werneck Faster Batched Shortest Paths in Road Networks In: Proceedings of the 11th Workshop on Algorithmic Approaches for Transportation Modeling, Optimization, and Systems (ATMOS 11), pages 52-63, 2011 Ittai Abraham, Daniel Delling, Andrew V. Goldberg, Renato F. Werneck HLDB: Location-Based Services in Databases bald verfügbar Folie 33 6. Juni 2012
Nächste Termine Montag, 11.6.2012 Mittwoch, 13.6.2012 Montag, 18.6.2012 Mittwoch, 20.6.2012 Folie 34 6. Juni 2012