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

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

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

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

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

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

Algorithmen für Routenplanung Vorlesung 10

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

Algorithmen für Routenplanung Vorlesung 11

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

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

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

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

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

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

Algorithmen für Routenplanung 11. Vorlesung, Sommersemester 2016 Ben Strasser 30. Mai 2016

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

Algorithmen für Routenplanung Vorlesung 6

Algorithmen für Routenplanung Vorlesung 2

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

Algorithmen für Routenplanung Vorlesung 4

Algorithmen für Routenplanung Vorlesung 7

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

Algorithmen für Routenplanung Vorlesung 3

Algorithmen für Routenplanung

Viertes Übungsblatt - Musterlösung

Algorithmen für Routenplanung

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

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

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

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

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

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

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

Algorithmen für Routenplanung Vorlesung 12

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

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

Algorithmen für Routenplanung Vorlesung 5

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

Algorithmen für Routenplanung 1. Sitzung, Sommersemester 2010 Thomas Pajor 12. April 2010

Algorithmen für Routenplanung 15. Vorlesung, Sommersemester 2017 Tobias Zündorf 5. Juli 2017

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

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

Route Planning in Road Networks

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

Praktikum Routenplanung

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

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

Algorithmen für Routenplanung 2. Vorlesung, Sommersemester 2018 Tim Zeitz 23. April 2018

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

Schnelle und genaue Routenplanung

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

Algorithmen für Routenplanung

Algorithmen für Routenplanung 1. Vorlesung, Sommersemester 2017 Tobias Zündorf 26. April 2017

Erinnerung VL

Algorithmen für Routenplanung Vorlesung 1

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

Praktikum Routenplanung

Algorithmen für Routenplanung

Algorithmen II Vorlesung am

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

Aufgaben zur Klausurvorbereitung

Effizienter Planaritätstest Vorlesung am

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

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

Personalisierte Routenplanung

Algorithmen und Datenstrukturen 2

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

Schnelle und genaue Routenplanung

Algorithmen I - Tutorium 28 Nr. 9

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

Algorithmen für Planare Graphen

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

Fortgeschrittene Routenplanung. Transportnetzen. Advanced Route Planning in Transportation Networks

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

Algorithmen für Routenplanung

Algorithmen II Vorlesung am

Algorithmen für Routenplanung

Kap. 6.6: Kürzeste Wege

Algorithmen für Routenplanung

Algorithmische Methoden zur Netzwerkanalyse

Kap. 6.6: Kürzeste Wege

Algorithmische Methoden für schwere Optimierungsprobleme

Übung 2 Algorithmen II

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

Genauer Hochleistungs-Routenplaner

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

Lernmodul 7 Algorithmus von Dijkstra

Kürzeste und Schnellste Wege

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Algorithmen für Routenplanung 1. Vorlesung, Sommersemester 2015 Andreas Gemsa 13. April 2015

Algorithmen für Routenplanung

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

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Vorlesung Datenstrukturen

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Praktikum Routenplanung Vorbesprechung, Wintersemester 2012/2013 Moritz Baum, Julian Dibbelt, Thomas Pajor, Ben Strasser 17.

Transkript:

Algorithmen für Routenplanung 11. Sitzung, Sommersemester 2015 Julian Dibbelt 01. Juni 2015 INSTITUT FÜR THEORETISCHE INFORMATIK ALGORITHMIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Diskussion Stoff bisher Problemtransformation auf Graph + Dijkstra Vorberechnungstechniken (point-to-point) Weitere Anfrageszenarien: one-to-all, many-to-many, POIs Turn-Costs Alternativrouten (fast optimal, hinreichend unterschiedlich) Folie 2 01. Juni 2015

Diskussion Stoff bisher Problemtransformation auf Graph + Dijkstra Vorberechnungstechniken (point-to-point) Weitere Anfrageszenarien: one-to-all, many-to-many, POIs Turn-Costs Alternativrouten (fast optimal, hinreichend unterschiedlich) Was fehlt noch für Einsatz in Produktion? Folie 2 01. Juni 2015

Diskussion Stoff bisher Problemtransformation auf Graph + Dijkstra Vorberechnungstechniken (point-to-point) Weitere Anfrageszenarien: one-to-all, many-to-many, POIs Turn-Costs Alternativrouten (fast optimal, hinreichend unterschiedlich) Was fehlt noch für Einsatz in Produktion? Berücksichtigung von (aktuellen) Staus Implementation auf Mobilgeräten Berücksichtigung von historischem Wissen über Staus Was ist eigentlich mit Bus+Bahn? Folie 2 01. Juni 2015

Dynamische Szenarien Szenario: Unfall auf einer Straße Reisezeit ändert sich auf dieser Straße berechne schnellsten Weg bezüglich der aktualisierten Reisezeiten Folie 3 01. Juni 2015

Herausforderung Hauptproblem: Kantengewichte ändern sich Vorberechnung basiert auf ursprünglichen Kantengewichten komplette Vorberechnung für jeden Stau wenig sinnvoll Folie 4 01. Juni 2015

Herausforderung Hauptproblem: Kantengewichte ändern sich Vorberechnung basiert auf ursprünglichen Kantengewichten komplette Vorberechnung für jeden Stau wenig sinnvoll Server szenario: identifiziere den Teil der beeinträchtigten Vorberechnung aktualisiere diesen Teil Folie 4 01. Juni 2015

Herausforderung Hauptproblem: Kantengewichte ändern sich Vorberechnung basiert auf ursprünglichen Kantengewichten komplette Vorberechnung für jeden Stau wenig sinnvoll Server szenario: identifiziere den Teil der beeinträchtigten Vorberechnung aktualisiere diesen Teil Mobiles Szenario: robuste Vorberechnung immer noch korrekt, wenn Kantengewichte sich erhöhen dadurch eventuell Anfragen langsamer oder passe Query an, so dass Vorberechnung nicht aktualisiert werden muss Folie 4 01. Juni 2015

Landmarken [Goldberg, Harrelson 05] l 1 Vorberechnung: wähle eine Hand voll ( 16) Knoten als Landmarken berechne Abstände von und zu allen Landmarken Anfrage: benutze Landmarken und Dreiecksungleichung um eine untere Schranke für den Abstand zum Ziel zu bestimmen u t d(s, t) d(l 1, t) d(l 1, s) d(s, t) d(s, L 2 ) d(t, L 2 ) verändert Reihenfolge der besuchten Knoten l 2 Folie 5 01. Juni 2015

Serverszenario Beobachtung: Landmarkenwahl ist Heuristik, also nicht ändern Distanzen von und zu Landmarken sind nicht korrekt Vorgehen: aktualisiere diese Distanzen benutze dafür dynamisierte Dijkstra-Variante, die nur betroffene Teilbäume (jeder Landmarke) neuberechnet dann Anfragen korrekt und (in etwa) so schnell wie bei kompletter neuer Vorberechnung Folie 6 01. Juni 2015

Mobiles Szenario Beobachtung: Korrektheit von ALT basiert darauf, dass reduzierten Kantengewichte größer gleich 0 sind len π (u, v) = len(u, v) π(u) + π(v) 0 Folie 7 01. Juni 2015

Mobiles Szenario Beobachtung: Korrektheit von ALT basiert darauf, dass reduzierten Kantengewichte größer gleich 0 sind len π (u, v) = len(u, v) π(u) + π(v) 0 durch Erhöhen der Kantengewichte wird dies nicht verletzt durch Staus können Reisezeiten nicht unter Initialwert fallen Folie 7 01. Juni 2015

Mobiles Szenario Beobachtung: Korrektheit von ALT basiert darauf, dass reduzierten Kantengewichte größer gleich 0 sind len π (u, v) = len(u, v) π(u) + π(v) 0 durch Erhöhen der Kantengewichte wird dies nicht verletzt durch Staus können Reisezeiten nicht unter Initialwert fallen Idee: Vorberechnung auf staufreiem Graphen Suchanfragen ohne Aktualisierung korrekt aber eventuell langsamere Anfragezeiten Folie 7 01. Juni 2015

Suchraumvergrößerung durch Stau (mobiles Szenario)

Suchraumvergrößerung durch Stau (mobiles Szenario)

Aktualisierung der Vorberechnung Aktualisieren von 32 kürzeste-wege Bäumen für 16 Landmarken: (Serverszenario) Edge Category Update Time [ms] random motorway national road local road urban street 0.01 0.1 1 10 100 10 3 10 4 low pert. high pert. Folie 9 01. Juni 2015

Mobiles Szenario: Typ des Updates Zufallsanfragen nach 1 000 updates erhöhe Kantengewicht um x2 (x10 in Klammern) verschiedene Straßenkategorien affected 16 landmarks 32 landmarks road type queries search space search space no updates 0.0 % 74 699 (74 699) 40 945 (40 945) all 7.5 % 74 700 (77 759) 41 044 (43 919) urban 0.8 % 74 796 (74 859) 40 996 (41 120) local 1.5 % 74 659 (74 669) 40 949 (40 995) national 28.1 % 74 920 (75 777) 41 251 (42 279) motorway 95.3 % 97 249 (265 472) 59 550 (224 268) Beobachtung: nur Autobahnen haben Einfluß auf Suchraumgröße Folie 10 01. Juni 2015

Mobiles Szenario: Anzahl Updates Zufallsanfragen nach Autobahn updates (x2, x10 in Klammern) verschiedene Anzahl Updates affected 16 landmarks 32 landmarks updates queries search space search space 0 0.0 % 74 699 (74 699) 40 945 (40 945) 100 39.9 % 75 691 (91 610) 41 725 (56 349) 200 64.7 % 78 533 (107 084) 44 220 (69 906) 500 87.1 % 86 284 (165 022) 50 007 (124 712) 1 000 95.3 % 97 249 (265 472) 59 550 (224 268) 2 000 97.8 % 154 112 (572 961) 115 111 (531 801) 5 000 99.1 % 320 624 (1 286 317) 279 758 (1 247 628) 10 000 99.5 % 595 740 (2 048 455) 553 590 (1 991 297) Beobachtung: 1000 gut verkraftbar Folie 11 01. Juni 2015

Customizable Route Planning Idee: partitioniere Graphen Berechne Distanzen zwischen Randknoten in jeder Zelle Overlay Graph: Randknoten Cliquen in jeder Zelle Schnittkanten s t Suchgraph: Start- und Zielzelle......plus Overlaygraph. (bidirektionaler) Dijkstra Optimierung: multiple Level Folie 12 01. Juni 2015

Update der Vorberechnung Beobachtung: Shortcuts (Cliquenkanten) können invalidiert werden Shortcuts repräsentieren Pfade innerhalb der Zelle Update: identifiziere Zelle in der die aktualisierte Kante liegt für jedes Level der Multi-Level Partition wiederhole (bottom-up) Preprocessing für diese Zellen dauert weniger als 10 ms Folie 13 01. Juni 2015

Mobiles Szenario Beobachtung: Stau-Update invalidiert Zellen-Overlay erhöht meistens nur einige Overlay-Gewichte restliche Overlay-Kanten bleiben korrekt Query: Normale Query, aber steigt bei invalidierten Zellen direkt ab (vgl Path Unpacking) jeder Abstieg erhöht Suchraum um ca. 50% Optimierung: markiere invalidierte Zellen (ohne Overlay zu aktualisieren) führe Anfrage aus (ohne Abstieg) wenn der Pfad nicht die aktualiesierte Kante enhält fertig sonst Suche mit Abstieg Folie 14 01. Juni 2015

Contraction Hierarchies preprocessing: ordne Knoten nach Wichtigkeit bearbeite in der Reihenfolge füge Shortcuts hinzu Levelzuordnung (ca. 150 in Strassennetzwerken) level 5 2 1 3 5 4 1 3 2 3 7 4 4 2 5 1 6 Folie 15 01. Juni 2015

Update der Vorberechnung I Beobachtung: Knotenordnung ist Heuristik also behalte Ordnung bei geänderte Kante (u, v) kann zu Shortcuts beitragen aber auch Teil von Zeugensuchen gewesen sein Frage: welche Knoten müssen neu kontrahiert werden (mit Zeugensuche) Folie 16 01. Juni 2015

Update der Vorberechnung II Idee: wiederhole Kontraktion für Knotenmenge U füge alle aufwärts erreichbaren Knoten der geänderten Kante (u, v) zu U speicher für jede Kante e auf welchen Zeugensuchen sie benutzt wurde. Die zugehörigen Knoten speicher in A e. Kann einfach während Vorberechnung gespeichert werden. füge alle aufwärts erreichbaren Knoten von A e (und aller A f für alle Shortcuts f, die e enthalten) zu U wiederhole Kontraktion für alle Knoten U bezüglich Originalordnung Beobachtung: erhöht Speicherverbrauch von CH deutlich Updatezeit abhängig von Art der Kante Folie 17 01. Juni 2015

Mobiles Szenario Beobachtung: Kontraktion von Knoten zu teuer Folie 18 01. Juni 2015

Mobiles Szenario Beobachtung: Kontraktion von Knoten zu teuer Idee: identiziere Knotenmenge U wie zuvor erlaube Abstieg an Kanten (u, v) mit u, v U iterativer Ansatz (wie bei CRP) auch hier möglich Folie 18 01. Juni 2015

Weitere Techniken Arc-Flags: Aktualisierung aller Bäume nötig momentan keine vernünftige Update-Routine vorhanden Customizable Contraction Hierarchies wie CRP. Transit-Node Routing schwierig Tabellen und Access-Nodes können sich ändern HubLabels halte Ordnung vor. nach Update: Aktualisierung aller Labels bisher nicht gelöst: nicht alle Labels müssten aktualisiert werden Folie 19 01. Juni 2015

Zusammenfassung Stau erhöht Kantengewicht temporär Anpassung Landmarken, CRP, CCH trivial Anpassung CH machbar schwierig bei anderen Techniken Anmerkungen Mobil: nur nahe Staus beachten? viele Staus vorhersehbar Folie 20 01. Juni 2015

Diskussion Wie historische Staudaten einbeziehen? Folie 21 01. Juni 2015

Zeitabhängiges Szenario Szenario: Historische Daten für Verkehrssituation verfügbar Verkehrssituation vorhersagbar Berechne schnellsten Weg bezüglich der erwarteten Verkehrssituation (zu einem gegebenen Startzeitpunkt) Folie 22 01. Juni 2015

Herausforderung Hauptproblem: Kürzester Weg hängt von Abfahrtszeitpunkt ab Eingabegröße steigt massiv an Folie 23 01. Juni 2015

Herausforderung Hauptproblem: Kürzester Weg hängt von Abfahrtszeitpunkt ab Eingabegröße steigt massiv an Vorgehen: Modellierung Anpassung Dijkstra Anpassung Beschleunigungstechniken Folie 23 01. Juni 2015

Herausforderung Hauptproblem: Kürzester Weg hängt von Abfahrtszeitpunkt ab Eingabegröße steigt massiv an Vorgehen: Modellierung Anpassung Dijkstra Anpassung Beschleunigungstechniken Heute: Modellierung und Dijkstra Folie 23 01. Juni 2015

Zeitabhängige Straßennetzwerke Eingabe: Durchschnittliche Reisezeit zu bestimmten Zeitpunkten Jeden Wochentag verschieden Sonderfälle: Urlaubszeit Somit an jeder Kante: Periodische stückweise lineare Funktion Definiert durch Stützpunkte Interpoliere linear zwischen Stützpunkten travel time departure Folie 24 01. Juni 2015

FIFO-Eigenschaft Definition Sei f : R + 0 R+ 0 eine Funktion. f erfüllt die FIFO-Eigenschaft, wenn für jedes ε > 0 und alle τ R + 0 gilt, dass f (τ) ε + f (τ + ε). Diskussion Interpretation: Warten/Später ankommen lohnt sich nie Kürzeste Wege auf Graphen mit non-fifo Funktionen zu finden ist NP-schwer. (wenn warten an Knoten nicht erlaubt ist) Sicherstellen, dass Funktionen FIFO-Eigenschaft erfüllen. Folie 25 01. Juni 2015

Diskussion Eigenschaften: Topologie ändert sich nicht Kanten gemischt zeitabhängig und konstant variable (!) Anzahl Interpolationspunkte pro Kante Folie 26 01. Juni 2015

Diskussion Eigenschaften: Topologie ändert sich nicht Kanten gemischt zeitabhängig und konstant variable (!) Anzahl Interpolationspunkte pro Kante Beobachtungen: FIFO gilt auf allen Kanten später wichtig Folie 26 01. Juni 2015

Datenstruktur 8:00-2 9:00-5 10:00-2 1 2 6:00-3 8:00-5 12:00-4 18:00-5 20:00-3 0 2 1 1 3 8:00-1 10:00-4 12:00-1 Folie 27 01. Juni 2015

Datenstruktur 8:00-2 9:00-5 10:00-2 1 2 firstedge targetnode firstpoint 0 2 3 4 6 1 3 2 3 2 0 0 5 6 9 12 13 14 6:00-3 8:00-5 12:00-4 18:00-5 20:00-3 0 2 1 1 3 8:00-1 10:00-4 12:00-1 time weight 6 8 12 18 20 3 5 4 5 3 0 2 8 9 10 2 5 2 8 10 12 1 4 1 0 0 1 1 Folie 27 01. Juni 2015

Datenstruktur sourcenode lowerbound 3 1 0 3 1 2 3 1 0 2 2 1 8:00-2 9:00-5 10:00-2 1 2 firstinedge 0 1 2 4 6 firstoutedge 0 2 3 4 6 targetnode 1 3 2 3 2 0 firstpoint 0 5 6 9 12 13 14 6:00-3 8:00-5 12:00-4 18:00-5 20:00-3 0 2 1 1 3 8:00-1 10:00-4 12:00-1 time weight 6 8 12 18 20 3 5 4 5 3 0 2 8 9 10 2 5 2 8 10 12 1 4 1 0 0 1 1 Folie 27 01. Juni 2015

Anfrageszenarien Zeit-Anfrage: finde kürzesten Weg für Abfahrtszeit τ analog zu Dijkstra? Folie 28 01. Juni 2015

Anfrageszenarien Zeit-Anfrage: finde kürzesten Weg für Abfahrtszeit τ analog zu Dijkstra? Profil-Anfrage: finde kürzesten Weg für alle Abfahrtszeitpunkte analog zu Dijkstra? Folie 28 01. Juni 2015

Zeit-Anfragen Time-Dijkstra(G = (V, E),s,τ) 1 d τ [s] = 0 2 Q.clear(), Q.add(s, 0) 3 while!q.empty() do 4 u Q.deleteMin() 5 for all edges e = (u, v) E do 6 if d τ [u] + len(e, τ + d τ [u]) < d τ [v] then 7 d τ [v] d τ [u] + len(e, τ + d τ [u]) 8 p τ [v] u 10 9 if v Q then Q.decreaseKey(v, d τ [v]) 11 else Q.insert(v, d τ [v]) Folie 29 01. Juni 2015

Diskussion Zeit-Anfragen Beobachtung: Nur ein Unterschied zu Dijkstra Auswertung der Kanten Folie 30 01. Juni 2015

Diskussion Zeit-Anfragen Beobachtung: Nur ein Unterschied zu Dijkstra Auswertung der Kanten non-fifo Netzwerke: Im Kreis fahren kann sich lohnen NP-schwer (wenn warten an Knoten nicht erlaubt ist) Transportnetzwerke sind FIFO modellierbar (notfalls Multikanten) Folie 30 01. Juni 2015

Profil-Anfragen Profile-Search(G = (V, E),s) 1 d [s] = 0 2 Q.clear(), Q.add(s, 0) 3 while!q.empty() do 4 u Q.deleteMin() 5 for all edges e = (u, v) E do 6 if d [u] len(e) d [v] then 7 d [v] min(d [u] len(e), d [v]) 8 if v Q then Q.decreaseKey(v, d[v]) 9 10 else Q.insert(v, d[v]) Folie 31 01. Juni 2015

Diskussion Profile-Anfragen Beobachtungen: Operationen auf Funktionen Priorität im Prinzip frei wählbar (d[u] ist das Minimum der Funktion d [u]) Knoten können mehrfach besucht werden label-correcting Herausforderungen: Wie effizient berechnen (Linken)? Wie effizient Minimum bilden? Folie 32 01. Juni 2015

Operationen Funktion gegeben durch: Menge von Interpolationspunkten I f := {(t f 1, w f 1 ),..., (t f k, w f k )} 3 Operationen notwendig: Auswertung Linken Minimumsbildung Folie 33 01. Juni 2015

Auswertung Evaluation von f (τ): Suche Punkte mit t i τ und t i+1 τ dann Evaluation durch travel time f (τ) = w i + (τ t i ) wi+1 w i t i+1 t i departure Folie 34 01. Juni 2015

Auswertung Evaluation von f (τ): Suche Punkte mit t i τ und t i+1 τ dann Evaluation durch travel time f (τ) = w i + (τ t i ) wi+1 w i t i+1 t i departure Problem: Finden von t i und t i+1 Theoretisch: Lineare Suche: O( I ), I = Anzahl Interpolationspunkte Binäre Suche: O(log 2 I ) Praktisch: I < 30 lineare Suche Sonst: Lineare Suche mit Startpunkt τ Π I wobei Π die Periodendauer ist Folie 34 01. Juni 2015

Linken Definition Seien f : R + 0 R+ 0 und g : R+ 0 zwei Funktionen die die FIFO-Eigenschaft erfüllen. Die Linkoperation f g ist dann definiert durch f g := f + g (id +f ) Oder (f g)(τ) := f (τ) + g(τ + f (τ)) Folie 35 01. Juni 2015

Linken Linken zweier Funktionen f und g 32 u 7:00 8:00 v w 16 12 7:00 8:00 16 11 7:00 8:00 Folie 36 01. Juni 2015

Linken Linken zweier Funktionen f und g 32 u 7:00 8:00 v w 16 12 7:00 8:00 16 11 7:00 8:00 Folie 36 01. Juni 2015

Linken Linken zweier Funktionen f und g f g enthält auf jeden Fall { ( t f 1, w f 1 + g(t f 1 + w f 1 )),..., ( t f l, w f l + g(t f l + w f l )) } 32 24 7:00 8:00 u v w 16 12 7:00 8:00 16 11 7:00 7:12 8:00 Folie 36 01. Juni 2015

Linken Linken zweier Funktionen f und g f g enthält auf jeden Fall { ( t f 1, w f 1 + g(t f 1 + w f 1 )),..., ( t f l, w f l + g(t f l + w f l )) } 32 24 7:00 8:00 u v w 16 12 7:00 8:00 16 11 7:00 8:00 8:16 Folie 36 01. Juni 2015

Linken Linken zweier Funktionen f und g f g enthält auf jeden Fall { ( t f 1, w f 1 + g(t f 1 + w f 1 )),..., ( t f l, w f l + g(t f l + w f l )) } 32 24 7:00 8:00 u v w 16 12 7:00 8:00 16 11 7:00 8:00 8:16 Folie 36 01. Juni 2015

Linken Linken zweier Funktionen f und g f g enthält auf jeden Fall { ( t f 1, w f 1 + g(t f 1 + w f 1 )),..., ( t f l, w f l + g(t f l + w f l )) } 32 24 7:00 7:45 8:00 u v w 16 12 7:00 7:45 8:00 16 11 7:00 8:00 8:16 Folie 36 01. Juni 2015

Linken Linken zweier Funktionen f und g f g enthält auf jeden Fall { ( t1 f, w 1 f + g(t 1 f + w 1 f )),..., ( tl f, w l f + g(tl f + wl f )) } Zusätzliche Interpolationspunkte an t 1 j mit f (t 1 j ) + t 1 j = t g j 32 24 u 7:00 7:45 8:00 v w 16 12 7:00 8:00 16 11 7:00 8:00 8:16 Folie 36 01. Juni 2015

Linken Linken zweier Funktionen f und g f g enthält auf jeden Fall { ( t1 f, w 1 f + g(t 1 f + w 1 f )),..., ( tl f, w l f + g(tl f + wl f )) } Zusätzliche Interpolationspunkte an t 1 j mit f (t 1 j ) + t 1 j = t g j Füge (t 1 j, f (t 1 j ) + w g j ) für alle Punkte von g zu f g 32 24 u 7:00 7:45 8:00 v w 16 12 7:00 8:00 16 11 7:00 8:00 8:16 Folie 36 01. Juni 2015

Linken Linken zweier Funktionen f und g f g enthält auf jeden Fall { ( t1 f, w 1 f + g(t 1 f + w 1 f )),..., ( tl f, w l f + g(tl f + wl f )) } Zusätzliche Interpolationspunkte an t 1 j mit f (t 1 j ) + t 1 j = t g j Füge (t 1 j, f (t 1 j ) + w g j ) für alle Punkte von g zu f g Durch linearen Sweeping- Algorithmus implementierbar u 32 24 7:00 7:45 8:00 v w 16 12 7:00 8:00 16 11 7:00 8:00 8:16 Folie 36 01. Juni 2015

Diskussion Linken Laufzeit Sweep Algorithmus O( I f + I g ) Zum Vergleich: Zeitunabhängig O(1) Folie 37 01. Juni 2015

Diskussion Linken Laufzeit Sweep Algorithmus O( I f + I g ) Zum Vergleich: Zeitunabhängig O(1) Speicherverbrauch Gelinkte Funktion hat I f + I g Interpolationspunkte Folie 37 01. Juni 2015

Diskussion Linken Laufzeit Sweep Algorithmus O( I f + I g ) Zum Vergleich: Zeitunabhängig O(1) Speicherverbrauch Gelinkte Funktion hat I f + I g Interpolationspunkte Problem: Während Profilsuche kann ein Pfad mehreren Tausend Kanten entsprechen Folie 37 01. Juni 2015

Diskussion Linken Laufzeit Sweep Algorithmus O( I f + I g ) Zum Vergleich: Zeitunabhängig O(1) Speicherverbrauch Gelinkte Funktion hat I f + I g Interpolationspunkte Problem: Während Profilsuche kann ein Pfad mehreren Tausend Kanten entsprechen Shortcuts... Folie 37 01. Juni 2015

Merge von Funktionen Minimum zweier Funktionen f und g Für alle (ti f, w i f f ): behalte Punkt, wenn wi < g(ti f ) Für alle (t g j, w g j ): behalte Punkt, wenn w g j < f (t g j ) Schnittpunkte müssen ebenfalls eingefügt werden travel time departure time Folie 38 01. Juni 2015

Merge von Funktionen Minimum zweier Funktionen f und g Für alle (ti f, w i f f ): behalte Punkt, wenn wi < g(ti f ) Für alle (t g j, w g j ): behalte Punkt, wenn w g j < f (t g j ) Schnittpunkte müssen ebenfalls eingefügt werden Vorgehen: Linearer sweep über die Stützstellen Evaluiere, welcher Abschnitt oben Checke ob Schnittpunkt existiert Vorsicht bei der Numerik travel time departure time Folie 38 01. Juni 2015

Diskussion Merge Laufzeit Sweep Algorithmus O( I f + I g ) Zum Vergleich: Zeitunabhängig: O(1) Folie 39 01. Juni 2015

Diskussion Merge Laufzeit Sweep Algorithmus O( I f + I g ) Zum Vergleich: Zeitunabhängig: O(1) Speicherverbrauch Minimum-Funktion kann mehr als I f + I g Interpolationspunkte enthalten Folie 39 01. Juni 2015

Diskussion Merge Laufzeit Sweep Algorithmus O( I f + I g ) Zum Vergleich: Zeitunabhängig: O(1) Speicherverbrauch Minimum-Funktion kann mehr als I f + I g Interpolationspunkte enthalten Problem: Während Profilsuche werden Funktionen gemergt Laufzeit der Profilsuchen wird durch diese Operationen (link + merge) dominiert Folie 39 01. Juni 2015

Eingabe Netzwerk Deutschland V 4.7 Mio., E 10.8 Mio. 5 Verkehrszenarien: Montag: 8% Kanten zeitabhängig Dienstag - Donnerstag: 8% Freitag: 7% Samstag: 5% Sonntag: 3% Folie 40 01. Juni 2015

Zeitanfragen #delete mins slow-down time [ms] slow-down kein 2,239,500 0.00% 1219.4 0.00% Montag 2,377,830 6.18% 1553.5 27.40% DiDo 2,305,440 2.94% 1502.9 23.25% Freitag 2,340,360 4.50% 1517.2 24.42% Samstag 2,329,250 4.01% 1470.4 20.59% Sonntag 2,348,470 4.87% 1464.4 20.09% Beobachtung: kaum Veränderung in Suchraum Anfragen etwas langsamer durch Auswertung Folie 41 01. Juni 2015

Profilanfragen Beobachtung: Nicht durchführbar auf Europa-Instanz durch zu großen Speicherbedarf (> 32 GiB RAM) Extrapoliert: Suchraum steigt um ca. 10% (das ist OK) Suchzeiten um einen Faktor von bis zu 2 500 über Dijkstra (Stunden!) inpraktikabel Folie 42 01. Juni 2015

Zusammenfassung Zeitabhängige Netzwerke (Basics) Funktionen statt Konstanten an Kanten Operationen werden teurer I = Anzahl Interpolationspunkte O(log I ) für Auswertung O( I f + I g ) für Linken und Minimum Speicherverbrauch explodiert Zeitanfragen: Normaler Dijkstra Kaum langsamer (lediglich Auswertung) Profilanfragen nicht zu handhaben Folie 43 01. Juni 2015

Nächste Termine Montag, 08.06.2015 Montag, 15.06.2014 Folie 44 01. Juni 2015