Präsentation herunterladen
Veröffentlicht von:Clotilda Werkmeister Geändert vor über 11 Jahren
1
Vortrag von Stephanie Weirauch Jens Pleger Peter Jancke Frank Wejmelka
WEGE IN GRAPHEN Vortrag von Stephanie Weirauch Jens Pleger Peter Jancke Frank Wejmelka
2
Inhalt : Graphdefinition und Dijkstra-Algorithmus
zweitkürzeste Wege in einem Graphen: Algorithmen von Pollack und Hoffman & Pavley (algorithmusverändernd) zweitkürzeste Wege in einem Graphen Algorithmus von Azevedo (graphverändernd) Verallgemeinerung auf dritt und k-kürzeste Wege Vorstellung eines Programms
3
Graphdefinition Graph G=(E,V) besteht aus Knotenmenge V und Kantenmenge E VxV Kante (v,w) verbindet Knoten v und w Beispiel: Straßennetz ! Städte sind Knotenmengen und Straßen bilden Kantenmengen Jeder Kante (v,w) ist Länge l(v,w)>0 zugeordnet
4
Der Dijkstra Algorithmus (Greedy - Algorithmus)
Gegeben Startknoten s und Zielknoten z Kanten haben Gewichte und sind gerichtet Für jeden Knoten v suche kürzesten Weg von s nach v Benutzen von zwei Knotenmengen S und K (S enthält Knoten, für die der kürzeste Weg von s aus bereits bekannt ist K (Kandidaten) enthält mögliche Knoten, deren Distanz zu s am geringsten ist) Jedem Knoten wird eine Distanz dist(v) zugeordnet Zu jedem Knoten v wird sein Vorgänger vorg(v) festgehalten
5
Pseudocode des Dijkstra Algorithmus
(1) S = {}; K = V; (2) dist(s) = 0; dist(v) = ¥ für alle v Î V \ {s}; (3) vorg(v) = -1 für alle v Î V; // Es sind noch keine kürzesten Wege bekannt. (4) while K ¹ {} do (5) wähle Knoten v aus K mit minimaler Distanz dist(v); (6) S = S È {v}; K = K \ {v}; (7) for jeden Nachbarknoten w Î K von v do (8) if dist(v) + l(v,w) < dist(w) then (9) dist(w) = dist(v) + l(v,w); // bisher bekannter kürzester Weg (10) vorg(w) = v; // von s nach w geht über v
6
Beispiel für die Anwendung des Dijkstraalgorithmus
Kürzester Weg von einem Knoten s zu allen anderen Knoten (single source shortest paths problem) 13 13 1 4 1 4 5 5 b (1,2) + a (2,3) = 6 < b (1,5) + a (5,4) = 10 < b (1,5) + a (5,3) = 12 < a (1,4) = 13 1 1 5 a (1,2) = 2 < a (1,4) = 13 5 2 6 2 6 3 7 3 7 2 3 2 3 4 4 13 1 4 1 13 4 b (1,2) + a (2,5) = 5 < b (1,2) + a (2,3) = 6 < a (1,4) = 13 5 5 b (1,5) + a (5,4) = 10 < b (1,3) + a (3,4) = 12 < a (1,4) = 13 1 1 5 5 2 6 2 6 3 7 3 7 2 3 2 3 4 4
7
Zweitkürzeste Wege in einem Graphen
Gesucht ist der zweitkürzeste Weg von s nach z Dijkstra ist dem Problem zweitkürzester Wege nicht gewachsen Lösung durch: Algorithmus von Pollack und Hoffman & Pavle (algorithmusverändernd) Algorithmus von Azevedo (graphverändernd)
8
Algorithmus von Pollack
Dynamisches algorithmusveränderndes Verfahren Berechne den kürzesten Weg zwischen Start und Zielknoten (m Kanten) Entferne jeweils eine Kante des kürzesten Weges und berechne in dem neu entstandenen Graph wieder den kürzesten Weg zwischen Start und Zielknoten (m Berechnungen) Der kürzeste Weg dieser m Berechnungen ist der zweitkürzeste Weg zwischen Start und Zielknoten
9
Algorithmus von Pollack
Kante 1 oder 2 wird weggelassen - kein kürzester Weg wird berechnet Kante 3 wird weggelassen - drittkürzester Weg wird berechnet Kante 4 – 8 wird weggelassen - zweitkürzester Weg wird berechnet
10
Der zweitkürzeste Weg von 1 nach 4
5 3 4 2 1 6 13 7 3 2 1 5 4 6 13 7 5 3 2 4 1 6 13 7 5 3 4 2 1 6 13 7
11
Der Algorithmus von Pollack findet keine Schleifen
12
Der Algorithmus von Hoffman & Pavley
13
Der zweitkürzeste Weg von 1 nach 4
3 2 1 5 4 6 13 7 5 3 2 4 1 6 13 7 5 3 4 2 1 6 13 7 5 3 4 2 1 6 13 7
14
Schleifenbeispiel für den Algorithmus von Hoffman & Pavley
Die Kanten des kürzeste Wege Baumes zum Zielknoten hin sind violett Die kürzesten Wege von den Endknoten der Kanten 1 und 2 werden betrachtet Algorithmus erschafft zweitkürzesten Weg mit einem Zyklus
15
Schlingen am Anfang oder Ende
ist. ster Weg zweitkürze ebenfalls der gefunden, der Weg auch wird so ist, rt) (undefinie daß ausgeht, davon man Wenn . 5 ) ( ster Weg. h automatisc und tigt berücksich dung Minimumbil bei , Damit wird denn t Eigenschaf die erfüllt Kante Die Betrachte zwischen Weg ste ist wieder Gesucht 3 2 1 , z, z , v s, v v w , z s u ,v (v z n i + = * d
16
Verfahrensvergleich Pollack Dynamisches Verfahren
Berechne den kürzesten Weg w zwischen s und z Lasse eine Kante e von w weg. Berechne den kürzesten Weg im Graphen ohne die Kante e Minimiere über die so entstandenen kürzesten Wege Kürzester Weg ist gesperrt Nur schleifenfreie Wege werden gefunden Hoffman & Pavley Dynamisches Verfahren Berechne den kürzesten Weg w zwischen s und z Nimm jede Kante e deren Anfangsknoten ein Knoten von w ist und selbst keine Kante von w ist Berechne den kürzesten Weg vom Endknoten von e nach z und addiere den Weg nach s. Minimiere über die so entstandenen kürzesten Wege Zweitkürzester Weg wird als Variante des kürzesten Weges gesehen Auch Wege mit Schleifen werden gefunden
17
Algorithmus von Azevedo modifiziert von Schmid
Statisches Verfahren (verändert nur den Graph nicht aber den kürzeste Wege- Algorithmus) Azevedo verwendet die Methode Pathdeletion (Wegeverbote).
18
Vorgehen bei Azevedo Erschaffe einen neuen Startknoten und einen neuen Zielknoten (später). Verdopple den kürzesten Weg ohne erste und letzte Kante bzw Knoten. (Wegeverdopplung) Weise der ersten Kante einen neuen Endknoten zu. (Umleitung) Ziehe alle Kanten über die der kürzeste Weg verlassen werden kann. (Verbindung mit dem Ausgangsgraphen)
19
Beispiel für den modifizierten Algorithmus von Azevedo
Der kürzeste Weg ist nicht mehr begehbar (X). Der zweit und drittkürzeste Weg sind noch möglich (-- / --).
20
Der zweitkürzeste Weg (von 1 nach 4)
3 2 1 5 4 6 13 7 Der verdoppelte Weg ist blau. Die Verbindung mit dem Ausgangsgraphen ist grün. Die Kanten (2',5) und (5',4) werden nicht gezogen. Die Kante (1,2) wird zur Kante (1,2'). 5‘ 2‘ 1 3 7 2 5 4 6 13 5‘ 2‘ 1 3 7 2 5 4 6 13
21
Problem beim ersten Schritt
Der Algorithmus von Azevedo kann in dieser Form einen zweitkürzesten Weg der Form: Schlinge - (alter) kürzester Weg oder (alter) kürzester Weg – Schlinge nicht erkennen. Lösung: Erschaffe einen neuen Startknoten und einen neuen Zielknoten. Verbinde den neuen Startknoten mit dem alten Startknoten durch eine Kante der Länge 0. Verbinde den alten Zielknoten mit dem neuen Zielknoten durch eine Kante der Länge 0.
22
Beispiel für einen erweiterten Graphen incl. ersten Schritt
Der zweitkürzeste Weg (rot) beinhaltet die Schlinge beim Startknoten
23
Drittkürzeste Wege nach Pollack
24
k kürzeste Wege nach Pollack
25
Drittkürzeste Wege nach Azevedo
26
k - kürzeste Wege nach Azevedo
27
Der schlimmste Fall
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.