Highway Hierarchien Exakte kürzeste Pfade in sehr großen Straßennetzwerken Seminar: Indizieren und Anfragen von Graphen in Datenbanken Vortragender: Andreas Wickert Übersicht 16.05.2016 Einleitung Der Dijkstra-Algorithmus ◦ ◦ ◦ ◦ Voraussetzungen Komponenten und Parameter Ablauf Beispiel ◦ ◦ ◦ ◦ ◦ Motivation Idee Konstruktion Begriffe Anfragen Highway Hierarchien Fazit Quellen Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 1 Einleitung Kürzeste Pfade finden ist ein altes Problem Wichtig für Navigationssysteme und Internet-Applikationen Route: Berlin-München? Wahrscheinlich über eine Autobahn (Abbildung aus [6]) 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 2 Lösungsansätze Lösung von Dijkstra ◦ Für Single-Source Shortest Paths Problems Besser: Highway Hierarchien von Dominik Schultes und Peter Sanders ◦ Hierarchien für Straßennetzwerke automatisch bestimmen 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 3 Der Dijkstra-Algorithmus –Voraussetzungen Graph mit den Eigenschaften: ◦ Gerichtet ◦ Gewichtet ◦ Keine negativ-gewichteten Kanten 16.05.2016 Berechnung kürzester Pfade zu allen von einem Startknoten s0 aus erreichbaren Knoten Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 4 Dijkstra – Komponenten und Parameter Min-Prioritäts-Warteschlange Q ◦ Enthält zu Beginn alle Knoten des Graphen ◦ s0 hat Wert = 0 (Entfernung von s0 zu s0) ◦ Alle anderen Knoten haben Wert Menge von Knoten: S ◦ Nachbarn der Knoten in dieser Menge sind besucht worden Parameter für Algorithmus: ◦ Graph ◦ s0 ◦ Gewichtsfunktion w 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 5 Dijkstra – Pseudocode DIJKSTRA(G,w,s0) //G=Graph,w=Ziel,s0=Start (1) Initialisiere Suche (G, s0) (2) Menge S ist leer (3) Alle Knoten von G in die Queue Q einfügen (4) WHILE Q nicht leer (5) Extract-Min(Q) //liefert Knoten u (6) Füge u zu S hinzu (7) FOR jeden Knoten v aus der Adj[u]* (8) RELAX(u,v,w) *Adj[u] = alle Knoten, die in der Adjazenzliste bei u eingetragen sind 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 6 Dijkstra – Laufzeit Alle Knoten werden am Anfang in die Queue eingefügt: Insert = O(V) Die WHILE-Schleife wird ebenfalls nur |V|-mal durchlaufen Der worst case bei Array-Datenstruktur für Extract-Min benötigt O(V) Die FOR-Schleife wird für jede Kante einmal durchlaufen (|E|) Totale Laufzeit: O(V2 + E) = O(V2) 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 7 Dijkstra – Beispiel – Schritt 1 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 8 Dijkstra – Beispiel – Schritt 2 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 9 Dijkstra – Beispiel – Schritt 3 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 10 Dijkstra – Beispiel – Schritt 4 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 11 Dijkstra – Beispiel – Schritt 5 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 12 Dijkstra – Beispiel – Schritt 6 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 13 Dijkstra – Beispiel – Schritt 7 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 14 Dijkstra – Beispiel – Schritt 8 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 15 Dijkstra – Beispiel – Schritt 9 ... 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 16 BESSER: HIGHWAY HIERARCHIEN 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 17 Motivation Gute Algorithmen sind bisher entweder sehr rechenintensiv oder schnell und ungenau Ziel: Suche beschleunigen und Qualität erhöhen 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 18 Idee Straßen in Hierarchien einteilen: ◦ ◦ ◦ ◦ ◦ ◦ 16.05.2016 Autobahn (sehr hohe Priorität) Schnellstraße Bundesstraße ... Spielstraße Feldweg (sehr geringe Priorität) Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 19 Naive Idee Suche nach einer sinnvollen/ angemessenen Autobahn Fahre auf der Autobahn bis zu einer dem Zielort nahen Ausfahrt Suche das Ziel ab der Ausfahrt 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 20 Vor- und Nachteile dieser Taktik Pro: ◦ Schneller auf der Autobahn um Städte herum ◦ Straßen mit geringerer Priorität können bei der Suche ignoriert werden Kontra: ◦ Eventuell werden Abkürzungen übersehen bzw. außer acht gelassen (durch Ignorieren) ◦ Manchmal ist man auf einer Bundesstraße effektiv schneller als auf einer Autobahn 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 21 Highway Hierarchien – Ansatz automatische Bestimmung der Hierarchien nicht Bezeichnung der Straße als Grundlage, sondern die tatsächlich kürzesten bzw. schnellsten Wege 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 22 Highway Hierarchien – Konstruktion Lokale Suche für alle Knoten Einschränkung der Suche durch vorher festgelegten Parameter H (Nachbarschaft) Ausdünnen: ◦ entferne isolierte Knoten ◦ Pfade, dessen Knoten vi nur deg(vi)=2 haben, werden als eine Kante betrachtet (Linien) Ausgedünnter Graph bildet neues Level Lokale Suche auf neuem Level... 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 23 Beispiel – H-Nachbarschaft für H=5 (Abbildung aus [2]) 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 24 Beispiel – Linie 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 25 Begriffe – Komponente Formal im Paper [2] Komponenten können nicht über horizontale Kanten gewechselt werden Beispiele (von [6]): A100 in Berlin A44 (Aachen-Kassel) 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 26 Begriffe – horizotale/vertikale Kanten Horizontale Kanten ◦ Verbinden Knoten miteinander, die auf einem Level und in einer Komponente liegen ◦ Eine horizontale Kante kann auf mehreren Levels enthalten sein Vertikale Kanten ◦ Verbinden zwei oder mehrere Instanzen des selben Knotens auf unterschiedlichen Levels ◦ Haben Gewicht von 0 ◦ Ermöglichen den Wechsel zwischen Levels 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 27 Anfragen Ähnlich einer bidirektionalen Dijkstra-Suche Suche hält erst, wenn beide Suchen terminiert sind Vergleich der Fronten-Treffer und Auswahl des tatsächlich kürzesten bzw. schnellsten Pfades Start- bzw. Zielknoten liegen jeweils auf Level 0 Entweder Verwendung horizontaler oder vertikaler Kanten ◦ Dabei Favorisierung vertikaler Kanten, die auf höhere Level führen 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 28 Anfragen – Restriktionen 1. 2. Nutze keine horizontale Kante, wenn diese die Nachbarschaft des Knotens verlässt. Eine Komponente wird nie über eine horizontale Kante erreicht. Anfrage-Beispiel: Siehe Applet [5] 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 29 Fazit Suchgeschwindigkeit gesteigert durch ausgedünnte (nahezu planare) Netzwerke Besseres Ergebnis aufgrund automatisch erzeugter Hierarchie Aufwändiges Preprocessing zahlt sich später aus Kaum Unterschied in der Suchzeit zwischen Anfragen mit großem Abstand und Anfragen mit kleinem 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 30 Quellen 1. Cormen, Leiserson, Riverst, and Stein. Dijkstra’s Algorithm. The MIT Press, 2nd ed., 4th print. edition, 2003. 2. D. Schultes. Fast and exact shortest path queries using highway hierarchies. Master’s thesis, Universität des Saarlandes, July 2005, http://algo2.iti.uka.de/schultes/hwy/hwyHierarchies.pdf. 3. Peter Sanders and Dominik Schultes. Highway hierarchies hasten exact shortest path queries. European Symposium on Algorithms, pages 568– 579, 2005. 4. Peter Sanders and Dominik Schultes. Engineering Fast Route Planning Algorithms. Springer-Verlag Berlin Heidelberg, http://algo2.iti.uka.de/schultes/hwy/weaOverview.pdf, 2007. 5. Dominik Schultes. Highway hierarchies demo - (2008-01-06) – http://algo2.iti.unikarlsruhe.de/schultes/hwy/demo/hhclientde.jar. 6. Google Maps, http://maps.google.de (2008-02-16). 16.05.2016 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert 31