SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung
|
|
- Gerrit Arwed Mann
- vor 7 Jahren
- Abrufe
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) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!
MehrWS18 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
Mehr5.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
MehrAlgorithmen 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
Mehr6.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
Mehr2. 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 ),
MehrAlgorithmen & 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
MehrKap. 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,
MehrKap. 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.
Mehr8.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
Mehr4.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
MehrVorlesung 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
MehrKü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,...,
MehrDatenstrukturen 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
MehrInformatik 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
Mehr10 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
Mehr2.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:
MehrVorlesung 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!
MehrAlgo&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
MehrLernmodul 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
MehrEffiziente 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:
MehrFortgeschrittene 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
Mehr2. 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
MehrGrundlagen: 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
MehrTeil 2: Graphenalgorithmen
Teil : Graphenalgorithmen Anwendungen Definitionen Datenstrukturen für Graphen Elementare Algorithmen Topologisches Sortieren Kürzeste Wege Problemstellung Ungewichtete Graphen Distanzgraphen Gewichtete
Mehr12. 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
MehrFolien 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
MehrTechnische 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
MehrKü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
MehrGliederung. 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
MehrKü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
MehrDatenstrukturen & 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
MehrWintersemester 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
Mehr1 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
Mehrp = (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
Mehrlä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
MehrDas 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
MehrFortgeschrittene 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
MehrAlgorithmen 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
MehrAlgorithmen 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 /
MehrAlgorithmen 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
Mehr21. 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
MehrWS 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
MehrDie 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
MehrDie 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
Mehr16. 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
MehrEDM, 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
MehrVorlesung 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!...
MehrDatenstrukturen 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
MehrBemerkung: 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
MehrKapitel 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
MehrGraphentheorie. 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
MehrAufgaben 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
MehrTheoretische 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
MehrKü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
MehrAlgorithmen 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
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
Mehr2. 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
MehrKlausur 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
Mehr21. 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
MehrDatenstrukturen 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:...................................................
MehrKlausur 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
MehrGrundlagen: 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.
MehrADS: 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,
MehrAlgorithmen 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
MehrAlgorithmen 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
Mehr3.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
MehrSingle 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
MehrVon 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.
MehrKü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,
MehrEffiziente 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
MehrAlgorithmen 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
MehrDatenstrukturen & 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
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen Lerneinheit : Dynamisches Programmieren Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester.. Einleitung Diese Lerneinheit widmet sich einer
MehrTeil 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
MehrAlgorithmen 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
MehrVorlesung 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
MehrAufgabe 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
Mehr1.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
MehrAlgorithmen 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
MehrWiederholung. 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
MehrTheoretische 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
MehrAlgorithmen 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
MehrADS: 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,
MehrKap. 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
MehrBerechnung 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.
MehrEffiziente 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
Mehr5. 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
Mehr4. 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
MehrLö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
MehrErinnerung 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,
MehrNAME, 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.
MehrProbleme 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
MehrAlgorithmen 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
Mehr3 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
MehrAlgorithmen & 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