Vortrag

Werbung
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
Herunterladen