Kapitel 3. Kombinatorische Optimierung. 3.1 Begriffe aus der Graphentheorie

Ähnliche Dokumente
6. Übung zur Linearen Optimierung SS08

3.6 Branch-and-Bound-Verfahren

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung

Kapitel 4: Minimale spannende Bäume Gliederung der Vorlesung

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Graphentheorie Graphentheorie. Grundlagen Bäume Eigenschaften von Graphen Graphen-Algorithmen Matchings und Netzwerke

Algorithmen & Komplexität

= n (n 1) 2 dies beruht auf der Auswahl einer zweielementigen Teilmenge aus V = n. Als Folge ergibt sich, dass ein einfacher Graph maximal ( n E = 2

5. Bäume und Minimalgerüste

15. Elementare Graphalgorithmen

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

Datenstrukturen und Algorithmen (SS 2013)

ADS: Algorithmen und Datenstrukturen 2

Betriebliche Optimierung

Berechnung von Abständen

Minimal spannende Bäume

Betriebswirtschaftliche Optimierung

EDM, Algorithmen und Graphenspeicherung

Seien u, v V, u v. Da G zusammenhängend ist, muss mindestens ein Pfad zwischen u und v existieren.

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Optimale Lösungen mit Greedy-Strategie erfordern Optimalität der Greedy-Wahl. Beispiele für optimale Greedy-Lösungen

Kürzeste Wege in Graphen. Orte mit Straßenverbindungen. Coma I Rolf Möhring

Kap. 6.6: Kürzeste Wege

Folien aus der Vorlesung Optimierung I SS2013

Einheit 11 - Graphen

Algorithmen und Datenstrukturen 2

Kap. 6.6: Kürzeste Wege

Graphen. Definitionen

4. Kreis- und Wegeprobleme Abstände in Graphen

κ(k) k K S Algorithmus zur Bestimmung eines spannenden Baumes mit minimalen Kosten (Kruskal, 1965).

Diskrete Mathematik. Sebastian Iwanowski FH Wedel. Kap. 6: Graphentheorie

ADS: Algorithmen und Datenstrukturen 2

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

Mustererkennung: Graphentheorie

Graphen KAPITEL 3. Dieses Problem wird durch folgenden Graph modelliert:

Kapitel IV Minimale Spannbäume

Kapitel 5: Minimale spannende Bäume Gliederung der Vorlesung

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

ADS: Algorithmen und Datenstrukturen 2

Graphen. Graphen und ihre Darstellungen

Graphentheorie. Yichuan Shen. 10. Oktober 2013

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

3 Klassifikation wichtiger Optimierungsprobleme

Freie Bäume und Wälder

Kapitel 4: Netzplantechnik Gliederung der Vorlesung

Diskrete Strukturen Kapitel 4: Graphentheorie (Grundlagen)

9 Minimum Spanning Trees

Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph.

Algorithmische Graphentheorie

Algorithmen und Datenstrukturen 2-1. Seminar -

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Algorithmen und Datenstrukturen Kapitel 9. und

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Algorithmen und Datenstrukturen Kapitel 9. und

Wie wird ein Graph dargestellt?

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Algorithmen und Datenstrukturen 2

Graph Paar (V,E) V: nichtleere Menge von Knoten (vertex) E: Menge von Kanten (edges): Relation (Verbindung) zwischen den Knoten

Teil 2: Graphenalgorithmen

Routing Algorithmen. Begriffe, Definitionen

Lösungen zu Kapitel 5

Kodieren Von Graphen

Effiziente Algorithmen I

Wiederholung zu Flüssen

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

f h c 7 a 1 b 1 g 2 2 d

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

2. Entsprechende Listen P i von Vorgängern von i 3. for i := 1 to n do. (ii) S i = Knoten 2 + 1}

Datenstrukturen und Algorithmen

Graphen. Leonhard Euler ( )

Übungsblatt 2 - Lösung

5 Graphen. Repräsentationen endlicher Graphen. 5.1 Gerichtete Graphen. 5.2 Ungerichtete Graphen. Ordnung von Graphen

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie

ADS: Algorithmen und Datenstrukturen 2

Diskrete Mathematik Graphentheorie (Übersicht)

Informatik II, SS 2014

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

Technische Universität München Zentrum Mathematik. Optimierung 2, WS 2008/09 Übungsblatt 12

Rückblick: divide and conquer

Kapitel IV Minimale Spannbäume

Satz 324 Sei M wie oben. Dann gibt es für ein geeignetes k Konstanten c i > 0 und Permutationsmatrizen P i, i = 1,...

Algorithmische Graphentheorie

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Univ.-Prof. Dr. Goulnara ARZHANTSEVA

ADS: Algorithmen und Datenstrukturen 2

Algorithmische Graphentheorie

Algorithmen und Datenstrukturen 2

Informatik II, SS 2016

Aufgaben zur Klausurvorbereitung

Kapitel 8: Bipartite Graphen Gliederung der Vorlesung

4. Welchen Zusammenhang gibt es zwischen den Eckengraden und der Anzahl der Kanten eines ungerichteten Graphen?

Bemerkung: Es gibt Algorithmen für minimale Spannbäume der Komplexität O(m + n log n) und, für dünnbesetzte Graphen, der Komplexität O(m log n), wobei

1. Klausur zur Vorlesung Algorithmentechnik Wintersemester 2008/2009

Bemerkung: Der vollständige Graph K n hat n(n 1)

KAPITEL 3 MATCHINGS IN BIPARTITEN GRAPHEN

Operations Research. Flüsse in Netzwerken. Flüsse in Netzwerken. Unimodularität. Rainer Schrader. 2. Juli Gliederung.

Transkript:

Kapitel 3 Kombinatorische Optimierung 3 Begriffe aus der Graphentheorie Zur Beschreibung vieler Optimierungsprobleme eignet sich besonders die Sprache der Graphentheorie Das erste graphentheoretisch beschriebene Problem stammt von Euler (Königsberger Brückenproblem, 736): Es sollte ein Rundweg durch Königsberg gefunden werden, der jede Brücke über den Pregel genau einmal überquert Euler reduzierte die Inseln und die durch den Fluß getrennten Festlandteile auf Punkte und stellte die Brücken durch Verbindungskurven dar Man kann nun zeigen, daß es keinen solchen Rundweg gibt, denn sonst müsste von jeder Ecke eine gerade Anzahl von Kanten ausgehen Definition 3 Sei V eine endliche nichtleere Menge und E eine Menge von zweielementigen Teilmengen von V Das Paar G = (V, E) heißt Graph Die Elemente von V heißen Knoten oder Ecken von G, die Elemente von E Kanten von G Beispiel 32 G = (V, E) = ({v, v 2, v 3, v 4 }, {(v }{{}, v 2 ), (v 2, v 3 ), (v 3, v 4 ), (v 4, v ), (v, v 3 )}) }{{} V v 4 v 3 v v 2 E

Wichtige Beispiele in der Graphentheorie sind der vollständige Graph einer n-elementigen Punktmenge V, dessen Kantenmenge aus allen zweielementigen Teilmengen von V besteht, und die bipartiten Graphen, deren Eckenmenge V so in zwei Teilmengen V und V 2 zerlegt werden kann, daß Kanten nur Ecken von V mit Ecken von V 2 (und umgekehrt) verbinden, aber keine Ecken von V miteinander und ebenso keine Ecken von V 2 miteinander Beispiel 33 Vollständiger Graph mit 5 Ecken: v 5 v 4 v 3 v v 2 Beispiel 34 Bipartiter Graph mit V = {v, v 2, v 3 }, V 2 = {v 4, v 5, v 6 }: v 4 v 5 v 6 v v 2 v 3 Man kann oft Graphen in der Ebene anschaulich beschreiben: Die Ecken werden durch (besonders hervorgehobene) Punkte und die Kanten durch Kurven dargestellt, die die entsprechenden Punkte verbinden Die Kurven können sich in weiteren Punkten schneiden, die aber nicht als Ecken aufgefaßt werden Die Definition des Graphen schließt nicht aus, daß zwei Ecken durch mehrere Kanten verbunden sind Wir betrachten hier nur sogenannte schlichte Graphen ohne Mehrfachkanten und ohne Schlingen, dh Kanten, bei denen die Anfangs- und Endecke übereinstimmen Wie üblich betrachtet man Unterstrukturen: Definition 35 Sei G = (V, E) ein Graph Der Graph G = (V, E ) heißt Teilgraph von G, wenn V V und E E G heißt spannender Teilgraph von G, wenn V = V Beispielsweise durch Einbahnstraßen motiviert, kann man den Kanten eine Richtung zuweisen: Definition 36 Sei V eine endliche nichtleere Menge und E eine Menge von geordneten Paaren (a, b) V V mit a b Dann heißt G = (V, E) gerichteter Graph (oder Digraph) Die Elemente von E heißen (gerichtete) Kanten von G, a heißt Anfangspunkt, b Endpunkt der Kante (a, b) 2

Beispiel 37 G = ({v, v 2, v 3, v 4 }, {(v, v 2 ), (v 2, v 3 ), (v 4, v 3 ), (v 4, v ), (v, v 3 ), (v, v 4 )}) v 4 v 3 v v 2 Anmerkung: Wir betrachten wieder nur schlichte gerichtete Graphen Dabei kann es zu zwei Ecken v, v 2 V die beiden (entgegengesetzt gerichteten) Kanten (v, v 2 ) und (v 2, v ) geben Um das Durchlaufen eines Graphen zu beschreiben, benötigt man folgende Definition 38 Sei G = (V, E) ein Graph (a) Eine Folge (e,,e n ) von Kanten von G heißt Kantenzug, wenn es Ecken v 0, v,,v n V gibt mit (v j, v j ) = e j, j =,,n v 0 heißt Anfangspunkt, v n Endpunkt des Kantenzugs, n seine Länge Der Kantenzug heißt geschlossen, falls v n = v 0 gilt Sind die Ecken paarweise verschieden, dann heißt der Kantenzug Weg bzw im geschlossenen Fall Kreis (b) G heißt zusammenhängend, wenn es zu je zwei Ecken a, b V einen Kantenzug gibt mit a als Anfangs- und b als End-Ecke (c) G heißt Baum, falls G zusammenhängend ist und keinen Kreis enthält (d) T heißt spannender oder erzeugender Baum von G, falls T spannender Teilgraph von G und ein Baum ist Beispiel 39 In Beispiel 33 ist (v, v 2, v 3, v 5, v 2, v 4, v 5, v ) ein geschlossener Kantenzug, aber kein Kreis (v, v 3, v 5, v 2, v 4, v ) ist ein Kreis Reduktion der Kantenmenge des Graphen auf zb {(v, v 2 ), (v, v 3 ), (v, v 4 ), (v, v 5 )} ergibt einen spannenden Baum des vollständigen Graphen mit 5 Ecken Anmerkungen: () Die obigen Definitionen von Weg und Kreis lassen sich unmittelbar auf gerichtete Graphen übertragen Man definiert in diesem Fall gerichtete Wege und gerichtete Kreise, dh die Richtung des Weges bzw Kreises muß mit der Richtung der Kanten übereinstimmen (2) Ein Kantenzug (Weg, Kreis) läßt sich als Folge (v 0,,v n ) von Ecken oder als Folge (e,,e n ) von Kanten darstellen 3

Für eine algorithmische Behandlung eines Graphen ist es notwendig, ihn durch eine entsprechende Datenstruktur darzustellen Die naheliegendste Art für einen Graphen mit n Ecken ist die Darstellung durch eine Adjazenzmatrix, dh einer (n, n)-matrix, deren Elemente a ij gleich sind, wenn v i und v j durch eine Kante verbunden sind, und 0 sonst Bei einem ungerichteten Graphen ist die Adjazenzmatrix symmetrisch Für den Digraph aus Beispiel 37 ist die Adjazenzmatrix 0 A = 0 0 0 0 0 0 0 0 0 In vielen praktischen Anwendungen sind die Ecken oder die Kanten eines Graphen mit Werten (oder Gewichten) versehen Solche Graphen heißen ecken- bzw kantenbewertet oder gewichtet Die Wertemenge ist häufig eine Teilmenge von IR Spezielle Gewichte sind Abstände zwischen den Ecken oder Kosten, die entstehen, wenn man auf der entsprechenden Kante fährt Das folgende Beispiel ist ein kantenbewerteter Graph mit zugehöriger bewerteter Adjazenzmatrix Beispiel 30 v v 3 7 9 v 2 3 3 2 3 v 5 v 4 0 7 0 0 3 7 0 9 3 2 A = 0 9 0 3 0 0 3 3 0 3 2 0 0 Anmerkung: Für einen gewichteten Graphen G = (V, E) mit Gewichtsfunktion w : E IR n und einen Weg (v,,v n ) bezeichnet man w(v i, v i+ ) als Länge des (gewichteten) Weges Die Längendefinition aus Definition 38 ergibt sich mit Gewichten der Größe i= Beispiel 3 (Traveling SalesmanProblem (TSP)) Gegeben seien n Städte und die Abstände zwischen je zwei Städten Gesucht ist eine Rundreise minimaler Gesamtlänge Die symmetrische (n, n)-abstandsmatrix (d ij ) kann als gewichteter vollständiger Graph G = ({v,,v n }, E n ) mit E n = {(v i, v j ), i < j n} aufgefaßt werden Die Menge F der zulässigen Punkte des Optimierungsproblems ist die Menge aller Kreise mit n Kanten 4

Die Planung möglichst kostengünstiger Versorgungsnetze führt auf Beispiel 32 (Minimal spanning tree (MST)) Sei G zb der Graph aus dem vorigen Beispiel Gesucht ist ein spannender Baum, für den die Summe der Kantenlängen minimal ist Die Menge der zulässigen Punkte des Optimierungsproblems ist also F = {alle spannenden Bäume (V, E) mit V = {v,, v n }}, und die Kostenfunktion c : (V, E) (v i,v j ) E d ij Die Betrachtung von Transportproblemen in Leitungsnetzen mit vorgegebener Aufnahmekapazität führt auf Definition 33 Sei G = (V, E) ein gerichteter Graph, s, t V mit (s, t) E und es gebe einen Weg in G von s nach t Weiter seien c u, c o : E IR Funktionen mit c u c o Dann heißt N = (s, t, V, E, c u, c o ) Netzwerk mit der Quelle s und dem Ziel bzw der Senke t und c u untere Kapazität, c o obere Kapazität von N Ist die untere Kapazität nicht angegeben, so ist sie identisch Null Beispiel 34 Netzwerk mit unterer Kapazität c u 0 Die oberen Kapazitäten c o sind bei den Kanten angegeben s v 7 v 3 5 4 3 2 v 2 3 v 4 t Schickt man zb durch ein (Rohrleitungs-)Netzwerk von der Quelle zur Senke eine Flüssigkeit, so sollte innerhalb des Netzwerks nichts verschwinden und nichts dazukommen, dh die Menge, die in einen inneren Knoten hineinkommt, sollte aus ihm herausfließen Weiter werden durch die Kapazitätsfunktionen die Mengen, die durch eine bestimmte Kante strömen, nach unten und oben beschränkt 5

Definition 35 Ein Fluß in einem Netzwerk N ist eine Abbildung f : E IR (bzw ein Vektor des IR E ) mit c u (u, v) f(u, v) c o (u, v) für jedes (u, v) E 2 f(u, v) = f(v, u) für alle v V \ {s, t} (u,v) E f = (s,u) E f(s, u) Anmerkungen: () Es gilt f = (v,u) E (u,s) E (u,t) E f(u, s) heißt Wert f des Flusses f(u, t) (t,u) E f(t, u) (2) Oft wird bei Netzwerken gefordert, daß für Kanten der Form (u, s) sowie (t, u) die Kapazitäten und damit jeder mögliche Fluß Null sind Dann ist natürlich der Wert eines Flusses f = f(s, u) (s,u) E 32 Das Problem des kürzesten Wegs Definition 32 Das Problem, zu jedem gerichteteten, gewichteten Graphen mit Gewichtsfunktion w : E IR und mindestens zwei Ecken s und t einen gerichteten Weg minimaler Länge von s nach t zu finden, heißt Problem des kürzesten Wegs (shortest path problem, SP) s nennt man wieder Quellknoten, t Zielknoten Die minimale Länge bezeichnen wir mit d(s, t) Betrachtet man SP als Optimierungsproblem, dann ist die zulässige Menge F = {P = (e j,,e jk ) P ist ein gerichteter Weg von s nach t} und die Kostenfunktion c(p) = k w(e ji ) i= Zur Formulierung von SP als LP betrachtet man die (Knoten Kanten ) Inzidenzmatrix A = (a ij ), i =,, V, j =,, E, des Graphen G mit + wenn die Kante e j aus dem Knoten v i herausführt a ij = wenn die Kante e j in den Knoten v i hineinführt 0 sonst a e Beispiel 322 G : e 4 s e 3 t A = e 2 e 5 b w(e ) = w(e 5 ) =, w(e 2 ) = w(e 3 ) = 2, w(e 4 ) = 3 6 e e 2 e 3 e 4 e 5 s + + 0 0 0 t 0 0 0 a 0 + + 0 b 0 0 +

Wir setzen die unteren Kapazitäten Null, die oberen Kapazitäten (als triviale Kapazitäten) und betrachten einen Weg von s nach t als speziellen Fluß f, der s mit dem Wert verläßt und bei t mit dem Wert ankommt, für den also s f = t f = gilt Für eine andere Ecke v i muß wegen der Fluß-Erhaltungs-Bedingung vi T f = 0 gelten, und damit ergibt sich insgesamt für einen Weg das Gleichungssystem Af = (,, 0,, 0), wobei die zu s und die - zu t gehört Im Allgemeinen sind die Koeffizienten von f keine ganzen Zahlen, aber für den Fluß mit den geringsten Kosten min{c f Af = (,, 0,, 0), f 0} existiert eine optimale Lösung, in der jedes f i 0 oder ist und so einen kürzesten Weg von s nach t in G darstellt Weiter sind die V Gleichungen des Problems redundant, da die Flußerhaltung an V Knoten die Flußerhaltung am ausgelassenen Knoten sichert Man kann daher eine Gleichung (zb für t) weglassen Beispiel 322 (Forts) Weglassen von t ergibt das Tableau: 0 2 2 3 0 0 0 0 0 0 0 0 0 Addition der Zeile zur Zeile 2 ergibt die Basis {, 4, 5} Das Starttableau wird so: 4 0 0 0 0 0 0 0 0 0 0 0 0 Eine Basis stellt eine Menge von V Kanten dar, von denen eine Teilmenge einem Weg von s nach t mit den gegebenen Kosten entspricht Die Kanten, die nicht auf dem Weg liegen, stellen entartete Komponenten der Basis dar Im Beispiel stellt die Basis den Weg (e, e 4 ) mit den Kosten 4 und die entartete Kante e 5 dar Beispiel 322 (Forts) Ein Pivotschritt mit ξ 22 ergibt das optimale Tableau 3 0 0 0 0 0 0 0 0 0 0 0 Dies entspricht dem optimalen Weg (e 2, e 5 ) mit Kosten 3 und der entarteten Kante e Eine Kante ist zur Basis hinzugefügt worden und eine andere weggenommen, um einen neuen Weg mit geringeren Kosten zu finden 7

Interpretiert man einen Weg in einem gewichteten Netzwerk als Fahrroute, wobei die Länge einer Kante den Kosten entspricht, dann sind auch negative Längen möglich (zb bei Fahrten mit Gewinn) Ein kürzester Weg von s nach t gibt dann eine Fahrtroute mit maximalem Gewinn an Erweitert man die möglichen Fahrtrouten auf Kantenzüge und gibt es in dem Netzwerk Kreise negativer Länge, dann gibt es keine optimale Lösung Beispiel 323 In dem Graph v 5 v v 2 4 v 3 v 4 gibt es zwischen v und v 4 nur einen Weg, und dieser hat die Länge -2, dh es gilt d(v, v 4 ) = 2 Andererseits gibt es unendlich viele Kantenzüge von v nach v 4 mit den Längen -2, -8, -4, Wir beschränken uns hier auf gerichtete Netzwerke ohne Kreise negativer Länge Der folgende Algorithmus behandelt nur gerichtete Graphen G = (V, E) mit nichtnegativer Gewichtsfunktion w : E IR und bestimmt zu einem beliebigen festen v V die Länge eines kürzesten Weges von v zu jedem anderen u V OBdA sei der Graph vollständig, dh für jedes u, x V ist (u, x) E (setze gegebenenfalls w ux := w(u, x) = ) Für W V und x V bezeichne ρ W (x) die Länge des kürzesten Weges von v nach x, der nur Punkte aus W als Zwischenpunkte benutzt Dies wird sukzessive bestimmt durch Algorithmus 324 (Dijkstra) Eingabe: Ein gerichteter Graph G = (V, E) mit Gewichtsfunktion w : E IR, v V Ausgabe: Die Länge der kürzesten Wege von v zu den übrigen Knoten W := {v}; ρ W (v) := 0; for all y V \ {v} do ρ W (y) := w vy ; while W V do finde x mit ρ W (x) = min{ρ W (y) y V \ W }; W := W {x}; for all y V \ W do ρ W (y) := min{ρ W (y),ρ W (x) + w xy }; end Satz 325 Dijkstras Algorithmus bestimmt die Länge der kürzesten Wege von v zu den übrigen Knoten korrekt 8

Beispiel 326 a b 3 2 2 v 3 2 c 5 d e 0 2 0 3 3 Adjazenzmatrix A = 0 2 0 0 2 5 0 (0) W = {v}, ρ(v) = 0; ρ(d) =, ρ(a) = 2, ρ(b) = ρ(e) = ρ(c) = () Markiere d W = {v, d}, ρ(v) = 0, ρ(d) = ; ρ(e) = +, ρ(a) = 2, ρ(b) = ρ(c) = (2) Markiere e W = {v, d, e}, ρ(v) = 0, ρ(d) =, ρ(e) = 2; ρ(b) = 2 + 2, ρ(c) = 2 + 5, ρ(a) = 2 (3) Markiere a W = {v, d, e, a}, ρ(v) = 0, ρ(d) =, ρ(e) = 2, ρ(a) = 2; ρ(b) = min{4, 2 + 3} = 4, ρ(c) = 7 (4) Markiere b W = {v, d, e, a, b}, ρ(v) = 0, ρ(d) =, ρ(e) = 2, ρ(a) = 2, ρ(b) = 4; ρ(c) = min{7, 4 + 2} = 6 Somit gilt d(v, v) = 0, d(v, d) =, d(v, c) = d(v, a) = 2, d(v, b) = 4, d(v, c) = 6 Aufwand des Algorithmus: Für V = n erfordert die Initialisierung n + Operationen Die Schleife wird n mal durchlaufen und erfordert jeweils O(n) Operationen Damit ist der Gesamtaufwand O(n 2 ) Operationen Bei negativen Kantenbewertungen arbeitet der Algorithmus von Dijkstra ia nicht mehr korrekt: Beispiel 327 Der folgende Graph hat zwar einige Kanten mit negativer Bewertung, aber keine Kreise negativer Länge v 5 v 3 v 2 6 4 4 v 4 3 v 3 Der kürzeste Weg von v nach v 4 ist (v, v 2, v 3, v 4 ) mit Länge 4 Der Algorithmus von Dijkstra liefert als kürzesten Weg die Kante (v, v 4 ) mit Länge 6 9

Der folgende Floyd Warshall Algorithmus arbeitet auch mit negativen Gewichten und erkennt Kreise negativer Länge Er berechnet die Abstände aller Knoten gleichzeitig Gegeben sei ein gerichteter gewichteter Graph G = (V, E) mit Knoten v,,v n und Gewichtsfunktion w : E IR Weiter setzen wir w(v i, v i ) := 0, i n, und w(v i, v j ) :=, falls (v i, v j ) E Für einen Kantenzug ω = (v,,v s ) in G sei l(ω) die Länge von ω ( ) Man kann die Matrix W = w(v i, v j ) als Abstandsmatrix auffassen, wobei nur Kantenzüge zugelassen sind, die aus einer Kante bestehen Wir geben nun eine Operation an, die zu einer gegebenen Abstandsmatrix und einem festen Knoten v j eine Abstandsmatrix berechnet, bei der die vorherigen Kantenzüge ausgedehnt werden auf Kantenzüge, die v j enthalten Definition 328 Sei D = (d ij ) IR n n, k {,,n} fest Eine Dreiecksoperation auf D bezüglich k ist definiert durch { d ij = min{d ij, d ik + d kj } für alle i, j {,, n} \ {k} sonst d ij Beispiel 329 v 2 v 2 0 G : -4 mit (d ij ) = 2 0 0 4 3 0 v 4 3 v 3 0 3 4 Dreiecksoperation für k = 4 ergibt (d ij ) = 2 0 0 4 3 0 Bei dem folgenden Algorithmus wird das Minimum der Länge aller Kantenzüge von einem Knoten v zu einem Knoten u berechnet Das stimmt mit der Länge des entsprechenden kürzesten Weges überein: Satz 320 Sei G = (V, E) ein gerichteter gewichteter Graph Existiert in G ein geschlossener Kantenzug negativer Länge, so existiert in G ein Kreis negativer Länge Satz 32 Sei G = (V, E) ein gerichteter gewichteter Graph, der keinen Kreis negativer Länge enthält Dann gilt für jeden Kantenzug ω = (v,,v k ) l(ω) d(v, v k ) 0

Nach einer endlichen Zahl (n) von Dreiecksoperationen, ausgehend von der Abstandsmatrix für Kantenzüge mit einer Kante, erhält man entweder einen Kreis mit negativer Länge oder eine Matrix, deren Elemente die Länge der kürzesten Wege zwischen je zwei Knoten angeben: Satz 322 Sei G = (V, E) ein gerichteter gewichteter Graph mit Knoten v,,v n und D (0) = (d ij ) die Abstandsmatrix zu G wie vor Definition 328 Für k =, n sei D (k) = (d (k) ij ) das Ergebnis der Dreiecksoperation bezüglich k, angewandt auf D (k ) Dann gilt: (a) Es gibt einen Kreis negativer Länge genau dann, wenn d (k) ii (b) Gilt d (k) ii < 0 für ein i und ein k gilt 0 für alle i und k, so ist d (k) ij die Länge des kürzesten Weges von v i nach v j, wenn nur Wege zugelassen sind, die als Zwischenknoten nur Elemente aus {v,,v k } benutzen Zur Bestimmung der zugehörigen Wege mit kürzester Länge dienen Matrizen (e (k) ij ), k n, in der für den kürzesten Weg von v i nach v j mit möglichen Zwischenknoten aus {v,,v k }, falls es einen solchen gibt, die Nummer des letzten Zwischenknotens eingetragen wird Algorithmus 323 (Floyd Warshall) Eingabe: Eine (n,n) Abstandsmatrix (d (0) ij ) Ausgabe: Feststellung eines Kreises negativer Länge oder die Abstandsmatrix d ij des vollständigen Graphen, sowie für jedes v i,v j die höchste Nummer der Zwischenknoten auf dem kürzesten Weg von v i nach v j for all i do for all j do d ij := d (0) ij ; e ij := i; d ii := 0; Negativer Kreis := Nein ; j := ; while (Negativer Kreis = Nein ) and j n do for k = to n do for l = to n do if d kl > d kj + d jl then d kl := d kj + d jl ; e kl := e jl ; if (k = l) and d kk < 0 then Negativer Kreis := Ja ; j := j + ; end

Beispiel 329 (Forts) 0 (d (0) ij ) = 2 0 0 (e (0) ij ) = 2 2 2 2 3 3 3 3 4 3 0 4 4 4 4 d (2) (d () ij ) = (d (2) ij ) = 0 2 0 3 0 4 3 0 0 2 0 3 0 2 4 3 (e () ij ) = 2 2 2 3 3 3 3 4 4 4 4 (e (2) ij ) = 2 2 2 3 3 3 3 2 4 2 44 = zeigt an, daß es einen Kreis mit Ecke v 4 negativer Länge, nämlich, gibt Den Weg selber erhält man aus (e (2) ij ) durch Rückverfolgung der Ecken Aus e(2) 44 = ergibt sich v, aus e (2) 4 = 2 v 2, aus e (2) 42 = 4 wieder v 4, dh insgesamt der Kreis v 4 v 2 v v 4 Abschätzung des Aufwands für den Floyd Warshall Algorithmus: Die beiden for Schleifen erfordern einen Aufwand von O(n 2 ), die while Schleife wird höchstens n Mal durchlaufen Damit ist der Gesamtaufwand O(n 3 ) 33 Minimal spannende Bäume Definition 33 (MST) Sei G = (V, E) ein (kanten-)bewerteter zusammenhängender ungerichteter Graph, B ein spannender Baum Die Summe der Bewertungen der Kanten von B heißt Kosten oder Länge des Baums B heißt minimaler spannender Baum, falls kein anderer spannender Baum B von G mit geringeren Kosten existiert Anmerkungen: () MST hat ia keine eindeutige Lösung, wie das folgende Beispiel zeigt Haben in einem Graph alle Kanten gleiche Länge (dh ist die Gewichtsfunktion konstant), dann ist jeder spannender Baum minimal (2) Ein nicht zusammenhängender Graph zerfällt in endlich viele Zusammenhangskomponenten G i = (V i, E i ), i k Ist B i = (V i, E i) ein spannender Baum von G i, i k, dann heißt F = {B i ; i k} spannender Wald von G Das Problem der Suche nach einem spannenden Wald für einen nichtzusammenhängenden Graphen löst man durch die Suche nach einem minimalen spannenden Baum für jede Zusammenhangskomponente Wir werden uns zunächst auf zusammenhängende Graphen beschränken 2

(3) Die Kantenlängen (bzw -gewichte) kann man durch Einträge in eine symmetrische ( V, V ) Matrix beschreiben Ergänzt man wieder für fehlende Kanten bezüglich des vollständigen Graphen mit gleicher Eckenmenge die Matrix mit den Werten, dann kann man sich auf Betrachtung vollständiger Graphen beschränken Beispiel 332 Graph mit zwei verschiedenen minimalen spannenden Bäumen: v 2 v 3 v 4 7 6 2 2 2 2 2 v 2 5 v 5 4 v 2 6 2 4 4 Grundlage der folgenden Algorithmen zur Lösung von MST ist Satz 333 Sei G = (V, E) ein kantenbewerteter zusammenhängender Graph mit Gewichtsfunktion w : E IR, U V, (u, v) E mit u U, v / U und w(u, v) = min{w(x, y) x U, y / U} Dann existiert ein minimaler spannender Baum, der (u, v) enthält Der Satz ermöglicht folgenden Algorithmus von Prim: Algorithmus 334 (MST) Eingabe: V = {v,,v n } und die Abstände c ij ; Ausgabe: Ein minimaler spannender Baum (V,T) (* Initialisierung *) U := {v }; T := ; for all v V \ {v } do Nächster[v] := v ; while U V do (* Finde die zu U benachbarte Ecke *) min := ; for all v V \ U do if w(v,nächster[v]) < min then min := w(v,nächster[v]); Neue Ecke := v; U := U Neue Ecke; 3

T := T { (Neue Ecke, Nächster[Neue Ecke])}; (* Nächster aktualisieren *) for all v V \ U do if w(v, Nächster[v])> w(v, Neue Ecke) then Nächster[v] := Neue Ecke; end Das Datenfeld Nächster dient zur Suche der kürzesten Kante, die U verläßt Für jede Ecke v V \ U gibt Nächster[v] an, welche Ecke von U am nächsten zu v liegt Daher muß man zum Auffinden der kürzesten Kante, die U verläßt, nur die kürzeste Kante unter den Kanten (v,nächster[v]), v U, bestimmen Satz 335 Der Algorithmus MST löst MST in einer Zeit O( V 2 ) Beispiel 332 (Forts) Durchführung des Algorithmus ergibt: 2 2 2 2 2 4 MST ist ia bestmöglich, da für MST jede Kante betrachtet werden muß Für Graphen mit wenigen eigentlichen Kanten, dh w(u, v) = für viele Kanten (u, v) E des zugehörigen vollständigen Graphen, läßt sich MST verbessern Folgender Algorithmus MST2 (Kruskal,Berge) nt mit dem Graph (V, ), dh mit n = V Zusammenhangskomponenten Bei jedem Schritt wird jeder Komponente eine Kante minimaler Länge zugeordnet, die die Komponente verläßt, dh eine Ecke liegt in dieser Komponente, die andere nicht Zum Abschluß des Schrittes werden diese Kanten in den Graph eingefügt Dadurch wird die Anzahl der Komponenten verringert (mindestens halbiert) Der Algorithmus bricht ab, wenn der entstandene Graph zusammenhängend ist 4

Algorithmus 336 (MST2) Eingabe: Ein zusammenhängender Graph G = (V,E) und für jedes (u,v) E ein Abstand w(u,v) Ausgabe: Ein minimaler spannende Baum (V,T) von G (* Initialisierung; C ist die Menge der Zusammenhangskomponenten von (V,T) *) T := ; C := {{v },, {v n }}; while C do for all S C do min[s] := ; for all (u,v) E do S u,s v := Komponenten, die v und u enthalten; if S u S v then if w(u,v) < min[s u ] then min[s u ] := w(u,v); Kürzester[S u ] := (u,v); if w(u,v) < min[s v ] then min[s v ] := w(u,v); Kürzester[S v ] := (u,v); for all S C do T := T { Kürzester[S] }; finde die Menge C der Zusammenhangskomponenten von (V,T); end Satz 337 MST2 löst MST für (V, E) und w in einer Zeit O( E log V ) Beispiel 332 (Forts) Betrachtet man die Kanten in der Reihenfolge (v, v 2 ), (v, v 3 ), (v 2, v 3 ), (v 2, v 4 ), (v 2, v 5 ), (v 2, v 6 ), (v 3, v 4 ), (v 4, v 5 ), (v 4, v 6 ), (v 5, v 6 ), dann ergibt die Durchführung des Algorithmus: 2 2 4 5

Anmerkung: Man kann die Kanten zu Beginn des Algorithmus nach ihrer Länge sortieren In vielen Fällen müssen dann nicht in jeder Stufe alle Kanten betrachtet werden Enthält aber jeder minimale spannende Baum eines Graphen G eine längste Kante von G, dann wird durch die Sortierung nichts gewonnen Wir suchen nun spannende Bäume (dh Teilgraphen mit möglichst wenigen Kanten), deren Gesamtlänge maximal ist: Definition 338 (MWF) Sei G = (V, E) ein (kanten-)bewerteter ungerichteter Graph mit positiver Gewichtsfunktion w > 0, F ein kreisfreier Teilgraph F heißt Wald mit maximalem Gesamtgewicht w(f) = e F w(e), falls kein anderer kreisfreier Teilgraph F von G mit größerem Gesamtgewicht existiert MWF ist eng mit MST verwandt Sei G zunächst zusammenhängend Wegen w ij := w(v i, v j ) > 0 für alle v i, v j V, i j, ist ein Wald mit maximalem Gesamtgewicht dann ein spannender Baum von G Sei jetzt W := max{w ij, i, j V } und c ij = W w ij für alle i, j V Dann ist c(b) für jeden spannenden Baum B mit dem Gesamtgewicht w(t) durch w(t) = ( V )W c(t) verknüpft B hat maximales Gesamtgewicht bezüglich w genau dann, wenn B minimal bezüglich c (d h ein MST) ist Für unzusammenhängendes G betrachtet man G als Vereinigung der Zusammenhangskomponenten: Satz 339 Sei G = (V, E) ein Graph mit den Zusammenhangskomponenten S,, S k Weiter sei für jedes i {,,k} B i ein spannender Baum mit maximalem Gewicht Dann ist die Vereinigung {B i ; i k} ein Wald mit maximalem Gewicht Das Gegenstück zum Satz 326 für das MWF Problem ist: Satz 330 Sei G = (V, E) ein kantenbewerteter Graph mit positiver Gewichtsfunktion w : E IR, U V, (u, v) E mit u U, v / U und w(u, v) = max{w(x, y) x U, y / U} Dann existiert ein maximaler spannender Wald, der (u, v) enthält 6

Damit ergibt sich für MWF der folgende natürliche Algorithmus: Algorithmus 33 (Der gierige Algorithmus) Eingabe: G = (V,E) mit einer positiven Gewichtsfunktion w ij ; Ausgabe: Ein Wald F mit maximalem Gesamtgewicht; F := ; C := {{v },, {v n }}; while E do (u,v) Kante maximalen Gewichts in E; E := E \ {(u,v)}; if u und v sind nicht in derselben Komponente von (V,F) then F := F {(u,v)}; fasse die Komponenten von u und v zusammen; end Beispiel 332 v 7 8 v 3 v 4 2 3 8 7 7 = v 2 4 v 5 5 v 7 6 8 8 7 7 5 Der gierige Algorithmus schnappt also stets einfach nach dem größten erreichbaren Brocken Trotzdem löst er das Problem: Satz 333 Der gierige Algorithmus löst das MWF Problem 7