Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Slides:



Advertisements
Ähnliche Präsentationen
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Advertisements

Berechne den optimalen (kürzesten, schnellsten) Weg
Single-Source Shortest Paths: SSSP
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Telefonnummer.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
Statistiken und Tabellen
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Differentielles Paar UIN rds gm UIN
Prof. Dr. Bernhard Wasmayr
Studienverlauf im Ausländerstudium
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
AWA 2007 Natur und Umwelt Natürlich Leben
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Prof. Dr. Günter Gerhardinger Soziale Arbeit mit Einzelnen und Familien Übersicht über die Lehrveranstaltung Grundlegende Bestimmungsfaktoren der Praxis.
20:00.
Zusatzfolien zu B-Bäumen
Effiziente Algorithmen
Eine Einführung in die CD-ROM
GBI Genios Wiso wiso bietet Ihnen das umfassendste Angebot deutsch- und englischsprachiger Literatur für die Wirtschafts- und Sozialwissenschaften. Wir.
Dokumentation der Umfrage
Effiziente Algorithmen
für Weihnachten oder als Tischdekoration für das ganze Jahr
Wir üben die Malsätzchen
Syntaxanalyse Bottom-Up und LR(0)
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Der Ablauf eines Clear Rex Klärzyklus
PROCAM Score Alter (Jahre)
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Symmetrische Blockchiffren DES – der Data Encryption Standard
Retuschen.ppt Die folgende Schau zeigt die Möglichkeiten, mit PhotoDraw Digitalbilder zu retuschieren. Vergleichen Sie jeweils zwei Bildpaare durch fleissiges.
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Parkplatz-Orga Diese Version ist vom finale Version!
Kamin- und Kachelöfen in Oberösterreich
Zusammengestellt von OE3DSB
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
Technische Frage Technische Frage Bitte löse die folgende Gleichung:
Unternehmensbewertung Thomas Hering ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List of Figures Tabellenübersicht.
Forschungsprojekt Statistik 2013 „Jugend zählt“ – Folie 1 Statistik 2013 „Jugend zählt“: Daten zur Arbeit mit Kindern und Jugendlichen.
AGOF facts & figures: Branchenpotenziale im Internet Q2 2014: Parfum & Kosmetik Basis: internet facts / mobile facts 2014-I.
Folie Einzelauswertung der Gemeindedaten
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
 Präsentation transkript:

Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Graphalgorithmen Bisherige Ergebnisse Heute Dijkstras Algorithmus für positive Kantengewichte Bellman-Ford für allgemeine Kantengewichte; Laufzeit O(|V|²+|V||E|) Negative Zyklen können erkannt werden Heute All Pairs Shortest Paths (mit negativen Kantengewichten)

Graphalgorithmen All Pairs Shortest Path (APSP) a b c d e f 1 5 10 9  Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,vV die Distanz von u nach v sowie einen kürzesten Weg b 4 c a b c d e f 1 5 10 9  4 -3 6 -4 8 -1 2 7 1 -4 f a 6 8 5 -1 5 e d

Graphalgorithmen All Pairs Shortest Path (APSP) a b c d e f 1 5 10 9  Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,vV die Distanz von u nach v sowie einen kürzesten Weg c b 4 a b c d e f 1 5 10 9  4 -3 6 -4 8 -1 2 7 1 -4 f a 6 8 5 -1 5 e d

Graphalgorithmen Eingabe APSP Matrix W=(w ), die Graph repräsentiert ij 0 , wenn i=j Gewicht der ger. Kante (i,j), wenn ij und (i,j)E  , wenn ij und (i,j)E w = ij a b c d e f 2  5 4 1 7 -4 6 8 -1 b 4 c 2 7 1 -4 f a 6 8 5 -1 5 e d

Graphalgorithmen Eingabe APSP Matrix W=(w ), die Graph repräsentiert ij 0 , wenn i=j Gewicht der ger. Kante (i,j), wenn ij und (i,j)E  , wenn ij und (i,j)E w = ij a b c d e f 2  5 4 1 7 -4 6 8 -1 b 4 c 2 7 1 -4 f a 6 8 5 -1 5 e d

Graphalgorithmen Eingabe APSP Annahme: Keine negativen Zyklen! Matrix W=(w ), die Graph repräsentiert ij 0 , wenn i=j Gewicht der ger. Kante (i,j), wenn ij und (i,j)E  , wenn ij und (i,j)E w = ij a b c d e f 2  5 4 1 7 -4 6 8 -1 b 4 c 2 7 1 -4 f a 6 8 5 -1 5 e d

Graphalgorithmen Eine neue Rekursion: Nummeriere Knoten von 1 bis n=|V| Betrachte kürzeste i-j-Wege, die nur über Knoten 1 bis k laufen 1 2 3 4 5 6  13 11 7 -4 8 14 -1 k=3 2 4 3 2 7 1 -4 6 1 6 8 5 -1 5 5 4

Graphalgorithmen Eine neue Rekursion: Nummeriere Knoten von 1 bis n=|V| Betrachte kürzeste i-j-Wege, die nur über Knoten 1 bis k laufen 1 2 3 4 5 6  13 11 7 -4 8 14 -1 k=3 2 4 3 2 7 1 -4 6 1 6 8 5 -1 5 5 4

Graphalgorithmen Zur Erinnerung Sei G ein Graph ohne negative Zyklen und sei j von i aus erreichbar. Dann gibt es einen kürzesten i-j-Weg, der keinen Knoten doppelt benutzt. (Lemma 56) Wir können also annehmen, dass jeder Knoten in jedem Weg maximal einmal vorkommt Betrachte i-j-Weg, der nur über Knoten aus {1,…,k} läuft: k j i

Graphalgorithmen Zur Erinnerung Sei G ein Graph ohne negative Zyklen und sei j von i aus erreichbar. Dann gibt es einen kürzesten i-j-Weg, der keinen Knoten doppelt benutzt. (Lemma 56) Wir können also annehmen, dass jeder Knoten in jedem Weg maximal einmal vorkommt Betrachte i-j-Weg, der nur über Knoten aus {1,…,k} läuft: Knoten k tritt maximal einmal auf k j i

Graphalgorithmen Zur Erinnerung Sei G ein Graph ohne negative Zyklen und sei j von i aus erreichbar. Dann gibt es einen kürzesten i-j-Weg, der keinen Knoten doppelt benutzt. (Lemma 56) Wir können also annehmen, dass jeder Knoten in jedem Weg maximal einmal vorkommt Betrachte i-j-Weg, der nur über Knoten aus {1,…,k} läuft: Weg von u nach k führt nur über Knoten aus {1,…,k-1} k j i

Graphalgorithmen Zur Erinnerung Sei G ein Graph ohne negative Zyklen und sei j von i aus erreichbar. Dann gibt es einen kürzesten i-j-Weg, der keinen Knoten doppelt benutzt. (Lemma 56) Wir können also annehmen, dass jeder Knoten in jedem Weg maximal einmal vorkommt Betrachte i-j-Weg, der nur über Knoten aus {1,…,k} läuft: Weg von k nach v führt nur über Knoten aus {1,…,k-1} k j i

Graphalgorithmen Die Rekursion Kürzester i-j-Weg über Knoten aus {1,…,k} ist (a) kürzester i-j-Weg über Knoten aus {1,…,k-1} oder (b) kürzester i-k-Weg über Knoten aus {1,…,k-1} gefolgt von kürzestem k-j-Weg über Knoten aus {1,…,k-1} Fall (b): k j i

Graphalgorithmen Die Rekursion Sei d die Länge eines kürzesten i-j-Wegs über Knoten aus {1,…,k} Matrix D =(d ) enthält die gesuchte Lösung (k) ij (k) w , falls k=0 min ( d , d + d ), falls k1 d = ij (k-1) (k-1) (k-1) ij ij ik kj (n) (n) ij

Graphalgorithmen Floyd-Warshall(W,n) 1. D  W 2. for k1 to n do 3. for i1 to n do 4. for j1 to n do 5. d  min(d , d + d ) 6. return D (0) (k) (k-1) (k-1) (k-1) ij ij ik kj (n)

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 8 -1 1 2 3 4 5 6 (0) (1) D D

D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6  7  7 -3 8 -1 1 2 3 4 5 6  (0) (1) D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 8 -1 1 2 3 4 5 6  (0) (1) D D

D D Graphalgorithmen 2 4 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6  7  7 -3 8 -1 1 2 3 4 5 6  7 (0) (1) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 8 -1 1 2 3 4 5 6  7 -3 -1 (0) (1) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 8 -1 1 2 3 4 5 6  7 -3 -1 8 (0) (1) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 8 -1 1 2 3 4 5 6  7 -3 -1 8 (0) (1) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 -1 8 1 2 3 4 5 6  (1) (2) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 -1 8 1 2 3 4 5 6  (1) (2) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 -1 8 1 2 3 4 5 6  7 (1) (2) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 -1 8 1 2 3 4 5 6  7 -3 -1 (1) (2) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 -1 8 1 2 3 4 5 6  7 -3 -1 8 (1) (2) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 -1 8 1 2 3 4 5 6  7 -3 -1 8 (1) (2) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 -1 8 1 2 3 4 5 6  13 (2) (3) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 -1 8 1 2 3 4 5 6  13 11 (2) (3) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 -1 8 1 2 3 4 5 6  13 11 7 (2) (3) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 -1 8 1 2 3 4 5 6  13 11 7 -3 -1 10 (2) (3) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 -1 8 1 2 3 4 5 6  13 11 7 -3 -1 10 8 9 (2) (3) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   7 -3 -1 8 1 2 3 4 5 6  13 11 7 -3 -1 10 8 9 (2) (3) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   13 11 7 -3 -1 10 8 9 1 2 3 4 5 6 10 13 (3) (4) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   13 11 7 -3 -1 10 8 9 1 2 3 4 5 6 10 13 11 (3) (4) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   13 11 7 -3 -1 10 8 9 1 2 3 4 5 6 10 13 11 -2 7 (3) (4) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   13 11 7 -3 -1 10 8 9 1 2 3 4 5 6 10 13 11 -2 7 -3 -1 (3) (4) D D

D D Graphalgorithmen 4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6   13 11 7 -3 -1 10 8 9 1 2 3 4 5 6 10 13 11 -2 7 -3 -1 8 9 (3) (4) D D

D D Graphalgorithmen  4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6  13 11 7 -3 -1 10 8 9 1 2 3 4 5 6 10 13 11 -2 7 -3 -1 8 9  (3) (4) D D

D D Graphalgorithmen  4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6 10 13 11 -2 7 -3 -1 8 9  1 2 3 4 5 6 10 9 (4) (5) D D

D D Graphalgorithmen  4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6 10 13 11 -2 7 -3 -1 8 9  1 2 3 4 5 6 10 9 (4) (5) D D

D D Graphalgorithmen  4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6 10 13 11 -2 7 -3 -1 8 9  1 2 3 4 5 6 10 9 -2 (4) (5) D D

D D Graphalgorithmen  4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6 10 13 11 -2 7 -3 -1 8 9  1 2 3 4 5 6 10 9 -2 -3 -1 (4) (5) D D

D D Graphalgorithmen  4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 6 10 13 11 -2 7 -3 -1 8 9  1 2 3 4 5 6 10 9 -2 -3 -1 8 (4) (5) D D

D D Graphalgorithmen   4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 10 13 11 -2 7 -3 -1 8 9  1 2 3 4 5 6 10 9 -2 -3 -1 8  (4) (5) D D

D D Graphalgorithmen   4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 10 9 -2 -3 -1 8  1 2 3 4 5 6 10 9 -2 -3 -1 8  (5) (6) D D

D D Graphalgorithmen   4 3 2 2 7 1 4 6 1 6 8 -3 5 -1 5 5 4 1 2 3 4 5 10 9 -2 -3 -1 8  1 2 3 4 5 6 10 9 -2 -3 -1 8  (5) (6) D D

Graphalgorithmen Satz 61 Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit.

Graphalgorithmen Satz 61 Beweis Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit. Beweis Die Laufzeit folgt sofort, da 3 ineinander geschachtelte Schleifen jeweils von 1 bis |V|=n durchlaufen werden.

Graphalgorithmen Satz 61 Beweis Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit. Beweis Die Laufzeit folgt sofort, da 3 ineinander geschachtelte Schleifen jeweils von 1 bis |V|=n durchlaufen werden. Korrektheit per Induktion über k. Z.z. die Matrix D enthält die kürzeste Entfernung zwischen allen Paaren von Knoten, wenn die Pfade nur über die Knoten {1,..,k} verlaufen dürfen. (k)

Graphalgorithmen Satz 61 Beweis Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit. Beweis Die Laufzeit folgt sofort, da 3 ineinander geschachtelte Schleifen jeweils von 1 bis |V|=n durchlaufen werden. Korrektheit per Induktion über k. Z.z. die Matrix D enthält die kürzeste Entfernung zwischen allen Paaren von Knoten, wenn die Pfade nur über die Knoten {1,..,k} verlaufen dürfen. (I.A.) Die Matrix D ist gleich der Eingabematrix W und enthält somit alle Wege im Graphen, die keinen Zwischenknoten benutzen. (k) (0)

Graphalgorithmen Satz 61 Beweis Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit. Beweis Die Laufzeit folgt sofort, da 3 ineinander geschachtelte Schleifen jeweils von 1 bis |V|=n durchlaufen werden. Korrektheit per Induktion über k. Z.z. die Matrix D enthält die kürzeste Entfernung zwischen allen Paaren von Knoten, wenn die Pfade nur über die Knoten {1,..,k} verlaufen dürfen. (I.A.) Die Matrix D ist gleich der Eingabematrix W und enthält somit alle Wege im Graphen, die keinen Zwischenknoten benutzen. (k) (0)

Graphalgorithmen Satz 61 Beweis Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit. Beweis (I.V.) Die Matrix D erfüllt die Aussage. (k-1)

Graphalgorithmen Satz 61 Beweis Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit. Beweis (I.V.) Die Matrix D erfüllt die Aussage. (I.S.) Die Matrix D soll nun die kürzesten Wege zwischen Knotenpaaren enthalten, die nur über die Knoten {1,..,k} verlaufen. (k-1) (k)

Graphalgorithmen Satz 61 Beweis Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit. Beweis (I.V.) Die Matrix D erfüllt die Aussage. (I.S.) Die Matrix D soll nun die kürzesten Wege zwischen Knotenpaaren enthalten, die nur über die Knoten {1,..,k} verlaufen. Da G keine negativen Zyklen hat, gibt es immer einen kürzesten Weg, der jeden Knoten nur maximal einmal besucht. (k-1) (k)

Graphalgorithmen Satz 61 Beweis Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit. Beweis (I.V.) Die Matrix D erfüllt die Aussage. (I.S.) Die Matrix D soll nun die kürzesten Wege zwischen Knotenpaaren enthalten, die nur über die Knoten {1,..,k} verlaufen. Da G keine negativen Zyklen hat, gibt es immer einen kürzesten Weg, der jeden Knoten nur maximal einmal besucht. Verläuft der kürzeste Weg von i nach j nun über Knoten k, so ist seine Länge nach (I.V.) genau d + d . (k-1) (k) (k-1) (k-1) ik kj

Graphalgorithmen Satz 61 Beweis Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit. Beweis (I.V.) Die Matrix D erfüllt die Aussage. (I.S.) Die Matrix D soll nun die kürzesten Wege zwischen Knotenpaaren enthalten, die nur über die Knoten {1,..,k} verlaufen. Da G keine negativen Zyklen hat, gibt es immer einen kürzesten Weg, der jeden Knoten nur maximal einmal besucht. Verläuft der kürzeste Weg von i nach j nun über Knoten k, so ist seine Länge nach (I.V.) genau d + d . Ansonsten verläuft er nicht über k und somit nur über die Knoten {1,..,k-1}. (k-1) (k) (k-1) (k-1) ik kj

Graphalgorithmen Satz 61 Beweis Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit. Beweis (I.V.) Die Matrix D erfüllt die Aussage. (I.S.) Die Matrix D soll nun die kürzesten Wege zwischen Knotenpaaren enthalten, die nur über die Knoten {1,..,k} verlaufen. Da G keine negativen Zyklen hat, gibt es immer einen kürzesten Weg, der jeden Knoten nur maximal einmal besucht. Verläuft der kürzeste Weg von i nach j nun über Knoten k, so ist seine Länge nach (I.V.) genau d + d . Ansonsten verläuft er nicht über k und somit nur über die Knoten {1,..,k-1}. Damit ist seine Länge d . (k-1) (k) (k-1) (k-1) ik kj (k-1) ij

Graphalgorithmen Satz 61 Beweis Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit. Beweis (I.V.) Die Matrix D erfüllt die Aussage. (I.S.) Die Matrix D soll nun die kürzesten Wege zwischen Knotenpaaren enthalten, die nur über die Knoten {1,..,k} verlaufen. Da G keine negativen Zyklen hat, gibt es immer einen kürzesten Weg, der jeden Knoten nur maximal einmal besucht. Verläuft der kürzeste Weg von i nach j nun über Knoten k, so ist seine Länge nach (I.V.) genau d + d . Ansonsten verläuft er nicht über k und somit nur über die Knoten {1,..,k-1}. Damit ist seine Länge d . Somit wird die Länge durch die Rekursion korrekt berechnet. (k-1) (k) (k-1) (k-1) ik kj (k-1) ij

Graphalgorithmen Satz 61 Beweis Sei G=(V,E) ein Graph ohne negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V|³) Zeit. Beweis (I.V.) Die Matrix D erfüllt die Aussage. (I.S.) Die Matrix D soll nun die kürzesten Wege zwischen Knotenpaaren enthalten, die nur über die Knoten {1,..,k} verlaufen. Da G keine negativen Zyklen hat, gibt es immer einen kürzesten Weg, der jeden Knoten nur maximal einmal besucht. Verläuft der kürzeste Weg von i nach j nun über Knoten k, so ist seine Länge nach (I.V.) genau d + d . Ansonsten verläuft er nicht über k und somit nur über die Knoten {1,..,k-1}. Damit ist seine Länge d . Somit wird die Länge durch die Rekursion korrekt berechnet. (k-1) (k) (k-1) (k-1) ik kj (k-1) ij

Graphalgorithmen Aufrechterhalten der kürzesten Wege: Konstruiere Vorgängermatrix P Dazu konstruiere Sequenz P ,…, P mit P = P P ist Vorgängermatrix zu D p ist Vorgänger von Knoten j auf dem kürzesten Weg von Knoten i über Knoten aus {1,…,k} Die Startmatrix: (1) (n) (n) (k) (k) (k) ij (0) nil , falls i=j oder w = i , falls ij und w < p = ij ij ij

Graphalgorithmen Aufrechterhalten der kürzesten Wege: Konstruiere Vorgängermatrix P Dazu konstruiere Sequenz P ,…, P mit P = P P ist Vorgängermatrix zu D p ist Vorgänger von Knoten j auf dem kürzesten Weg von Knoten i über Knoten aus {1,…,k} Das Aktualisieren: p , falls d ≤ d + d p , falls d ≤ d + d (1) (n) (n) (k) (k) (k) ij (k-1) (k-1) (k-1) (k-1) ij ij ik kj (k) p = ij (k-1) (k-1) (k-1) (k-1) kj ij ik kj

Graphalgorithmen SSSP (pos. Kantengewichte): Dijkstra; Laufzeit in der Übung SSSP (allgemeine Kantengewichte) Bellman-Ford; Laufzeit O(|V|²+|V| |E|) APSP (allgemeine Kantengewichte, keine negativen Zyklen) Floyd-Warshall; Laufzeit O(|V|³)

Graphalgorithmen Binäre Relationen Graphen und Relationen Eine (binäre) Relation R zwischen Elementen der Mengen A und B ist eine Teilmenge von AB. Ist A=B, so spricht man auch von einer Relation auf der Menge A Graphen und Relationen Sei G=(V,E) ein gerichteter Graph (möglicherweise mit Selbstschleifen, d.h. Kanten von v nach v) E ist Teilmenge von VV Also kann man E als Relation auf der Menge V interpretieren

Graphalgorithmen Reflexivität Interpretation als Graph Eine Relation R auf der Menge V heißt reflexiv, wenn (v,v)R für alle vV. Interpretation als Graph Alle Knoten haben Selbstschleifen

Graphalgorithmen Symmetrie Interpretation als Graph Eine Relation R auf der Menge V heißt symmetrisch, wenn aus (u,v)R folgt, dass (v,u) R ist. Interpretation als Graph Alle Kanten sind in beiden Richtungen vorhanden (ungerichteter Graph) Selbstschleifen erlaubt

Graphalgorithmen Transitivität Interpretation als Graph Eine Relation R auf der Menge V heißt transitiv, wenn aus (u,v)R und (v,w)R folgt, dass (v,w)R ist. Interpretation als Graph Man kann zwei aufeinanderfolgende Kanten immer abkürzen Wiederholtes Anwenden: Gibt es Weg von u nach v, so gibt es direkte Verbindung

Graphalgorithmen Aquivalenzrelation Interpretation als Graph Eine Relation R auf der Menge V heißt Aquivalenzrelation, wenn sie reflexiv, symmetrisch und transitiv ist. Interpretation als Graph Ungerichteter Graph mit Selbstschleifen an jedem Knoten Zusammenhangskomponenten sind vollständig verbunden

G* G Graphalgorithmen Das transitive Hülle Problem Gegeben sei ein gerichteter, ungewichteter Graph G=(V,E) Gesucht: Die transitive Hülle G*=(V,E*) von G, wobei E*={(u,v): es gibt Weg von u nach v in G} G G*

Graphalgorithmen Transitive Hülle in O(|V|³) Zeit mit Floyd-Warshall In O(|V|²+|V| |E|) Zeit mit Breiten- oder Tiefensuche von jedem Knoten Geht das auch schneller?

Graphalgorithmen Graphen und Matrixmultiplikation Sei A die nn-Adjazenzmatrix eines ungerichteten Graphen G mit Knotenmenge {1,…,n} Was ist AA?

Graphalgorithmen Behauptung 62 Sei Z= AA. Dann gilt z >0, g.d.w. es in G einen Pfad der Länge 2 von Knoten i zu Knoten j gibt. ij

Graphalgorithmen Behauptung 62 Beweis Sei Z= AA. Dann gilt z >0, g.d.w. es in G einen Pfad der Länge 2 von Knoten i zu Knoten j gibt. Beweis „“ Es gilt bei der Matrixmultiplikation, dass z = S a ∙ a . ij ij ik kj

Graphalgorithmen Behauptung 62 Beweis Sei Z= AA. Dann gilt z >0, g.d.w. es in G einen Pfad der Länge 2 von Knoten i zu Knoten j gibt. Beweis „“ Es gilt bei der Matrixmultiplikation, dass z = S a ∙ a . Da die Einträge von A entweder 0 oder 1 sind, folgt aus z > 0, dass für mindestens einen Index k gilt: a = 1 und a = 1. ij ij ik kj ij ik kj

Graphalgorithmen Behauptung 62 Beweis Sei Z= AA. Dann gilt z >0, g.d.w. es in G einen Pfad der Länge 2 von Knoten i zu Knoten j gibt. Beweis „“ Es gilt bei der Matrixmultiplikation, dass z = S a ∙ a . Da die Einträge von A entweder 0 oder 1 sind, folgt aus z > 0, dass für mindestens einen Index k gilt: a = 1 und a = 1. Damit gibt es aber eine Kante von i nach k und k nach j, also einen Pfade der Länge 2. ij ij ik kj ij ik kj

Graphalgorithmen Behauptung 62 Beweis Sei Z= AA. Dann gilt z >0, g.d.w. es in G einen Pfad der Länge 2 von Knoten i zu Knoten j gibt. Beweis „“ Es gilt bei der Matrixmultiplikation, dass z = S a ∙ a . Da die Einträge von A entweder 0 oder 1 sind, folgt aus z > 0, dass für mindestens einen Index k gilt: a = 1 und a = 1. Damit gibt es aber eine Kante von i nach k und k nach j, also einen Pfade der Länge 2. „“ Gibt es einen Pfad der Länge 2 von i nach j, so verläuft dieser über einen weiteren Knoten, sagen wir k. Damit ist a =1 und a =1. ij ij ik kj ij ik kj ik kj

Graphalgorithmen Behauptung 62 Beweis Sei Z= AA. Dann gilt z >0, g.d.w. es in G einen Pfad der Länge 2 von Knoten i zu Knoten j gibt. Beweis „“ Es gilt bei der Matrixmultiplikation, dass z = S a ∙ a . Da die Einträge von A entweder 0 oder 1 sind, folgt aus z > 0, dass für mindestens einen Index k gilt: a = 1 und a = 1. Damit gibt es aber eine Kante von i nach k und k nach j, also einen Pfade der Länge 2. „“ Gibt es einen Pfad der Länge 2 von i nach j, so verläuft dieser über einen weiteren Knoten, sagen wir k. Damit ist a =1 und a =1. Da die Einträge von A entweder 0 oder 1 sind, folgt z = S a ∙ a >0. ij ij ik kj ij ik kj ik kj ij ik kj

Graphalgorithmen Behauptung 62 Beweis Sei Z= AA. Dann gilt z >0, g.d.w. es in G einen Pfad der Länge 2 von Knoten i zu Knoten j gibt. Beweis „“ Es gilt bei der Matrixmultiplikation, dass z = S a ∙ a . Da die Einträge von A entweder 0 oder 1 sind, folgt aus z > 0, dass für mindestens einen Index k gilt: a = 1 und a = 1. Damit gibt es aber eine Kante von i nach k und k nach j, also einen Pfade der Länge 2. „“ Gibt es einen Pfad der Länge 2 von i nach j, so verläuft dieser über einen weiteren Knoten, sagen wir k. Damit ist a =1 und a =1. Da die Einträge von A entweder 0 oder 1 sind, folgt z = S a ∙ a >0. ij ij ik kj ij ik kj ik kj ij ik kj

Graphalgorithmen Behauptung 63 Beweis Konstruiere Matrix B mit: Sei Z‘= AA + A. Dann gilt, dass z‘ >0, g.d.w. es einen Weg der Länge 1 oder 2 von Knoten i zu Knoten j gibt. Beweis Folgt sofort aus dem vorhergehenden Lemma und der Tatsache, dass A genau für die Paare i,j einen Eintrag 1 hat, die durch eine Kante (einen Weg der Länge 1) verbunden sind Konstruiere Matrix B mit: b =1  z‘ >0 ij ij ij

Graphalgorithmen Behauptung 64 Beweis Der durch Matrix B definierte Graph hat einen Weg von Knoten i nach j, g.d.w. der durch Matrix A definierte Graph einen solchen Weg hat. Beweis Folgt aus der vorherigen Behauptung.

Graphalgorithmen Behauptung 65 Sei P ein Weg der Länge k>1 in G von Knoten i zu Knoten j. Dann gibt es in dem von Matrix B beschriebenen Graphen G‘ einen Weg von i nach j mit Länge maximal 2/3 k.

Graphalgorithmen Behauptung 65 Beweis Sei P ein Weg der Länge k>1 in G von Knoten i zu Knoten j. Dann gibt es in dem von Matrix B beschriebenen Graphen G‘ einen Weg von i nach j mit Länge maximal 2/3 k. Beweis Sei P ein Weg in G mit k Kanten.

Graphalgorithmen Behauptung 65 Beweis Sei P ein Weg der Länge k>1 in G von Knoten i zu Knoten j. Dann gibt es in dem von Matrix B beschriebenen Graphen G‘ einen Weg von i nach j mit Länge maximal 2/3 k. Beweis Sei P ein Weg in G mit k Kanten. Ist k gerade, dann gibt es in G‘ einen Weg der Länge k/2, da man jeweils zwei aufeinanderfolgende Kanten von P durch eine Kante in G‘ ersetzen kann.

Graphalgorithmen Behauptung 65 Beweis Sei P ein Weg der Länge k>1 in G von Knoten i zu Knoten j. Dann gibt es in dem von Matrix B beschriebenen Graphen G‘ einen Weg von i nach j mit Länge maximal 2/3 k. Beweis Sei P ein Weg in G mit k Kanten. Ist k gerade, dann gibt es in G‘ einen Weg der Länge k/2, da man jeweils zwei aufeinanderfolgende Kanten von P durch eine Kante in G‘ ersetzen kann. Ist k ungerade, dann gibt es in G‘ einen Weg der Länge k/2, da man bis auf die letzte Kante jeweils zwei aufeinanderfolgende Kanten von P durch eine Kante in G‘ ersetzen kann.

Graphalgorithmen Behauptung 65 Beweis Sei P ein Weg der Länge k>1 in G von Knoten i zu Knoten j. Dann gibt es in dem von Matrix B beschriebenen Graphen G‘ einen Weg von i nach j mit Länge maximal 2/3 k. Beweis Sei P ein Weg in G mit k Kanten. Ist k gerade, dann gibt es in G‘ einen Weg der Länge k/2, da man jeweils zwei aufeinanderfolgende Kanten von P durch eine Kante in G‘ ersetzen kann. Ist k ungerade, dann gibt es in G‘ einen Weg der Länge k/2, da man bis auf die letzte Kante jeweils zwei aufeinanderfolgende Kanten von P durch eine Kante in G‘ ersetzen kann. Somit gilt für k=3, dass die Länge des Weges in G‘ 2/3 der Länge des Weges in G ist. Für k>3 verkürtzt sich die Weglänge entsprechend mehr.

Graphalgorithmen Behauptung 65 Beweis Sei P ein Weg der Länge k>1 in G von Knoten i zu Knoten j. Dann gibt es in dem von Matrix B beschriebenen Graphen G‘ einen Weg von i nach j mit Länge maximal 2/3 k. Beweis Sei P ein Weg in G mit k Kanten. Ist k gerade, dann gibt es in G‘ einen Weg der Länge k/2, da man jeweils zwei aufeinanderfolgende Kanten von P durch eine Kante in G‘ ersetzen kann. Ist k ungerade, dann gibt es in G‘ einen Weg der Länge k/2, da man bis auf die letzte Kante jeweils zwei aufeinanderfolgende Kanten von P durch eine Kante in G‘ ersetzen kann. Somit gilt für k=3, dass die Länge des Weges in G‘ 2/3 der Länge des Weges in G ist. Für k>3 verkürtzt sich die Weglänge entsprechend mehr.

Graphalgorithmen Konsequenz aus Beh. 64 und 65 Wenn wir die Berechnung von B log n mal iterieren, haben wir die transitive Hülle berechnet 3/2

Graphalgorithmen TransitiveHülle(A) 1. for i1 to log n do 2. Z‘  A A+A 3. for i1 to n do 4. for j1 to n do 5. if z >0 then b 1 else b 0 6. AB 7. return A 3/2

Graphalgorithmen TransitiveHülle(A) Laufzeit 1. for i1 to log n do O(log n) 2. Z‘  A A+A M(n) 3. for i1 to n do O(n) 4. for j1 to n do O(n²) 5. if z >0 then b 1 else b 0 O(n²) 6. AB O(n²) 7. return A O(1) M(n): Zeit um zwei nn-Matrizen zu multiplizieren 3/2

Graphalgorithmen Satz 66 Der Algorithmus TransitiveHülle berechnet die transitive Hülle eines Graphen G in O(M(n) log n) Zeit, wobei M(n) die Laufzeit zur Multiplikation zweier nn-Matrizen bezeichnet.