Routing Algorithmen

Werbung
Routing Algorithmen
Begriffe, Definitionen
• Routing (aus der Informatik)
• Wegewahl oder Verkehrslenkung bezeichnet in der
Telekommunikation das Festlegen von Wegen für
Nachrichtenströme bei der Nachrichtenübermittlung über
p
vermaschte Nachrichtennetze. Insbesondere in paketvermittelten
Datennetzen ist hierbei strenggenommen zwischen den beiden
verschiedenen Prozessen Routing und Forwarding zu
unterscheiden.
• Das
D R
Routing
ti bestimmt
b ti
t den
d gesamten
t W
Weg eines
i
Nachrichtenstroms durch das Netzwerk; das Forwarding
beschreibt hingegen den Entscheidungsprozess eines einzelnen
Netzknotens, über welchen seiner Nachbarn er eine vorliegende
Nachricht weiterleiten soll.
• Häufig werden jedoch Routing und Forwarding unter dem Begriff
„„Routing“
g miteinander vermengt;
g ; in diesem Fall bezeichnet
Routing ganz allgemein die Übermittlung von Nachrichten über
vermaschte Nachrichtennetze.
Routing Algorithmen
Begriffe, Definitionen
• Graph
• Ein Graph
p ist in der Graphentheorie
p
ein Gebilde aus Knoten ((auch Ecken
oder Punkte), die durch Kanten verbunden sein können.
• Ein Graph G ist ein geordnetes Paar zweier Mengen:
G = (V,E)
• Dabei bezeichnet V die Menge der im Graph enthaltenen Knoten und E
die Menge der Kanten des Graphen. Die Bezeichnungen der Mengen
entstammen dem Englischen: V für vertex (engl. für „Knoten“) und E für
edge (engl. für „Kante“).
E
V
• Gerichteter Graph
• Ein Graph G = (V,E) heißt gerichtet, wenn zu jedem e є E das durch eine
definierte Abbildung Ψ zugeordnete Paar (v,v') - geordnet ist (v,v' є V).
Anschaulich bedeutet ein gerichteter Graph, dass sich die Kante von
einem Knoten zu einem Knoten durch einen Pfeil darstellen lässt.
(Quelle: www.wikipedia.de)
Routing Algorithmen
Prinzip von Routing Algorithmen im GIS Bereich
• Suche nach einer optimalen Verbindung von einem
Start- zu einem
S
i
Zielpunkt
Zi l
k unter einer
i
bestimmten
b i
Kostenfunktion /-modell
•
•
•
•
Kürzester Weg
Schnellste Verbindung
Behindertengerechte
g
Route
Andere Ziel- / Kostenfunktionen
in einem Graphen bestehend aus Knoten und
Kanten, wobei die Kanten mit einem Gewicht (z.B.
Strecke, Zeit …) versehen sind
Routing Algorithmen
Routing Verfahren (Auswahl)
• Dijkstra Algorithmus
• Benannt nach seinem Erfinder Edsger W.
W Dijkstra
• Standardalgorithmus für Routing
• A* Algorithmus
Al ith
• Informative Suche, der Algorithmus greift auf eine Heuristik
zurück
• Zielgerichtete
Zi l i ht t Suche,
S h mit
it Punkten,
P kt
die
di am wahrscheinlichsten
h h i li h t
zum Ziel führen
• Findet einen kürzesten Weg, nicht den kürzesten Weg
• Floyd Algorithmus
• Berechnung der kürzesten Wege zwischen allen Paaren von
Punkten
• Geg.: Gerichteter Graph G, dessen Kanten alle mit Kosten (z.B.
Entfernung,
g Fahrtzeit) versehen sind
Routing Algorithmen
Dijkstra Algorithmus
• Kürzester Weg von A nach B in einem Graphen
Routing Algorithmen
Dijkstra Algorithmus
• Geg.: Gerichteter Graph G, dessen Kanten mit Kosten
attributiert sind (z
(z.B.
B Strecke oder Zeit)
• Aufgabe: Berechnung des kürzesten Weges von einem
Startknoten s zu einem Zielknoten z
• Einfachste Idee: alle Wege
g berechnen und den Kürzesten
auswählen
• Feststellung: wenn der kürzeste Weg von s nach z über y
geht, sind die Teilstücke auch immer der kürzeste Weg
zwischen den beiden Punkten
• Dijkstra: Berechnung der kürzesten Wege von einem
beliebigen Startpunkt zu allen anderen Punkten des Graphen
Routing Algorithmen
Dijkstra Algorithmus
• Beispiel: Kürzester Weg von Do nach Du
Startpunkt: Do
Do
20
X
80
Du
Ha
15
W
30
Du
Neue kürzeste Verbindung
nach Du über W und Ha
„längerer
längerer“ Weg
Routing Algorithmen
Dijkstra Algorithmus – ein Beispiel
S
Grüne Knoten: in Arbeit /bearbeitet
g
TG
Rote Knoten: Rand des jjeweiligen
2
1
1
2
Grüne Kanten: Kürzeste Wege
7
3
6
8
9
4
5
Routing Algorithmen
Dijkstra Algorithmus
• Beschreibung des Algorithmus
• Bildung eines Teilgraphen TG in G
G, ausgehend von s
 TG beschreibt den erkundeten Teil von G, bestehend aus:



Allen Knoten die mit s verbunden sind, dabei bedeuten:
Grüne Knoten: In Arbeit / bearbeitet
Rote Knoten: Rand vom TG
 Markierung der Kanten innerhalb des TG


Grüne Kanten: Bilden kürzeste Wege
Rote Kanten: „längere (eliminierte)“ Wege
 In jedem Knoten wird der Abstand zu s verwaltet
 TG wächst,
wächst indem in jedem Schritt der Randknoten mit
minimalen Abstand von s ins Innere von TG übernommen
wird
 „„Nachfolger“
g
übernommener Knoten werden Randknoten
 Kürzeste Pfade zu grünen Knoten, die erneut erreicht
werden, sind ggf. zu korrigieren
Routing Algorithmen
Dijkstra Algorithmus
Knoten: Blau -> Rot (Beispiel)
Routing Algorithmen
Dijkstra Algorithmus
• Offene Fragen
• Algorithmus
Al ith
ist
i t korrekt
k
kt (Beweis->
(B
i
Lit t )
Literatur)
• Wie finden wir schnell
 Alle Nachfolger eines Knoten?
 Aktive Knoten?
• Wir benötigen :
 Datenstrukturen für den Graphen
 Datenstruktur
D
k
fü
für di
die aktiven
ki
Knoten
K
und
d verbindungen
bi d
Routing Algorithmen
Dijkstra Algorithmus
• Datenstrukturen
• Datenstruktur
D t
t kt fü
für d
den G
Graphen
h ((mit
it K
Kosten)
t )
 Variante 1: Adjazenzmatrix
 Variante 2: Adjazenzliste
• Datenstruktur für die Menge der aktiven Knoten: Heap
 auf Heap wird in dieser Vorlesung als Datenstruktur
nicht weiter eingegangen
Routing Algorithmen
Dijkstra Algorithmus
• Adjazenzmatrix
• Definition: Knoten, die durch eine Kante verbunden sind, heißen
benachbart oder adjazent
• Definition: Die n x n Matrix A = {aij} heißt Adjazenzmatrix mit
aij = true , falls vi und vj adjazent, sonst false.
Routing Algorithmen
Dijkstra Algorithmus
• Adjazenzmatrix mit Kosten
• Bei gewichteten Graphen lassen sich die Kosten k direkt in die
Adjazenzmatrix eintragen:
aij = k , falls vi und vj adjazent, sonst ∞.
• Beachte: alle Diagonalelemente sind Null.
• Vorteil: Möglichkeit, in der Laufzeit O(1) festzustellen, ob eine
Kante von vi nach vj existiert.
• Nachteil: hoher Platzbedarf O(n²)
Routing Algorithmen
Dijkstra Algorithmus
• Beispiel zur Adjazenzmatrix
Do
Du
Ha
W
D
K
Do
0
80
20
∞
∞
∞
Du
∞
0
∞
∞
20
∞
H
Ha
∞
∞
0
15
∞
∞
W
∞
30
∞
0
150
80
D
∞
∞
∞
∞
0
15
K
∞
∞
∞
∞
∞
0
Routing Algorithmen
Dijkstra Algorithmus
• Adjazenzliste
• Für jeden Knoten wird eine Liste seiner (Nachfolger-)
Nachbarknoten abgespeichert.
• Der Zugriff auf die Listen erfolgt über ein Array der Länge n
(n = Anzahl der Knoten)
• Vorteil:
geringer Platzbedarf: O(n+e) (e Anzahl der Kanten)
alle m Nachfolger eines Knotens sind in der Zeit O(m)
erreichbar
i hb
• Nachteil: Um zu prüfen, ob vi und vj benachbart sind, muss die
Adjazenzliste von vi durchlaufen und nach vj gesucht
werden
• Aber: Für Dijkstra ist eine Adjazenzliste ideal
Routing Algorithmen
Dijkstra Algorithmus
• Beispiel zur Adjazenzliste
Do
Du
Ha
W
D
K
Do
0
80
20
∞
∞
∞
Du
∞
0
∞
∞
20
∞
Ha
∞
∞
0
15
∞
∞
W
∞
30
∞
0
150
80
D
∞
∞
∞
∞
0
15
K
∞
∞
∞
∞
∞
0
Do
Du
Ha
W
D
K
Routing Algorithmen
Du
80
Ha
20
Dijkstra Algorithmus
• Erweiterung Dijkstra zur Behandlung von realen Straßennetzen
• Reale Netze stellen besondere Anforderungen
 Größe des Netzwerkes (Effizienz)
(
)
Dijkstra mit Geometrie
 Straßenverkehrsordnung (Abbiege- und Wendeverbote)
 Abbildung realer Straßennetze auf Graphen
 Ansätze:
 Modifikation des Graphen
 Modifikation von Dijkstra

Routing Algorithmen
Dijkstra Algorithmus
• Dijkstra Erweiterung
• Dijkstra nutzt die Geometrie der Knoten/Kannten nicht aus
• Richtungslos: Dijkstra berücksichtigt nicht die Richtung von
Startknoten zum Zielknoten
• Erweiterung: Dijkstra mit Geometrie
Routing Algorithmen
Dijkstra Algorithmus
• Idee:
• kürzeste Verbindung
g von K nach HH
gesucht
• Dijkstra nutzt zunächst nicht die GeoMetrie-Information, sondern berechnet
auch die Verbindung nach BN
Routing Algorithmen
Dijkstra Algorithmus
• Resümee: Dijkstra mit Geometrie
• Erweiterung
E
it
von Dijkstra
Dijk t d
durch
h Ei
Einbeziehung
b i h
d
der Ri
Richtung
ht
zum
Ziel (Heuristik)
• Zielgerichtete Suche
• Findet optimale Lösung, wenn Kantenkosten = Weglänge
• Umsetzung dieses Ansatzes = A
A* Algorithmus
Routing Algorithmen
Dijkstra Algorithmus
• Anwendung in realen Netzen
• Abbiegeverbot
Abbi
b t
 Änderung des Algorithmus
 Änderung des Graphen
Transformation des Graphen mit Abbiegeverbot in einen
Graphen ohne Abbiegeverbot
 Anschließend Anwendung von Standard Dijkstra
• Einbahnstraßen
 Gleiches Prinzip wie oben

 Standardalgorithmus für Routing
Routing Algorithmen
Herunterladen