320 likes | 442 Views
Highway Hierarchien. Exakte kürzeste Pfade in sehr großen Straßennetzwerken. Seminar: Indizieren und Anfragen von Graphen in Datenbanken Vortragender: Andreas Wickert. Übersicht. Einleitung Der Dijkstra-Algorithmus Voraussetzungen Komponenten und Parameter Ablauf Beispiel
E N D
Highway Hierarchien Exakte kürzeste Pfade in sehr großen Straßennetzwerken Seminar: Indizieren und Anfragen von Graphen in Datenbanken Vortragender: Andreas Wickert
Übersicht • Einleitung • Der Dijkstra-Algorithmus • Voraussetzungen • Komponenten und Parameter • Ablauf • Beispiel • Highway Hierarchien • Motivation • Idee • Konstruktion • Begriffe • Anfragen • Fazit • Quellen Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
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]) Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
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 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Der Dijkstra-Algorithmus –Voraussetzungen • Graph mit den Eigenschaften: • Gerichtet • Gewichtet • Keine negativ-gewichteten Kanten • Berechnung kürzester Pfade zu allen von einem Startknoten s0 aus erreichbaren Knoten Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
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 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Dijkstra – Pseudocode DIJKSTRA(G,w,s0) //G=Graph,w=Ziel,s0=Start • Initialisiere Suche (G, s0) • Menge S ist leer • Alle Knoten von G in die Queue Q einfügen • WHILE Q nicht leer • Extract-Min(Q)//liefert Knoten u • Füge u zu S hinzu • FOR jeden Knoten v aus der Adj[u]* • RELAX(u,v,w) *Adj[u] = alle Knoten, die in der Adjazenzliste bei u eingetragen sind Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
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) Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Dijkstra – Beispiel – Schritt 1 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Dijkstra – Beispiel – Schritt 2 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Dijkstra – Beispiel – Schritt 3 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Dijkstra – Beispiel – Schritt 4 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Dijkstra – Beispiel – Schritt 5 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Dijkstra – Beispiel – Schritt 6 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Dijkstra – Beispiel – Schritt 7 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Dijkstra – Beispiel – Schritt 8 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Dijkstra – Beispiel – Schritt 9 ... Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
BESSER: HIGHWAY HIERARCHIEN Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Motivation Gute Algorithmen sind bisher entweder • sehr rechenintensiv oder • schnell und ungenau Ziel: Suche beschleunigen und Qualität erhöhen Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Idee • Straßen in Hierarchien einteilen: • 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
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 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
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 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Highway Hierarchien – Ansatz • automatische Bestimmung der Hierarchien • nicht Bezeichnung der Straße als Grundlage, sondern die tatsächlich kürzesten bzw. schnellsten Wege Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
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... Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Beispiel – H-Nachbarschaft für H=5 (Abbildung aus [2]) Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Beispiel – Linie Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Begriffe – Komponente • Formal im Paper [2] • Komponenten können nicht über horizontale Kanten gewechselt werden • Beispiele (von [6]): A100 in Berlin A44 (Aachen-Kassel) Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
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 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
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 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Anfragen – Restriktionen • 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] Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
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 Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert
Quellen • Cormen, Leiserson, Riverst, and Stein. Dijkstra’s Algorithm. The MIT Press, 2nd ed., 4th print. edition, 2003. • 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. • Peter Sanders and Dominik Schultes. Highway hierarchies hasten exact shortest path queries. European Symposium on Algorithms, pages 568–579, 2005. • Peter Sanders and Dominik Schultes. Engineering Fast Route Planning Algorithms. Springer-Verlag Berlin Heidelberg, http://algo2.iti.uka.de/schultes/hwy/weaOverview.pdf, 2007. • Dominik Schultes. Highway hierarchies demo - (2008-01-06) –http://algo2.iti.unikarlsruhe.de/schultes/hwy/demo/hhclientde.jar. • Google Maps, http://maps.google.de (2008-02-16). Indizieren u. Anfragen v. Graphen i. Datenbanken – Highway Hierarchien – Andreas Wickert