Graphen: Kürzeste Pfade Graphen: Kürzeste Pfade Gliederung Algorithmen und Datenstrukturen II Graphen: Kürzeste Pfade II 1 D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Graphen: Kürzeste Pfade Greedy Bellman-Ford Beispiel c Sommer 2009, 22. April 2009, 2009 D.Rösner D. Rösner AuD II 2009 . . . Graphen: Kürzeste Pfade 1 Greedy Bellman-Ford Beispiel D. Rösner AuD II 2009 . . . Graphen: Kürzeste Pfade Graphen: Kürzeste Pfade 2 Greedy Bellman-Ford Beispiel Algorithmenmuster ’Greedy’ Beispiel: Herausgabe von Wechselgeld mit möglichst wenig Münzen der Algorithmus von Dijkstra ist ein Beispiel eines Algorithmus nach dem Algorithmenmuster ’Greedy’ Münzsystem sei: 50, 10, 5, 2, 1 Cent Beispiel: Zielwert sei 78 78 = 50 + 2*10 + 5 + 2 + 1, also 6 Münzen bei solchen Algorithmen wird in jedem Teilschritt versucht, so ’viel wie möglich’ zu erreichen daher der Name ’greedy’, d.h. gierig, gefrässig Greedy-Algorithmus: Nehme jeweils immer die größte Münze unterhalb oder gleich dem aktuellen Zielwert und ziehe ihren Betrag vom Zielwert ab. Verfahre weiter so bis Zielwert gleich Null. s.a. [GT01], Ch. 13.6 D. Rösner AuD II 2009 . . . 4 D. Rösner AuD II 2009 . . . 5 Graphen: Kürzeste Pfade Greedy Bellman-Ford Beispiel Graphen: Kürzeste Pfade Algorithmenmuster ’Greedy’ Greedy Bellman-Ford Beispiel Algorithmenmuster ’Greedy’ Problemklasse für Greedy-Algorithmen: Beachte: in jedem Schritt wird lokal optimiert 1 2 aber: das globale Optimum kann ggf. dennoch verpasst werden Beispiel: 3 sei Zielwert 15 Münzen: 11, 5, 1 Greedy würde 11 + 1 + 1 + 1 + 1 ergeben, d.h. 5 Münzen tatsächliches Optimum sind aber 3 Münzen: 5 + 5 + 5 D. Rösner AuD II 2009 . . . Graphen: Kürzeste Pfade 4 5 Gegeben ist feste Menge von Eingabewerten. Es gibt eine Menge von Lösungen, die aus Eingabewerten bestimmt wird. Alle Lösungen lassen sich schrittweise aus partiellen Lösungen, beginnend bei der leeren Lösung, durch Hinzunahme von Eingabewerten aufbauen. Es existiert eine Bewertungsfunktion für partielle und vollständige Lösungen. Gesucht wird die (bzw. eine) optimale Lösung bzgl. der Bewertungsfunktion. 6 Greedy Bellman-Ford Beispiel D. Rösner AuD II 2009 . . . Graphen: Kürzeste Pfade Graphen: Kürzeste Pfade 7 Greedy Bellman-Ford Beispiel Graphen: Bellman-Ford-Algorithmus für den Algorithmus von Dijkstra muss vorausgesetzt werden, dass alle Kantengewichte nicht negativ sind im Unterschied zum Algorithmus von Dijkstra wird hier mit all den Pfaden vom Startknoten (bis zur Länge |E | − 1) aus gearbeitet, die sich durch schrittweise Fortsetzung bisher kürzester Pfade ergeben, und aus diesen werden die (dann global) jeweils kürzesten Pfade vom Startknoten aus bestimmt im folgenden betrachten wir den Bellman-Ford-Algorithmus, der kürzeste Pfade auch dann bestimmen kann, wenn Kantengewichte negativ sind allerdings gilt weiterhin: die Graphen dürfen keine Zyklen mit negativem Gesamtgewicht enthalten s.a. [SS02], 16.4.3 s.a. [SS02], 16.4.3 D. Rösner AuD II 2009 . . . 9 D. Rösner AuD II 2009 . . . 10 Graphen: Kürzeste Pfade Greedy Bellman-Ford Beispiel Graphen: Kürzeste Pfade Graphen: Bellman-Ford-Algorithmus Greedy Bellman-Ford Beispiel Graphen: Bellman-Ford-Algorithmus im Detail: in maximal |E | − 1 Iterationen wird bei jeder Iteration i für alle Kanten überprüft, ob sich durch Hinzunahme einer Kante (u,v) zu einem schon existierenden Pfad (bis Knoten u) ein Pfad zum Knoten v gewinnen lässt, der kürzer ist als der bis dahin erreichte kürzeste Pfad zum Knoten v ausgehend vom Startknoten algorithm BF(G,s) Eingabe: ein Graph G und ein Startknoten s D[s]:= 0, D[v]:= ∞ für v 6= s for i := 1 to |E| − 1 do for each (u, v ) ∈ E do if D[u] + w((u, v )) < D[v ] then D[v ] := D[u] + w((u, v )) fi od m.a.W.: bei der Iteration i werden die Pfade der Länge i berücksichtigt Optimierung: tritt bei einer Iteration in allen Knoten keinerlei Änderung der bereits erreichten Werte für kürzeste Pfade ein, kann die Berechnung auch schon beendet werden, bevor |E | − 1 Iterationen erreicht sind od s.a. [SS02], 16.4.3 s.a. [SS02], 16.4.3 D. Rösner AuD II 2009 . . . Graphen: Kürzeste Pfade 11 D. Rösner AuD II 2009 . . . Greedy Bellman-Ford Beispiel Graphen: Kürzeste Pfade Graphen 12 Greedy Bellman-Ford Beispiel Graphen 1 u 1 v 10 s u:∞ v:∞ -2 3 -5 6 10 -2 3 5 -5 6 s:0 7 x 5 y x:∞ 2 y:∞ 2 Abbildung: gerichteter Graph mit auch negativen Gewichten (vgl. [SS02], Abb. 16.19) D. Rösner AuD II 2009 . . . 7 Abbildung: Bellman-Ford-Algorithmus: Initialisierung (vgl. [SS02], Abb. 16.20) 14 D. Rösner AuD II 2009 . . . 15 Graphen: Kürzeste Pfade Greedy Bellman-Ford Beispiel Graphen: Kürzeste Pfade Graphen Greedy Bellman-Ford Beispiel Graphen 1 u:10 1 v:∞ v:11 -2 3 -5 6 10 10 s:0 u: 8 -2 3 5 s:0 -5 6 5 7 x: 5 y:∞ 7 2 2 Abbildung: Bellman-Ford-Algorithmus: nach Schritt 1 (vgl. [SS02], Abb. 16.21) D. Rösner AuD II 2009 . . . Graphen: Kürzeste Pfade y: 7 x: 5 Abbildung: Bellman-Ford-Algorithmus: nach Schritt 2 (vgl. [SS02], Abb. 16.22) 16 D. Rösner AuD II 2009 . . . Greedy Bellman-Ford Beispiel Graphen: Kürzeste Pfade Graphen 17 Greedy Bellman-Ford Beispiel Graphen 1 1 v: 9 u: 8 10 s:0 u: 8 v: 9 -2 3 -5 6 10 -2 3 5 -5 6 s:0 7 5 y: 6 x: 5 y: 4 x: 5 2 2 Abbildung: Bellman-Ford-Algorithmus: nach Schritt 3 (vgl. [SS02], Abb. 16.23) D. Rösner AuD II 2009 . . . 7 Abbildung: Bellman-Ford-Algorithmus: nach Schritt 4 (vgl. [SS02], Abb. 16.24) 18 D. Rösner AuD II 2009 . . . 19 Graphen: Kürzeste Pfade Greedy Bellman-Ford Beispiel Graphen: Kürzeste Pfade Graphen Greedy Bellman-Ford Beispiel Graphen 1 u 1 v 10 s u v -2 3 -5 6 10 -2 3 5 -5 6 s 5 -7 x x y Abbildung: Beispiele für Graphen: gerichteter Graph mit negativ gewichtetem Zyklus (vgl. [SS02], Abb. 16.25) Graphen: Kürzeste Pfade Abbildung: Beispiele für Graphen: gerichteter Graph mit negativ gewichtetem Zyklus (vgl. [SS02], Abb. 16.25) 20 Greedy Bellman-Ford Beispiel Literatur: I Michael T. Goodrich and Roberto Tamassia. Data Structures and Algorithms in Java. John Wiley & Sons, New York, 2001. ISBN 0-471-38367-8; 2nd edition. Gunter Saake and Kai-Uwe Sattler. Algorithmen und Datenstrukturen – Eine Einführung mit Java. dpunkt.verlag, Heidelberg, 2002. ISBN 3-89864-122-8. D. Rösner AuD II 2009 . . . y 2 2 D. Rösner AuD II 2009 . . . -7 22 D. Rösner AuD II 2009 . . . 21