Algorithmik. Andreas Jakoby WS 06/07. Sprechstunde: Dienstags 10:00-12:00. Algorithmik WS 06/07 1. Vorlesung,

Größe: px
Ab Seite anzeigen:

Download "Algorithmik. Andreas Jakoby WS 06/07. Sprechstunde: Dienstags 10:00-12:00. Algorithmik WS 06/07 1. Vorlesung,"

Transkript

1 1 1. Vorlesung, Algorithmik Sprechstunde: Dienstags 10:00-12:00 WS 06/07

2 2 1. Vorlesung, Einleitung Motivation Eine wesentliche Aufgabe der Informatik ist die Analyse von Problemen mit der Zielsetzung eine effiziente algorithmische Lösung für diese Probleme zu entwickeln. Die erreichbare Effizienz einer algorithmischen Lösung hängt oft vom Typ des Problems ab. Für manche Probleme können wir nicht erwarten eine effiziente Lösung zu finden. Manche Probleme erlauben es uns auf einige Entwurfsmethoden für Algorithmen zurückzugreifen.

3 3 1. Vorlesung, Entwurfsmethoden für Algorithmen In der Informatik wurden eine Reihe von Entwurfsmethoden für Algorithmen entwickelt. Auf einige dieser Methoden werden wir in dieser Vorlesung eingehen. Divide and Conquer Dynamisches Programmieren Greedy-Algorithmen Backtracking Lineares Programmieren Transformationen

4 4 1. Vorlesung, Ziele der Vorlesung: zentrale Entwurfsmethoden für Algorithmen Analysemethoden für Algorithmen und für algorithmische Problemstellungen wichtige Optimierungsalgorithmen

5 5 1. Vorlesung, Scheinvergabe: Um einen Schein für diese Vorlesung zu erhalten, ist die erfolgreiche Teilnahme an der abschließenden Prüfung erforderlich. Um zur Prüfung zugelassen zu werden, ist eine erfolgreiche Teilnahme an den Übungen erforderlich. Die Kriterien für eine erfolgreiche Übungsteilnahme sind: 1. alle bis auf maximal zwei Übungsblätter wurden erfolgreich bearbeitet ein Übungsblatt gilt als erfolgreich bearbeitet, wenn auf diesem Blatt mindestens 50% der Punkte erreicht wurden und diese Lösungen auch von dem Studierenden vorgetragen werden können 2. und die Programmieraufgabe wurde erfolgreich bearbeitet.

6 6 1. Vorlesung, Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine Lösung Komponente für Komponente, wobei der Wert einer einmal gesetzten Komponente nie zurückgenommen wird. Beispiele: die Algorithmus von Kruskal, die Konstruktion eines Huffman-Codes und der Approximationsalgorithmus für das Binpacking Problem Best-Fit.

7 1. Vorlesung, Philosophie von Greedy-Verfahren Iterative Konstruktion einer Lösung unter Verwendung lokaler Optimalitätskriterien. Hoffnung: Lokale Optimalität führt auch zur globalen Optimalität oder zumindest zu einer guten Approximation. Verschiedene lokale Kriterien führen zu verschiedenen Algorithmen. Analysemethoden für Greedy-Verfahren Um zu zeigen, dass ein Greedy-Verfahren eine optimale Lösung findet, werden im wesentlichen zwei Analysemethoden eingesetzt: 1. the greedy algorithm stays ahead: In jedem Schritt ist die gefundene partielle Lösung des Greedy-Verfahrens mindestens so gut wie jede andere partielle Lösung. 2. exchange argument: Jede Lösung kann Schrittweise in die Lösung des Greedy-Verfahrens transformiert werden, ohne dass hierbei die Güte der Lösung abnimmt. 7

8 8 1. Vorlesung, Minimale Spannbäume Gegeben ist ein ungerichteter, zusammenhängender, gewichteter Graph G = (V, E) mit einer positiven Kostenfunktion f : E R +. Wir nehmen an, dass für alle Kanten e E f (e) > 0 ist. Wir nennen T = (V, E ) einen Spannbaum von G, wenn V = V und T ein Baum ist. Gesucht ist ein Baum T = (V, E ) mit E E, so dass, e E f (e) minimal unter allen Spannbäumen von G ist. Ist f (e) konstant 1, so können wir dieses Problem wieder mit Hilfe der Breiten- oder Tiefensuche lösen. Wir werden im Folgenden das Verfahren von Kruskal vorstellen.

9 9 1. Vorlesung, Zur effizienten Implementation benutzen wir die Datenstruktur der Priorityqueue und der Partition. Die letztere Datenstruktur ist auch unter dem Namen UNION/FIND-Datenstruktur bekannt. Wir starten mit V einelementigen Mengen, von denen jede einen anderen Knoten des Graphen enthält. Diese Mengen werden als Bäume mit jeweils einem Knoten interpretiert. Sukzessive verschmelzen wir diese Mengen durch Hinzunahme einer Kante mit minimalen Kosten: Finde die minimale Kante, die zwei Knoten aus unterschiedlichen Mengen verbindet und vereinige die beiden Mengen.

10 10 1. Vorlesung, Was ist eine Priorityqueue? Wir betrachten eine Teilmenge M eines Universums U, wobei jedem Element m M eine Priorität p(m) (oder kurz p) zugeordnet wird. insert(m, p): fügt m U mit Priorität p in M ein. deletemin: gibt das Element aus M mit minimaler Priorität zurück und entfernt dieses aus M. readmin: gibt das Element aus M mit minimaler Priorität zurück ohne es zu entfernen. decpriority(m, d): die Priorität von m in M wird um d reduziert. Eine Priorityqueue kann mit Hilfe eines Heaps (Heapsort) so implementiert werden, dass die Laufzeiten der Initialisierung in O( M ), von readmin in O(1) und der drei verbleibenden Operationen in O(log M ) liegen.

11 11 1. Vorlesung, Was ist eine UNION/FIND-Datenstruktur bzw. eine Partition? Partitionen stellen eine eingeschränkte Form von Mengen dar. Der abstrakten Datentyp ist wie folgt definiert: U = {1,..., n} sei ein Universum. P = {P 1,..., P k } sei eine Menge von disjunkten, nicht leeren Teilmengen von U mit U = n i=1 P i. Wir nennen diese Teilmengen Partitionsblöcke oder kurz Blöcke. Jedem Partitionsblock P i wird ein Element n i P i als Repräsentant (bzw. als Name) zugeordnet. Auf P sind die folgenden zwei Prozeduren definiert: Sei x U und n i, n j Repräsentanten zweier Partitionsblöcke P i und P j. find(x) liefert den Repräsentanten n i der Menge P i mit x P i. union(n i, n j ) vereinigt die Blöcke mit den Repräsentanten n i und n j. Diese Operation verändert die Menge P, d.h. P = (P \ {P i, P j }) {P i P j }. Der Repräsentant der neuen Menge ist entweder n i oder n j.

12 12 1. Vorlesung, Die UNION/FIND-Datenstruktur kann recht einfach so implementiert werden, dass die Initialisierung in Zeit O( U ), jede union-operation in konstanter Zeit und jede find-operation in Zeit O(log 2 U ) ausgeführt werden kann. Einige aufwendigere Implementierungen erlauben es die Laufzeit der find-operation erheblich zu reduzieren.

13 1. Vorlesung, Algorithmus MST-Kruskal() Eingabe: global gegebener Graph G Ergebnis: minimaler Spannbaum T = (V, E ) 1: Bilde die Priorityqueue Q aller e E mit Prioritäten f (e). 2: Initialisiere die Partitionen {v} für alle v V. 3: E :=, k = V 4: while k > 1 do 5: {v, w} := deletemin(q); v 0 := find(v); w 0 := find(w); 6: if v 0 w 0 then 7: union(v 0, w 0 ); E := E {{v, w}}; k := k 1; 8: end if 9: end while 10: Return(T = (V, E )) 13

14 14 1. Vorlesung, Beispiel Initialisierung 1. deletemin= {3, 6} find(3) find(6) 2. deletemin= {1, 2} find(1) find(2)

15 15 3. deletemin= {5, 1} find(5) find(1) deletemin= {1, 6} find(1) = find(6) deletemin= {5, 6} find(5) find(6) deletemin= {2, 3} find(2) = find(3) Vorlesung, deletemin= {2, 6} find(2) = find(6) deletemin= {3, 4} find(3) find(4)

16 16 1. Vorlesung, Korrektheit Lemma 1 Sei G = (V, E) ein ungerichteter Graph, T = (V, E T ) ein minimaler Spannbaum für G, W = (V, E W ) ein Wald der in T enthalten ist, d.h. E W E T und S V eine Knotenmenge, so dass keine Kante aus E W zwischen den Mengen S und V \ S verläuft. Wir nennen eine Kante aus E kreuzend, wenn sie einen Knoten aus S mit einem Knoten aus V \ S verbindet. Ist e E eine kreuzende Kante, die minimale Kosten unter allen kreuzenden Kanten besitzt, dann ist auch W := (V, E W {e}) in einem minimalen Spannbaum enthalten.

17 Beweis von Lemma 1: 1. Vorlesung, Angenommen, T enthält W aber nicht W. S e V \ S Dann gilt e E T. T ist ein Spannbaum, somit gibt es von jedem Knoten in V einen Weg zu jedem anderen Knoten in V. Addieren wir e zu T, so schließen wir einen Kreis C. C besitzt neben e noch eine kreuzende Kante e. Sei T := (V, (E T {e}) \ {e }). T ist ein Spannbaum von G, da T wieder zyklenfrei ist und V 1 Kanten hat. Da f (e) minimal unter allen kreuzenden Kanten ist, gilt f (e) f (e ). 17

18 18 1. Vorlesung, Beweis von Lemma 1 (Teil 2) Ist f (e) < f (e ), so gilt w E T f (w) < w E T f (w) für E T = (E T {e}) \ {e }. Dieses widerspricht der Annahme, dass T ein minimaler Spannbaum ist. Wir können somit ausschließen, dass f (e) < f (e ) ist. Ist f (e) = f (e ), so haben T und T die gleichen Kosten. Da T ein minimaler Spannbaum ist, muss auch T ein minimaler Spannbaum sein. Wir haben somit gezeigt, dass W in einem minimalen Spannbaum enthalten ist.

19 19 1. Vorlesung, Korrektheit vom Kruskals Algorithmus Der MST-Algorithmus nimmt immer eine minimale kreuzende Kante in den bereits konstruierten Wald W auf. Sei e = {u, v} = deletemin(q). Über die Abfrage find(u) = find(v) wird überprüft, ob u und v bereits in einer Komponente von W liegen. Beachte: Mit jeder eingefügten Kante {u, v } vereinigen wir die entsprechenden Mengen find(u ) und find(v ). Somit repräsentiert jede Menge der Partition einen Baum des konstruierten Walds. Ist find(u) = find(v), so verwerfen wir die Kante. Ist find(u) find(v), so stellt S die Knotenmenge des Teilbaums dar, in dem u liegt. Somit ist e eine minimale kreuzende Kante. Aus Lemma 1 können wir nun schließen, dass W = (V, E W {e}) in einem minimalen Spannbaum enthalten ist, wenn auch W = (V, E W ) in einem minimalen Spannbaum enthalten ist.

20 20 1. Vorlesung, Laufzeit von Kruskals Algorithmus Die Initialisierung der Priorityqueue gelingt in Zeit O( E ). Die Initialisierung der Partitionen gelingt in Zeit O( V ). Die While-Schleife muss im Worst-Case E mal durchlaufen werden. Bei jedem Durchlauf werden einmal die Operationen deletemin und zweimal die Operation find aufgerufen. Nach unseren Annahmen über die Priorityqueue und der UNION/FIND-Datenstruktur können wir diese Operationen in Zeit O( E log E ) ausführen. In V 1 Durchläufen der While-Schleife wird jeweils einmal eine union-operation aufgerufen. Zusammen erhalten wir eine Laufzeit von O( E log E ).

21 21 1. Vorlesung, Satz 1 Sei G = (V, E) ein zusammenhängender, ungerichteter, gewichteter Graph. Dann berechnet Kruskals Algorithmus einen minimalen Spannbaum für G in Zeit O( E log E ). Bemerkung 1 Betrachten wir die Aussage von Lemma 1 und den Korrektheitsbeweis von Kruskals Algorithmus, so erkennen wir, dass wir hierbei ein exchange argument angewendet haben.

22 1. Vorlesung, Intervall-Scheduling Definition 1 [Intervall-Scheduling Problem] Gegeben sei eine Menge R = {1,..., n} von n Jobs und zwei Funktionen s, f : R N. Hierbei gilt für alle Jobs i s(i) f (i) s(i) nennen wir die Startzeit von Job i und f (i) nennen wir die Endzeit von Job i. Job i steht im Konflikt mit Job j, wenn i j und die Intervalle [s(i), f (i)[ und [s(j), f (j)[ sich überlappen. Mit [s(i), f (i)[ bezeichnen wir das nach rechts offene reelle Intervall. 22

23 23 1. Vorlesung, Definition 1 (Teil 2) Eine Teilmenge S R ist eine zulässige Schedule, wenn S konfliktfrei ist, d.h. für alle i, j S steht i nicht im Konflikt zu j. Eine Teilmenge S R ist eine optimale Schedule, wenn S eine zulässige Schedule maximaler Kardinalität ist, d.h. S ist maximal. Aufgabe: Bestimme eine optimale Schedule!

24 24 1. Vorlesung, Wir starten mit einem Grundgerüst für einen Greedy-Algorithmus für das Intervall-Scheduling Problem: Algorithmus Greedy-Intervall-Schedule(R) Eingabe: Menge R Ergebnis: optimale Schedule S 1: S := 2: while R do 3: wähle ein eine Job i R 4: S := S {i}; 5: entferne alle Jobs aus R, die zu i im Konflikt stehen 6: R := R \ {i} 7: end while 8: Return(S) Unsere Aufgabe besteht jetzt darin, den Auswahlmechanismus in Zeile 3 näher zu beschreiben.

25 25 1. Vorlesung, Wir starten mit einer einfachen Beobachtung: Beobachtung 1 Für alle Auswahlmechanismen ist das Ergebnis S eine zulässige Schedule. Diese Beobachtung folgt unmittelbar daraus, dass wir in Zeile 5 alle Jobs löschen, die zu einem einmal in die Schedule aufgenommenen Job im Konflikt stehen.

26 26 1. Vorlesung, Einfache Auswahlmechanismen: 1. wähle i mit s(i) = min j R s(j) 2. wähle i mit f (i) s(i) = min j R f (j) s(j) 3. wähle das i, welches mit den wenigsten Jobs in R im Konflikt steht 4. wähle i mit f (i) = min j R f (j)

27 27 1. Vorlesung, Anhand der nachfolgenden Graphik können wir leicht erkennen, dass die ersten drei Auswahlmechanismen auf Folie 26 keine optimale Schedule liefern Behauptung Benutzen wir jedoch den vierten Mechanismus in Zeile 3 von Algorithmus Greedy-Intervall-Schedule, so erhalten wir eine optimale Schedule. Dieses muss aber noch bewiesen werden!

28 1. Vorlesung, Benutzen wir den vierten Auswahlmechanismus, so können wir unseren Greedy-Algorithmus wie folgt implementieren: Algorithmus Earliest-Finishingtime-First(R) Eingabe: Menge R Ergebnis: optimale Schedule S 1: sortiere R nach aufsteigend Werten von f (i) und 2: sei j 1,..., j n die sortierte Folge 3: S := {j 1 }; j := j 1 4: for i := 2 to n by +1 do 5: if f (j) s(j i ) then S := S {j i }; j := j i end if 6: end for 7: Return(S) Die Laufzeit im Rumpf der For-Schleife ist konstant. Somit wird die Laufzeit dieses Algorithmus durch das Sortieren in Zeile 1 dominiert und liegt in O(n log 2 n). 28

29 29 2. Vorlesung, Vergleichen wir nun S mit einer beliebigen optimalen Schedule O: Sei O = {j 1,..., j m } und S = {i 1,..., i k }. Wir wollen zeigen, dass m = k ist. O.B.d.A. gehen wir davon aus, dass die Intervalle in der Jobs in O und S von rechts nach links sortiert sind, d.h. l < m : f (j l ) s(j l+1 ) und l < k : f (i l ) s(i l+1 ) Um diese Reihenfolge zu erhalten können wir einfach die Elemente in O bzw. in S nach den Startzeiten der Jobs sortieren. Die Reihenfolge der Jobs ändert sich nicht, wenn wir die Jobs nach deren Endzeiten sortieren.

30 30 2. Vorlesung, Wir wollen nun die zentrale Beobachtung für unsere Greedy-Verfahren bei Benutzung der vierten Auswahlmethode beweisen: Lemma 2 Für alle r k gilt f (i r ) f (j r ). Beweis von Lemma 2: Wir zeigen Lemma 2 mit Hilfe einer Induktion über r. Für r = 1 folgt Lemma 2 aus der Beobachtung, dass der Algorithmus mit dem i 1 startet, welches den minimalen Wert f (i 1 ) besitzt.

31 31 2. Vorlesung, Beweis von Lemma 2 (Teil 2): Für r > 1 schließen wir wie folgt: Annahme, die Behauptung ist für alle l < r korrekt. Somit gilt f (i r 1 ) f (j r 1 ). Da O eine zulässige Schedule ist gilt f (j r 1 ) s(j r ). Somit ist {i 1,..., i r 1, j r } eine zulässige Schedule. Da unser Algorithmus das i r mit minimalem f (i r ) wählt, gilt insbesondere f (i r ) f (j r ). Somit gilt Lemma 2.

32 32 2. Vorlesung, Auf Lemma 2 können wir folgenden Satz schließen: Satz 2 Earliest-Finishingtime-First berechnet eine optimale Schedule in Zeit O(n log 2 n). Beweis von Satz 2: Ist k = m, so ist S optimal. Ist k < m, so folgt aus Lemma 2: {i 1,..., i k, j k+1 } ist eine zulässige Schedule. R ist nach dem Durchlaufen der Schedule nicht leer. S ist nicht das Ergebnis von Greedy-Intervall-Schedule bzw. von Earliest-Finishingtime-First auf Eingabe von R Widerspruch. Folglich ist k nicht kleiner m.

33 33 2. Vorlesung, Erweiterungen des Intervall-Scheduling Problems: Online-Variante: Die Menge der Jobs liegt zu Beginn der Berechnung der Schedule noch nicht vor, sondern wird erst im Verlauf der Berechnung Job für Job bekannt gegeben. Die Anfangsstücke der Schedule müssen jedoch so schnell wie möglich erstellt werden. Gewichtetes Intervall-Scheduling Problems: Jeder Job besitzt neben seinem Anfangs- und Endzeitpunkt noch ein Gewicht. Gesucht ist jetzt eine zulässige Schedule, die die Summe der Gewichte maximiert.

34 34 2. Vorlesung, Beispiel für die Online-Version: Ski-Leih Problem Definition 2 [Ski-Leih Problem] Sie fahren zum ersten mal in Skiurlaub und betrachten die Frage, ob und nach wie vielen Saisons es sich rentiert Skier zu kaufen. Hierbei müssen Sie die folgenden Punkte betrachten: Ein Skiausrüstung kosten K Euro. Das Leihen der Skiausrüstung kostet pro Saison L Euro. Sollten Sie die Lust am Skifahren verlieren (z.b. durch einen Unfall), so verlieren Sie die Lust am Skilauf dauerhaft. Sollten Sie sich bis dahin eigene Skier gekauft haben, so verliert die Ausrüstung in dieser Saison ihren Wert. Bei der Online-Version des Ski-Leih Problem müssen Sie zu Beginn jeder Saison entscheiden, ob Sie sich eine Skiausrüstung kaufen oder leihen. Ihr Ziel ist es die anfallenden Kosten zu minimieren.

35 35 2. Vorlesung, Satz 3 Der nachfolgende Online-Algorithmus approximiert die minimalen Kosten für das Ski-Leih Problem mit einem Faktor 2 für L K: Algorithmus Online-Ski-Leih() Online Eingabe der Ereignisse e 1, e 2,... Online Ausgabe der Aktionen a 1, a 2,... 1: a 1 := leihen; t := 1 2: while true do 3: Return(a t ) 4: t := t + 1 5: if a t 1 = keine Lust mehr oder e t 1 = Lust verloren then 6: a t := keine Lust mehr 7: else 8: if t K/t then a t := leihen else a t := kaufen end if 9: end if 10: end while

36 2.3 Intervall-Partitionierungs Problem Ein mit dem Intervall-Scheduling Problem nahe verwandtes Problem ist das Intervall-Partitionierungs Problem: 2. Vorlesung, Definition 3 [Intervall-Partitionierungs Problem] Gegeben sei eine Menge R = {1,..., n} von n Jobs und zwei Funktionen s, f : R N. Eine Partitionierung I = {I 1,..., I d } nennen wir zulässig, wenn jede Menge I i eine zulässige Schedule von Jobs aus R ist. Aufgabe: Gesucht ist eine zulässige Partitionierung minimaler Kardinalität! Eine Teilmenge C R nennen wir Konfliktmenge, wenn jeder Job aus C mit jedem anderen Job aus C einen Konflikt hat, d.h. t N i C : s(i) t < f (i). Die Überlappung ovl(r) einer Jobmenge R = {1,..., n} ist die maximale Kardinalität einer Konfliktmenge. 36

37 37 2. Vorlesung, Beispiel: Gegeben ist eine Menge von Vorlesungsmodulen R = {1,..., n} mit entsprechenden Start- und Endzeitpunkten. Finde eine Aufteilung der Vorlesungen auf die Hörsäle, so dass nur eine minimale Anzahl an Hörsäle benötigt wird.

38 38 2. Vorlesung, Lemma 3 Für jede Eingabe R, s, f hat jede zulässige Partitionierung eine Kardinalität mindestens ovl(r). Beweis von Lemma 3: Das Lemma folgt unmittelbar aus der Beobachtung, dass alle Jobs aus einer Konfliktmenge in unterschiedlichen Teilmengen der Partition liegen müssen. Wir wollen nun einen Algorithmus vorstellen und analysieren, der eine zulässige Partitionierung der Kardinalität ovl(r) findet.

39 2. Vorlesung, Algorithmus Starttime-Ordering(R) Eingabe: Menge R der Jobs Ergebnis: zulässige Partitionierung der Kardinalität ovl(r) 1: sei Q eine leere Priorityqueue Q für Jobs i mit Prioritäten f (i). 2: sei r 1,..., r n die nach den Startzeiten sortierte Folge der Jobs 3: sei l := 1, m(r 1 ) := 1 und füge r 1 in Q und in I 1 ein 4: for i = 2 to n by +1 do 5: sei r j das erste Element in Q 6: if f (r j ) > s(r i ) then 7: sei l := l + 1, m(r i ) := l und füge r i in Q und in I l ein 8: else 9: entferne r j aus Q 10: sei m(r i ) := m(r j ) und füge r i in Q und in I m(rj ) ein 11: end if 12: end for 13: Return(I 1,..., I l ) 39

40 40 2. Vorlesung, Warum ist Starttime-Ordering ein Greedy-Algorithmus? Wir müssen das lokale Entscheidungkriterium finden, welches wir in jedem Schritt des Verfahrens benutzen: In jedem Durchlauf der For-Schleife betrachten wir den noch nicht betrachteten Job r i mit der minimalen Startzeit. Wir fügen diesen Job in eine (beliebige) Teilmenge ein, deren Jobs nicht zum aktuell betrachtete Job im Konflikt stehen. Alle diese Kriterien stellen lokale Entscheidungkriterien dar. Starttime-Ordering ist somit ein Greedy-Algorithmus.

41 41 2. Vorlesung, Wir wollen nun den Algorithmus Starttime-Ordering analysieren: Beobachtung 2 Die Ausgabe I 1,..., I l von Starttime-Ordering ist eine zulässige Partition. Beweis von Beobachtung 2: Wir betrachten zunächst die Priorityqueue Q: Bei jedem Durchlauf der For-Schleife ist in Q für jede nicht-leere Teilmenge I j das zu letzt in I j eingefügte Element gespeichert. r i wird nur in eine Teilmenge I m(rj ) eingefügt wird, wenn s(r i ) f (r j ) ist. Per Induktion über i folgt nun, dass ein Job r i nie in eine Teilmenge eingefügt wird, welche einen Job r k enthält, welches zu r i im Konflikt steht.

42 42 2. Vorlesung, Lemma 4 Für die Ausgabe I 1,..., I l von Starttime-Ordering gilt l = ovl(r). Beweis von Lemma 4: Für die Priorityqueue Q gilt: In jedem Schleifendurchlauf gilt, dass die Endzeit des ersten Elements in Q minimal unter allen Elementen in Q ist. In dem Schleifendurchlauf für einen Job r i wir nur dann eine neue Teilmenge I k generiert, wenn r i im Konflikt mit dem ersten Element in Q und somit zu allen Elementen in Q steht. Wird in einem Schleifendurchlauf für einen Job r i eine neue Teilmenge I k generiert, so gilt für alle Jobs r k in Q aufgrund der Sortierung in Zeile 2: s(r k ) s(r i ) und aufgrund der Eigenschaften der Priorityqueue: f (r k ) > s(r i ).

43 43 2. Vorlesung, Beweis von Lemma 4 (Teil 2): Werden also mehr als ovl(r) viele Teilmengen I k generiert, so gibt es ein r i, so dass es in R zumindest ovl(r) + 1 viele Jobs h 1,..., h ovl(r)+1 mit s(h j ) s(r i ) < f (h j ). Diese Jobs bilden somit eine Konfliktmenge der Kardinalität ovl(r) + 1. Dieses ist ein Widerspruch zur Definition von ovl(r).

44 Beobachtung 3 Die Laufzeit von Starttime-Ordering ist in O(n log n). Beweis von Beobachtung 3: 2. Vorlesung, Um die n Jobs zu sortieren benötigen wir O(n log n) Schritte. Für jeden Job r i mit i 2 müssen wir einmal den Rumpf der For-Schleife durchlaufen. Um den Rumpf einmal zu durchlaufen müssen wir einmal auf das erste Element von Q zugreifen (O(1)), ein Element in Q einfügen (O(log l)) und unter Umständen das erste Element aus Q entfernen (O(log n)). Diese Laufzeiten folgen aus unserer Annahme von Folie 10. Da die Anzahl der Teilmengen durch die Anzahl der Elemente beschränkt ist, erhalten wir eine Laufzeit von O(n log n + n log l) = O(n log n) 44

45 45 2. Vorlesung, Fassen wir unsere Beobachtungen von den Folien 38 bis 44 zusammen, so erhalten wir: Satz 4 Es gibt ein Greedy-Algorithmus, dar das Intervall-Partitionierungs Problem in Zeit O(n log n) löst. Wie können wir den Beweis der Optimalität von Starttime-Ordering mit Hilfe unserer beiden Schemata von Folie 7 interpretieren? Für jeden Zeitpunkt t mit gilt: min s(i) t < max f (i) i R i R Für alle Jobs i R mit s(i) t generiert Starttime-Ordering maximal so viele Teilmengen, wie ein optimaler Algorithmus generieren würde.

46 46 2. Vorlesung, Intervall-Scheduling mit Deadline Definition 4 [Intervall-Scheduling mit Deadline] Gegeben sei eine Menge R = {1,..., n} von n Jobs und zwei Funktionen δ, τ : R N. Mit τ(i) bezeichnen wir die Laufzeit von Job i und mit δ(i) die Deadline von i: Starten wir Job i zum Zeitpunkt t, so endet die Berechnung von i zum Zeitpunkt t + τ(i). Eine Schedule S für R weist jedem Job i einen Startzeitpunkt S(i) zu. Eine Schedule S nennen wir zulässig, wenn für alle Paare i, j R mit i j gilt: die Intervalle [S(i), S(i) + τ(i)[ und [S(j), S(j) + τ(j)[ überlappen sich nicht.

47 47 2. Vorlesung, Definition 4 (Teil 2) Wir sagen, dass sich ein Job i in einer Schedule um den Wert v(i) := max{0, S(i) + τ(i) δ(i)} verspätet. Wir definieren die Verspätung einer Schedule S als L(S) := max i R v(i). Eine Schedule S nennen wir optimal, wenn S zulässig ist und für alle anderen zulässige Schedules S für R gilt L(S) L(S ). Aufgabe: Finde eine optimale Schedule!

48 48 2. Vorlesung, Algorithmus Earliest-Deadline-First(R) Eingabe: Menge R der Jobs mit Laufzeiten τ(i) und Deadlines δ(i) Ergebnis: eine optimale Schedule S 1: sei r 1,..., r n die nach der Deadlines sortierte Folge der Jobs 2: sei t := 0 3: for i := 1 to n by +1 do 4: schedule r i für den Zeitpunkt t, d.h. S(r i ) := t 5: setze t := t + τ(r i ) 6: end for 7: Return(S)

49 49 2. Vorlesung, Um die Optimalität des Resultats von Earliest-Deadline-First zu zeigen, werden wir folgende Punkte analysieren: Eine Schedule S besitzt Leerzeiten, wenn für einen Zeitpunkt keinen Job i R mit existiert. t [0, max{s(i) + τ(i)}[ i R S(i) t < S(i) + τ(i) Für eine Schedule S nennen wir ein Paar (i, j) nennen wir Inversion, wenn ist. S(i) < S(j) und δ(i) > δ(j)

50 50 2. Vorlesung, Beobachtung 4 Es gibt eine optimale Schedule ohne Leerzeiten. Lemma 5 Alle Schedules ohne Inversion und ohne Leerzeiten besitzen die gleiche maximale Verspätung. Beweis von Lemma 5: Seien S und S zwei unterschiedliche Schedules ohne Inversion und ohne Leerzeiten. S und S unterscheiden sich nur in der Startreihenfolge der Jobs mit gleicher Deadline.

51 51 2. Vorlesung, Beweis von Lemma 5 (Teil 2): Sei D(i) := { j R δ(i) = δ(j) } und sei d(i, S) der Job aus D(i), der in S als letztes ausgeführt wird, dann gilt für alle i R S(d(i, S)) + τ(d(i, S)) = τ(j) j {k R δ(k) δ(i)} = S (d(i, S )) + τ(d(i, S )). Da L(S) = max i R S(d(i, S)) + τ(d(i, S)) δ(i) ist, gilt L(S) = L(S ).

52 52 3. Vorlesung, Um den folgenden Satz zu beweisen werden wir ein exchange argument anwenden. Satz 5 Es existiert eine optimale Schedule ohne Inversion und ohne Leerzeiten. Beweis von Satz 5: Nach Beobachtung 4 gibt es eine optimale Schedule O ohne Leerzeiten. Gibt es in O eine Inversion, dann gibt es ein Paar i, j R, so dass i unmittelbar nach j ausgeführt wird d.h. S(i) = S(j) + τ(j) und δ(j) > δ(i) ist.

53 53 3. Vorlesung, Beweis von Satz 5 (Teil 2): Tauschen wir das Paar i und j, dann hat die neue Schedule O eine Inversion weniger und die maximale Verspätung von O ist kleiner gleich der maximalen Verspätung von O. O ist somit eine optimale Schedule ohne Leerzeiten und einer Inversion weniger als O. Wir können somit Schritt für Schritt alle Inversionen aus O entfernen.

54 54 3. Vorlesung, Die vom Algorithmus Earliest-Deadline-First generierte Schedule ist: ohne Leerzeiten aufgrund der Wahl von t in Zeile 2 und 5 und ohne Inversion aufgrund der Sortierens der Jobs bezüglich ihrer Deadlines in Zeile 1. Aus Lemma 5 und Satz 5 folgt nun unmittelbar: Satz 6 Earliest-Deadline-First generiert eine optimale Schedule.

55 2.5 Online-Scheduling das Caching Problem 3. Vorlesung, In viele Scheduling Anwendungen sind nicht alle zeitlichen Daten vorab bekannt. In einem solchen Szenario müssen oft sukzessive Entscheidungen über eine Schedule getroffen werden, bevor weitere zeitliche Informationen bekannt werden. Fehlende Informationen über die Zukunft verhindern zumindest in einem worst case Szenario, dass die von einem Algorithmus getroffenen sukzessiven online Entscheidungen zu einem optimalen Schedule vervollständigt werden können. Ein Beispiel für eine solche Aufgabe ist das Caching-Problem: Datenelemente müssen in einem lokalen Cache gehalten werden, damit ein Prozessor schnell auf sie zugreifen kann. Die Kapazität k (Anzahl der Speicherplätze) ist viel kleiner als die Anzahl der Datenelemente. Soll ein Datenelement x verwendet werden, dass nicht im Cache vorhanden ist, so spricht man von einem Cache-Miss. 55

56 Definition 5 [Caching-Problem] Gegeben ist 3. Vorlesung, eine Anfragesequenz X = x 1, x 2,... über einem Universum U und ein Cache C der Größe k, d.h. C kann k Elemente aus U speichern. Eine Schedule für das Caching-Problem besteht aus einer Folge von Operationen. Zur Verfügung stehen: load-operationen: load(x) legt das Datenelement x auf einem freien Cacheplatz ab. Diese Operation verursacht Kosten 1. eject-operationen: eject(x) entfernt das Datenelement x aus dem Cache und hinterläßt einen freien Cacheplatz. Diese Operation verursacht keine Kosten. nop-operationen: nop führt zu keiner Veränderung des Caches. Diese Operation verursacht keine Kosten. Die letzte Operation ist nicht unbedingt nötigt. Sie vereinfacht jedoch die Darstellung der Schedule. 56

57 3. Vorlesung, Definition 5 (Teil 2) Eine Schedule (oder Strategie) für eine Anfragesequenz X = x 1, x 2,... ist eine Sequenz O = o 1, o 2,... von Cache-Operationen, die zu einer Folge von Cache-Zuständen C 0, C 1, C 2,... führt, wobei für i = 0 C C i := i 1 für o i = nop C i 1 \ {x} für o i = eject(x) C i 1 {x} für o i = load(x) und die folgenden Bedingungen erfüllt sein müssen: für alle i ist C i k und für alle i ist x i C 2i. Die Kosten einer Schedule sind die Summe der ausgeführten load-operationen. Aufgabe: Finde eine Schedule für die Sequenz X mit minimalen Kosten, d.h. mit einer minimalen Anzahl von Cache-Misses! 57

58 58 3. Vorlesung, Vorbemerkungen: Ein Algorithmus muss entscheiden: wann eine load(x)-operation für ein Element x ausgeführt werden muss und welches Element y durch eject(y) zuvor entfernt werden muss. Führt eine Strategie erst dann load(x) aus, wenn x in der Anfragesequenz erscheint, dann nennen wir diese Strategie lazy. Zudem verlangen wir von einer lazy Strategie, dass sie nur dann eine eject-operation ausführt, wenn Platz im Cache benötigt wird, d.h. unmittelbar vor einer notwendigen load-operation bei vollem Cache.

59 59 3. Vorlesung, Lemma 6 Für jede Strategie A gibt es eine lazy Strategie B, die maximal so viele Kosten als A verursacht. Beweis von Lemma 6: Zunächst wandeln wir A in eine Strategie um, die keine überflüssigen load- und eject-operationen beinhaltet: Ist load(x) {o 2i 1, o 2i }, dann gibt es ein j i mit x j = x, so dass alle Operationen o 2k 1, o 2k mit k [i; j] x nicht aus dem Cache entfernen. Ist o i = load(x), dann gibt x C i 1. Ist o i = eject(x), dann gibt x C i 1. Alle load- und eject-operationen, die diese Bedingungen nicht erfüllen, sind überflüssig und können durch nop-operationen ersetzt werden.

60 60 3. Vorlesung, Beweis von Lemma 6 (Teil 2): Wir alle load-operationen auf gerade und alle eject-operationen auf ungerade Stellen der Sequenz. Hierbei verfahren wir wie folgt: Wir gehen von vorne nach hinten durch die Sequenz der Operationen. Hierbei sammeln wir die load- und die eject-operationen auf und plazieren sie neu in unsere Schedule: Sei S = o 1, o 2,... die alte und S = o 1, o 2,... die neue Schedule. Zum Aufsammeln der Operationen benutzen wir Multimengen L und E für die load- und die eject-operationen. Betrachten wir ein Paar o 2i 1, o 2i von Operationen, so fügen wir die vorhandenen load-operationen zunächst in die Mengen L und die vorhandenen eject-operationen zunächst in die Mengen E ein. Mit Hilfe der Mengen L und E können wir jetzt das Paar o 2i 1, o 2i generieren.

61 61 3. Vorlesung, Beweis von Lemma 6 (Teil 3): Weiter mit der Umformung: Ist x i nach den Operationen o 1,..., o 2i 2 im Cache vorhanden, dann können wir o 2i 1, o 2i auf nop setzen. Fehlt x i nach den Operationen o 1,..., o 2i 2 im Cache, dann muss es für x i im Präfix o 1,..., o 2i eine load-operation gegeben haben, die wir im Präfix o 1,..., o 2i 2 noch nicht ausgeführt haben. Diese setzen wir jetzt auf o 2i und entfernen diese aus L. Wird der Cache im Verlauf der Operationen o 1,..., o 2i 2 vollständig gefüllt, dann gibt es im Cache nach den Operationen o 1,..., o 2i 2 ein Element, welches sich nach den Operationen o 1,..., o 2i nicht im Cache befindet. Da bei unserem Verfahren die load-operationen von vorne nach hinten wandern, muss es für dieses Element in der Sequenz o 1,..., o 2i eine eject-operation geben, die wir in o 1,..., o 2i 2 noch nicht ausgeführt haben. Diese führen wir jetzt als o 2i 1 aus und erhalten Platz für die benötigte load-operation o 2i.

62 62 3. Vorlesung, Es ist einfach zu zeigen, dass im Online-Fall für jede Strategie eine Sequenz existiert, die Kosten in der Länge der Sequenz verursacht: In den ersten k Elementen füllen wir den Cache. Als das k + 1-te Element wählen wir ein Element, welches noch nicht im Cache ist. Wir wählen x i für i k + 2 als das Element, welches wir als letzten aus dem Cache entfernt haben. Wenn die Sequenz x 1,..., x n im Voraus bekannt ist, können wir mit Hilfe des folgenden Greedy-Algorithmus eine optimale Schedule generieren.

63 63 3. Vorlesung, Algorithmus Evict-Furtherst-In-Future(X ) Eingabe: Sequenz X = x 1,..., x n von Datenelementen Ergebnis: eine optimale Schedule o 1,..., o 2n 1: C := 2: for i := 1 to n by +1 do 3: t(x i ) := min{j > i x j = x i }; 4: if x i C then 5: o 2i 1 := nop; o 2i := nop; C := C 6: else if C < k then 7: o 2i 1 := nop; o 2i := load(x i ); C := C {x i } 8: else 9: wähle x j C mit t(x j ) := max x C t(x) 10: o 2i 1 := eject(x j ); o 2i := load(x i ); C := (C {x i }) \ {x j } 11: end if 12: end for 13: Return(o 1,..., o 2n )

64 64 3. Vorlesung, Kommentare zum Algorithmus Bei der Berechnung von t(x i ) in den Zeile 3 gehen wir davon aus, dass t(x i ) = + ist, wenn auf das Element x i zukünftig nicht mehr zugegriffen wird.

65 65 3. Vorlesung, Satz 7 Für jede Zugriffssequenz X konstruiert der Algorithmus Evict-Furtherst-In-Future eine Schedule mit minimalen Kosten. Beweis von Satz 7: Wir wollen diese Aussage über ein exchange argument beweisen. Sei O eine optimale und lazy Schedule und S eine Schedule wie sie über den Algorithmus konstruiert wird. Wir wollen nun O Schritt für Schritt so verändern, dass wir S erhalten. Wir erhalten hierbei eine Sequenz von optimalen und lazy Schedules O 0 = O, O 1,..., O n = S: Hierbei führt O i auf den ersten i Elementen der Eingabe die gleichen eject-operationen wie S aus.

66 66 3. Vorlesung, Beweis von Satz 7 (Teil 2): Wir zeigen die folgende Aussage: Sei O i eine optimale und lazy Schedule, die auf den ersten i Elementen der Eingabe die gleichen eject-operationen wie S ausführt, dann können wir eine optimale und lazy Schedule O i+1 konstruieren, die auf den ersten i + 1 Elementen der Eingabe die gleichen eject-operationen wie S ausführt. Wir unterscheiden die folgenden Fälle: O i und S führen auf das i + 1-te Element der Eingabe die gleiche eject-operation aus. In diesem Fall setzen wir O i+1 = O i. O i und S führen auf das i + 1-te Element der Eingabe verschiedene eject-operation aus. Sei y das Element, welches hierbei in S aus dem Cache entfernt wird und sei z das entsprechende Element in O i. Wir ersetzen zunächst die Operation eject(z) in O i durch eject(y) und erhalten O i.

67 67 3. Vorlesung, Beweis von Satz 7 (Teil 3): Bezüglich y und z unterscheiden wir die folgenden Fälle: Bevor y in der Eingabe wieder angefragt wird, wird y auch von O i aus dem Cache entfernt: Gibt es bis zu diesem Zeitpunkt keine neue Anfrage nach z, dann ersetzen wir diese eject-operation in O i durch eject(z), und wir erhalten einen Cache, der nach dieser Operation für O i und O i identische ist. Sei jetzt O i+1 := O i. Vor diesem Zeitpunkt gibt es eine neue Anfrage nach z. Wir betrachten die erste dieser Anfragen nach der i + 1-ten Anfrage. Da in O i das Element z nicht aus dem Cache entfernt wurde, können wir die entsprechende load(z)-operation aus O i sowie die gefundene eject(y)-operation aus O i entfernen. Die resultierende Schedule ist jetzt nicht mehr lazy. Wir können diese Bedingung jedoch analog zu Lemma 6 wieder herstellen ohne die Operationen für die ersten i + 1-Eingabeelemente zu ändern. Sei O i+1 die resultierende Schedule.

68 68 3. Vorlesung, Beweis von Satz 7 (Teil 4): Es bleibt jetzt noch der Fall, dass y in O i nicht aus dem Cache entfernt, bis y erneut angefragt wird. In diesem Fall verfahren wir wie folgt: Wir starten eine Suche nach dem ersten Auftauchen von z in der Eingabe nach dem i + 1-ten Eingabeelement. Da z zu diesem Zeitpunkt nicht im Cache bei der Schedule O i ist, müssen wir an dieser Stelle eine load(z)-operation ausführen. Bei O i befindet sich jedoch z noch im Cache. Daher ist diese load-operation nicht mehr nötigt und wir können sie durch ein load(y) ersetzen. Die resultierende Schedule ist jetzt nicht mehr lazy. Wir können diese Bedingung jedoch analog zu Lemma 6 wieder herstellen ohne die Operationen für die ersten i + 1-Eingabeelemente zu ändern. Sei O i+1 die resultierende Schedule.

69 69 3. Vorlesung, Das Shortest-Path Problem Beim kürzesten Wegeproblem unterscheiden wir: Single Source Shortest Path Problem (SSSPP): Finde die billigsten Wege von einer Quelle (Startknoten) zu allen anderen Knoten. All Pairs Shortest Path Problem (APSPP): Finde die billigsten Wege zwischen allen Knotenpaaren. Als Eingabe liegt bei diesen Problemen jeweils ein gewichteter Graph G = (V, E) mit einer Kantengewichtsfunktion f : E R + vor. Beachte: Die Kantengewichtsfunktion weist jeder Kante ein positives Gewicht ungleich 0 zu. Ist das Kantengewicht konstant 1, so können wir SSSPP mit Hilfe der Breitensuche lösen.

70 70 Algorithmus von Dijkstra Der Algorithmus von Dijkstra löst das SSSPP Problem. Ideen: 4. Vorlesung, Zur Vereinfachung gehen wir davon aus, dass V = [1..n] und 1 die Quelle sind. Sei C die V V -Kostenmatrix von G, d.h. C[u, v] := { f (u, v) für (u, v) E sonst. In S speichern wir die Menge der Knoten v, für die wir bereits einen kürzesten Weg von 1 aus gefunden haben. Zu Beginn ist S = {1}. Im Feld D speichern wir für jeden Knoten v die Kosten des kürzesten bis jetzt gefundenen Pfades von 1 nach v, wobei wir auf diesem Pfad nur über Knoten aus S laufen dürfen. Im Feld W speichern wir den Vorgänger von v auf dem kürzesten bis jetzt gefundenen Pfad.

71 4. Vorlesung, Idee des Algorithmus von Dijkstra: 1. Setze S := {1}. 2. Suche den Knoten v V \ S, für den der bis jetzt gefundene Weg minimal ist. Setze S := S {v} und modifiziere die Felder D und W für die Knoten u V \ S mit (v, u) E, falls sich durch die Hinzunahme von v zu S ein kürzerer Pfad von 1 nach u ergibt. 3. Wiederhole den letzte Schritt bis S = V. Wir gehen davon aus, dass G, S, D, W global gegeben sind. 71

72 72 4. Vorlesung, Beispiel: S: Sei S = {1, 2, 3} und D[4] = 4, D[5] = 2, D[6] = 6, dann ist 5 der nächste Knoten, der in S eingefügt wird. Der Pfad P 5 ist 1, 2, 5.

73 73 4. Vorlesung, Wie finden wir den nächsten in S einzufügenden Knoten? Algorithmus next-node() Eingabe: global gegeben Ergebnis: u V \ S mit minimaler Distanz zu 1 1: min:= 2: for v V \ S do 3: if D[v] < min then 4: min:= D[v] 5: u := v 6: end if 7: end for 8: Return(u)

74 74 4. Vorlesung, Modifikation der Felder: Algorithmus modify(u) Eingabe: u V \ S mit minimaler Distanz zu 1 Ergebnis: modifizierte Datenstruktur 1: S := S {u} 2: for v V \ S mit (u, v) E do 3: if D[u] + C[u, v] < D[v] then 4: W [v] := u 5: D[v] := D[u] + C[u, v] 6: end if 7: end for

75 75 4. Vorlesung, Algorithmus Dijkstra(C) Eingabe: global gegebene Kostenmatrix C, die leere Menge S sowie Felder D, W Ergebnis: Lösung des SSSPP im Feld W 1: S := {1} 2: for v V \ S do 3: D[v] := C[1, v]; W [v] := 1 4: end for 5: while S V do 6: modify(next-node()) 7: end while

76 4. Vorlesung, Im Feld W steht für jeden Knoten v der kürzeste Weg über die Knoten aus S vom Knoten 1: Initialisiert wird W durch W [v] := 1 und setzen D[v] := C[1, v]. Für jeden Knoten v V \ S sei D[v] der Abstand von 1 und v in S {v}. Für jeden Knoten v V \ S sei W [v] der Vorgänger von v auf dem kürzesten Weg von 1 nach v in S {v}. Somit ist P v = v, W [v], W [W [v]],..., W [W [ [W [v]] ]] = 1 der inverse kürzeste Weg von 1 nach v in S {v}. Bei der Implementierung müssen wir für einen geeigneten Wert finden, z.b.: 1 + n max i,j C[i, j]. Beachte: Dieses Verfahren generiert aus lokalen Eigenschaften (wir wählen den lokal billigsten Nachfolger) eine globale Eigenschaft (alle generierten Wege sind optimal) und ist somit ein Greedy-Algorithmus. 76

77 77 4. Vorlesung, Beispiel: S = {1} und next-node= 4 Kostenmatrix: C = v D[v] v W [v]

78 78 4. Vorlesung, S = {1, 4} und next-node= 5 v D[v] S = {1, 4, 5} und next-node= 2 v D[v] S = {1, 2, 4, 5} und next-node= 3 v D[v] Endzustand: S = {1, 2, 3, 4, 5} v D[v] v W [v] v W [v] v W [v] v W [v]

79 79 4. Vorlesung, Der Beweis, dass der Algorithmus von Dijkstra eine optimale Lösung findet erfolgt über ein greedy algorithm stays ahead Argument. Lemma 7 Sei S eine beliebige Menge, die im Algorithmus Dijkstra in einem Aufruf der Prozedur modify berechnet wird, dann gilt für alle u S, dass P u der kürzeste Pfad von 1 nach u. Beweis von Lemma 7: Der Beweis erfolgt über vollständige Induktion über die Kardinalität von S. Für S = 1, d.h. S = {1}, ist das Lemma trivialer Weise erfüllt. Wir nehmen nun an, dass die Aussage für das Lemma für Mengen S mit S k erfüllt ist.

80 4. Vorlesung, Beweis von Lemma 7 (Teil 2): Wir betrachten nun eine Menge S der Kardinalität k und den Knoten v, der im nächsten Schritt zu S hinzugefügt wird. Betrachten wir einen Pfad P u von 1 zu einem Knoten u S, so erkennen wir, dass dieser vollständig in S verläuft. S: Sei v der Knoten, der im k + 1-ten Schritt in S eingefügt wird. x P x y Sei (u, v) die letzte Kante in P v. Nach Induktion ist P u der kürzeste Pfad von 1 nach u. 1 P u Sei P ein beliebiger Pfad von 1 nach v. Wir wollen zeigen, dass P mindestens die Länge von P v hat. u v Sei y der erste Knoten auf P, der nicht in S ist und sei x der direkte Nachfolger von y. 80

81 81 4. Vorlesung, Beweis von Lemma 7 (Teil 3): Es gilt: P hat mindestens die Länge des kürzesten Pfades von 1 nach x, d.h. D[x] plus der Länge (Gewicht) der Kante (x, y) plus der Länge des Suffixes des Pfades P von y nach v. Die Länge von P ist zumindest D[x] + C[x, y]. Wir wählen jedoch (u, v) so, dass D[u] + C[u, v] minimal ist für alle u S und v V \ S. Somit ist P D[x] + C[x, y] D[u] + C[u, v] P v.

82 82 4. Vorlesung, Satz 8 Der Algorithmus von Dijkstra löst SSSPP. Beweis: In Lemma 7 haben wir gezeigt, dass der Algorithmus von Dijkstra für jede der konstruierten Menge S und für jeden Knoten v S eine kürzesten Pfades von 1 nach v konstruiert. Dieses gilt insbesondere für S = V.

83 83 4. Vorlesung, Das Flussproblem für Netzwerke 3.1 Netzwerke mit Kapazitätsbeschränkung Definition 6 Ein Netzwerk N = (V, E, γ, q, s) besteht aus einem gerichteten Graph G = (V, E), einer Quelle q V und einer Senke s V sowie einer Kapazitätsfunktion γ : E R + 0. Es sei n := V und m := E.

84 84 4. Vorlesung, Definition 6 (Teil 2) Ein Fluss in N ist eine Funktion f : E R + 0 mit folgenden Eigenschaften: die Kapazitätsschranken der Kanten werden eingehalten, d.h. e E : f (e) γ(e) für alle Knoten v V \ {q, s} wird die Kirchhoffsche Regel eingehalten, d.h. v V \ {q, s} : f ((u, v)) = f ((v, w)). (u,v) E (v,w) E

85 4. Vorlesung, Definition 6 (Teil 3) Als Wert eines Flusses definieren wir als W (f ) := (q,v) E f ((q, v)) = (u,s) E f ((u, s)). Die Eigenschaft, dass der Ausfluss aus der Quelle identisch sein muss mit dem Abfluss in die Senke folgt unmittelbar aus der Kirchhoffschen Regel, da im Netzwerk kein Fluss verloren geht. Ein Fluss heißt maximal, falls sein Wert größtmöglich unter allen Flüssen in N ist. MAXFLOW(N) bezeichnet diesen Wert. 85

86 4. Vorlesung, x q s u v w x q s u v w Ein Netzwerk und ein Fluss mit dem Wert 3. 86

87 87 4. Vorlesung, Ein Fluss ist somit ein Transportproblem: Es sollen möglichst viele Einheiten einer Ware von einem Absender zu einem Empfänger zu schicken, wobei gewisse Kapazitätsschranken auf dem Transportweg eingehalten werden müssen. Beispiele für solche Transportprobleme sind: Lenkung von Verkehrsströmen (Eisenbahn, PKWs) oder Lenkung von Nachrichtenströmen (Telefonverkehr, Datenverkehr im Internet).

88 88 4. Vorlesung, Der maximale Fluss ist beschränkt durch die Kapazität der Quelle (die Summe der Kapazitäten aller Kanten, die die Quelle verlassen) und die Kapazität der Senke (die Summe der Kapazitäten aller Kanten, die in der Senke enden). Es sei γ max := max e E γ(e). Da höchstens V 1 Kanten die Quelle verlassen, ist der maximale Fluss ist beschränkt durch V γ max.

89 4. Vorlesung, Definition 7 Die Zerlegung der Kontenmenge V = Q S mit Q S = nennen wir q s-schnitt, falls q Q und s S ist. Die Schnittkapazität eines q s-schnittes definieren wir als γ(q, S) := (u,v) E, u Q, v S γ((u, v)). Ein minimaler Schnitt von N ist ein q s-schnitt (Q, S), so dass γ(q, S) minimal unter allen q s-schnitten ist. MINCUT(N) bezeichnet diesen Wert. Für einen Fluss f sei der Nettofluss von f über einen Schnitt (Q, S) definiert als f (Q, S) := u Q, v S f ((u, v)) u Q, v S f ((v, u)) γ(q, S). 89

90 90 4. Vorlesung, G γ(e 1 ) Q γ(e 2 ) S q γ(e r ) s q s-schnitt (Q, S) mit Schnittkapazität γ(q, S).

91 91 4. Vorlesung, Lemma 8 Für jeden q s-schnitt (Q, S) gilt f (Q, S) = W (f ). Beweis von Lemma 8 Der Beweis erfolgt per Induktion über die Mächtigkeit von Q. Für Q = 1, d.h. für Q = {q} folgt die Behauptung aus der Definition von W (f ). Sei Q > 1 und v Q mit v q. Nach Voraussetzung gilt f (Q \ {v}, S {v}) = W (f ).

92 92 4. Vorlesung, Beweis von Lemma 8 (Teil 2) G Q S q f 1 v f 4 s f 3 f 2

93 93 4. Vorlesung, Beweis von Lemma 8 (Teil 3) Sei f 1 der Gesamtfluss nach v von Knoten aus Q \ {v} und f 2 der Gesamtfluss nach v von Knoten aus S. Sei f 3 der Gesamtfluss aus v nach Q \ {v} und f 4 der Gesamtfluss von v nach S. Die Flussbedingung garantiert f 1 + f 2 = f 3 + f 4 oder f 4 f 2 + f 3 f 1 = 0. f (Q, S) lässt sich darstellen als f (Q, S) = f (Q \ {v}, S {v}) + f 4 f 2 + f 3 f 1 = f (Q \ {v}, S {v}) = W (f ).

94 94 4. Vorlesung, Definition 8 Der Restgraphen G = (V, E ) für einen Fluss f definieren wir über die Kantenmenge E, wobei: Für jede Kante e E mit f (e) < γ(e) ist e E mit Kapazität γ(e) f (e). Für jede Kante e = (u, v) E mit 0 < f (e) ist die Rückwärtskante (e) = (v, u) in E mit Kapazität f (e). u 4 v u 4 v q 5 6 w x s 5 3 = 2 q 6 3 w = s = 3 x

95 95 4. Vorlesung, Definition 8 (Teil 2) Sei G = (V, E ) der Restgraph von G für einen Fluss f, dann ist REST(N, f ) := (V, E, q, s, r) mit r(e) := γ(e) f (e) f (e) falls e E und γ(e) > f (e) falls e = (u, v), (v, u) E und f (e) > 0. Ein Weg von der Quelle zur Senke im Restgraphen heißt zunehmender Weg.

96 96 5. Vorlesung, Sei f ein Fluss in N = (V, E, q, s, γ) und π ein zunehmender Weg in N f = REST(N, f ) = (V, E, q, s, γ). Wir gehen im folgeden davon aus, dass ein zunehmender Weg jeden Knoten maximal einmal besucht. Der nachfolgende Algorithmus modifiziert f : Algorithmus modify(n, f, π) Eingabe: Netzwerk N, Fluss f in N und zunehmender Weg π in N f Ergebnis: um π erhöhter Fluss f in N 1: ρ := min{r(e i ) e i π} 2: for e i π do 3: if e i ist Vorwärtskante in N f, d.h. e i E then 4: f (e i ) := f (e i ) + ρ 5: else if e i ist Rückwärtskante in N f, d.h. e i E \ E then 6: f (e i ) := f (e i ) ρ 7: end if 8: end for 9: Return(f )

97 97 5. Vorlesung, Lemma 9 Ist f ein Fluss in N und π ein zunehmender Weg in N f, dann ist modify(n, f, π) auch ein Fluss in N. Beweis von Lemma 9: Wir müssen zunächst zeigen, dass f := modify(n, f, π) die Kapazitätsschranken γ einhält. Da wir nur den Fluss auf dem Weg π verändern, genügt es, wenn wir für alle Kanten e π zeigen, dass 0 f (e) γ(e) gilt. Ist e eine Vorwärtskante, dann gilt 0 f (e) f (e) + ρ f (e) + r(e) = γ(e). Ist e eine Rückwärts Kante, dann gilt 0 = f (e) f (e) f (e) ρ f (e) γ(e).

98 5. Vorlesung, Beweis von Lemma 9 (Teil 2): Als zweites müssen wir nun zeigen, dass die Kirchhoffsche Regel für jeden Knoten v auf π (bis auf q und s) erfüllt ist: (u,v) E f ((u, v)) = (v,w) E f ((v, w)) Betritt und verlässt π den Knoten v auf jeweils einer Vorwärtskante, dann erhöhen wir beide Summen um den Wert ρ. Die Kirchhoffsche Regel bleibt somit erfüllt. Betritt und verlässt π den Knoten v auf jeweils einer Rückwärtskante, dann verringern wir beide Summen um den Wert ρ. Die Kirchhoffsche Regel bleibt somit erfüllt. 98

99 99 5. Vorlesung, Beweis von Lemma 9 (Teil 3): Betreten wir v über eine Vorwärtskante (u, v) und verlassen wir v auf einer Rückwärtskante (v, w ), dann (u,v) E f ((u, v)) = = = (u,v) E f ((u, v)) f ((u, v)) f ((w, v)) +f ((u, v)) + f ((w, v)) f ((u, v)) f ((u, v)) f ((w, v)) (u,v) E +f ((u, v)) + ρ + f ((w, v)) ρ f ((v, w)). (v,w) E Die Kirchhoffsche Regel bleibt somit erfüllt.

100 Beweis von Lemma 9 (Teil 4): 5. Vorlesung, Betreten wir v über eine Rückwärtskante (u, v) und verlassen wir v auf einer Vorwärtsskante (v, w ), dann (v,w) E f ((v, w)) = = = (v,w) E f ((v, w)) f ((v, u )) f ((v, w )) +f ((v, u )) + f ((v, w )) f ((v, w)) f ((v, u )) f ((v, w )) (v,w) E +f ((v, u )) ρ + f ((v, w )) + ρ f ((u, v)). (u,v) E Die Kirchhoffsche Regel bleibt somit erfüllt. Wir haben somit bewiesen, dass f ein Fluss ist, wenn f ein Fluss ist. 100

101 Vorlesung, Aus der Konstruktion von REST(N, f ) folgt, dass jeder zunehmende Weg q immer über eine Vorwärtskante verlässt, und dass jeder zunehmende Weg s über eine Vorwärtskante erreicht. Es folgt somit: Lemma 10 Führen wir modify(n, f, π) für einen Fluss f und einen zunehmenden aus, so gilt für den resultierenden Fluss f : W (f ) < W (f ). Existiert somit in REST(N, f ) ein zunehmender Weg, dann ist f kein maximaler Fluss.

102 Vorlesung, Satz 9 [MAXFLOW-MINCUT-Theorem] Für jedes Netzwerk N gilt: MAXFLOW(N) = MINCUT(N). Beweis von Satz 9: Nach Lemma 8 gilt für einen maximalen Fluss f und für jeden q s-schnitt (Q, S) MAXFLOW(N) = W (f ) = f (Q, S) γ(q, S). Insbesondere gilt für den minimalen q s-schnitt (Q, S) MAXFLOW(N) γ(q, S) = MINCUT(N).

103 Vorlesung, Beweis von Satz 9 (Teil 2): Es verbleibt zu zeigen, dass MAXFLOW(N) MINCUT(N). Sei f ein maximaler Fluss in N. Aus Lemma 10 folgt, dass es in REST(N, f ) = (V, E, q, s, r) keinen zunehmenden Weg gibt, d.h. es gibt in G = (V, E ) keinen Weg von q nach s. Sei Q die Menge der Knoten, die von q aus in G erreichbar sind, und sei S := V \ Q. (Q, S) ist ein q s-schnitt.

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

1 Einleitung. Algorithmik

1 Einleitung. Algorithmik 1. Vorlesung, 24.10.2006 1. Vorlesung, 24.10.2006 1 Einleitung Algorithmik jakoby@tcs.uni-luebeck.de Sprechstunde: Mittwochs 15:00-17:00 WS 07/08 Motivation Eine wesentliche Aufgabe der Informatik ist

Mehr

8 Das Flussproblem für Netzwerke

8 Das Flussproblem für Netzwerke 8 Das Flussproblem für Netzwerke 8.1 Netzwerke mit Kapazitätsbeschränkung Definition 15 Ein Netzwerk N = (V, E, γ, q, s) besteht aus einem gerichteten Graph G = (V, E), einer Quelle q V und einer Senke

Mehr

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck. 10 Matching-Probleme

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck. 10 Matching-Probleme 10 Matching-Probleme 10.1 Definition von Matching-Probleme Definition 21 [2-dimensionales Matching] Sei G = (V, E) ein ungerichteter Graph und E E. E ist ein Matching, wenn für alle Kantenpaare e 1, e

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Minimale Spannbäume Maike Buchin 18.7., 20.7.2017 Einführung Motivation: Verbinde Inseln mit Fähren oder Städte mit Schienen und verbrauche dabei möglichst wenig Länge. Problem:

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

9 Minimum Spanning Trees

9 Minimum Spanning Trees Im Folgenden wollen wir uns genauer mit dem Minimum Spanning Tree -Problem auseinandersetzen. 9.1 MST-Problem Gegeben ein ungerichteter Graph G = (V,E) und eine Gewichtsfunktion w w : E R Man berechne

Mehr

Wie wird ein Graph dargestellt?

Wie wird ein Graph dargestellt? Wie wird ein Graph dargestellt? Für einen Graphen G = (V, E), ob gerichtet oder ungerichtet, verwende eine Adjazenzliste A G : A G [i] zeigt auf eine Liste aller Nachbarn von Knoten i, wenn G ungerichtet

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

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

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 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Lerneinheit 3: Greedy Algorithmen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 2016 10.5.2016 Einleitung Einleitung Diese Lerneinheit

Mehr

Kap. 6.5: Minimale Spannbäume ff

Kap. 6.5: Minimale Spannbäume ff Kap. 6.: Minimale Spannbäume ff Professor Dr. Karsten Klein Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 20. VO 2. TEIL DAP2 SS 2009 2. Juli 2009 SS08 1 Überblick 6.:

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

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 17 (8.7.2014) Minimale Spannbäume II Union Find, Prioritätswarteschlangen Algorithmen und Komplexität Minimaler Spannbaum Gegeben: Zus. hängender,

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 208 (Algorithmen & Datenstrukturen) Vorlesung 4 (..208) Graphenalgorithmen III Algorithmen und Komplexität Bäume Gegeben: Zusammenhängender, ungerichteter Graph G = V, E Baum: Zusammenhängender,

Mehr

3. Musterlösung. Problem 1: Boruvka MST

3. Musterlösung. Problem 1: Boruvka MST Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner. Musterlösung Problem : Boruvka MST pt (a) Beweis durch Widerspruch. Sei T MST von G, e die lokal minimale Kante eines

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

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

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

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 16 (2.7.2014) Graphtraversierung II, Minimale Spannbäume I Algorithmen und Komplexität Tiefensuche: Pseusocode DFS Traversal: for all u in

Mehr

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

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt: 3. Minimale Spannbäume Sei G = (V, E) ein einfacher ungerichteter Graph, der o.b.d.a. zusammenhängend ist. Sei weiter w : E R eine Gewichtsfunktion auf den Kanten von G. Wir setzen E E: w(e ) = e E w(e),

Mehr

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47 Graphalgorithmen Dominik Paulus.0.01 Dominik Paulus Graphalgorithmen.0.01 1 / 7 1 Spannbäume Kruskal Prim Edmonds/Chu-Liu Datenstrukturen Fibonacci-Heap Union/Find Kürzeste Pfade Dijkstra Bellman-Ford

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

Kap. 6.5: Minimale Spannbäume

Kap. 6.5: Minimale Spannbäume Kap. 6.5: Minimale Spannbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 19./20. VO DAP2 SS 2009 30.6./2.7.2009 1 Anmeldung zur Klausur 31.07.2009 um 10:15

Mehr

Wiederholung zu Flüssen

Wiederholung zu Flüssen Universität Konstanz Methoden der Netzwerkanalyse Fachbereich Informatik & Informationswissenschaft SS 2008 Prof. Dr. Ulrik Brandes / Melanie Badent Wiederholung zu Flüssen Wir untersuchen Flüsse in Netzwerken:

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

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 5. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Wdhlg.: Dijkstra-Algorithmus I Bestimmung 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

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

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind. 3.5 Gerichteter Pfad Definition 291 Eine Folge (u 0, u 1,..., u n ) mit u i V für i = 0,..., n heißt gerichteter Pfad, wenn ( i {0,..., n 1} ) [ (u i, u i+1 ) A]. Ein gerichteter Pfad heißt einfach, falls

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

Grundzüge von Algorithmen und Datenstrukturen, WS 15/16: Lösungshinweise zum 13. Übungsblatt

Grundzüge von Algorithmen und Datenstrukturen, WS 15/16: Lösungshinweise zum 13. Übungsblatt U N S A R I V E R S A V I E I T A S N I S S Grundzüge von Algorithmen und Datenstrukturen, WS /6: Lösungshinweise zum 3. Übungsblatt Christian Hoffmann, Fabian Bendun Aufgabe 3. (a) Sei j i + = n die Größe

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

Übungsblatt 2 - Lösung

Übungsblatt 2 - Lösung Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 2 - Lösung Vorlesung Algorithmentechnik im WS 08/09 Ausgabe 04. November 2008 Abgabe 8. November, 5:0 Uhr (im Kasten vor Zimmer

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

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

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

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

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 1/1 Datenstrukturen und Algorithmen Vorlesung 14: Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/

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

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 02. Mai 2017 [Letzte Aktualisierung: 10/07/2018,

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

Maximale s t-flüsse in Planaren Graphen

Maximale s t-flüsse in Planaren Graphen Maximale s t-flüsse in Planaren Graphen Vorlesung Algorithmen für planare Graphen 6. Juni 2017 Guido Brückner INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg

Mehr

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

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V. Kapitel 4 Graphenalgorithmen 4.1 Definitionen Definition 4.1.1. Der Graph G = (V, E) ist über die beiden Mengen V und E definiert, wobei V die Menge der Knoten und E die Menge der Kanten in dem Graph ist.

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

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 2 Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 2 Woche: Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 24/ 44 Zwei Beispiele a 0

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 018/19 1. Vorlesung Minimale Spannbäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Motivation ) Kantengewichte w : E R >0 ) w(e ) := e E w(e)

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

10. Übungsblatt zu Algorithmen I im SS 2010

10. Übungsblatt zu Algorithmen I im SS 2010 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders G.V. Batz, C. Schulz, J. Speck 0. Übungsblatt zu Algorithmen I im SS 00 http//algo.iti.kit.edu/algorithmeni.php

Mehr

Graphalgorithmen Netzwerkalgorithmen. Laufzeit

Graphalgorithmen Netzwerkalgorithmen. Laufzeit Netzwerkalgorithmen Laufzeit (Folie 390, Seite 78 im Skript) Finden eines Matchings maximaler Kardinalität dauert nur O( E min{ V, V 2 }) mit der Ford Fulkerson Methode. Der Fluß ist höchstens f = min{

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

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

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphdurchläufe Maike Buchin 22. und 27.6.2017 Graphexploration Motivation: Für viele Zwecke will man den gesamten Graphen durchlaufen, zb. um festzustellen ob er (stark) zusammenhängt.

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

Kapitel 8 Graphenalgorithmen. Minimaler Spannbaum Union-find-Problem Kürzeste Wege

Kapitel 8 Graphenalgorithmen. Minimaler Spannbaum Union-find-Problem Kürzeste Wege Kapitel 8 Graphenalgorithmen Minimaler Spannbaum Union-find-Problem Kürzeste Wege Rückblick Graphen Modelle für Objekte und Beziehungen untereinander Personen - Bekanntschaften Ereignisse - Abhängigkeiten

Mehr

Bipartites Matching. Gegeben: Ein bipartiter, ungerichteter Graph (V 1, V 2, E). Gesucht: Ein Matching (Paarung) maximaler Kardinalität.

Bipartites Matching. Gegeben: Ein bipartiter, ungerichteter Graph (V 1, V 2, E). Gesucht: Ein Matching (Paarung) maximaler Kardinalität. Netzwerkalgorithmen Bipartites Matching (Folie 90, Seite 80 im Skript) Gegeben: Ein bipartiter, ungerichteter Graph (V, V, E). Gesucht: Ein Matching (Paarung) maximaler Kardinalität. Ein Matching ist eine

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

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

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

Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009

Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009 Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009 I NSTITUT F U R T HEORETISCHE I NFORMATIK, P ROF. D R. D OROTHEA WAGNER KIT Universita t des Landes Baden-Wu rttemberg und nationales

Mehr

15. Elementare Graphalgorithmen

15. Elementare Graphalgorithmen Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen

Mehr

Greedy Algorithms - Gierige Algorithmen

Greedy Algorithms - Gierige Algorithmen Greedy Algorithms - Gierige Algorithmen Marius Burfey 23. Juni 2009 Inhaltsverzeichnis 1 Greedy Algorithms 1 2 Interval Scheduling - Ablaufplanung 2 2.1 Problembeschreibung....................... 2 2.2

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

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme Theoretische Informatik Exkurs Rainer Schrader Exkurs: Komplexität von n Institut für Informatik 13. Mai 2009 1 / 34 2 / 34 Gliederung Entscheidungs- und Approximationen und Gütegarantien zwei Greedy-Strategien

Mehr

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME Algorithmen und Datenstrukturen 11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME Algorithmen und Datenstrukturen - Ma5hias Thimm (thimm@uni-koblenz.de) 1 Algorithmen und Datenstrukturen 11.1. BERECHNUNG MAXIMALER FLÜSSE

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Tiefensuche: Die globale Struktur Der gerichtete oder ungerichtete Graph G werde durch seine Adjazenzliste A repräsentiert. Im Array besucht wird vermerkt,

Mehr

3.2 Generischer minimaler Spannbaum-Algorithmus

3.2 Generischer minimaler Spannbaum-Algorithmus 3.2 Generischer minimaler Spannbaum-Algorithmus Initialisiere Wald F von Bäumen, jeder Baum ist ein singulärer Knoten (jedes v V bildet einen Baum) while Wald F mehr als einen Baum enthält do wähle einen

Mehr

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

Optimale Lösungen mit Greedy-Strategie erfordern Optimalität der Greedy-Wahl. Beispiele für optimale Greedy-Lösungen Wiederholung Optimale Lösungen mit Greedy-Strategie erfordern Optimalität der Greedy-Wahl unabhängig von Subproblemen Optimalität der Subprobleme Beispiele für optimale Greedy-Lösungen Scheduling Problem

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

1. Klausur zur Vorlesung Algorithmentechnik Wintersemester 2008/2009

1. Klausur zur Vorlesung Algorithmentechnik Wintersemester 2008/2009 . Klausur zur Vorlesung Algorithmentechnik Wintersemester 008/009 Hier Aufkleber mit Name und Matrikelnummer anbringen Vorname: Nachname: Matrikelnummer: Beachten Sie: Bringen Sie den Aufkleber mit Ihrem

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 13 (6.6.2018) Graphenalgorithmen II Yannic Maus Algorithmen und Komplexität Repräsentation von Graphen Zwei klassische Arten, einen Graphen

Mehr

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J Greedy-Strategie Definition Paradigma Greedy Der Greedy-Ansatz verwendet die Strategie 1 Top-down Auswahl: Bestimme in jedem Schritt eine lokal optimale Lösung, so dass man eine global optimale Lösung

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

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

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

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 22 (20.7.2016) Greedy Algorithmen - Datenkompression Algorithmen und Komplexität Greedy Algorithmen Greedy Algorithmen sind eine Algorithmenmethode,

Mehr

Datenstrukturen und Algorithmen SS07

Datenstrukturen und Algorithmen SS07 Datenstrukturen und Algorithmen SS0 Datum:.6.200 Michael Belfrage mbe@student.ethz.ch belfrage.net/eth Programm von Heute Minimaler Spannbaum (MST) Challenge der Woche Fibonacci Heap Minimaler Spannbaum

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

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

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

Kombinatorische Optimierung

Kombinatorische Optimierung Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 16 Programm: Einführung

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 5 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

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

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

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

Mehr

Wann sind Codes eindeutig entschlüsselbar?

Wann sind Codes eindeutig entschlüsselbar? Wann sind Codes eindeutig entschlüsselbar? Definition Suffix Sei C ein Code. Ein Folge s {0, 1} heißt Suffix in C falls 1 c i, c j C : c i = c j s oder 2 c C und einen Suffix s in C: s = cs oder 3 c C

Mehr

Algorithmen II Vorlesung am

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

Mehr

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5) Praktikum Diskrete Optimierung (Teil 5) 6.05.009 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

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

Graphalgorithmen. 9. November / 54

Graphalgorithmen. 9. November / 54 Graphalgorithmen 9. November 2017 1 / 54 Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 26. Vorlesung Greedy- und Approximationsalgorithmen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Operations Research Optimierung für Wirtschaftsabläufe:

Mehr

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen

Mehr

Richtig oder falsch? Richtig oder falsch? Richtig oder falsch? Mit dynamischer Programmierung ist das Knapsack- Problem in Polynomialzeit lösbar.

Richtig oder falsch? Richtig oder falsch? Richtig oder falsch? Mit dynamischer Programmierung ist das Knapsack- Problem in Polynomialzeit lösbar. Gegeben sei ein Netzwerk N = (V, A, c, s, t) wie in der Vorlesung. Ein maximaler s-t-fluss kann immer mit Hilfe einer Folge von höchstens A Augmentationsschritten gefunden werden. Wendet man den Dijkstra-Algorithmus

Mehr

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden! Albert-Ludwigs-Universität Institut für Informatik Prof. Dr. F. Kuhn Informatik II: Algorithmen & Datenstrukturen Montag, 29. August, 2014, 14:00 17:00 Name:...........................................................

Mehr

Quicksort ist ein Divide-and-Conquer-Verfahren.

Quicksort ist ein Divide-and-Conquer-Verfahren. . Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.

Mehr

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

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

24. Minimale Spannbäume

24. Minimale Spannbäume Problem Gegeben: Ungerichteter, zusammenhängender, gewichteter Graph G = (V, E, c). 4. Minimale Spannbäume Gesucht: Minimaler Spannbaum T = (V, E ), E E, so dass e E c(e) minimal. Motivation, Greedy, Algorithmus

Mehr

Effiziente Algorithmen I 11. Übungsblatt, Wintersemester 2015/16 Abgabetermin:

Effiziente Algorithmen I 11. Übungsblatt, Wintersemester 2015/16 Abgabetermin: 11 11. Übungsblatt, Wintersemester 2015/16 Abgabetermin: 19.01.2016 Aufgabe 29 Bestimmen Sie mit der Stepping-Stone-ethode einen Transportplan mit minimalen Kosten für das klassische Transportproblem mit

Mehr

Organisatorisches. Programmierpraktikum Das Canadian Traveller Problem. Organisatorisches. Organisatorisches

Organisatorisches. Programmierpraktikum Das Canadian Traveller Problem. Organisatorisches. Organisatorisches Organisatorisches Programmierpraktikum Das Canadian Traveller Problem Rainer Schrader Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln. April 006 Prof. Dr. Rainer Schrader Tel.: 470-600

Mehr