Algorithmen für Routenplanung 7. Vorlesung, Sommersemester 2012 Daniel Delling 16. Mai 2012

Ähnliche Dokumente
Algorithmen für Routenplanung 8. Sitzung, Sommersemester 2012 Thomas Pajor 21. Mai 2012

Algorithmen für Routenplanung 7. Sitzung, Sommersemester 2010 Thomas Pajor 28. Mai 2010

Algorithmen für Routenplanung

Algorithmen für Routenplanung 12. Sitzung, Sommersemester 2011 Reinhard Bauer, Thomas Pajor 6. Juni 2011

Algorithmen für Routenplanung Vorlesung 5

Algorithmen für Routenplanung 13. Vorlesung, Sommersemester 2012 Daniel Delling 13. Juni 2012

Algorithmen für Routenplanung Vorlesung 6

Algorithmen für Routenplanung 11. Vorlesung, Sommersemester 2012 Daniel Delling 6. Juni 2012

Algorithmen für Routenplanung 8. Sitzung, Sommersemester 2013 Julian Dibbelt 22. Mai 2013

Algorithmen für Routenplanung Vorlesung 7

Algorithmen für Routenplanung 12. Sitzung, Sommersemester 2014 Prof. Christos Zaroliagis 26. Mai 2014

Algorithmen für Routenplanung 11. Sitzung, Sommersemester 2013 Julian Dibbelt 10. Juni 2013

Algorithmen für Routenplanung 18. Sitzung, Sommersemester 2015 Moritz Baum 13. Juli 2015

Algorithmen für Routenplanung 6. Vorlesung, Sommersemester 2010 Daniel Delling 17. Mai 2010

Algorithmen für Routenplanung 10. Sitzung, Sommersemester 2012 Daniel Delling 4. Juni 2012

Algorithmen für Routenplanung 10. Sitzung, Sommersemester 2014 Ben Strasser 21. Mai 2014

Algorithmen für Routenplanung Vorlesung 11

Algorithmen für Routenplanung 13. Sitzung, Sommersemester 2013 Julian Dibbelt 19. Juni 2013

Algorithmen für Routenplanung 7. Vorlesung, Sommersemester 2015 Ben Strasser 18. Mai 2014

Algorithmen für Routenplanung 15. Vorlesung, Sommersemester 2012 Daniel Delling 20. Juni 2012

Viertes Übungsblatt - Musterlösung

Algorithmen für Routenplanung 4. Vorlesung, Sommersemester 2018 Tim Zeitz 30. April 2018

Algorithmen für Routenplanung 2. Sitzung, Sommersemester 2010 Thomas Pajor 26. April 2010

Algorithmen für Routenplanung 4. Vorlesung, Sommersemester 2017 Moritz Baum 15. Mai 2017

Algorithmen für Routenplanung 9. Sitzung, Sommersemester 2010 Thomas Pajor 7. Juni 2010

Algorithmen für Routenplanung Vorlesung 4

Algorithmen für Routenplanung Vorlesung 10

Algorithmen für Routenplanung 2. Vorlesung, Sommersemester 2014 Andreas Gemsa 20. April 2014

Algorithmen für Routenplanung Vorlesung 12

Algorithmen für Routenplanung 5. Sitzung, Sommersemester 2010 Thomas Pajor 10. Mai 2010

Algorithmen für Routenplanung 19. und letzte Sitzung, Sommersemester 2012 Thomas Pajor 16. Juli 2012

Route Planning in Road Networks

Algorithmen für Routenplanung Vorlesung 2

Algorithmen für Routenplanung 12. Sitzung, Sommersemester 2010 Thomas Pajor 28. Juni 2010

Algorithmen für Routenplanung 9. Sitzung, Sommersemester 2013 Julian Dibbelt 27. Mai 2013

Algorithmen für Routenplanung Vorlesung 3

Kürzeste und Schnellste Wege

Algorithmen für Routenplanung 12. Sitzung, Sommersemester 2013 Julian Dibbelt 17. Juni 2013

Algorithmen für Routenplanung 3. Sitzung, Sommersemester 2010 Thomas Pajor 30. April 2010

Praktikum Routenplanung Vorbesprechung, Wintersemester 2013/2014 Moritz Baum, Julian Dibbelt, Ben Strasser 21. Oktober 2013

Algorithmen für Routenplanung

Algorithmen für Routenplanung 14. Sitzung, Sommersemester 2011 Thomas Pajor 16. Juni 2011

Algorithmen für Routenplanung 2. Vorlesung, Sommersemester 2016 Tobias Zündorf 25. April 2016

Theorie-Übungsblatt 3 Lösungsvorschläge

Untersuchung von Beschleunigungsverfahren für den Dijkstra-Algorithmus im Zusammenhang mit multimodalem Routing

Fortgeschrittene Routenplanung. Transportnetzen. Advanced Route Planning in Transportation Networks

Algorithmen für Routenplanung 9. Sitzung, Sommersemester 2015 Moritz Kobitzsch 20. Mai 2015

Algorithmen für Routenplanung 11. Sitzung, Sommersemester 2015 Julian Dibbelt 01. Juni 2015

Vorlesung Datenstrukturen

Schnellste Wege Wie funktioniert ein Navi?

Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009

Algorithmen für Planare Graphen

Von Aachen nach Halle...

Zweites Theorie-Übungsblatt - Musterlösung

1 Kürzeste Pfade in Graphen

Praktikum Routenplanung Themenvorstellung & Gruppeneinteilung, Wintersemester 2015/2016 Moritz Baum, Ben Strasser, Tobias Zündorf 19.

Algorithmen für Routenplanung 5. Sitzung, Sommersemester 2013 Julian Dibbelt 6. Mai 2013

Lernmodul 7 Algorithmus von Dijkstra

Praktikum Routenplanung Vorbesprechung, Wintersemester 2014/2015 Moritz Baum, Julian Dibbelt, Ben Strasser 22. Oktober 2014

Algorithmen & Komplexität

Algorithmen II Vorlesung am

Algorithmen für Routenplanung 4. Sitzung, Sommersemester 2010 Thomas Pajor 3. Mai 2010

Effizienter Planaritätstest Vorlesung am

Schnellste Wege Wie funktioniert ein Navi?

Vorlesung Datenstrukturen

Datenstrukturen und Algorithmen (SS 2013)

Algorithmen für Routenplanung

Algorithmen für Routenplanung 13. Vorlesung, Sommersemester 2017 Tobias Zündorf 26. Juni 2017

Algorithmen für Routenplanung 10. Vorlesung, Sommersemester 2016 Ben Strasser 25. Mai 2016

Programmierkurs Python II

Schnelle und genaue Routenplanung

Algorithmen für Routenplanung

Algorithmen für Routenplanung 2. Sitzung, Sommersemester 2012 Thomas Pajor 23. April 2012

Kürzeste und Schnellste Wege

Datenstrukturen und Algorithmen

Personalisierte Routenplanung

Kürzeste-Wege-Algorithmen und Datenstrukturen

Algorithmen für Routenplanung 1. Sitzung, Sommersemester 2012 Thomas Pajor 18. April 2012

12. Der Algorithmus von Dijkstra. Informatik II für Verkehrsingenieure

Praktikum Routenplanung Vorbesprechung, Wintersemester 2016/2017 Moritz Baum, Valentin Buchhold, Ben Strasser, Tobias Zündorf 19.

Kapitel 6: Dynamic Shortest Path

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

Topological Fisheye Views for Visualizing Large Graphs

9 Minimum Spanning Trees

Kombinatorische Optimierung

Algorithmen für Routenplanung 1. Vorlesung, Sommersemester 2018 Tim Zeitz 17. April 2018

Vorlesung Datenstrukturen

Das EM-Modell. Vorlesung 3: Lubys Algorithmus. Graphenalgorithmen und lineare Algebra Hand in Hand

Algorithmen für Routenplanung 13. Sitzung, Sommersemester 2011 Reinhard Bauer, Thomas Pajor 9. Juni 2011

Algorithmen für Routenplanung 14. Vorlesung, Sommersemester 2012 Daniel Delling 18. Juni 2012

IP Tunneling und Anwendungen

Informatik II: Algorithmen und Datenstrukturen SS 2013

Algorithmen für Routenplanung

Schnelle und genaue Routenplanung

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

Transkript:

Algorithmen für Routenplanung 7. Vorlesung, Sommersemester 01 Daniel Delling MICROSOFT RESEARCH SILICON VALLEY KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Hierarchische Techniken Ideensammlung: identifiziere wichtige Knoten mit Zentralitätsmaß überspringe unwichtige Teile des Graphen

Overlay Graph Gegeben Eingabegraph G = (V, E, len) Knotenmenge V V L Berechne Berechne G L = (V L, E L, len L ), so dass Distanzen in G L wie in G

Multilevel-Overlay Graphs Gegeben Eingabegraph G = (V, E, len) Folge V := V 0 V 1... V L von Teilmengen von V. Berechne Folge G 0 = (V 0, E 0, len 0 ),..., G L = (V L, E L, len L ) von Graphen, so dass Distanzen in G i wie in G 0

Wahl der Knotenmenge Randknoten können auch beliebige Knotenmengen sein

Contraction Hierarchies Zutaten: Ordne Knoten nach Wichtigkeit r : V [0,..., n 1] Shortcut Operation Shortcut Operation (von Knoten v): entferne v 1 1 3 v für jedes Paar u, w füge Kanten (u, w) zum Graphen wenn v auf dem einzigen kürzesten Weg von u nach w liegt kann durch lokale Dijkstra Suchen von den Nachbarn berechnet werden 1 1 1

Contraction Hierarchies Vorberechnung: ordne Knoten bearbeite in der Reihenfolge shortcutten des Knoten, hinzufügen von Shortcuts (A + ) bestimme Level des Knoten erzeugt einen Graph G + = (V, A A + ) level 5 1 3 5 4 1 3 3 7 4 4 5 1 6

Contraction Hierarchies Anfrage modifizierter bidirektionaler Dijkstra folge nur Kanten zu wichtigeren Knoten konservatives Stoppkriterium jede Suche stoppt wenn Queue leer oder minkey(q) > µ level 5 s 1 3 5 4 1 3 3 7 4 4 t 5 1 6

Korrektheit Beobachtung: der kürzeste s t Weg P existiert auch in G + (wir fügen nur Kanten hinzu) aber wir suchen nur aufwärts es gibt einen wichtigsten Knoten v auf P wir müssen zeigen, dass es einen s aufwärts v abwärts t Pfad gibt verändertes Stoppkriterium: es kann v = s oder v = t sein v s p i t

Stall-On-Demand Beobachtung: Aufwärtssuchen können Knoten mit falscher Distanz scannen Heuristik versucht das durch scannen von Abwärtskanten zu verhindern diese Knoten werden deaktiviert, können aber wieder aktiviert werden reduziert Suchraum um einen Faktor 4 1 1 1 1 1 3 0 1 3 1 1 3 1 5

Datenstruktur Suchgraph: normalerweise: speichere Kanten (v, w) in den Adjacenz-Arrays von v und w für die Suche reicht es aus, die Kante nur an den Knoten min{r(v), r(w)} zu speichern durch ungerichtete Kanten negativer Speicherverbrauch möglich (!) node order v shortcut u stored at w w stored at u

Knotenordnung Wie Knoten ordnen? top-down bottom-up

Top-Down Vorgehen: bestimme alle kürzesten Wege U, die noch nicht von gewählten Knoten überdeckt sind U v : alle kürzesten Wege, die v enthalten S v : Menge der Startknoten von U v, T v der Zielknoten wähle Knoten v mit maximalem U v /( S v + T v ) aktualisiere U = U \ U v wiederhole bis U leer Diskussion n mal APSP kann auf APSP Zeit gedrückt werden sehr gute Qualität der Ordnung

Bottom-Up Vorgehen: identifiziere aktuell unwichtigsten Knoten kontrahiere den Knoten wiederhole Kriterien zum Bestimmen dieses Knotens: Differenz Hinzugefügter und Gelöschter Kanten Differenz der Originalkanten, die diese Kanten repräsentieren Level des Knoten Diskussion schnell, da alles lokale Information kann on-the-fly berechnet werden aber nur, solange der Knotengrad gering bleibt Qualität der Ordnung ist schlechter (grössere Suchräume)

Range Optimierung Idee Knotenordnung (z.b. durch bottom-up) gegeben zwei Parameter X, Y kontrahiere alle Knoten mit r(v) X bestimme alle kürzesten Wege U die nicht von Knoten mit r(v) > Y überdeckt sind ordne Knoten mit X < r(v) Y mit top-down Algorithmus Diskussion verbessert Qualität der Ordnung schnell genug bei geschickter Wahl von X und Y kann ineinader verschachtelt ausgeführt werden

Ergebnisse preprocessing query method time [h:m] space [GB] scans time [µs] MLD-3 < 0:01 0.4 6074 91.0 MLD-4 < 0:01 0.4 3897 707.0 CH 0:0 0.4 84 96.3 CH-15 0:04 0.4 31 85.0 CH-17 0:4 0.4 17 79.7 CH- 5:4 0.4 00 73.9 CH-x mit x top-down ordnung, mit Hybrid Ordnung CH etwas langsamere Vorberechnung Faktor 10 schneller als MLD bottom-up Knotenordnung gut genug

Local Queries: Reisezeiten 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 1 10 100 1000 CALT MLD 3 CH Dijkstra Rank Query Time [µs]

Local Queries: Reisedistanzen 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 1 10 100 1000 CALT MLD 3 CH Dijkstra Rank Query Time [µs]

Pfadentpackung für jeden Shortcut (u, w) eines Pfades (u, v, w), speichere Mittelknoten v an der Kante expandiere Pfade mittels Rekursion level 5 1 3 5 4 1 3 3 7 4 4 5 1 6

Zusammenfassung Knotenordnung + Shortcutting erzeugt n Overlay graphen bidirektionaler Anfragealgorithmus einfache und schnelle Vorberechnung negativer (?) Speicheroverhead Performance stark metrikabhängig hohe Beschleunigung für Reisezeiten in Produktion von vielen (?) Firmen

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: Laufzeit hängt von Labelgrösse ab wie effizient berechnen? t

Hub Labels Speichern der Labels: als Menge von Hub,Distanz Paaren Anfrage: scannen von zwei Arrays nur einige Speicherzugriffe nötig sehr hohe Lokalität L f (s) 1,0 4,1 5, 7,3 L b (t),0 6,1 7,4 8,1 9,3

Vorberechnung Idee: benutze Knotenordnung kontrahiere Knoten v berechne Labels rekursiv merge Labels der Aufwärts- Nachbarn von v dünne Label aus v Korrektheit: analog zu Korrektheit von CH Argumentation über den wichtigsten Knoten auf dem Pfad dieser ist im Vorwärtslabel von s und im Rückwärtslabel von t

Mergen von Labels Generell: L f (v) = (v,u) G +(L f (u) + (v, u)) wenn ein Hub mehrfach im resultierendem Label, behalte nur den mit minimaler Distanz Ausdünnen: manche Knoten im Label haben falschen Distanzwert können entfernt werden (analog zu stall-on-demand von CH) prunen durch HL-Queries nach Mergen

Weitere Beschleunigung globale Anfragen: benachbarte Knoten haben ähnliche Hubs der verantwortliche Hub ist wichtig idea: permutiere hub IDs so, dass wichtige hubs kleine IDs haben sind somit am Anfang des Labels partitioniere die Eingabe (wieder mal...) für jedes Paar Regionen bestimme den am wenigsten wichtigen Hub speichere dessen ID in einer Tabelle query: bestimme ID des hubs in der Tabelle L(s) 3 6 35 37 1015517 stoppe Iteration der Labels nach dieser ID beschleunigt globale Anfragen L(t) 6 8 43 45 85 Or(s, t) 10

Ergebnisse preprocessing query method time [h:m] space [GB] time [µs] MLD-3 < 0:01 0.4 91.000 CH 0:0 0.4 96.300 HL-0 0:03.5 0.700 HL-15 0:05 18.8 0.556 HL-17 0:5 18.4 0.545 HL- 5:43 16.8 0.508 HL- + Oracle 6:1 17.7 0.54 Table Lookup??? 1 08 358.7 0.056 HL-x mit x top-down ordnung, mit Hybrid Ordnung HL ist Faktor 100 schneller als CH (Speedup 10 Mio) hoher Speicherverbrauch (durch Kompression reduzierbar) nur 5 mal langsamer als ein Speicherzugriff

Lokale Queries 0 1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 0 500 1000 1500 000 index, 8/4 index, oracle, 8/4 oracle, 8/4 Dijkstra Rank Query Time [ns]

Zusammenfassung Knotenordnung definiert Labeling Beschleunigung gegenüber CH von Faktor mehr als 100 durch besser Lokalität nur 5 mal langsamer als ein Speicherzugriff schnellster Algorithmus momentan beschleunigt lokale und globale Anfragen aber Speicherverbrauch sehr hoch wird zu einem späterem Zeitpunkt noch einmal wichtig

Literatur Contraction Hierarchies: Robert Geisberger, Peter Sanders, Dominik Schultes, Christian Vetter Exact Routing in Large Road Networks Using Contraction Hierarchies In: Transportation Science, 01 HubLabels: Ittai Abraham, Daniel Delling, Andrew V. Goldberg, Renato Werneck A Hub-Based Labeling Algorithm for Shortest Paths on Road Networks In: Proceedings of the 10th International Symposium on Experimental Algorithms (SEA 11), 011 Ittai Abraham, Daniel Delling, Andrew V. Goldberg, Renato Werneck Hierarchical Hub Labelings for Shortest Paths MSR Technical Report, 01

Nächste Termine Montag, 1.5.01 (Thomas) Mittwoch, 30.5.01 (Thomas) Montag, 4.6.01 (Daniel) Mittwoch, 6.6.01 (Daniel)