Algorithmen und Datenstrukturen II: Graphenalgorithmen

Ähnliche Dokumente
Algorithmen und Datenstrukturen II: Graphenalgorithmen

Universität Bremen. Graphenalgorithmen. Thomas Röfer. Begriffe Repräsentationen Kürzeste Wege Minimale spannende Bäume

Programmiertechnik II

Programmiertechnik II

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

Algorithmen und Datenstrukturen 2

Wiederholung zu Flüssen

Algorithmen und Datenstrukturen

Graphen. Leonhard Euler ( )

Algorithmen und Datenstrukturen 2-1. Seminar -

Graphen und Bäume. A.1 Graphen

Einheit 11 - Graphen

Wie wird ein Graph dargestellt?

9 Minimum Spanning Trees

Algorithmen und Datenstrukturen SS09. Foliensatz 16. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Bipartite Graphen. Beispiele

Algorithmische Graphentheorie

1.Aufgabe: Minimal aufspannender Baum

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

Minimal spannende Bäume

ADS: Algorithmen und Datenstrukturen 2

Aufgabe 1: Berechnen Sie für den in Abbildung 1 gegebenen Graphen den. Abbildung 1: Graph für Flussproblem in Übungsaufgabe 1

Algorithmen und Datenstrukturen 2

Kap. 5: Graphen. Carsten Gutwenger Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund. 17. VO DAP2 SS

Datenstrukturen. einfach verkettete Liste

15. Elementare Graphalgorithmen

Helmut Schauer Educational Engineering Lab Department for Information Technology University of Zurich. Graphen (2)

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

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

Teil 2: Graphenalgorithmen

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

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

Graphdurchmusterung, Breiten- und Tiefensuche

Algorithmische Graphentheorie

Bäume und Wälder. Definition 1

Vorlesung Datenstrukturen

Graphen: Datenstrukturen und Algorithmen

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

Grundbegriffe der Informatik

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

Lösungen zu Kapitel 5

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

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

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

Motivation Kap. 6: Graphen

Das Briefträgerproblem

Programmierkurs Python

Programmierkurs Python II

Vollständiger Graph. Definition 1.5. Sei G =(V,E) ein Graph. Gilt {v, w} E für alle v, w V,v w, dann heißt G vollständig (complete).

Algorithmen und Datenstrukturen 2

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

= 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

Algorithmen & Komplexität

Programmierkurs Python II

Tutoraufgabe 1 (Suchen in Graphen):

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Einführung in die Informatik 2

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

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

Diskrete Strukturen Kapitel 4: Graphentheorie (Grundlagen)

5. Bäume und Minimalgerüste

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Esparza)

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Graphalgorithmen I. Simon Regnet. May 16, Universität Erlangen. Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

Flüsse, Schnitte, bipartite Graphen

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Hausaufgabe 2 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008

Routing Algorithmen. Begriffe, Definitionen

Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Maximale s t-flüsse in Planaren Graphen

\ 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.

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

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

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 12, Donnerstag, 22.

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

Mustererkennung: Graphentheorie

C++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume

Flüsse, Schnitte, bipartite Graphen

Algorithmentheorie Maximale Flüsse

6. Übung zur Linearen Optimierung SS08

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Algorithmen und Datenstrukturen

6. Flüsse und Zuordnungen

Grundbegriffe der Informatik

Formale Grundlagen der Informatik

Grundbegriffe der Informatik

Datenstrukturen und Algorithmen SS07

Flüsse in Netzwerken. Seminar über Algorithmen SoSe Mike Rohland & Julia Schenk

Studientag zur Algorithmischen Mathematik

Das Steinerbaumproblem

Theoretische Informatik 1

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

9. Übung Algorithmen I

Effiziente Algorithmen I

Flüsse, Schnitte, Bipartite Graphen

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 6: Matchings und TSP-Problem

Transkript:

Algorithmen und Datenstrukturen II: Graphenalgorithmen Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 23.05.2017 13:41 Inhaltsverzeichnis Wofür........................................ 3 Das Königsberger Brückenproblem........................ 3 Gerichteter Graph................................. 3 Speicherung eines Graphen in einer Adjazenzmatrix............... 4 Beispiel: Graph als Adjazenzmatrix........................ 4 Speicherung in Adjazenzlisten........................... 5 Doppelt verkettete Pfeilliste............................ 5 Weitere Definitionen................................ 6 Weitere Definitionen (2).............................. 6 Wälder und Bäume................................. 6 Ungerichtete Graphen............................... 7 Durchlaufen von Graphen............................. 7 Gerüst eines Knotenbesuchsalgorithmus..................... 7 Verfeinerung des Knotenbesuchsalgorithmus................... 8 Einfache Zusammenhangskomponenten...................... 8 Tiefen- und Breitensuche.............................. 8 Tiefen- und Breitensuche (2)............................ 8 Kürzeste Wege................................... 8 Definition bewerteter Graph und Kostenfunktion................ 9 Definition Entfernung............................... 9 Definition Bewerteter Digraph........................... 10 Definition Distanzgraph.............................. 10 Kürzeste Wege in Distanzgraphen......................... 10 Optimalitätsprinzip................................. 10 1

Kürzeste Wege durch Hinzunahme einzelner Kanten............... 11 Idee zur Realisierung................................ 11 Idee zur Realisierung (2).............................. 11 Dijkstras Algorithmus............................... 12 Aufgabe....................................... 12 Kürzeste Wege in beliebig bewerteten Graphen................. 13 Auswahlverfahren von Ford............................ 13 Rand verschieben bei v............................... 14 Aufgabe....................................... 14 Minimal spannende Bäume............................ 14 Verfahren zur Lösung................................ 15 Algorithmus-Gerüst................................. 15 Auswahlverfahren für die Kanten......................... 15 Definition Schnitt.................................. 16 Entscheidungsregeln................................ 16 Algorithmus von Boruvka............................. 16 Algorithmus von Kruskal.............................. 16 Algorithmus von Jarník, Prim, Dijkstra...................... 17 Aufgabe....................................... 17 Flüsse in Netzwerken 17 Flüsse in Netzwerken................................ 17 Flüsse in Netzwerken (2).............................. 18 Fluss......................................... 18 Beispiel....................................... 18 Algorithmen zur Berechnung des maximalen Flusses............... 19 Maximaler Fluss durch zunehmende Wege.................... 19 Abändern von Flüssen............................... 19 Restgraph...................................... 20 Suche des zunehmenden Weges.......................... 20 Maximaler Fluss.................................. 21 Algorithmus: Beliebig zunehmende Wege..................... 21 Kürzeste zunehmende Wege............................ 21 Alle kürzesten zunehmenden Wegen........................ 21 Beispiel: Fluss- und Restgraph........................... 22 Niveaugraph..................................... 22 Abänderung Algorithmus............................. 23 Zuordnungsprobleme 23 Zuordnungsprobleme................................ 23 Zuordnungsproblem formalisiert.......................... 23 Maximale Zuordnung................................ 24 Zuordnung mit maximaler Zufriedenheit..................... 24 Maximale gewichtete Zuordnung......................... 25 Letzte Änderung: 23.05.2017 13:41 2

Bipartiter Graph.................................. 25 Beispiel....................................... 25 Fortsetzung Beispiel................................ 26 Zuordnungsproblem in bipartiten Graphen.................... 26 Beispiel als Flussgraph............................... 26 Zunehmende Wege................................. 27 Zurück zu G..................................... 28 Alternierender Weg................................. 28 Vergrößernder alternierender Weg......................... 29 Wofür wie komme ich am schnellsten von München nach Hamburg? wie teile ich die Arbeitskräfte in meinem Team am Besten den Tätigkeiten zu für die sie am Besten geeignet sind? wann kann der Hausbau frühestens fertig sein, wenn die einzelnen Arbeiten in der richtigen Reihenfolge ausgeführt werden? wie besuche ich alle meine Kunden mit einer kürzest möglichen Rundreise? Das Königsberger Brückenproblem Über alle Brücken genau einmal laufen und am Ausgangspunkt ankommen. Unmöglich (1736, Euler). Gerichteter Graph ein gerichteter Graph (engl: digraph) besteht aus einer Menge V = {1, 2,..., V } von Knoten (engl: vertices) und Letzte Änderung: 23.05.2017 13:41 3

einer Menge von E V V von Pfeilen (engl: edges, arcs) ein Paar (v, v ) E heißt Pfeil von v nach v v heißt Anfangsknoten von (v, v ) v heißt Endknoten von (v, v ) dann heißen v und v auch adjazent Frage: Kann es nach obiger Definition parallele Pfeile geben? Speicherung eines Graphen in einer Adjazenzmatrix Ein Graph G = (V, E) wird in einer Boole schen V V -Matrix A G 1 i V, 1 j V gespeichert, wobei = (a ij ) mit a ij = { 0 falls (i, j) E 1 falls (i, j) E Beispiel: Graph als Adjazenzmatrix Speicherung relativ ineffizient (quadratischer Aufwand) Letzte Änderung: 23.05.2017 13:41 4

Speicherung in Adjazenzlisten für jeden Knoten eine lineare, verkettete Liste der von diesem ausgehenden Pfeile Beispiel: Doppelt verkettete Pfeilliste doubly connected arc list (DCAL) Letzte Änderung: 23.05.2017 13:41 5

Weitere Definitionen Eingangsgrad indeg(v) ist Anzahl der in v einmündenen Pfeile Ausgangsgrad outdeg(v) ist Anzahl der von v ausgehenden Pfeile Ein Digraph G = (V, E ) ist ein Teilgraph von G = (V, E), geschrieben G G falls V V und E E für V V induziert V den Teilgraphen (V, E (V V )), auch Untergraph genannt ein Weg von v nach v mit v, v V ist der durch eine Folge von (v 0, v 1,..., v k ) von Knoten mit v 0 = v, v k = v und (v i, v i+1 ) E für 0 i < k beschriebene Teilgraph (V, E ) die Anzahl der Pfeile in E sind die Länge des Weges ein Weg heißt einfach, wenn kein Knoten mehrfach besucht wird Weitere Definitionen (2) ein Zyklus ist ein Weg von v nach v triviale Wege die aus einem Knoten und keinem Pfeil bestehen, werden nicht betrachtet ein Digraph heißt zyklenfrei oder azyklisch wenn er keine Zyklen enthält gibt es einen Weg von v nach v, ist v von v erreichbar Wälder und Bäume ein Digraph heißt gerichteter Wald, wenn E zyklenfrei und jeder Knoten einen Eingangsgrad von höchstens 1 hat jeder Knoten mit indeg(v) = 0 heißt Wurzel ein gerichteter Wald mit genau einer Wurzel heißt gerichteter Baum (Wurzelbaum) für einen Digraphen G = (V, E) ist ein gerichteter Wald W = (V, F ) mit F E ein spannender Wald von G falls W ein Baum ist, heißt er spannender Baum (spanning tree) Letzte Änderung: 23.05.2017 13:41 6

Ungerichtete Graphen wenn wir erzwingen, dass zwischen zwei Knoten entweder kein Pfeil oder in jeder Richtung ein Pfeil ist, können wir die Richtung weglassen ein solcher Graph G = (V, E) für den gilt (v, v ) E (v, v) E heißt ungerichteter Graph oder einfach Graph ein Paar ((v, v ), (v, v)) heißt Kante der Grad deg(v) ist dann gleich indeg(v) und auch outdeg(v) ein ungerichteter Graph heißt zyklenfrei oder azyklisch, falls er keinen einfachen Zyklus mit wenigstens 3 Pfeilen enthält Erinnerung: Bei einem einfachen Pfad darf kein Knoten mehrfach besucht werden Durchlaufen von Graphen für manche Probleme ist es wichtig alle Knoten eines Graphen zu betrachten (zu besuchen) z.b. in einem Labyrinth, Kreuzungen sind Knoten, Wege dazwischen sind Kanten verschiedene Suchstrategien, z.b. im Labyrinth einer alleine: erst einen Weg bis zum Ende und dann zurück (Tiefensuche) mehrere: ausschwärmen an einer Kreuzung (in die Breite) Gerüst eines Knotenbesuchsalgorithmus gegeben Graph G = (V, E), Menge B von bereits besuchten Knoten beginne bei beliebigem Knoten b, B = {b} markiere alle Pfeile/Kanten e E als unbenutzt solange es unbenutzten Pfeil/Kante (v, v ) E mit v B gibt markiere (v, v ) als benutzt B = B {v } B enthält alle von b aus erreichbaren Knoten Letzte Änderung: 23.05.2017 13:41 7

Verfeinerung des Knotenbesuchsalgorithmus zusätzlich Menge R, mit R B, von Knoten von denen noch unbenutzte Pfeile/Kanten ausgehen können R heisst Rand von B Bedingung zum Abbruch ist wenn R leer Einfache Zusammenhangskomponenten eine der einfachsten Anwendungen des linearen Knotenbesuchsalgorithmus suche Zusammenhangskomponenten Tiefen- und Breitensuche wird ein neuer Knoten besucht, so werden seine ausgehenden Pfeile/Kanten in die Datenstruktur der unbenutzen Kanten eingefügt Stapel/Stack (last in first out) Schlange/Queue (first in first out) was führt zur Tiefensuche, was zu Breitensuche? Tiefen- und Breitensuche (2) Stapel Tiefensuche depth first search, DFS Schlange Breitensuche breadth first search, BFS zu was führt ein rekursiver Knotenbesuchsalgorithmus? Kürzeste Wege bei der Modellierung realer Probleme reicht oft das Vorhandensein oder Fehlen von Knoten und Kanten nicht aus Knoten und Kanten bekommen Eigenschaften zugeordnet, die für die Lösung des Problems wesentlich sind Letzte Änderung: 23.05.2017 13:41 8

Beispiele Kanalrohre mit maximaler Transportkapazität Arbeiten an einem Haus haben minimale, maximale und erwartete Dauer Bahnstrecken haben Länge und (je nach Tarif) einen Preis Pfeil/Kante werden Kostenwerte zugeordnet, wir interessieren uns für kostengünstigste Wege wird in der Regel dann auch kürzester Weg genannt um Verluste modellieren zu können, dürfen Pfeile/Kanten auch negative Länge haben Definition bewerteter Graph und Kostenfunktion ein ungerichteter Graph G = (V, E) mit einer reelwertigen Bewertungsfunktion c : E R heißt bewerteter Graph für eine Kante e E heißt c(e) Bewertung (Länge, Gewicht, Kosten) die Länge c(g) des Graphen ist die Summe der Längen aller Kanten, also c(g) = e E c(e) für einen Weg p = (v 0, v 1,..., v k ) ist die Länge des Weges c(p) = k 1 i=0 c((v i, v i+1 )) für unbewertete Graphen setzen wir c(e) = 1, e E Definition Entfernung die Entfernung d (Distanz, distance) von einem Konten v zu einem Knoten v ist definiert als d(v, v ) = min{c(p) p ist Weg von v nach v } falls es überhaupt einen Weg von v nach v gibt sonst ist d(v, v ) = ein Weg p zwischen v und v mit c(p) = d(v, v ) heißt kürzester Weg (shortest path) zwischen v und v wird mit sp(v, v ) bezeichnet Letzte Änderung: 23.05.2017 13:41 9

Definition Bewerteter Digraph ein Digraph G = (V, E) mit Bewertungsfunktion c : E R heißt bewerteter Digraph wenn er keine Knoten ohne inzidente Pfeile hat (Pfeile die in einem Knoten beginnen oder Enden), heißt er Netzwerk Definition Distanzgraph ist die Länge jeder Kante nicht negativ, also c : E R + 0, so heißt G = (V, E) mit c Distanzgraph Kürzeste Wege in Distanzgraphen Problem: zu einem gegebenen Distanzgraphen und gegebenen Anfangsknoten s einen kürzesten Weg zu jedem anderen Knoten im Graph finden, Beispiel Idee: Wege in einer Art äquidistanter Welle um den Anfangsknoten solange wachsen lassen, bis Zielknoten erreicht ist Optimalitätsprinzip für jeden kürzesten Weg p = (v 0, v 1,..., v k ) von v 0 nach v k ist auch jeder Teilweg p = (v i,..., v j ), 0 i < j k ein kürzester Weg von v i nach v j warum? Letzte Änderung: 23.05.2017 13:41 10

Kürzeste Wege durch Hinzunahme einzelner Kanten länger werdende kürzeste Wege durch Hinzunahme einzelnen Kanten zu bereits bekannten kürzesten Wegen dabei gilt die Invariante 1. Für alle kürzesten Wege sp(s, v) und Kanten (v, v ) gilt: c(sp(s, v)) + c((v, v )) c(sp(s, v )) 2. Für wenigstens einen kürzesten Weg sp(s, v) und eine Kante (v, v ) gilt: c(sp(s, v)) + c((v, v )) = c(sp(s, v )) Idee zur Realisierung jeder Knoten gehört zu einer der Klassen gewählte Knoten: kürzester Weg von s ist bereits bekannt Randknoten: ein Weg von s bekannt unerreichte Knoten: kein Weg von s bekannt Idee zur Realisierung (2) wir merken uns zu jedem Knoten v die bisher berechnete, vorläufige Entfernung zum Anfangsknoten s, den Vorgänger von v auf dem bisher berechneten, vorläufig kürzesten Weg von s nach v und Letzte Änderung: 23.05.2017 13:41 11

eine Markierung, ob der Knoten bereits gewählt ist außerdem speichern wir die Menge R der Randknoten Dijkstras Algorithmus zur Berechnung kürzester Wege von einem Knoten zu allen anderen (1959, Buch S. 622f) Initialisierung setze s gewählt, Entfernung zu s = 0, Vorgänger = 0 für alle anderen Knoten setze nicht gewählt, Entfernung zu s =, Vorgänger undefiniert alle zu s adjazenten Knoten gehören zum Rand R berechne Wege ab s solange R wiederhole wähle v R mit minimaler Entfernung zu s und entferne v aus R setze v gewählt ergänze Rand R bei v * nehme alle unerreichten Knoten mit zu R * passe möglicherweise kürzer gewordene Entfernungen an Aufgabe Berechnen Sie die kürzesten Wege vom Knoten a nach Dijkstras Algorithmus: Letzte Änderung: 23.05.2017 13:41 12

Distanzgraph Kürzeste Wege in beliebig bewerteten Graphen wenn wir auch negative Kantenbewertungen zulassen, ändert sich die Berechnung kürzester Wege erheblich ein Weg wird kürzer(!) wenn eine Kante mit einer negativen Länge dazu genommen wird! d.h. wenn man zuläßt das negative Zyklen enthalten sein dürfen, wird der Weg immer kürzer Zusatzbedingung: kürzeste Wege dürfen keine Zyklen enthalten Auswahlverfahren von Ford kürzeste Wege in G = (V, E) mit c : E R von einem Knoten s V. 1. Initialisierung 1. setze für alle Knoten v V \{s} Vorgänger auf undefiniert und Entfernung auf. 2. setze für s Vorgänger auf s und Entfernung auf 0 3. alle zu s adjazenten Knoten gehören zu R 2. Berechne Wege ab s Solange R Letzte Änderung: 23.05.2017 13:41 13

wähle v R und entferne v aus R verschiebe R bei v Rand verschieben bei v Für alle (v, v ) E wird überprüft v.entfernung + c((v, v )) < v.entfernung wenn das gilt, ist v (kürzer) über v erreichbar setze Vorgänger von v auf v und Entfernung entsprechend füge v zum Rand hinzu, falls noch nicht enthalten Aufgabe Berechnen Sie die kürzesten Wege vom Knoten a nach dem Auswahlverfahren nach Ford: Distanzgraph Minimal spannende Bäume ein minimaler spannender Baum (minimal spanning tree, MST) eines Graphen G ist ein spannender Baum von G von Letzte Änderung: 23.05.2017 13:41 14

minimaler Gesamtlänge unter allen spannenden Bäumen von G Ziel: aus einer Vielzahl von Kanten nur diese auszuwählen, die die Knoten mit kürzester Gesamtlänge verbinden notwendige Voraussetzung zusammenhängender, ungerichteter Graph Verfahren zur Lösung gieriges (greedy) Verfahren Entscheidungen, die den Rechnenprozess der Lösung näher bringt * auf Basis der bis dahin gesammelten Informationen * werden nicht mehr revidiert vergleichsweise effizient Algorithmus-Gerüst berechne zu zusammenhängenden, ungerichteten, bewerteten Graphen G = (V, E) mit c : E R einen minimalen spannenden Baum T = (V, E ) von G setze E = solange noch nicht fertig wähle geeignete Kante und füge diese zu E hinzu Auswahlverfahren für die Kanten alle Kanten sind entweder gewählt, verworfen oder unentschieden zu Beginn alle Kanten unentschieden am Ende des Auswahlverfahrens bilden die gewählten einen minimalen spannenden Baum Auswahlinvariante es gibt einen MST der alle gewählten und keine verworfenen Kanten enthält im Laufe der Jahre verschiedene effiziente Algorithmen vorgeschlagen Letzte Änderung: 23.05.2017 13:41 15

Definition Schnitt ein Schnitt in einem Graphen G = (V, E) ist eine Zerlegung von V in S und S = V S eine Kante kreuzt einen Schnitt, wenn sie mit einem Knoten aus S und einem Knoten aus S inzident ist Entscheidungsregeln die folgenden Regeln entscheiden darüber ob eine unentschiedene Kante gewählt oder verworfen wird Regel 1 (Wähle eine Kante) Wähle einen Schnitt, den keine gewählte Kante kreuzt. Wähle eine kürzeste unter den unentschiedenen Kanten, die den Schnitt kreuzen. Regel 2 (Verwirf eine Kante) Wähle einen einfachen Zyklus, der keine verworfenen Kanten enthält. Verwirf eine längste unter den unentschiedenen Kanten im Zyklus. die verschiedenen Algorithmen unterscheiden sich zum einen in der Reihenfolge in der die beiden Regeln angewandt werden und zum anderen in der Art, wie ein Schnitt oder ein Zyklus gewählt werden Algorithmus von Boruvka ältester Algorithmus für G = (V, E) ist am Anfang jeder einzelne Knoten ein gewählter Baum in einem Auswahlschritt wird für jeden gewählten Baum eine kürzeste Kante zu einem anderen Baum gewählt gibt es zu einem Baum mehr als eine kürzeste Kante, wird diejenige gewählt, die mit einem Knoten kleinster Nummer indiziert dadurch wird vermieden, dass durch ungeschickte Wahl ein Zyklus entsteht Algorithmus von Kruskal für G = (V, E) ist am Anfang jeder einzelne Knoten ein gewählter Baum dann wird für jede Kante e E in aufsteigender Kantenlänge folgender Auswahlschritt angewandt: falls e beide Endknoten im selben gewählten Baum hat, verwirf e sonst, wähle e Letzte Änderung: 23.05.2017 13:41 16

Algorithmus von Jarník, Prim, Dijkstra ähnlich Dijkstras kürzeste Wege Algorithmus zu jedem Zeitpunkt bilden die gewählten Kanten einen gewählten Baum wir beginnen mit einem beliebigen Anfangsknoten s V und führen folgenden Auswahlschritt ( V 1)-mal aus: wähle eine Kante mit minimaler Länge zu der genau ein Endknoten zum gewählten Baum gehört Aufgabe Berechnen Sie den MST nach den drei verschiedenen Algorithmen: Distanzgraph Flüsse in Netzwerken Flüsse in Netzwerken Wieviele Fahrzeuge pro Minute kann ich höchstens durch eine Stadt leiten? Welche Wassermenge verkraftet die Kanalisation? Letzte Änderung: 23.05.2017 13:41 17

Flüsse in Netzwerken (2) sei G = (V, E) ein gerichteter Graph mit einer Kapazitätsfunktion c : E R + und zwei ausgezeichneten Knoten, einer Quelle q und einer Senke s Ziel: maximaler Fluß von q nach s Fluss ein Fluss durch einen Pfeil muss die Kapazitätsbeschränkung dieses Pfeils einhalten an jedem Knoten muss der Fluß erhalten bleiben, also gleich viel hinein- und hinausfließen (außer an q und s) ein Fluss ist eine Funktion f : E R + 0, wobei gilt: Kapazitätsbeschränkung: Für alle e E ist f(e) c(e) Flusserhaltung: für alle v V {q, s} ist (v,v) E f((v, v)) (v,v ) E f((v, v )) = 0 Beispiel an jedem Pfeil ist c(e)/f(e) angegeben der Wert w(f) eines Flusses f ist die Summe der Flußwerte aller q verlassenden Pfeile, also im Beispiel w(f) = 3 Letzte Änderung: 23.05.2017 13:41 18

Algorithmen zur Berechnung des maximalen Flusses es kann nicht mehr fließen wie unmittelbar aus q heraus und in s hinein genauso begrenzt jeder Schnitt durch den Graphen der q und s teilt ein (q von s trennender) Schnitt ist eine Zerlegung der Knotenmenge V in zwei Teilmengen Q und S, so dass q Q und s S die Kapazität c(q, S) eines Schnittes Q, S ist die Summe der Kapazitäten der Pfeile die von Q nach S führen ein Schnitt mit kleinster Kapazität unter allen möglichen Schnitten heißt minimaler Schnitt für jeden Fluss f und jeden Schnitt Q, S gilt: f(q, S) = w(f) der Fluß über einen beliebigen Schnitt kann dessen Kapazität nicht überschreiten Maximaler Fluss durch zunehmende Wege Fluss erhöhen, durch Hinzunahme eines Weges Fluss ist aber nur 8, obwohl Kapazität des minimalen Schnitts {q, a, b}, {c, d, s} 10 beträgt durch schrittweises Abändern der Flüsse maximieren Abändern von Flüssen Ausdrücken in Wegen von q nach s Letzte Änderung: 23.05.2017 13:41 19

Erhöhen eines Flusses entlang eines Pfeiles mit noch freier Restkapazität rest(e) = c(e) f(e) Verringern eines Flusses entlang eines Pfeiles, bzw. Erhöhen in Gegenrichtung Weg ohne Rücksicht auf die Pfeilrichtung wird zunehmender Weg genannt in Pfeilrichtung gilt f(e) > c(e), also rest(e) > 0 entgegen gilt f(e) > 0 Restgraph der Restgraph beschreibt die Flussvergrößerungsmöglichkeiten er enthält einen Pfeil e, wenn rest(e) > 0 er enthält den zu e entgegengesetzten Pfeil, wenn f(e) > 0 Beispiel für den letzten Fluss Suche des zunehmenden Weges der einzige zunehmende Weg in dem Beispiel, ist der einzige einfache Weg im Restgraphen von q nach s: q, b, a, c, d, s Flussvergrößerung um 2 auf diesem Weg anschließend kein Weg mehr von q nach s im zugehörigen Restgraphen Letzte Änderung: 23.05.2017 13:41 20

Maximaler Fluss Ein Fluss f ist genau dann maximal, wenn es für f keinen zunehmenden Weg mehr gibt. Der Wert des Flusses entspricht dann der Kapazität eines minimalen Schnitts. Algorithmus: Beliebig zunehmende Wege Initialisiere mit Nullfluss e E : f(e) := 0 solange es einen zunehmenden Weg p gibt: wähle r := min{rest(e) e liegt auf Weg p im Restgraphen} erhöhe f entlang p um r Kürzeste zunehmende Wege die Laufzeit kann durch weitere Bedingung eingeschränkt werden hängt nur von der Größe des Graphen ab wähle aus allen zunehmenden Wegen immer einen mit möglichst wenigen Pfeilen Alle kürzesten zunehmenden Wegen zur Bestimmung eines kürzesten zunehmenden Weges von q nach s sind nicht alle Pfeile im Restgraphen von Interesse Letzte Änderung: 23.05.2017 13:41 21

es genügt für jeden von q aus erreichbaren Knoten v im Restgraph einen kürzesten Weg von q nach v zu kennen die Länge (Anzahl der Pfeile) eines kürzesten Weges von q nach v heisst dann Niveau von v Beispiel: Fluss- und Restgraph Niveaugraph der Niveaugraph enthält nur die von q aus erreichbaren Knoten Pfeile die auf einem kürzesten Weg liegen mit einer Breitensuche kann der Niveaugraph in Zeit O( E ) konstruiert werden Beispiel Letzte Änderung: 23.05.2017 13:41 22

Abänderung Algorithmus der zweite Schritt zur iterierten Flussvergrößerung im Algorithmus Maximaler Fluss durch zunehmende Wege kann ersetzt werden durch: solange s zum Niveaugraphen für f gehört setze f b := ein blockierender Fluss im Niveaugraphen für f setze f := f f b ein Fluss der einen gesätigten (nicht mehr vergrößerbaren) Pfeil enthält, heisst blockierender Fluss die Operation bezeichnet das bereits erläuterte Addieren zweier Flüsse unter Berücksichtigung der Pfeilrichtung Zuordnungsprobleme Zuordnungsprobleme Zuordnungsprobleme bei denen es um eine insgesamt bestmögliche Bildung von Paaren geht die Elemente der Grundmenge sind die Knoten alle möglichen Paarbildungen beschreiben die Kanten Beispiel Knotenmenge: alle Teilnehmer einer Gruppenreise Kanten: Bereitschaft der beiden Teilnehmer in einem Doppelzimmer zu übernachten Fragestellung: Wieviele Doppelzimmer werden insgesamt benötigt? d.h. größtmögliche Kantenmenge, so dass jeder Knoten mit höchstens einer Kante inzidiert Zuordnungsproblem formalisiert für einen ungerichteten Graphen G = (V, E) ist eine Zuordnung Z (matching) eine Teilmenge der Kanten von G so dass keine zwei Kanten in Z den selben Endknoten haben die Anzahl Z von Kanten in Z heisst Größe der Zuordnung Letzte Änderung: 23.05.2017 13:41 23

ein Knoten ist bezüglich einer Zuordnung Z alleine (unmatched), wenn er nicht Endknoten einer Kante in Z ist Z ist eine perfekte Zuordnung (perfect matching), wenn mit Z kein Knoten alleine bleibt Maximale Zuordnung in folgendem Graphen gibt es mehrere perfekte Zuordnungen da es nicht immer eine perfekte Zuordnungen geben muss, definiert man eine Zuordnung Z als nicht erweiterbar (maximal), wenn es keine Kante e E gibt, die man noch hinzu nehmen könnte, z.b. {(Adam, Eva), (Dick, Doof)} eine Zuordnung mit maximaler Größe Z heisst maximale Zuordnung (maximum matching) Zuordnung mit maximaler Zufriedenheit ordnet man den Kanten noch Werte zu, die die jeweilige Zufriedenheit mit dem Partner ausdrücken, kann nach einer Zuordnung gesucht werden, die die Summe der Zufriedenheiten maximiert Letzte Änderung: 23.05.2017 13:41 24

anderes Anwendungsbeispiel Mitarbeiter sind verschieden gut geeignet für verschiedene Tätigkeiten, ausgedrückt durch das Kantengewicht Tätigkeiten sollen so Mitarbeitern zugeordnet werden, dass die Summe der Kantengewicht maximal wird Maximale gewichtete Zuordnung ungerichteter, bewerteter Graph G = (V, E) mit Kantenbewertung w : E R dann ist Gewicht einer Zuordnung Z die Summe der Gewichte der Kanten in Z wir suchen eine maximale gewichtetet Zuordnung (maximal weight matching) Bipartiter Graph ein Graph G = (V, E) heisst bipartit (bipartite), wenn sich die Knotenmenge so in zwei Teilmengen X und Y zerlegen lässt, also V = X Y und X Y = das gilt E X Y, also keine Kante zwei Knoten in X oder zwei Knoten in Y verbindet Beispiel Graph G mit X = {x 1,..., x 6 } und Y = {y1,..., y 6 } Zuordnung {(x 1, y2), (x 2, y 4 ), (x 4, y 5 ), (x 5, y 6 )} ist nicht maximal besser z.b. statt der Kante (x 1, y 2 ) die beiden Kanten (x 1, y 1 ) und (x 3, y 2 ) Letzte Änderung: 23.05.2017 13:41 25

Fortsetzung Beispiel es müssen also zum Maximieren u.u. Kanten aus einer Zuordnung wieder herausgenommen werden manchmal reicht es nicht eine Kante herauszunehmen, z.b. bei (x 2, y 4 ) und (x 4, y 5 ) erinnert an das Konzept der zunehmenden Flüsse Zuordnungsproblem in bipartiten Graphen Zuordnungsproblem in bipartiten Graphen kann als Flussproblem formuliert werden wir erweitern V mit zwei Knoten q und s zu V wir ändern E zu E jede Kante (x i, y j ) mit x i X, y j Y wird zu einem Pfeil von x i nach y j es gibt für jeden Knoten x i X einen Pfeil (q, x i ) es gibt für jeden Knoten y j Y einen Pfeil (y j, s) der Graph G = (V, E ) ist ein Flussgraph Beispiel als Flussgraph als Kapazitätsfunktion wählen wir c : E {1} jede Zuordnung entspricht einem Fluss und umgekehrt Letzte Änderung: 23.05.2017 13:41 26

Zunehmende Wege Ersetzen der Kante (x 1, y 2 ) durch die beiden Kanten (x 1, y 1 ) und (x 3, y 2 ) entspricht dem zunehmenden Weg q, x 3, y 2, x 1, y 1, s Letzte Änderung: 23.05.2017 13:41 27

Zurück zu G wir können das Konzept der zunehmenden Flüsse in folgendes Konzept für G übertragen: auf einem zunehmenden Weg transportiert ein Vorwärtspfeil e den aktuellen Fluss f(e) = 0 ein Rückwärtspfeil e den aktuellen Fluss f(e ) = 1 einem zunehmenden Weg q, x i,..., y j, s in G entspricht ein ein Weg x i,..., y j in G Zahl der Vorwärtspfeile ist stets um 1 größer als Zahl der Rückwärtspfeile Weg in G ist Weg in dem abwechselnd Kanten zur Zuordnung gehören bzw. nicht zur Zuordnung gehören Alternierender Weg für eine gegebenen Zuordnung Z nennen wir die für Z verwendeten Kanten e Z heissen gebunden die Kanten e E \ Z heissen frei Letzte Änderung: 23.05.2017 13:41 28

jeder Knoten der mit einer gebundenen Kante inzidiert ist, heisst gebundener Knoten jeder andere Knoten ist frei ein Weg in G dessen Kanten abwechselnd gebunden und frei sind, heisst alternierender Weg die Länge des alternierenden Wegs ist die Anzahl seiner Kanten Vergrößernder alternierender Weg ein alternierender Weg kann nur dann zur Vergrößerung der Zuordnung benützt werden, wenn die beiden Knoten an den Enden frei sind der alternierende Weg heisst dann vergrößernd Beweis, dass man mit vergrößernden Wegen schließlich auch wirklich eine maximale Zuordnung erreicht, steht in Ottmann & Widmayer S. 653ff Letzte Änderung: 23.05.2017 13:41 29