SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung

Größe: px
Ab Seite anzeigen:

Download "SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung"

Transkript

1 SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung Martin Dietzfelbinger Juni/Juli 2011 FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5

2 Kapitel 5: Dynamische Programmierung Typische Eigenschaften des Ansatzes sind: Dynamische Programmierung Identifizierung von (vielen) Teilproblemen. Identifizierung einfacher Basisfälle. Formulierung einer Version der Eigenschaft Substrukturen optimaler Strukturen müssen optimal sein Daraus: Rekursionsgleichungen für Werte optimaler Lösungen: Bellman sche Optimalitätsgleichungen Iterative Berechnung der optimalen Werte (und Strukturen). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 1

3 5.1 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) (Zentrales Beispiel) Kürzeste Wege zwischen allen Knoten. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 2

4 5.1 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) (Zentrales Beispiel) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G = (V, E, c) mit V = {1,..., n} und E {(v, w) 1 v, w n, v w}. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 2

5 5.1 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) (Zentrales Beispiel) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G = (V, E, c) mit V = {1,..., n} und E {(v, w) 1 v, w n, v w}. c: E R {+ }: Gewichts-/Kosten-/Längenfunktion. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 2

6 5.1 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) (Zentrales Beispiel) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G = (V, E, c) mit V = {1,..., n} und E {(v, w) 1 v, w n, v w}. c: E R {+ }: Gewichts-/Kosten-/Längenfunktion FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 2

7 Länge eines Weges p = (v = v 0, v 1,..., v r = w) ist c(v s 1, v s ). 1 s r FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 3

8 Länge eines Weges p = (v = v 0, v 1,..., v r = w) ist 1 s r c(v s 1, v s ). Gesucht: für jedes Paar (v, w), 1 v, w n: Länge S(v, w) eines kürzesten Weges von v nach w. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 3

9 Länge eines Weges p = (v = v 0, v 1,..., v r = w) ist 1 s r c(v s 1, v s ). Gesucht: für jedes Paar (v, w), 1 v, w n: Länge S(v, w) eines kürzesten Weges von v nach w. Algorithmus von Dijkstra löst das Single-Source-Shortest-Paths-Problem (SSSP-Problem) im Fall nicht negativer Kantengewichte. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 3

10 Länge eines Weges p = (v = v 0, v 1,..., v r = w) ist 1 s r c(v s 1, v s ). Gesucht: für jedes Paar (v, w), 1 v, w n: Länge S(v, w) eines kürzesten Weges von v nach w. Algorithmus von Dijkstra löst das Single-Source-Shortest-Paths-Problem (SSSP-Problem) im Fall nicht negativer Kantengewichte. Hier: Algorithmus von Floyd-Warshall. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 3

11 Länge eines Weges p = (v = v 0, v 1,..., v r = w) ist 1 s r c(v s 1, v s ). Gesucht: für jedes Paar (v, w), 1 v, w n: Länge S(v, w) eines kürzesten Weges von v nach w. Algorithmus von Dijkstra löst das Single-Source-Shortest-Paths-Problem (SSSP-Problem) im Fall nicht negativer Kantengewichte. Hier: Algorithmus von Floyd-Warshall. Wir verlangen: Es darf keine Kreise mit negativem Gesamtgewicht geben: ( ) v = v 0, v 1,..., v r = v Kreis 1 s r c(v s 1, v s ) 0. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 3

12 Grund: Wenn es einen solchen Kreis von v nach v gibt, und irgendein Weg von v nach w existiert, dann gibt es Wege von v nach w mit beliebig stark negativer Länge die Frage nach einem kürzesten Weg ist sinnlos. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 4

13 Grund: Wenn es einen solchen Kreis von v nach v gibt, und irgendein Weg von v nach w existiert, dann gibt es Wege von v nach w mit beliebig stark negativer Länge die Frage nach einem kürzesten Weg ist sinnlos. Konsequenzen: (1) Wenn p Weg von v nach w ist, dann existiert ein Weg p von v nach w, der nicht länger ist als p und auf dem sich keine Knoten wiederholen. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 4

14 Grund: Wenn es einen solchen Kreis von v nach v gibt, und irgendein Weg von v nach w existiert, dann gibt es Wege von v nach w mit beliebig stark negativer Länge die Frage nach einem kürzesten Weg ist sinnlos. Konsequenzen: (1) Wenn p Weg von v nach w ist, dann existiert ein Weg p von v nach w, der nicht länger ist als p und auf dem sich keine Knoten wiederholen. ((u,..., u)-segmente aus p herausschneiden, gegebenenfalls wiederholt. Hierdurch kann sich der Weg nicht verlängern.) FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 4

15 Grund: Wenn es einen solchen Kreis von v nach v gibt, und irgendein Weg von v nach w existiert, dann gibt es Wege von v nach w mit beliebig stark negativer Länge die Frage nach einem kürzesten Weg ist sinnlos. Konsequenzen: (1) Wenn p Weg von v nach w ist, dann existiert ein Weg p von v nach w, der nicht länger ist als p und auf dem sich keine Knoten wiederholen. ((u,..., u)-segmente aus p herausschneiden, gegebenenfalls wiederholt. Hierdurch kann sich der Weg nicht verlängern.) (2) Wenn es einen Weg von v nach w gibt, dann auch einen mit minimaler Länge (einen kürzesten Weg ). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 4

16 Grund: Wenn es einen solchen Kreis von v nach v gibt, und irgendein Weg von v nach w existiert, dann gibt es Wege von v nach w mit beliebig stark negativer Länge die Frage nach einem kürzesten Weg ist sinnlos. Konsequenzen: (1) Wenn p Weg von v nach w ist, dann existiert ein Weg p von v nach w, der nicht länger ist als p und auf dem sich keine Knoten wiederholen. ((u,..., u)-segmente aus p herausschneiden, gegebenenfalls wiederholt. Hierdurch kann sich der Weg nicht verlängern.) (2) Wenn es einen Weg von v nach w gibt, dann auch einen mit minimaler Länge (einen kürzesten Weg ). Grund: Wegen (1) muss man nur Wege mit nicht mehr als n 1 Kanten betrachten; davon gibt es nur endlich viele. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 4

17 Grund: Wenn es einen solchen Kreis von v nach v gibt, und irgendein Weg von v nach w existiert, dann gibt es Wege von v nach w mit beliebig stark negativer Länge die Frage nach einem kürzesten Weg ist sinnlos. Konsequenzen: (1) Wenn p Weg von v nach w ist, dann existiert ein Weg p von v nach w, der nicht länger ist als p und auf dem sich keine Knoten wiederholen. ((u,..., u)-segmente aus p herausschneiden, gegebenenfalls wiederholt. Hierdurch kann sich der Weg nicht verlängern.) (2) Wenn es einen Weg von v nach w gibt, dann auch einen mit minimaler Länge (einen kürzesten Weg ). Grund: Wegen (1) muss man nur Wege mit nicht mehr als n 1 Kanten betrachten; davon gibt es nur endlich viele. Es kann aber mehrere kürzeste Wege von v nach w geben! FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 4

18 Ausgabe: Matrix S = (S(v, w)) 1 v,w n mit: S(v, w) = Länge eines kürzesten Weges von v nach w. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 5

19 Ausgabe: Matrix S = (S(v, w)) 1 v,w n mit: S(v, w) = Länge eines kürzesten Weges von v nach w. (, falls kein solcher Weg existiert.) FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 5

20 O.B.d.A.: E = V V {(v, v) v V } Nichtvorhandene Kanten (v, w) werden mit c(v, w) = repräsentiert. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 6

21 O.B.d.A.: E = V V {(v, v) v V } Nichtvorhandene Kanten (v, w) werden mit c(v, w) = repräsentiert. Erster Schritt: Identifiziere geeignete Teilprobleme. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 6

22 O.B.d.A.: E = V V {(v, v) v V } Nichtvorhandene Kanten (v, w) werden mit c(v, w) = repräsentiert. Erster Schritt: Identifiziere geeignete Teilprobleme. Gegeben ein k, 0 k n, betrachte Wege von v nach w, die unterwegs (also vom Start- und Endpunkt abgesehen) nur Knoten in {1,..., k} besuchen. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 6

23 O.B.d.A.: E = V V {(v, v) v V } Nichtvorhandene Kanten (v, w) werden mit c(v, w) = repräsentiert. Erster Schritt: Identifiziere geeignete Teilprobleme. Gegeben ein k, 0 k n, betrachte Wege von v nach w, die unterwegs (also vom Start- und Endpunkt abgesehen) nur Knoten in {1,..., k} besuchen. k = 0: Kein Knoten darf unterwegs besucht werden; es handelt sich nur um die Kanten (v, w) mit c(v, w) <, oder um Wege (v, v) der Länge 0. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 6

24 O.B.d.A.: E = V V {(v, v) v V } Nichtvorhandene Kanten (v, w) werden mit c(v, w) = repräsentiert. Erster Schritt: Identifiziere geeignete Teilprobleme. Gegeben ein k, 0 k n, betrachte Wege von v nach w, die unterwegs (also vom Start- und Endpunkt abgesehen) nur Knoten in {1,..., k} besuchen. k = 0: Kein Knoten darf unterwegs besucht werden; es handelt sich nur um die Kanten (v, w) mit c(v, w) <, oder um Wege (v, v) der Länge 0. k = 1: Es kommen nur Wege in Frage, die aus der Kante (v, w) bestehen oder aus den Kanten (v, 1) und (1, w). usw. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 6

25 S(v, w, k) := Länge eines kürzesten Weges von v nach w, der nur Zwischenknoten in {1,..., k} benutzt. (Falls kein solcher Weg existiert: S(v, w, k) := ) FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 7

26 S(v, w, k) := Länge eines kürzesten Weges von v nach w, der nur Zwischenknoten in {1,..., k} benutzt. (Falls kein solcher Weg existiert: S(v, w, k) := ) Beispiel: (Die nicht eingezeichneten Kanten haben Länge.) S(2,4,0) = S(2,4,1) = 5 S(2,4,2) = 5 monoton fallend S(2,4,3)= 2 FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 7

27 Bellman sche Optimalitätsgleichungen : Betrachte Weg p von v nach w; dabei seien die Zwischenknoten v 1,..., v l 1 aus {1,..., k}: v v 1 v 2 v l 1 w FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 8

28 Bellman sche Optimalitätsgleichungen : Betrachte Weg p von v nach w; dabei seien die Zwischenknoten v 1,..., v l 1 aus {1,..., k}: v v 1 v 2 v l 1 w Angenommen, dieser Weg ist optimal. Dann gilt: 1) (O.B.d.A.) Der Knoten k kommt auf dem Weg höchstens einmal vor. Sonst: streiche im Weg u k k v FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 8

29 Bellman sche Optimalitätsgleichungen : Betrachte Weg p von v nach w; dabei seien die Zwischenknoten v 1,..., v l 1 aus {1,..., k}: v v 1 v 2 v l 1 w Angenommen, dieser Weg ist optimal. Dann gilt: 1) (O.B.d.A.) Der Knoten k kommt auf dem Weg höchstens einmal vor. Sonst: streiche im Weg u k k v das Teilstück zwischen erstem und letzten k weg: v k w FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 8

30 Bellman sche Optimalitätsgleichungen : Betrachte Weg p von v nach w; dabei seien die Zwischenknoten v 1,..., v l 1 aus {1,..., k}: v v 1 v 2 v l 1 w Angenommen, dieser Weg ist optimal. Dann gilt: 1) (O.B.d.A.) Der Knoten k kommt auf dem Weg höchstens einmal vor. Sonst: streiche im Weg u k k v das Teilstück zwischen erstem und letzten k weg: v k w Wegen ( ) ist der neue Weg ist nicht länger als p. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 8

31 2) Falls der Knoten k auf dem Weg nicht vorkommt, FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 9

32 2) Falls der Knoten k auf dem Weg nicht vorkommt, ist p für Zwischenknoten 1,..., k 1 optimal. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 9

33 2) Falls der Knoten k auf dem Weg nicht vorkommt, ist p für Zwischenknoten 1,..., k 1 optimal. 3) Falls der Knoten k auf p vorkommt, FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 9

34 2) Falls der Knoten k auf dem Weg nicht vorkommt, ist p für Zwischenknoten 1,..., k 1 optimal. 3) Falls der Knoten k auf p vorkommt, zerfällt p in zwei Teile v k k w }{{} Zwischenknoten k 1 }{{} Zwischenknoten k 1 die beide bezüglich der Zwischenknotenmenge {1,..., k 1} optimal sind FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 9

35 2) Falls der Knoten k auf dem Weg nicht vorkommt, ist p für Zwischenknoten 1,..., k 1 optimal. 3) Falls der Knoten k auf p vorkommt, zerfällt p in zwei Teile v k k w }{{} Zwischenknoten k 1 }{{} Zwischenknoten k 1 die beide bezüglich der Zwischenknotenmenge {1,..., k 1} optimal sind (sonst könnte ein Teilweg durch einen billigeren ersetzt werden, Widerspruch zur Optimalität von p). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 9

36 Punkte 2) und 3) drücken aus, dass Substrukturen einer optimalen Lösung selbst wieder optimal sind. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 10

37 Punkte 2) und 3) drücken aus, dass Substrukturen einer optimalen Lösung selbst wieder optimal sind. Die Bellman schen Optimalitätsgleichungen für den Algorithmus von Floyd-Warshall lauten dann: FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 10

38 Punkte 2) und 3) drücken aus, dass Substrukturen einer optimalen Lösung selbst wieder optimal sind. Die Bellman schen Optimalitätsgleichungen für den Algorithmus von Floyd-Warshall lauten dann: S(v, w, k) = min{s(v, w, k 1), S(v, k, k 1) + S(k, w, k 1)}, für 1 v, w n, 1 k n. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 10

39 Punkte 2) und 3) drücken aus, dass Substrukturen einer optimalen Lösung selbst wieder optimal sind. Die Bellman schen Optimalitätsgleichungen für den Algorithmus von Floyd-Warshall lauten dann: S(v, w, k) = min{s(v, w, k 1), S(v, k, k 1) + S(k, w, k 1)}, für 1 v, w n, 1 k n. Basisfälle: S(v, v, 0) = 0. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 10

40 Punkte 2) und 3) drücken aus, dass Substrukturen einer optimalen Lösung selbst wieder optimal sind. Die Bellman schen Optimalitätsgleichungen für den Algorithmus von Floyd-Warshall lauten dann: S(v, w, k) = min{s(v, w, k 1), S(v, k, k 1) + S(k, w, k 1)}, für 1 v, w n, 1 k n. Basisfälle: S(v, v, 0) = 0. S(v, w, 0) = c(v, w), für v w. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 10

41 Wir beschreiben einen iterativen Algorithmus. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 11

42 Wir beschreiben einen iterativen Algorithmus. Zur Aufbewahrung der Zwischenergebnisse benutzen wir ein Array S[1..n,1..n,0..n], das durch S[v,w,0] := c(v, w), 1 v, w n, v w; S[v,v,0] := 0, 1 v n initialisiert wird. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 11

43 Wir beschreiben einen iterativen Algorithmus. Zur Aufbewahrung der Zwischenergebnisse benutzen wir ein Array S[1..n,1..n,0..n], das durch S[v,w,0] := c(v, w), 1 v, w n, v w; S[v,v,0] := 0, 1 v n initialisiert wird. Unser Algorithmus füllt das Array S gemäß wachsendem k aus: FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 11

44 Wir beschreiben einen iterativen Algorithmus. Zur Aufbewahrung der Zwischenergebnisse benutzen wir ein Array S[1..n,1..n,0..n], das durch S[v,w,0] := c(v, w), 1 v, w n, v w; S[v,v,0] := 0, 1 v n initialisiert wird. Unser Algorithmus füllt das Array S gemäß wachsendem k aus: for k from 1 to n do for v from 1 to n do for w from 1 to n do S[v,w,k] min{s[v,w,k-1], S[v,k,k-1] + S[k,w,k-1]}. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 11

45 Korrektheit: Folgt aus der Vorüberlegung. Es werden genau die Werte S(v, w, k) gemäß den Bellman schen Optimalitätsgleichungen ausgerechnet. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 12

46 Korrektheit: Folgt aus der Vorüberlegung. Es werden genau die Werte S(v, w, k) gemäß den Bellman schen Optimalitätsgleichungen ausgerechnet. Laufzeit: Drei geschachtelte Schleifen: Θ(n 3 ). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 12

47 Korrektheit: Folgt aus der Vorüberlegung. Es werden genau die Werte S(v, w, k) gemäß den Bellman schen Optimalitätsgleichungen ausgerechnet. Laufzeit: Drei geschachtelte Schleifen: Θ(n 3 ). Bei dieser simplen Implementierung wird noch Platz verschwendet, da für den k-ten Schleifendurchlauf offenbar nur die (k 1)-Komponenten des Arrays S benötigt werden. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 12

48 Korrektheit: Folgt aus der Vorüberlegung. Es werden genau die Werte S(v, w, k) gemäß den Bellman schen Optimalitätsgleichungen ausgerechnet. Laufzeit: Drei geschachtelte Schleifen: Θ(n 3 ). Bei dieser simplen Implementierung wird noch Platz verschwendet, da für den k-ten Schleifendurchlauf offenbar nur die (k 1)-Komponenten des Arrays S benötigt werden. Man überlegt sich leicht, dass man mit zwei Matrizen auskommt, eine alte ((k 1)-Version) und eine neue (k-version), zwischen denen dann immer passend umzuschalten ist. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 12

49 Korrektheit: Folgt aus der Vorüberlegung. Es werden genau die Werte S(v, w, k) gemäß den Bellman schen Optimalitätsgleichungen ausgerechnet. Laufzeit: Drei geschachtelte Schleifen: Θ(n 3 ). Bei dieser simplen Implementierung wird noch Platz verschwendet, da für den k-ten Schleifendurchlauf offenbar nur die (k 1)-Komponenten des Arrays S benötigt werden. Man überlegt sich leicht, dass man mit zwei Matrizen auskommt, eine alte ((k 1)-Version) und eine neue (k-version), zwischen denen dann immer passend umzuschalten ist. Der Platzaufwand beträgt damit O(n 2 ), der Zeitbedarf offensichtlich immer noch O(n 3 ). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 12

50 Dieser Spezialfall des Ansatzes dynamische Programmierung lässt noch eine weitere Verbesserung zu. Es gilt S(v, k, k) = S(v, k, k 1) und ( ) S(k, w, k) = S(k, w, k 1), für 1 v, w, k n, da wiederholtes Benutzen des Knotens k den Weg von v nach k bzw. von k nach w nicht verkürzen kann (keine Kreise mit negativer Gesamtlänge). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 13

51 Dieser Spezialfall des Ansatzes dynamische Programmierung lässt noch eine weitere Verbesserung zu. Es gilt S(v, k, k) = S(v, k, k 1) und ( ) S(k, w, k) = S(k, w, k 1), für 1 v, w, k n, da wiederholtes Benutzen des Knotens k den Weg von v nach k bzw. von k nach w nicht verkürzen kann (keine Kreise mit negativer Gesamtlänge). Man kann also für die Berechnung von S(v, w, k) den alten oder den neuen Wert im S-Array benutzen. Damit erübrigt es sich, altes und neues Array zu unterscheiden, und der dritte Index k kann wegfallen: for k from 1 to n do for v from 1 to n do for w from 1 to n do S[v,w] min{s[v,w], S[v,k] + S[k,w]}. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 13

52 Man möchte nicht nur den Wert des kürzesten Weges kennenlernen, sondern auch zu gegebenen v, w diesen Weg konstruieren können. Hierfür benutzt man ein Hilfsarray I[1..n,1..n], in dem für jedes Paar v, w die Information gehalten wird, welches der bis zur Runde k gefundene größte Knoten ist, der für die Konstruktion eines kürzesten Weges von v nach w benötigt worden ist. Dies liefert den Floyd-Warshall-Algorithmus. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 14

53 5.1.1 Algorithmus Floyd-Warshall(C[1..n,1..n]) Eingabe: C[1..n,1..n]: Matrix der Kantenkosten/längen Ausgabe: S[1..n,1..n]: Kosten der kürzesten Wege I[1..n,1..n]: Hilfsarray zur Konstruktion der kürzesten Wege Datenstruktur: Matrizen S[1..n,1..n], I[1..n,1..n] Ziel: ( S[v,w] enthält S(v, w) ) ( I[v,w]: möglichst kleiner max. Knoten auf kürzestem (v, w)-weg ) (1) for v from 1 to n do (2) for w from 1 to n do (3) if v = w then S[v,w] 0; I[v,w] 0 (4) else S[v,w] C[v,w]; (5) if S[v,w] < then I[v,w] 0 else I[v,w] 1; (6) for k from 1 to n do (7) for v from 1 to n do (8) for w from 1 to n do (9) if S[v,k] + S[k,w] < S[v,w] then (10) S[v,w] S[v,k] + S[k,w]; I[v,w] k; (11) Ausgabe: S[1..n,1..n] und I[1..n,1..n]. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 15

54 Korrektheit: Es gilt folgende Schleifeninvariante: Nach dem Schleifendurchlauf k ist S[v, w] = S(v, w, k). (Beweis durch vollständige Induktion, unter Ausnutzung der Bellman-Gleichungen und von ( ).) Zudem: I[v, w] ist das kleinste l mit der Eigenschaft, dass es unter den kürzesten Wegen von v nach w über 1,..., k einen gibt, dessen maximaler Eintrag l ist. (Beweis durch Induktion über k.) Ein kürzester Weg von v nach w kann dann mit einer einfachen rekursiven Prozedur printpathinner rekonstruiert werden (Übung). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 16

55 5.1.2 Satz Der Algorithmus von Floyd-Warshall löst das All-Pairs- Shortest-Paths- Problem in Zeit O(n 3 ) und Platz O(n 2 ). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 17

56 5.2 Der Bellman-Ford-Algorithmus Zweck: Kürzeste Wege von einem Startknoten aus (SSSP: single source shortestst paths ). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 18

57 5.2 Der Bellman-Ford-Algorithmus Zweck: Kürzeste Wege von einem Startknoten aus (SSSP: single source shortestst paths ). Im Unterschied zum Algorithmus von Dijkstra dürfen negative Kanten vorhanden sein. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 18

58 5.2 Der Bellman-Ford-Algorithmus Zweck: Kürzeste Wege von einem Startknoten aus (SSSP: single source shortestst paths ). Im Unterschied zum Algorithmus von Dijkstra dürfen negative Kanten vorhanden sein. Algorithmus liefert Fehlermeldung, wenn vom Startknoten s aus ein Kreis mit negativer Gesamtlänge erreichbar ist. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 18

59 5.2 Der Bellman-Ford-Algorithmus Zweck: Kürzeste Wege von einem Startknoten aus (SSSP: single source shortestst paths ). Im Unterschied zum Algorithmus von Dijkstra dürfen negative Kanten vorhanden sein. Algorithmus liefert Fehlermeldung, wenn vom Startknoten s aus ein Kreis mit negativer Gesamtlänge erreichbar ist. Wenn (s = v 0, v 1,..., v r,..., v t ) ein Weg ist mit v r = v t und c(v r, v r+1 ) c(v t 1, v t ) < 0 dann kann man durch wiederholtes Durchlaufen dieses Kreises Wege mit beliebig stark negativen Kosten von s nach v t erhalten die Frage nach einem kürzesten Weg ist sinnlos. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 18

60 Knotenmenge: V = {1,..., n}. Menge E c: E R. von gerichteten Kanten, mit Kantengewichten Das Format des Inputs ist recht frei: Adjazenzlisten oder auch nur eine große Liste aller Kanten. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 19

61 Knotenmenge: V = {1,..., n}. Menge E c: E R. von gerichteten Kanten, mit Kantengewichten Das Format des Inputs ist recht frei: Adjazenzlisten oder auch nur eine große Liste aller Kanten. Datenstrukturen: Distanzarray d[1..n] Vorgängerarray p[1..n] FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 19

62 Knotenmenge: V = {1,..., n}. Menge E c: E R. von gerichteten Kanten, mit Kantengewichten Das Format des Inputs ist recht frei: Adjazenzlisten oder auch nur eine große Liste aller Kanten. Datenstrukturen: Distanzarray d[1..n] Vorgängerarray p[1..n] Idee: d[v] enthält einen Schätzwert (eine obere Schranke) für die Länge eines kürzesten Weges. p[v] enthält einen Vorgänger von v auf einem Weg von s nach v der Länge höchstens d[v]. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 19

63 Knotenmenge: V = {1,..., n}. Menge E c: E R. von gerichteten Kanten, mit Kantengewichten Das Format des Inputs ist recht frei: Adjazenzlisten oder auch nur eine große Liste aller Kanten. Datenstrukturen: Distanzarray d[1..n] Vorgängerarray p[1..n] Idee: d[v] enthält einen Schätzwert (eine obere Schranke) für die Länge eines kürzesten Weges. p[v] enthält einen Vorgänger von v auf einem Weg von s nach v der Länge höchstens d[v]. Durch eine Reihe von Operationen sollen Werte und Vorgänger so gesetzt werden, dass sie zu kürzesten Wegen gehören. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 19

64 Grundoperation, schon aus dem Dijkstra-Algorithmus bekannt: relax(u, v) FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 20

65 Grundoperation, schon aus dem Dijkstra-Algorithmus bekannt: relax(u, v) (1) if d[u] + c(u, v) < d[v] (2) then (3) p[v] u; (4) d[v] d[u] + c(u, v) ; FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 20

66 Grundoperation, schon aus dem Dijkstra-Algorithmus bekannt: relax(u, v) (1) if d[u] + c(u, v) < d[v] (2) then (3) p[v] u; (4) d[v] d[u] + c(u, v) ; Idee: Durch Verwenden eines s-u-weges der Länge d[u] und (u, v) als letzter Kante kann der bisherige Wert d[u] verbessert werden. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 20

67 5.2.1 Algorithmus Bellman-Ford(((V, E, c), s)) Eingabe: (V, E, c): Digraph mit Kantengewichten in R, Startknoten s V. Ausgabe: Wenn G keine Kreise mit negativem Gewicht hat: Ausgabe: In d, p: Baum von kürzesten Wegen; FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 21

68 5.2.1 Algorithmus Bellman-Ford(((V, E, c), s)) Eingabe: (V, E, c): Digraph mit Kantengewichten in R, Startknoten s V. Ausgabe: Wenn G keine Kreise mit negativem Gewicht hat: Ausgabe: In d, p: Baum von kürzesten Wegen; Datenstruktur: d[1..n]: real; p[1..n]: integer; FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 21

69 5.2.1 Algorithmus Bellman-Ford(((V, E, c), s)) Eingabe: (V, E, c): Digraph mit Kantengewichten in R, Startknoten s V. Ausgabe: Wenn G keine Kreise mit negativem Gewicht hat: Ausgabe: In d, p: Baum von kürzesten Wegen; Datenstruktur: d[1..n]: real; p[1..n]: integer; Initialisierung: (1) for v from 1 to n do (2) d[v] ; p[v] 1; (3) d[s] 0; p[s] s ; FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 21

70 5.2.1 Algorithmus Bellman-Ford(((V, E, c), s)) Eingabe: (V, E, c): Digraph mit Kantengewichten in R, Startknoten s V. Ausgabe: Wenn G keine Kreise mit negativem Gewicht hat: Ausgabe: In d, p: Baum von kürzesten Wegen; Datenstruktur: d[1..n]: real; p[1..n]: integer; Initialisierung: (1) for v from 1 to n do (2) d[v] ; p[v] 1; (3) d[s] 0; p[s] s ; Hauptschleife: (4) for i from 1 to n 1 do (5) forall (u, v) E do relax(u, v); FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 21

71 5.2.1 Algorithmus Bellman-Ford(((V, E, c), s)) Eingabe: (V, E, c): Digraph mit Kantengewichten in R, Startknoten s V. Ausgabe: Wenn G keine Kreise mit negativem Gewicht hat: Ausgabe: In d, p: Baum von kürzesten Wegen; Datenstruktur: d[1..n]: real; p[1..n]: integer; Initialisierung: (1) for v from 1 to n do (2) d[v] ; p[v] 1; (3) d[s] 0; p[s] s ; Hauptschleife: (4) for i from 1 to n 1 do (5) forall (u, v) E do relax(u, v); Zyklentest: (6) forall (u, v) E do (7) if d[u] + c(u, v) < d[v] then return Neg. Kreis ; FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 21

72 5.2.1 Algorithmus Bellman-Ford(((V, E, c), s)) Eingabe: (V, E, c): Digraph mit Kantengewichten in R, Startknoten s V. Ausgabe: Wenn G keine Kreise mit negativem Gewicht hat: Ausgabe: In d, p: Baum von kürzesten Wegen; Datenstruktur: d[1..n]: real; p[1..n]: integer; Initialisierung: (1) for v from 1 to n do (2) d[v] ; p[v] 1; (3) d[s] 0; p[s] s ; Hauptschleife: (4) for i from 1 to n 1 do (5) forall (u, v) E do relax(u, v); Zyklentest: (6) forall (u, v) E do (7) if d[u] + c(u, v) < d[v] then return Neg. Kreis ; Ergebnis: (8) return d[1..n], p[1..n]. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 21

73 Satz Der Bellman-Ford-Algorithmus hat folgendes Verhalten: FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 22

74 Satz Der Bellman-Ford-Algorithmus hat folgendes Verhalten: (a) Wenn es keinen von s aus erreichbaren Kreis mit negativer Gesamtlänge gibt ( negativer Kreis ), steht am Ende des Algorithmus in d[v] die Länge eines kürzesten Weges von s nach v; die Kanten (p[v], v) (mit p[v] 1) bilden einen Baum der kürzesten Wege von s aus zu den erreichbaren Knoten. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 22

75 Satz Der Bellman-Ford-Algorithmus hat folgendes Verhalten: (a) Wenn es keinen von s aus erreichbaren Kreis mit negativer Gesamtlänge gibt ( negativer Kreis ), steht am Ende des Algorithmus in d[v] die Länge eines kürzesten Weges von s nach v; die Kanten (p[v], v) (mit p[v] 1) bilden einen Baum der kürzesten Wege von s aus zu den erreichbaren Knoten. (b) Der Algorithmus gibt Neg. Kreis aus genau dann wenn es einen von s aus erreichbaren negativen Kreis gibt. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 22

76 Satz Der Bellman-Ford-Algorithmus hat folgendes Verhalten: (a) Wenn es keinen von s aus erreichbaren Kreis mit negativer Gesamtlänge gibt ( negativer Kreis ), steht am Ende des Algorithmus in d[v] die Länge eines kürzesten Weges von s nach v; die Kanten (p[v], v) (mit p[v] 1) bilden einen Baum der kürzesten Wege von s aus zu den erreichbaren Knoten. (b) Der Algorithmus gibt Neg. Kreis aus genau dann wenn es einen von s aus erreichbaren negativen Kreis gibt. (c) Die Laufzeit ist O( V E ). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 22

77 Beweis: (c) ist klar. (a) Da es keine negativen Kreise gibt, die von s aus erreichbar sind, kann durch Herausschneiden von Kreisen aus solchen Wegen die Länge nicht steigen. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 23

78 Beweis: (c) ist klar. (a) Da es keine negativen Kreise gibt, die von s aus erreichbar sind, kann durch Herausschneiden von Kreisen aus solchen Wegen die Länge nicht steigen. Für jeden Weg von s nach v der Länge d gibt es einen, der keinen Kreis enthält und Länge d hat. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 23

79 Beweis: (c) ist klar. (a) Da es keine negativen Kreise gibt, die von s aus erreichbar sind, kann durch Herausschneiden von Kreisen aus solchen Wegen die Länge nicht steigen. Für jeden Weg von s nach v der Länge d gibt es einen, der keinen Kreis enthält und Länge d hat. Bei der Frage nach kürzesten Wegen von s aus müssen wir nur kreisfreie Wege berücksichtigen. Davon gibt es nur endlich viele. Also: d(s, v) = Länge eines Weges von s nach v mit minimalen Kosten ist wohldefiniert. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 23

80 Eine Runde im Algorithmus ist ein Durchlauf durch die Hauptschleife. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 24

81 Eine Runde im Algorithmus ist ein Durchlauf durch die Hauptschleife. Beh. 1: Es gilt stets d(s, v) d[v]. (Durch Induktion über Runden zeigt man: Wenn d[v] <, dann existiert ein Weg von s nach v der Länge d[v].) FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 24

82 Eine Runde im Algorithmus ist ein Durchlauf durch die Hauptschleife. Beh. 1: Es gilt stets d(s, v) d[v]. (Durch Induktion über Runden zeigt man: Wenn d[v] <, dann existiert ein Weg von s nach v der Länge d[v].) Sei nun (s = v 0, v 1,..., v r = v) ein Weg kürzester Länge von s nach v, mit r n 1. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 24

83 Eine Runde im Algorithmus ist ein Durchlauf durch die Hauptschleife. Beh. 1: Es gilt stets d(s, v) d[v]. (Durch Induktion über Runden zeigt man: Wenn d[v] <, dann existiert ein Weg von s nach v der Länge d[v].) Sei nun (s = v 0, v 1,..., v r = v) ein Weg kürzester Länge von s nach v, mit r n 1. Genau wie in 5.1 überlegt man sich, dass (v 0,..., v i ) ein kürzester Weg von s nach v i ist, für i = 0,..., r. ( Optimale Substruktur ). D. h.: d(s, v i ) = c(v 0, v 1 ) c(v i 1, v i ), für i = 0,..., r. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 24

84 Beh. 2: Nach Runde i gilt d[v i ] = d(s, v i ). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 25

85 Beh. 2: Nach Runde i gilt d[v i ] = d(s, v i ). Beweis durch Induktion über i. Der Fall i = 0 ist klar. Ind.-Ann.: Nach Runde i 1 gilt d[v i 1 ] = d(s, v i 1 ). Schritt: In Runde i wird irgendwann relax(v i 1, v i ) ausgeführt. Die dabei betrachtete Summe d[v i 1 ] + c(v i 1, v i ) = d(s, v i 1 ) + c(v i 1, v i ) ist genau c(v 0, v 1 ) c(v i 1, v i ) = d(s, v i ). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 25

86 Beh. 2: Nach Runde i gilt d[v i ] = d(s, v i ). Beweis durch Induktion über i. Der Fall i = 0 ist klar. Ind.-Ann.: Nach Runde i 1 gilt d[v i 1 ] = d(s, v i 1 ). Schritt: In Runde i wird irgendwann relax(v i 1, v i ) ausgeführt. Die dabei betrachtete Summe d[v i 1 ] + c(v i 1, v i ) = d(s, v i 1 ) + c(v i 1, v i ) ist genau c(v 0, v 1 ) c(v i 1, v i ) = d(s, v i ). Wenn nicht vorher schon d[v i ] = d(s, v i ) war, wird dieser Wert jetzt eingesetzt, und p[v i ] = v i 1 gesetzt. (Wegen Beh. 1 kann nie kleinerer Wert in d[v i ] stehen.) FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 25

87 Beh. 2: Nach Runde i gilt d[v i ] = d(s, v i ). Beweis durch Induktion über i. Der Fall i = 0 ist klar. Ind.-Ann.: Nach Runde i 1 gilt d[v i 1 ] = d(s, v i 1 ). Schritt: In Runde i wird irgendwann relax(v i 1, v i ) ausgeführt. Die dabei betrachtete Summe d[v i 1 ] + c(v i 1, v i ) = d(s, v i 1 ) + c(v i 1, v i ) ist genau c(v 0, v 1 ) c(v i 1, v i ) = d(s, v i ). Wenn nicht vorher schon d[v i ] = d(s, v i ) war, wird dieser Wert jetzt eingesetzt, und p[v i ] = v i 1 gesetzt. (Wegen Beh. 1 kann nie kleinerer Wert in d[v i ] stehen.) (Beachte: Wenn es mehrere Wege von s nach v i mit minimaler Länge gibt, kann natürlich auch p[v i ] v i 1 sein.) FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 25

88 Beweis von (b): : FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 26

89 Beweis von (b): : Annahme: Von s aus ist kein negativer Kreis erreichbar, aber in Zeile (7) wird ein v mit d[u] + c(u, v) < d[v] gefunden. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 26

90 Beweis von (b): : Annahme: Von s aus ist kein negativer Kreis erreichbar, aber in Zeile (7) wird ein v mit d[u] + c(u, v) < d[v] gefunden. Nach (a) folgt d(s, u) + c(u, v) < d(s, v), was offensichtlich unmöglich ist. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 26

91 : Sei (s = v 0,..., v r,..., v t ) mit r < t und v r = v t der Weg zu einem erreichbaren Kreis. Wenn der Test in Zeile (7) stets ergibt, gilt: d[v r ] + c(v r, v r+1 ) d[v r+1 ] d[v r+1 ] + c(v r+1, v r+2 ) d[v r+2 ] d[v t 1 ] + c(v t 1, v t ) d[v t ]. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 27

92 : Sei (s = v 0,..., v r,..., v t ) mit r < t und v r = v t der Weg zu einem erreichbaren Kreis. Wenn der Test in Zeile (7) stets ergibt, gilt: d[v r ] + c(v r, v r+1 ) d[v r+1 ] d[v r+1 ] + c(v r+1, v r+2 ) d[v r+2 ] d[v t 1 ] + c(v t 1, v t ) d[v t ]. Addition dieser Ungleichungen und Vereinfachen liefert, unter Benutzung von v r = v t : was zu zeigen war. c(v r, v r+1 ) c(v t 1, v t ) 0, FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 27

93 Dass die p[v]-werte die gewünschte Bedeutung haben, zeigt man nun leicht. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 28

94 Problemstellung: 5.3 Das 0-1-Rucksackproblem Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke b. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 29

95 Problemstellung: 5.3 Das 0-1-Rucksackproblem Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke b. Ausgabe: I {1,..., n} derart, dass i I a i i I c i möglichst groß. b und FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 29

96 Problemstellung: 5.3 Das 0-1-Rucksackproblem Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke b. Ausgabe: I {1,..., n} derart, dass i I a i i I c i möglichst groß. b und Im Gegensatz zum fraktionalen Rucksackproblem (Kap. 3.1) ist es hier nicht erlaubt, Objekte zu teilen. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 29

97 Problemstellung: 5.3 Das 0-1-Rucksackproblem Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke b. Ausgabe: I {1,..., n} derart, dass i I a i i I c i möglichst groß. b und Im Gegensatz zum fraktionalen Rucksackproblem (Kap. 3.1) ist es hier nicht erlaubt, Objekte zu teilen. Der Lösungsvektor (x 1,..., x n ) muss also 0-1-wertig sein. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 29

98 Ansatz: Dynamische Programmierung. Identifizierung von nützlichen Teilproblemen: FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 30

99 Ansatz: Dynamische Programmierung. Identifizierung von nützlichen Teilproblemen: Für 1 k n und 0 v b definieren wir { m(k, v) := max c i I {1,..., k} i I i I a i v }. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 30

100 Ansatz: Dynamische Programmierung. Identifizierung von nützlichen Teilproblemen: Für 1 k n und 0 v b definieren wir { m(k, v) := max c i I {1,..., k} i I i I a i v }. Das Teilproblem P(k, v) besteht darin, ein I {1,..., k} mit i I a i v zu finden, das i I c i maximiert. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 30

101 Ansatz: Dynamische Programmierung. Identifizierung von nützlichen Teilproblemen: Für 1 k n und 0 v b definieren wir { m(k, v) := max c i I {1,..., k} i I i I a i v }. Das Teilproblem P(k, v) besteht darin, ein I {1,..., k} mit i I a i v zu finden, das i I c i maximiert. Wir suchen also nach einer Auswahl, die nur Objekte Nummer 1,..., k benutzt, eine modifizierte Gewichtsschranke v einhält, und den Nutzen maximiert. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 30

102 Ansatz: Dynamische Programmierung. Identifizierung von nützlichen Teilproblemen: Für 1 k n und 0 v b definieren wir { m(k, v) := max c i I {1,..., k} i I i I a i v }. Das Teilproblem P(k, v) besteht darin, ein I {1,..., k} mit i I a i v zu finden, das i I c i maximiert. Wir suchen also nach einer Auswahl, die nur Objekte Nummer 1,..., k benutzt, eine modifizierte Gewichtsschranke v einhält, und den Nutzen maximiert. Trivial: m(0, v) = 0 für alle v. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 30

103 Ansatz: Dynamische Programmierung. Identifizierung von nützlichen Teilproblemen: Für 1 k n und 0 v b definieren wir { m(k, v) := max c i I {1,..., k} i I i I a i v }. Das Teilproblem P(k, v) besteht darin, ein I {1,..., k} mit i I a i v zu finden, das i I c i maximiert. Wir suchen also nach einer Auswahl, die nur Objekte Nummer 1,..., k benutzt, eine modifizierte Gewichtsschranke v einhält, und den Nutzen maximiert. Trivial: m(0, v) = 0 für alle v. P(n, b) ist das Gesamtproblem. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 30

104 Eigenschaft Optimale Substruktur : FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 31

105 Eigenschaft Optimale Substruktur : Sei I optimale Lösung für P(k, v), d. h.: m(k, v) = i I c i, I {1,..., k}, i I a i v. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 31

106 Eigenschaft Optimale Substruktur : Sei I optimale Lösung für P(k, v), d. h.: m(k, v) = i I c i, I {1,..., k}, i I a i v. Dann tritt einer der folgenden Fälle ein. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 31

107 Eigenschaft Optimale Substruktur : Sei I optimale Lösung für P(k, v), d. h.: m(k, v) = i I c i, I {1,..., k}, i I a i v. Dann tritt einer der folgenden Fälle ein. 1. Fall: k I. Dann ist I {k} optimale Lösung für P(k 1, v a k ), d. h.: m(k, v) c k = i I {k} c i = m(k 1, v a k ). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 31

108 Eigenschaft Optimale Substruktur : Sei I optimale Lösung für P(k, v), d. h.: m(k, v) = i I c i, I {1,..., k}, i I a i v. Dann tritt einer der folgenden Fälle ein. 1. Fall: k I. Dann ist I {k} optimale Lösung für P(k 1, v a k ), d. h.: m(k, v) c k = i I {k} c i = m(k 1, v a k ). 2. Fall: k I. Dann ist I optimale Lösung für P(k 1, v), d. h.: m(k, v) = m(k 1, v). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 31

109 Beweis: Indirekt. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 32

110 Beweis: Indirekt. 1. Fall: k I. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 32

111 Beweis: Indirekt. 1. Fall: k I. Annahme: I {k} nicht optimal für P(k 1, v a k ). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 32

112 Beweis: Indirekt. 1. Fall: k I. Annahme: I {k} nicht optimal für P(k 1, v a k ). Dann gäbe es eine bessere Teilmenge J {1,..., k 1} FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 32

113 Beweis: Indirekt. 1. Fall: k I. Annahme: I {k} nicht optimal für P(k 1, v a k ). Dann gäbe es eine bessere Teilmenge J {1,..., k 1} mit i J a i v a k und i J c i > i I {k} c i. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 32

114 Beweis: Indirekt. 1. Fall: k I. Annahme: I {k} nicht optimal für P(k 1, v a k ). Dann gäbe es eine bessere Teilmenge J {1,..., k 1} mit i J a i v a k und i J c i > i I {k} c i. Dann wäre aber J {k} eine bessere Lösung für P(k, v) als I FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 32

115 Beweis: Indirekt. 1. Fall: k I. Annahme: I {k} nicht optimal für P(k 1, v a k ). Dann gäbe es eine bessere Teilmenge J {1,..., k 1} mit i J a i v a k und i J c i > i I {k} c i. Dann wäre aber J {k} eine bessere Lösung für P(k, v) als I, Widerspruch. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 32

116 Beweis: Indirekt. 1. Fall: k I. Annahme: I {k} nicht optimal für P(k 1, v a k ). Dann gäbe es eine bessere Teilmenge J {1,..., k 1} mit i J a i v a k und i J c i > i I {k} c i. Dann wäre aber J {k} eine bessere Lösung für P(k, v) als I, Widerspruch. 2. Fall: k I. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 32

117 Beweis: Indirekt. 1. Fall: k I. Annahme: I {k} nicht optimal für P(k 1, v a k ). Dann gäbe es eine bessere Teilmenge J {1,..., k 1} mit i J a i v a k und i J c i > i I {k} c i. Dann wäre aber J {k} eine bessere Lösung für P(k, v) als I, Widerspruch. 2. Fall: k I. Annahme: I nicht optimal für P(k 1, v). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 32

118 Beweis: Indirekt. 1. Fall: k I. Annahme: I {k} nicht optimal für P(k 1, v a k ). Dann gäbe es eine bessere Teilmenge J {1,..., k 1} mit i J a i v a k und i J c i > i I {k} c i. Dann wäre aber J {k} eine bessere Lösung für P(k, v) als I, Widerspruch. 2. Fall: k I. Annahme: I nicht optimal für P(k 1, v). Dann gäbe es eine bessere Teilmenge J {1,..., k 1}. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 32

119 Beweis: Indirekt. 1. Fall: k I. Annahme: I {k} nicht optimal für P(k 1, v a k ). Dann gäbe es eine bessere Teilmenge J {1,..., k 1} mit i J a i v a k und i J c i > i I {k} c i. Dann wäre aber J {k} eine bessere Lösung für P(k, v) als I, Widerspruch. 2. Fall: k I. Annahme: I nicht optimal für P(k 1, v). Dann gäbe es eine bessere Teilmenge J {1,..., k 1}. Dann wäre aber J auch besser als I für P(k, v) FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 32

120 Beweis: Indirekt. 1. Fall: k I. Annahme: I {k} nicht optimal für P(k 1, v a k ). Dann gäbe es eine bessere Teilmenge J {1,..., k 1} mit i J a i v a k und i J c i > i I {k} c i. Dann wäre aber J {k} eine bessere Lösung für P(k, v) als I, Widerspruch. 2. Fall: k I. Annahme: I nicht optimal für P(k 1, v). Dann gäbe es eine bessere Teilmenge J {1,..., k 1}. Dann wäre aber J auch besser als I für P(k, v), Widerspruch. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 32

121 Die optimale Lösung für P(k, v) enthält also eine optimale Lösung für P(k 1, v ) für ein v v. Eigenschaft Optimale Substruktur! FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 33

122 Die optimale Lösung für P(k, v) enthält also eine optimale Lösung für P(k 1, v ) für ein v v. Eigenschaft Optimale Substruktur! Bellman sche Optimalitätsgleichungen: FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 33

123 Die optimale Lösung für P(k, v) enthält also eine optimale Lösung für P(k 1, v ) für ein v v. Eigenschaft Optimale Substruktur! Bellman sche Optimalitätsgleichungen: m(k 1, v a k ) + c k, m(k, v) = m(k 1, v), für 1 k n, 0 v b; m(0, v) = 0, für 0 v b. falls v a k und diese Summe größer als m(k 1, v) ist; sonst. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 33

124 Die optimale Lösung für P(k, v) enthält also eine optimale Lösung für P(k 1, v ) für ein v v. Eigenschaft Optimale Substruktur! Bellman sche Optimalitätsgleichungen: m(k 1, v a k ) + c k, m(k, v) = m(k 1, v), für 1 k n, 0 v b; m(0, v) = 0, für 0 v b. falls v a k und diese Summe größer als m(k 1, v) ist; sonst. In diesem Fall ist k Element jeder optimalen Lösung von P(k, v). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 33

125 Die optimale Lösung für P(k, v) enthält also eine optimale Lösung für P(k 1, v ) für ein v v. Eigenschaft Optimale Substruktur! Bellman sche Optimalitätsgleichungen: m(k 1, v a k ) + c k, m(k, v) = m(k 1, v), für 1 k n, 0 v b; m(0, v) = 0, für 0 v b. falls v a k und diese Summe größer als m(k 1, v) ist; sonst. In diesem Fall ist k Element jeder optimalen Lösung von P(k, v). Wir berechnen alle m(k, v) mittels einer iterativen Prozedur. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 33

126 5.3.1 Algorithmus DP-Zero-One-Knapsack(a 1,..., a n, c 1,..., c n, b) Eingabe: a 1,..., a n : Volumina; c 1,..., c n : Nutzenwerte; b: Schranke Ausgabe: I {1,..., n}: Optimale legale Auswahl. Datenstrukturen: m[0..n,0..b]: integer; (1) for v from 0 to b do m[0,v] 0; (2) for k from 1 to n do (3) for v from 0 to b do (4) if v a k 0 (5) then s m[k 1,v a k ] + c k else s 0; (6) if s > m[k 1,v] (7) then m[k,v] s; (8) else m[k,v] m[k 1,v]; ( Konstruktion der optimalen Menge: ) (9) I ; r m[n,b]; (10) for k from n downto 1 do (11) if m[k 1,r a k ] + c k > m[k 1,r] (12) then r r a k ; I I {k}; (13) return I. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 34

127 Korrektheit des ermittelten Wertes m[n,b] ergibt sich aus den Bellman schen Optimalitätsgleichungen durch Induktion über k. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 35

128 Korrektheit des ermittelten Wertes m[n,b] ergibt sich aus den Bellman schen Optimalitätsgleichungen durch Induktion über k. Korrektheit der ausgegebenen Menge I folgt aus der obigen Überlegung, dass die Bedingung m(k 1, v a k ) + c k > m(k 1, v) entscheidend ist für die Frage, ob k in der optimalen Lösung von P(k, v) enthalten ist oder nicht, und mit Induktion. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 35

129 Korrektheit des ermittelten Wertes m[n,b] ergibt sich aus den Bellman schen Optimalitätsgleichungen durch Induktion über k. Korrektheit der ausgegebenen Menge I folgt aus der obigen Überlegung, dass die Bedingung m(k 1, v a k ) + c k > m(k 1, v) entscheidend ist für die Frage, ob k in der optimalen Lösung von P(k, v) enthalten ist oder nicht, und mit Induktion. Laufzeit des Algorithmus: O(n b). FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 35

130 Korrektheit des ermittelten Wertes m[n,b] ergibt sich aus den Bellman schen Optimalitätsgleichungen durch Induktion über k. Korrektheit der ausgegebenen Menge I folgt aus der obigen Überlegung, dass die Bedingung m(k 1, v a k ) + c k > m(k 1, v) entscheidend ist für die Frage, ob k in der optimalen Lösung von P(k, v) enthalten ist oder nicht, und mit Induktion. Laufzeit des Algorithmus: O(n b). Bemerkung: Die Nutzen- und Volumenwerte können auch rationale Zahlen sein; die Volumenschranke b muss ganzzahlig sein. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 35

131 Korrektheit des ermittelten Wertes m[n,b] ergibt sich aus den Bellman schen Optimalitätsgleichungen durch Induktion über k. Korrektheit der ausgegebenen Menge I folgt aus der obigen Überlegung, dass die Bedingung m(k 1, v a k ) + c k > m(k 1, v) entscheidend ist für die Frage, ob k in der optimalen Lösung von P(k, v) enthalten ist oder nicht, und mit Induktion. Laufzeit des Algorithmus: O(n b). Bemerkung: Die Nutzen- und Volumenwerte können auch rationale Zahlen sein; die Volumenschranke b muss ganzzahlig sein. (Gegebenenfalls: Mit Nenner durchmultiplizieren.) FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 35

132 Die Größe, nicht die Bitlänge der Gewichtsschranke b geht in die Laufzeit ein. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 36

133 Die Größe, nicht die Bitlänge der Gewichtsschranke b geht in die Laufzeit ein. Wir nennen Algorithmen mit einer Laufzeit O(p(n, B)), wo n die (strukturelle) Größe der Eingabe und B eine obere Schranke für einige oder alle Zahlenkomponenten der Eingabe, und p ein Polynom in zwei Variablen ist, pseudopolynomiell. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 36

134 Die Größe, nicht die Bitlänge der Gewichtsschranke b geht in die Laufzeit ein. Wir nennen Algorithmen mit einer Laufzeit O(p(n, B)), wo n die (strukturelle) Größe der Eingabe und B eine obere Schranke für einige oder alle Zahlenkomponenten der Eingabe, und p ein Polynom in zwei Variablen ist, pseudopolynomiell. Die Existenz eines pseudopolynomiellen Algorithmus für das Rucksackproblem widerspricht nicht der Tatsache, dass das 0-1-Rucksackproblem wahrscheinlich keinen Polynomialzeitalgorithmus hat (nächstes Semester: NP-Vollständigkeit!): Die natürliche Eingabegröße berücksichtigt log b und nicht b. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 36

135 Beispiel: b = 6: i a i c i m[k, v]: v: k = FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 37

136 Ablesen von I aus dem Array m[0..n,0..b]: Benutze m(k 1, v a k ) + c k > m[k 1, v] als Kriterium. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 38

137 Ablesen von I aus dem Array m[0..n,0..b]: Benutze m(k 1, v a k ) + c k > m[k 1, v] als Kriterium. (Eingerahmte Einträge der Tabelle.) m[4, 6] = 11 > 8 = m[3, 6], also I := {4}, v := 6-1 = 5 m[3, 5] = 6 6 = m[2, 5], m[2, 5] = 6 > 4 = m[1, 5], also I := I {2}, v := 5-4 = 1 m[1, 1] = 0 0 = m[0, 1]. Resultat: Optimale Menge ist I = {2, 4}. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 38

138 Man kann auf die Speicherung des gesamten Arrays m verzichten. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 39

139 Man kann auf die Speicherung des gesamten Arrays m verzichten. Man hält immer nur die letzte Zeile, und aktualisiert die Einträge von rechts nach links. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 39

140 Man kann auf die Speicherung des gesamten Arrays m verzichten. Man hält immer nur die letzte Zeile, und aktualisiert die Einträge von rechts nach links. (Rechts vom Arbeitspunkt v: Einträge m(k, v ), links davon: Einträge m(k 1, v ).) FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 39

141 Man kann auf die Speicherung des gesamten Arrays m verzichten. Man hält immer nur die letzte Zeile, und aktualisiert die Einträge von rechts nach links. (Rechts vom Arbeitspunkt v: Einträge m(k, v ), links davon: Einträge m(k 1, v ).) Eine Bitmatrix b[1..n,0..b] führt mit, ob Objekt k für eine optimale Bepackung notwendig ist oder nicht. FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 39

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) 5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!

Mehr

WS18 Algorithmen und Datenstrukturen 11. Kapitel Dynamische Programmierung

WS18 Algorithmen und Datenstrukturen 11. Kapitel Dynamische Programmierung WS18 Algorithmen und Datenstrukturen 11. Kapitel Dynamische Programmierung Martin Dietzfelbinger Januar 2019 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen 1 WS 2018/19 Kapitel 11 Kapitel 11: Dynamische

Mehr

5.4 Das Rucksackproblem

5.4 Das Rucksackproblem Problemstellung: 5.4 Das Rucksackproblem Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke b. Aufgabe: Packe die Objekte in einen Rucksack von Volumen

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Kürzeste Pfade in Graphen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 016.6.01 Einleitung Diese Lerneinheit beschäftigt

Mehr

6.1. Ein Approximationsalgorithmus für das Rucksackproblem

6.1. Ein Approximationsalgorithmus für das Rucksackproblem 6.1. Ein Approximationsalgorithmus für das Rucksackproblem Wir erinnern uns an das 0-1-Rucksackproblem: Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke

Mehr

2. Das single-source-shortest-path-problem

2. Das single-source-shortest-path-problem . Das single-source-shortest-path-problem Zunächst nehmen wir an, dass d 0 ist. Alle kürzesten Pfade von a nach b sind o.b.d.a. einfache Pfade.. Dijkstra s Algorithmus Gegeben: G = (V, A), (A = V V ),

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Kürzeste Pfade Problem Gegeben Netzwerk: Graph G = (V, E), Gewichtsfunktion w: E N Zwei Knoten: s, t Kantenzug/Weg

Mehr

Kap. 6.6: Kürzeste Wege

Kap. 6.6: Kürzeste Wege Kap. 6.6: Kürzeste Wege Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 1./. VO DAP SS 009./9. Juli 009 1 Nachtest für Ausnahmefälle Di 1. Juli 009, 16:00 Uhr,

Mehr

Kap. 6.6: Kürzeste Wege

Kap. 6.6: Kürzeste Wege 0.0.00 Nachtest für Ausnahmefälle Kap..: Kürzeste Wege Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund./. VO DAP SS 00./. Juli 00 Di. Juli 00, :00 Uhr, OH, R.

Mehr

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

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0. 8.4 Digraphen mit negativen Kantengewichten 8.4.1 Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0. k 4 5 1 s 1 3 2 C k 0 k 3 1 1 1 k 1 k 2 v Sollte ein Pfad von s nach C und

Mehr

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

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1 Allgemeines. Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition.. (a) Ein Graph G =(V, E) heißt kreisfrei, wenn er keinen Kreis besitzt. Beispiel: Ein kreisfreier Graph: FG KTuEA, TU Ilmenau

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Kürzeste Wege Maike Buchin 4. und 6.7.2017 Einführung Motivation: Bestimmung von kürzesten Wegen ist in vielen Anwendungen, z.b. Routenplanung, ein wichtiges Problem. Allgemeine

Mehr

Kürzeste (billigste) Wege

Kürzeste (billigste) Wege Kürzeste (billigste) Wege 1. Kürzeste (billigste) Wege Gerichteter Graph G = (V, E) Kostenfunktion c : E R 1 2 1 3 3 2 4 4 2 6 6 5 3 2 Entfernung zwischen zwei Knoten Kosten eines Wegs P = v 0, v 1,...,

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Übungsblatt 10 Abgabe: Montag, 08.07.2013, 14:00 Uhr Die Übungen sollen in Gruppen von zwei bis drei Personen bearbeitet werden. Schreiben Sie die Namen jedes

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 20 (23.7.2014) All Pairs Shortest Paths, String Matching (Textsuche) Algorithmen und Komplexität Vorlesungsevaluation Sie sollten alle eine

Mehr

10 Kürzeste Pfade SSSP-Problem

10 Kürzeste Pfade SSSP-Problem In diesem Kapitel setzen wir uns mit der Berechnung von kürzesten Pfaden in einem Graphen auseinander. Definition 10.1 (Pfadgewichte). i) Das Gewicht eines Pfades p = (v 0, v 1,..., v k ) ist die Summe

Mehr

2.4 Starke Zusammenhangskomponenten in Digraphen

2.4 Starke Zusammenhangskomponenten in Digraphen Starke Zusammenhangskomponenten Einleitung 2.4 Starke Zusammenhangskomponenten in Digraphen Definition 2.4.1 Zwei Knoten v und w in einem Digraphen G heißen äquivalent, wenn v w und w v gilt. Notation:

Mehr

Vorlesung 2 KÜRZESTE WEGE

Vorlesung 2 KÜRZESTE WEGE Vorlesung 2 KÜRZESTE WEGE 34 Kürzeste Wege im Graphen Motivation! Heute:! Kürzeste Wege von einem Knoten (SSSP)! Kürzeste Wege zwischen allen Knotenpaaren (APSP)! Viele Anwendungen:! Navigationssysteme!

Mehr

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

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7 1 Kürzeste Pfade Woche 6 7 Hier arbeiten wir mit gewichteten Graphen, d.h. Graphen, deren Kanten mit einer Zahl gewichtet werden. Wir bezeichnen die Gewichtsfunktion mit l : E R. Wir wollen einen kürzesten

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

Effiziente Algorithmen

Effiziente Algorithmen Effiziente Algorithmen Greedy-Algorithmen Vorlesender: Martin Aumüller (nah Folien von Prof. Martin Dietzfelbinger) Mai 2012 FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 2012 1 Kapitel 3:

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen Fortgeschrittene Netzwerk- und Graph-Algorithmen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester

Mehr

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

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37 2. November 2011 Gradfolgen Zusammenhang Kürzeste Wege H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37 Satz von Erdős und Gallai Eine Partition einer natürlichen Zahl ist genau dann die Gradfolge

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 00

Mehr

Teil 2: Graphenalgorithmen

Teil 2: Graphenalgorithmen Teil : Graphenalgorithmen Anwendungen Definitionen Datenstrukturen für Graphen Elementare Algorithmen Topologisches Sortieren Kürzeste Wege Problemstellung Ungewichtete Graphen Distanzgraphen Gewichtete

Mehr

12. Der Algorithmus von Dijkstra. Informatik II für Verkehrsingenieure

12. Der Algorithmus von Dijkstra. Informatik II für Verkehrsingenieure . Der Algorithmus von Dijkstra Informatik II für Verkehrsingenieure Problemstellung Gegeben: Graph G =(V, E, len) mit positiver Kantenfunktion len : E! R 0, Knoten s, t V Mögliche Aufgaben Berechne Distanz

Mehr

Folien aus der Vorlesung Optimierung I SS2013

Folien aus der Vorlesung Optimierung I SS2013 Folien aus der Vorlesung Optimierung I SS2013 Dr. Jens Maßberg Institut für Optimierung und Operations Research, Universität Ulm July 10, 2013 Datenstrukturen für Graphen und Digraphen Graph Scanning Algorithmus

Mehr

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

Technische Universität München Zentrum Mathematik. Optimierung 2, WS 2008/09 Übungsblatt 12 Technische Universität München Zentrum Mathematik Prof. Dr. P. Gritzmann, Dipl.-Inf. Dipl.-Math. S. Borgwardt, Dr. M. Ritter Optimierung 2, WS 2008/09 Übungsblatt 12 Aufgabe 12.1 Betrachten Sie die folgenden

Mehr

Kürzeste Wege in Graphen

Kürzeste Wege in Graphen Kürzeste Wege in Graphen Algorithmische Paradigmen In diesem Abschnitt wollen wir nicht nur neue Algorithmen vorstellen, sondern auch den Blick auf Gemeinsamkeiten und prinzipielle Unterschiede zwischen

Mehr

Gliederung. Algorithmen und Datenstrukturen II. Graphen: All-pairs shortest paths. Graphen: All-pairs shortest paths. Graphen: Kürzeste Pfade III

Gliederung. Algorithmen und Datenstrukturen II. Graphen: All-pairs shortest paths. Graphen: All-pairs shortest paths. Graphen: Kürzeste Pfade III Gliederung Algorithmen und Datenstrukturen II : Kürzeste Pfade III D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Problem Transitiver

Mehr

Kürzeste Wege. Ein Startknoten, nichtnegative Gewichte

Kürzeste Wege. Ein Startknoten, nichtnegative Gewichte Kürzeste Wege Gegeben ein Digraph D = (V, A) mit Bogengewichten c(a). Aufgabe: Finde einen Weg W von einem Knoten zu allen anderen oder zu einem bestimmten mit c(w) minimal. Problem: negative Gewichte

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 14. Mai

Mehr

Wintersemester 2004/ Februar 2005

Wintersemester 2004/ Februar 2005 Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

1 Kürzeste Pfade in Graphen

1 Kürzeste Pfade in Graphen Praktikum Algorithmen-Entwurf (Teil 3) 03.11.2011 1 1 Kürzeste Pfade in Graphen Es sei ein gerichteter Graph G = (V, E) mit V = n Knoten, E = m Kanten und Kantengewichten c : E R gegeben. Ein Pfad in G

Mehr

p = (v 0, v 1,..., v k )

p = (v 0, v 1,..., v k ) 1 Routenlaner Hamburg 300 km 200 km Berlin 450 km Köln 200 km 400 km Frankfurt 50 km 200 km 150 km Mannheim Saarbrücken 100 km 250 km Stuttgart 200 km Dresden 300 km Nürnberg 200 km München Berechne den

Mehr

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens Praktikum Algorithmen-Entwurf (Teil 5)..5 Matchings in Graphen Es sei ein ungerichteter Graph G = (V, E) gegeben. Ein Matching in G ist eine Teilmenge M E, so dass keine zwei Kanten aus M einen Endpunkt

Mehr

Das Problem des Handlungsreisenden

Das Problem des Handlungsreisenden Seite 1 Das Problem des Handlungsreisenden Abbildung 1: Alle möglichen Rundreisen für 4 Städte Das TSP-Problem tritt in der Praxis in vielen Anwendungen als Teilproblem auf. Hierzu gehören z.b. Optimierungsprobleme

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen Fortgeschrittene Netzwerk- und Graph-Algorithmen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester

Mehr

Algorithmen und Datenstrukturen Kapitel 9. und

Algorithmen und Datenstrukturen Kapitel 9. und Algorithmen und Datenstrukturen Kapitel 9 Minimale Spannbäume und Kürzeste Pfade Frank Heitmann heitmann@informatik.uni-hamburg.de 9. Dezember 01 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/13

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 10 Suche in Graphen Version vom 13. Dezember 2016 1 / 2 Vorlesung 2016 / 2017 2 /

Mehr

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php? Algorithmen I Prof. Jörn Müller-Quade 19.6.1 Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=99 (Folien von Peter Sanders) KIT Institut für Theoretische Informatik 1 Organisatorisches

Mehr

21. Greedy Algorithmen. Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3

21. Greedy Algorithmen. Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3 581 21. Greedy Algorithmen Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3 Aktivitäten Auswahl 582 Koordination von Aktivitäten, die gemeinsame Resource exklusiv

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

Die Klasse NP und die polynomielle Reduktion. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen

Die Klasse NP und die polynomielle Reduktion. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen Die Klasse NP und die polynomielle Reduktion Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 1 / 26 Optimierungsprobleme und ihre Entscheidungsvariante Beim Rucksackproblem

Mehr

Die Klasse NP und die polynomielle Reduktion

Die Klasse NP und die polynomielle Reduktion Die Klasse NP und die polynomielle Reduktion Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen Dezember 2011 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): 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 a b c d e

Mehr

EDM, Algorithmen und Graphenspeicherung

EDM, Algorithmen und Graphenspeicherung EDM, Algorithmen und Graphenspeicherung 1 Graphenspeicherung Gespeichert werden soll ein Graph G = (V, E) bzw. Digraph D = (V, A). Man beachte: E ( ) V 2 bzw. E V 2 1.1 Adjazenzmatrix Graph G: A = (a vw

Mehr

Vorlesung 2 KÜRZESTE WEGE

Vorlesung 2 KÜRZESTE WEGE Vorlesung 2 KÜRZESTE WEGE 45 Kürzeste Wege im Graphen Motivation! Heute:! Kürzeste Wege von einem Knoten (SSSP)! Distanzen zwischen allen Knotenpaaren (APD)! Viele Anwendungen:! Navis! Netzwerkrouting!...

Mehr

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität 1 Klausur Wichtige Hinweise: 2.7.07, Beginn 9 Uhr Bitte spätestens 8:4 Uhr vor Ort sein Sporthalle + Audimax Informationen

Mehr

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

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 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 { log x = min n N n: log (log ( log(x) )) } {{ } n

Mehr

Kapitel 4: Netzplantechnik Gliederung der Vorlesung

Kapitel 4: Netzplantechnik Gliederung der Vorlesung Gliederung der Vorlesung 1. Grundbegriffe 2. Elementare Graphalgorithmen und Anwendungen 3. Kürzeste Wege 4. Netzplantechnik 5. Minimal spannende Bäume 6. Traveling Salesman Problem 7. Flüsse in Netzwerken

Mehr

Graphentheorie. Kürzeste Wege. Kürzeste Wege. Kürzeste Wege. Rainer Schrader. 25. Oktober 2007

Graphentheorie. Kürzeste Wege. Kürzeste Wege. Kürzeste Wege. Rainer Schrader. 25. Oktober 2007 Graphentheorie Rainer Schrader Zentrum für Angewandte Informatik Köln 25. Oktober 2007 1 / 20 2 / 20 Wir werden Optimierungsprobleme vom folgenden Typ betrachten: gegeben eine Menge X und eine Funktion

Mehr

Aufgaben zur Klausurvorbereitung

Aufgaben zur Klausurvorbereitung Vorlesung Graphen und Optimierung Sommersemester 2013/14 Prof. S. Lange Aufgaben zur Klausurvorbereitung Hier finden Sie eine Reihe von Übungsaufgaben, die wir an den beiden Vorlesungsterminen am 29.01.2014

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Übung am 16.12.2010 INSTITUT FÜR THEORETISCHE INFORMATIK 0 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Kürzeste-Wege-Algorithmen und Datenstrukturen

Kürzeste-Wege-Algorithmen und Datenstrukturen Kürzeste-Wege-Algorithmen und Datenstrukturen Institut für Informatik Universität zu Köln SS 2009 Teil 1 Inhaltsverzeichnis 1 Kürzeste Wege 2 1.1 Voraussetzungen................................ 2 1.2

Mehr

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben Algorithmen und Datenstrukturen Tutorium Übungsaufgaben AlgoDat - Übungsaufgaben 1 1 Landau-Notation Aufgabe Lösung 2 Rekurrenzen Aufgabe 3 Algorithmenentwurf und -analyse Aufgabe AlgoDat - Übungsaufgaben

Mehr

Übersicht. Datenstrukturen und Algorithmen. Das Rechenproblem: kürzeste Pfade. Übersicht. Vorlesung 17: Kürzeste Pfade (K24) Bellman-Ford Dijkstra

Übersicht. Datenstrukturen und Algorithmen. Das Rechenproblem: kürzeste Pfade. Übersicht. Vorlesung 17: Kürzeste Pfade (K24) Bellman-Ford Dijkstra Datenstrukturen und Algorithmen Vorlesung 17: (K) Joost-Pieter Katoen Lehrstuhl für Informat Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 1. Juni 15 1 Joost-Pieter

Mehr

2. Klausur Datenstrukturen und Algorithmen SS 2014

2. Klausur Datenstrukturen und Algorithmen SS 2014 Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder 2. Klausur Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik

Mehr

Klausur Algorithmentheorie

Klausur Algorithmentheorie Prof. Dr. G. Schnitger Frankfurt, den 06.04.2009 Klausur Algorithmentheorie WS 2008/2009 Name: Vorname: Geburtsdatum: Studiengang: BITTE GENAU LESEN Die Klausur besteht aus 4 Aufgaben, in denen maximal

Mehr

21. Dynamic Programming III

21. Dynamic Programming III Approximation 21. Dynamic Programming III FPTAS [Ottman/Widmayer, Kap. 7.2, 7.3, Cormen et al, Kap. 15,35.5] Sei ein ε (, 1) gegeben. Sei I eine bestmögliche Auswahl. Suchen eine gültige Auswahl I mit

Mehr

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Datenstrukturen und Algorithmen 2. Klausur SS 2001 UNIVERSITÄT PADERBORN FACHBEREICH 7 (MATHEMATIK INFORMATIK) Datenstrukturen und Algorithmen 2. Klausur SS 200 Lösungsansätze Dienstag, 8. September 200 Name, Vorname:...................................................

Mehr

Klausur Algorithmentheorie

Klausur Algorithmentheorie Prof. Dr. G. Schnitger Frankfurt, den 24.02.2011 M. Poloczek Klausur Algorithmentheorie WS 2010/2011 Name: Vorname: Geburtsdatum: Studiengang: BITTE GENAU LESEN Die Klausur besteht aus 4 Aufgaben, in denen

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester H.

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 24. April 2019 [Letzte Aktualisierung: 24/04/2019,

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 07..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum

Mehr

Algorithmen und Datenstrukturen Kapitel 9. und

Algorithmen und Datenstrukturen Kapitel 9. und Algorithmen und Datenstrukturen Kapitel 9 und Kürzeste Pfade Frank Heitmann heitmann@informatik.uni-hamburg.de 9. Dezember 0 Frank Heitmann heitmann@informatik.uni-hamburg.de / Problemstellung Definition

Mehr

3.3 Optimale binäre Suchbäume

3.3 Optimale binäre Suchbäume 3.3 Optimale binäre Suchbäume Problem 3.3.1. Sei S eine Menge von Schlüsseln aus einem endlichen, linear geordneten Universum U, S = {a 1,,...,a n } U und S = n N. Wir wollen S in einem binären Suchbaum

Mehr

Single Source Sortest Path Negative Kreise All-Pair Shortest Path Problem Minimum Mean Cycle Zusammenfassung. Shortest Paths

Single Source Sortest Path Negative Kreise All-Pair Shortest Path Problem Minimum Mean Cycle Zusammenfassung. Shortest Paths Shortest Paths Label Correcting Algorithms Florian Reitz Universität Trier Fachbereich IV Fach Informatik Seminar Netzwerkalgorithmen WS 2005/2006 Einleitung: Problemübersicht Eben: Schnelle Algorithmen

Mehr

Von Aachen nach Halle...

Von Aachen nach Halle... Von Aachen nach Halle... Koeln? Aachen Halle 14. 6. 15. 6. 16. 6. Saarbruecken? Effiziente Algorithmen fr Graphtraversierungen Ulrich Meyer p. 3 Von Aachen nach Halle... Koeln? Aachen Halle 14. 6. 15.

Mehr

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger Organisatorisches VL-17: Kürzeste Pfade (Datenstrukturen und Algorithmen, SS 2017) Walter Unger Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11:15 12:00 Übungen: Tim Hartmann,

Mehr

Effiziente Algorithmen I

Effiziente Algorithmen I 9. Präsenzaufgabenblatt, WiSe 2013/14 Übungstunden am 13.01. & 15.01.2014 Aufgabe Q Gegeben sei ein Fluss-Netzwerk mit Digraph D = (V, A), Knotenkapazitäten c(u, v) 0, Quelle s und Senke t. Kann sich der

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 0..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 10 FS 16

Datenstrukturen & Algorithmen Lösungen zu Blatt 10 FS 16 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 11. Mai

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Dynamisches Programmieren Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester.. Einleitung Diese Lerneinheit widmet sich einer

Mehr

Teil 2: Graphenalgorithmen

Teil 2: Graphenalgorithmen Teil : Graphenalgorithmen Anwendungen Definitionen Datenstrukturen für Graphen Elementare Algorithmen Topologisches Sortieren Kürzeste Wege Minimal aufspannende Bäume Problemstellung Algorithmus von Prim

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 25. Vorlesung Dynamisches Programmieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Klausurvorbereitung Tipp: Schreiben Sie sich alle Fragen

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (2) Spannbäume Kürzeste Wege Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 455 Wiederholung Traversierung eines Graphen via Tiefendurchlaufs

Mehr

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen. Aufgabe 8 Betrachten Sie den folgenden Algorithmus namens Bubble-Sort. Bubble-Sort(A[1..n]): 1 for i 1 to length(a) 1 2 do for j length(a) downto i + 1 3 do if A[j 1] > A[j] 4 then A[j 1] A[j] 1 Arbeitsweise

Mehr

1.Aufgabe: Minimal aufspannender Baum

1.Aufgabe: Minimal aufspannender Baum 1.Aufgabe: Minimal aufspannender Baum 11+4+8 Punkte v 1 v 2 1 3 4 9 v 3 v 4 v 5 v 7 7 4 3 5 8 1 4 v 7 v 8 v 9 3 2 7 v 10 Abbildung 1: Der Graph G mit Kantengewichten (a) Bestimme mit Hilfe des Algorithmus

Mehr

Algorithmen und Datenstrukturen 2-1. Seminar -

Algorithmen und Datenstrukturen 2-1. Seminar - Algorithmen und Datenstrukturen 2-1. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Sommersemster 2010 Outline 1. Übungsserie: 3 Aufgaben, insgesamt 30 28 Punkte A1 Spannbäume (10 8

Mehr

Wiederholung. Divide & Conquer Strategie

Wiederholung. Divide & Conquer Strategie Wiederholung Divide & Conquer Strategie Binäre Suche O(log n) Rekursives Suchen im linken oder rechten Teilintervall Insertion-Sort O(n 2 ) Rekursives Sortieren von a[1..n-1], a[n] Einfügen von a[n] in

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 7. Dezember 2017 INSTITUT FÜR THEORETISCHE 0 07.12.2017 Dorothea Wagner - Theoretische Grundlagen der Informatik INSTITUT FÜR THEORETISCHE KIT Die Forschungsuniversität

Mehr

Algorithmen und Datenstrukturen 2 VU 3.0 Nachtragstest SS Oktober 2016

Algorithmen und Datenstrukturen 2 VU 3.0 Nachtragstest SS Oktober 2016 Technische Universität Wien Institut für Computergraphik und Algorithmen Algorithms and Complexity Group 186.815 Algorithmen und Datenstrukturen 2 VU 3.0 Nachtragstest SS 2016 5. Oktober 2016 Machen Sie

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 6 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 16. Mai 2018 [Letzte Aktualisierung: 18/05/2018,

Mehr

Kap. 7.3 Enumerationsverfahren Kap. 7.4 Branch-and-Bound Kap. 7.5 Dynamische Programmierung

Kap. 7.3 Enumerationsverfahren Kap. 7.4 Branch-and-Bound Kap. 7.5 Dynamische Programmierung Kap. 7.3 Enumerationsverfahren Kap. 7.4 Branch-and-Bound Kap. 7.5 Dynamische Programmierung Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund ACHTUNG: Die VO

Mehr

Berechnung von Abständen

Berechnung von Abständen 3. Kreis- und Wegeprobleme Abstände in Graphen Abstände in Graphen Definition 3.4. Es sei G = (V, E) ein Graph. Der Abstand d(v, w) zweier Knoten v, w V ist die minimale Länge eines Weges von v nach w.

Mehr

Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege

Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege Effiziente Algorithmen und Datenstrukturen: Kürzeste Wege Kürzeste Wege Zentrale Frage: Wie komme ich am schnellsten von A nach B? B A Kürzeste Wege Zentrale Frage: Wie komme ich am schnellsten von A nach

Mehr

5. Bäume und Minimalgerüste

5. Bäume und Minimalgerüste 5. Bäume und Minimalgerüste Charakterisierung von Minimalgerüsten 5. Bäume und Minimalgerüste Definition 5.1. Es ein G = (V, E) ein zusammenhängender Graph. H = (V,E ) heißt Gerüst von G gdw. wenn H ein

Mehr

4. Kreis- und Wegeprobleme Abstände in Graphen

4. Kreis- und Wegeprobleme Abstände in Graphen 4. Kreis- und Wegeprobleme Abstände in Graphen Abstände in Graphen Definition 4.4. Es sei G = (V,E) ein Graph. Der Abstand d(v,w) zweier Knoten v,w V ist die minimale Länge eines Weges von v nach w. Falls

Mehr

Lösungen von Übungsblatt 12

Lösungen von Übungsblatt 12 Lösungen von Übungsblatt 12 Algorithmen (WS 2018, Ulrike von Luxburg) Lösungen zu Aufgabe 1 Eine (kanonische) Möglichkeit, die Branch-Schritte auszuführen ergibt sich wie folgt: Das ursprüngliche Problem

Mehr

Erinnerung VL

Erinnerung VL Erinnerung VL.6.16 Graphtraversierung (DFS, topologische Sortierung und mehr) Kürzeste Wege: Problemstellung, Algorithmen Analoger Algorithmus Dijkstras Algorithmus: Idee, Korrektheit Heute: mehr zu Dijkstra,

Mehr

NAME, VORNAME: Studiennummer: Matrikel:

NAME, VORNAME: Studiennummer: Matrikel: TU Ilmenau, Fakultat IA Institut für Theoretische Informatik FG Komplexitätstheorie und Effiziente Algorithmen Prof. Dr. (USA) M. Dietzfelbinger Klausur Algorithmen und Datenstrukturen SS08, Ing.-Inf.

Mehr

Probleme aus NP und die polynomielle Reduktion

Probleme aus NP und die polynomielle Reduktion Probleme aus NP und die polynomielle Reduktion Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 15. Dezember 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit

Mehr

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1

Mehr

3 Klassifikation wichtiger Optimierungsprobleme

3 Klassifikation wichtiger Optimierungsprobleme 3 Klassifikation wichtiger Optimierungsprobleme 3.1 Das MIN- -TSP Wir kehren nochmal zurück zum Handlungsreisendenproblem für Inputs (w {i,j} ) 1 i

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Breitensuche, Tiefensuche Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu

Mehr