Dynamisches Programmieren - Problemstruktur

Größe: px
Ab Seite anzeigen:

Download "Dynamisches Programmieren - Problemstruktur"

Transkript

1 Dynamisches Programmieren - Problemstruktur Optimale Substruktur: Optimale Lösung enthält optimale Lösungen von Teilproblemen. Bsp.: Kürzester Weg im Graphen, LCS (s. etwa Folie 42 der letzten Vorlesung) Überlappende Teilprobleme: Bei der rekursiven Berechnung von Teillösungen werden viele Teillösungen mehrfach berechnet. Bsp.: Fibonacci (Heimübungsblatt 13) 1 1

2 Dynamisches Programmieren - Vorgehensweise 1. Bestimme rekursive Struktur einer optimalen Lösung. 2. Entwerfe rekursive Methode zur Bestimmung des Wertes einer optimalen Lösung. 3. Transformiere rekursive Methode in eine iterative (bottom-up) Methode zur Bestimmung des Wertes einer optimalen Lösung. 4. Bestimme aus den unter 3. berechneten Informationen eine optimale Lösung. 2 2

3 Szenario: Maschine für W Zeitschritte zur Verfügung n Aufgaben, die von Maschine erledigt werden könnten Aufgaben benötigen unterschiedlich viel Zeit Reihenfolge und Zeitpunkt unerheblich Ziel: Sie wollen ihre Maschine möglichst gut auslasten 3 3

4 Beispiel: 15 Zeiteinheiten stehen insgesamt zur Verfügung Aufgabe Zeit

5 Beispiel: 15 Zeiteinheiten stehen insgesamt zur Verfügung Aufgabe Zeit Aufgabe 2 und Aufgabe 11 benötigen 14 Zeitschritte 5 5

6 Beispiel: 15 Zeiteinheiten stehen insgesamt zur Verfügung Aufgabe Zeit Aufgabe 2 und Aufgabe 11 benötigen 14 Zeitschritte Bessere Lösung möglich? 6 6

7 Beispiel: 15 Zeiteinheiten stehen insgesamt zur Verfügung Aufgabe Zeit Aufgabe 2 und Aufgabe 11 benötigen 14 Zeitschritte Bessere Lösung möglich? Ja! Aufgabe 1,3 und 4 benötigen 15 Zeiteinheiten 7 7

8 Subset Sum (Optimierungsvariante): Eingabe: Menge X mit n pos. Integers und ein Zielwert W Ausgabe: Menge S X, so dass Σ x unter der Bedingung x S Σ x W maximiert wird x S Subset Sum (Entscheidungsvariante): Eingabe: Menge X mit n pos. Integers und ein Zielwert W Ausgabe: true, wenn es Menge S X mit Σ x = W gibt false, sonst 8 8

9 AusschöpfendeSuche(X,W) 1. for each subset S X do 2. sum 0 3. for each x S do 4. sum sum + x 5. if sum = W return true 6. return false 9 9

10 AusschöpfendeSuche(X,W) 1. for each subset S X do 2. sum 0 3. for each x S do 4. sum sum + x 5. if sum = W return true 6. return false Probiere alle Untermengen aus 10 10

11 AusschöpfendeSuche(X,W) 1. for each subset S X do 2. sum 0 3. for each x S do 4. sum sum + x 5. if sum = W return true 6. return false Berechne Summe der Elemente in S 11 11

12 AusschöpfendeSuche(X,W) 1. for each subset S X do 2. sum 0 3. for each x S do 4. sum sum + x 5. if sum = W return true 6. return false Falls Summe=W, dann Ausgabe true 12 12

13 AusschöpfendeSuche(X,W) 1. for each subset S X do 2. sum 0 3. for each x S do 4. sum sum + x 5. if sum = W return true 6. return false Falls es kein S gibt, das sich zu W aufsummiert, Ausgabe false 13 13

14 AusschöpfendeSuche(X,W) 1. for each subset S X do 2. sum 0 3. for each x S do 4. sum sum + x 5. if sum = W return true 6. return false Laufzeit: Wie viele Untermengen gibt es? 14 14

15 AusschöpfendeSuche(X,W) 1. for each subset S X do 2. sum 0 3. for each x S do 4. sum sum + x 5. if sum = W return true 6. return false Laufzeit: Wie viele Untermengen gibt es? X S 31 ja 17 nein 13 ja 20 ja 4 nein 8 ja 19 ja 15 15

16 AusschöpfendeSuche(X,W) 1. for each subset S X do 2. sum 0 3. for each x S do 4. sum sum + x 5. if sum = W return true 6. return false Laufzeit: Wie viele Untermengen gibt es? X S

17 AusschöpfendeSuche(X,W) 1. for each subset S X do 2. sum 0 3. for each x S do 4. sum sum + x 5. if sum = W return true 6. return false Laufzeit: Wie viele Untermengen gibt es? Soviel wie Bitstrings der Länge n (minus 1) X S

18 AusschöpfendeSuche(X,W) 1. for each subset S X do 2. sum 0 3. for each x S do 4. sum sum + x 5. if sum = W return true 6. return false Laufzeit: Wie viele Untermengen gibt es? Soviel wie Bitstrings der Länge n (minus 1) X S Es gibt 2 viele Bitstrings der Länge n n

19 AusschöpfendeSuche(X,W) 1. for each subset S X do 2. sum 0 3. for each x S do 4. sum sum + x 5. if sum = W return true 6. return false Laufzeit: Laufzeit (mindestens) Ω(n 2 ) n X S

20 AusschöpfendeSuche(X,W) 1. for each subset S X do 2. sum 0 3. for each x S do 4. sum sum + x 5. if sum = W return true 6. return false Laufzeit: Laufzeit (mindestens) Ω(n 2 ) Wenn alle Rechner der Welt 100 Jahre rechnen würden, könnten sie mit diesem Algorithmus ein Problem mit 500 Zahlen nicht lösen n X S

21 Dynamisches Programmieren - Vorgehensweise 1. Bestimme rekursive Struktur einer optimalen Lösung. 2. Entwerfe rekursive Methode zur Bestimmung des Wertes einer optimalen Lösung

22 RekSubsetSum(X,W,n) 1. if W=0 then return true 2. if n=0 then return false 3. return (RekSubsetSum(X,W-X[n],n-1) or RekSubsetSum(X,W,n-1)) Aufruf: RekSubsetSum(X,W,length[X]) 22 22

23 RekSubsetSum(X,W,n) 1. if W=0 then return true 2. if n=0 then return false Hat X[1,,n] eine Teilmenge S mit Gesamtwert W? 3. return (RekSubsetSum(X,W-X[n],n-1) or RekSubsetSum(X,W,n-1)) Aufruf: RekSubsetSum(X,W,length[X]) 23 23

24 RekSubsetSum(X,W,n) 1. if W=0 then return true 2. if n=0 then return false Die leere Menge hat Gesamtgewicht W=0. 3. return (RekSubsetSum(X,W-X[n],n-1) or RekSubsetSum(X,W,n-1)) Aufruf: RekSubsetSum(X,W,length[X]) 24 24

25 RekSubsetSum(X,W,n) 1. if W=0 then return true 2. if n=0 then return false Da n=0 ist, betrachten wir nur noch die leere Menge. Keine Teilmenge dieser Menge erreicht aufsummiert den Wert W return (RekSubsetSum(X,W-X[n],n-1) or RekSubsetSum(X,W,n-1)) Aufruf: RekSubsetSum(X,W,length[X]) 25 25

26 RekSubsetSum(X,W,n) 1. if W=0 then return true 2. if n=0 then return false 3. return (RekSubsetSum(X,W-X[n],n-1) or RekSubsetSum(X,W,n-1)) Ansonsten: Logisches Oder von zwei Fällen Aufruf: RekSubsetSum(X,W,length[X]) 26 26

27 RekSubsetSum(X,W,n) 1. if W=0 then return true 2. if n=0 then return false 3. return (RekSubsetSum(X,W-X[n],n-1) or RekSubsetSum(X,W,n-1)) S enthält X[n]: Dann müssen wir in X[1,..,n-1] eine Menge mit Gewicht W-X[n] suchen Aufruf: RekSubsetSum(X,W,length[X]) 27 27

28 RekSubsetSum(X,W,n) 1. if W=0 then return true 2. if n=0 then return false S enthält nicht X[n]: Dann müssen wir in X[1,..,n-1] eine Menge mit Gewicht W suchen 3. return (RekSubsetSum(X,W-X[n],n-1) or RekSubsetSum(X,W,n-1)) Aufruf: RekSubsetSum(X,W,length[X]) 28 28

29 RekSubsetSum(X,W,n) 1. if W=0 then return true 2. if n=0 then return false 3. return (RekSubsetSum(X,W-X[n],n-1) or RekSubsetSum(X,W,n-1)) Laufzeit: n Θ(2 ) 29 29

30 Beobachtung: Es gibt maximal length[x] W unterschiedliche Aufrufe von RekSubsetSum() 30 30

31 Beobachtung: Es gibt maximal length[x] W unterschiedliche Aufrufe von RekSubsetSum() length[x] Falls also length[x] W << 2 ist, dann rufen wir RekSubsetSum() häufig mit denselben Parametern auf 31 31

32 Beobachtung: Es gibt maximal length[x] W unterschiedliche Aufrufe von RekSubsetSum() length[x] Falls also length[x] W << 2 ist, dann rufen wir RekSubsetSum() häufig mit denselben Parametern auf Wir lösen also dasselbe (Unter-)Problem mehrfach! 32 32

33 Beobachtung: Es gibt maximal length[x] W unterschiedliche Aufrufe von RekSubsetSum() length[x] Falls also length[x] W << 2 ist, dann rufen wir RekSubsetSum() häufig mit denselben Parametern auf Wir lösen also dasselbe (Unter-)Problem mehrfach! Verbesserung des Algorithmus: Speichere berechnete Lösungen zwischen Falls Lösung ein zweites Mal berechnet werden soll, gib gespeicherte Lösung zurück 33 33

34 Beobachtung: Es gibt maximal length[x] W unterschiedliche Aufrufe von RekSubsetSum() length[x] Falls also length[x] W << 2 ist, dann rufen wir RekSubsetSum() häufig mit denselben Parametern auf Wir lösen also dasselbe (Unter-)Problem mehrfach! Verbesserung des Algorithmus: Speichere berechnete Lösungen zwischen Kernidee des dynamischen Programmierens! Falls Lösung ein zweites mal berechnet werden soll, gib gespeicherte Lösung zurück 34 34

35 Lösungsmatrix A A ist undef, wenn noch keine Lösung berechnet wurde A[i,j] = true, wenn es Teilmenge von X[1,..,j] gibt, deren Summe i ist A[i,j] = false, wenn es keine solche Teilmenge gibt 35 35

36 InitSubsetDynamic(X,W,n) 1. for i 0 to W do 2. for j 0 to n do 3. A[i,j] undef 4. for i 1 to W do 5. A[i,0] false 6. for j 0 to n do 7. A[0,j] true 6. RekSubsetDynamic(A,X,W,n) 36 36

37 InitSubsetDynamic(X,W,n) 1. for i 0 to W do 2. for j 0 to n do 3. A[i,j] undef 4. for i 1 to W do 5. A[i,0] false 6. for j 0 to n do 7. A[0,j] true 6. RekSubsetDynamic(A,X,W,n) Initialisiere Lösungsmatrix A 37 37

38 InitSubsetDynamic(X,W,n) 1. for i 0 to W do 2. for j 0 to n do 3. A[i,j] undef 4. for i 1 to W do 5. A[i,0] false 6. for j 0 to n do 7. A[0,j] true Eine Teilmenge der leeren Menge kann nicht den Wert i ergeben 6. RekSubsetDynamic(A,X,W,n) 38 38

39 InitSubsetDynamic(X,W,n) 1. for i 0 to W do 2. for j 0 to n do 3. A[i,j] undef 4. for i 1 to W do 5. A[i,0] false 6. for j 0 to n do 7. A[0,j] true Die leere Menge summiert sich zu 0 auf 6. RekSubsetDynamic(A,X,W,n) 39 39

40 InitSubsetDynamic(X,W,n) 1. for i 0 to W do 2. for j 0 to n do 3. A[i,j] undef 4. for i 1 to W do 5. A[i,0] false 6. for j 0 to n do 7. A[0,j] true 6. RekSubsetDynamic(A,X,W,n) Aufruf des eigentlichen Algorithmus 40 40

41 RekSubsetDynamic(A,X,W,n) 1. if A[W,n-1]=undef then 2. A[W,n-1]=RekSubsetDynamic(A,X,W,n-1) 3. if W X[n] then 4. if A[W-X[n], n-1]=undef then 5. A[W-X[n], n-1]=reksubsetdynamic(a,x,w-x[n], n-1) 6. return (A[W,n-1] or A[W-X[n],n-1]) 7. else return A[W,n-1] 41 41

42 RekSubsetDynamic(A,X,W,n) 1. if A[W,n-1]=undef then 2. A[W,n-1]=RekSubsetDynamic(A,X,W,n-1) 3. if W X[n] then 4. if A[W-X[n], n-1]=undef then 5. A[W-X[n], n-1]=reksubsetdynamic(a,x,w-x[n], n-1) 6. return (A[W,n-1] or A[W-X[n],n-1]) 7. else return A[W,n-1] Falls A[W,n-1] nicht bekannt ist, rechne es aus 42 42

43 RekSubsetDynamic(A,X,W,n) 1. if A[W,n-1]=undef then Falls A[W-X[n],n-1] definiert 2. A[W,n-1]=RekSubsetDynamic(A,X,W,n-1) 3. if W X[n] then 4. if A[W-X[n], n-1]=undef then 5. A[W-X[n], n-1]=reksubsetdynamic(a,x,w-x[n], n-1) 6. return (A[W,n-1] or A[W-X[n],n-1]) 7. else return A[W,n-1] 43 43

44 RekSubsetDynamic(A,X,W,n) 1. if A[W,n-1]=undef then 2. A[W,n-1]=RekSubsetDynamic(A,X,W,n-1) 3. if W X[n] then 4. if A[W-X[n], n-1]=undef then 5. A[W-X[n], n-1]=reksubsetdynamic(a,x,w-x[n], n-1) 6. return (A[W,n-1] or A[W-X[n],n-1]) 7. else return A[W,n-1] und nicht bekannt ist, rechne es aus

45 RekSubsetDynamic(A,X,W,n) 1. if A[W,n-1]=undef then 2. A[W,n-1]=RekSubsetDynamic(A,X,W,n-1) 3. if W X[n] then 4. if A[W-X[n], n-1]=undef then 5. A[W-X[n], n-1]=reksubsetdynamic(a,x,w-x[n], n-1) 6. return (A[W,n-1] or A[W-X[n],n-1]) 7. else return A[W,n-1] Gib den richtigen Wert zurück

46 RekSubsetDynamic(A,X,W,n) 1. if A[W,n-1]=undef then 2. A[W,n-1]=RekSubsetDynamic(A,X,W,n-1) 3. if W X[n] then 4. if A[W-X[n], n-1]=undef then 5. A[W-X[n], n-1]=reksubsetdynamic(a,x,w-x[n], n-1) 6. return (A[W,n-1] or A[W-X[n],n-1]) 7. else return A[W,n-1] Laufzeit: O(length[X] W) 46 46

47 Dynamisches Programmieren - Vorgehensweise 3. Transformiere rekursive Methode in eine iterative (bottom-up) Methode zur Bestimmung des Wertes einer optimalen Lösung. 4. Bestimme aus den unter 3. berechneten Informationen eine optimale Lösung

48 Eine neue Implementierung: Bottom-up Berechnung (häufig einfacher) Array A[0,,W] A[i] = true, gdw. es eine Untermenge mit Wert i gibt Initialisierung: A[0]=true A[i]=false für alle i>0 Nach Initialisierung korrektes A für leere Menge 48 48

49 Annahme: A korrekt berechnet für X[1,,k] Wie können wir A für X[1,,k+1] bekommen? Algorithmus: Wenn A[i] = true, dann setze A[i + X[k+1]] auf true 49 49

50 IterativeSubsetSum(X,W) 1. n length[a] 2. A[0] true 3. for i 1 to W do 4. A[i] false 5. for j 1 to n do 6. for i W downto 0 do 7. if A[i]=true then A[i+X[j]] true 8. return A[W] 50 50

51 IterativeSubsetSum(X,W) 1. n length[a] 2. A[0] true 3. for i 1 to W do 4. A[i] false 5. for j 1 to n do 6. for i W downto 0 do Initialisiere A 7. if A[i]=true then A[i+X[j]] true 8. return A[W] 51 51

52 IterativeSubsetSum(X,W) 1. n length[a] 2. A[0] true 3. for i 1 to W do 4. A[i] false 5. for j 1 to n do 6. for i W downto 0 do 7. if A[i]=true then A[i+X[j]] true 8. return A[W] Füge alle Elemente nacheinander ein 52 52

53 IterativeSubsetSum(X,W) 1. n length[a] 2. A[0] true 3. for i 1 to W do 4. A[i] false 5. for j 1 to n do 6. for i W downto 0 do 7. if A[i]=true then A[i+X[j]] true 8. return A[W] Aktualisiere A 53 53

54 IterativeSubsetSum(X,W) 1. n length[a] 2. A[0] true 3. for i 1 to W do 4. A[i] false 5. for j 1 to n do 6. for i W downto 0 do 7. if A[i]=true then A[i+X[j]] true 8. return A[W] Rückgabe des gesuchten Wertes 54 54

55 IterativeSubsetSum(X,W) 1. n length[a] 2. A[0] true 3. for i 1 to W do 4. A[i] false 5. for j 1 to n do 6. for i W downto 0 do 7. if A[i]=true then A[i+X[j]] true 8. return A[W] Laufzeit: O(n W) 55 55

56 Satz 19.5 Die Entscheidungsvariante des Subset Sum Problems kann in O(nW) Zeit exakt gelöst werden, wobei n die Eingabegröße ist und W der Zielwert. Einschätzung des Algorithmus: Es ist kein effizienter Algorithmus für sehr großes W bekannt Ein solcher Algorithmus würde auch sehr viele andere Probleme effizient lösen 56 56

57 Zusammenfassung: Dynamische Programmierung vermeidet Mehrfachberechnung von Zwischenergebnissen Bei Rekursion einsetzbar Häufig einfache bottom-up Implementierung möglich Algorithmus für schwieriges Problem (subset sum) Laufzeit hängt von Eingabewert W ab Ausblick: Rucksackproblem 57 57

58 Dynamisches Programmieren Rucksack Das Rucksackproblem: Rucksack mit begrenzter Kapazität Objekte mit unterschiedlichem Wert und unterschiedlicher Größe Wir wollen Objekte von möglichst großem Gesamtwert mitnehmen 58

59 Dynamisches Programmieren Rucksack Beispiel: Rucksackgröße 6 Größe Wert

60 Dynamisches Programmieren Rucksack Beispiel: Rucksackgröße 6 Größe Wert Objekt 1 und 3 passen und haben Gesamtwert 13 Optimal? 60

61 Dynamisches Programmieren Rucksack Beispiel: Rucksackgröße 6 Größe Wert Objekt 1 und 3 passen und haben Gesamtwert 13 Optimal? Objekt 2, 3 und 4 passen und haben Gesamtwert 15! 61

62 Dynamisches Programmieren Rucksack Das Rucksackproblem (Optimierungsversion): Eingabe: n Objekte {1,,n}; Objekt i hat ganzz. pos. Größe g[i] und Wert v[i]; Rucksackkapazität W Ausgabe: Menge S {1,,n} mit Σ g[i] W und maximalem Wert Σ v[i] i S i S 62

63 Dynamisches Programmieren Rucksack Herleiten einer Rekursion: Sei O optimale Lösung Bezeichne Opt(i,w) den Wert einer optimalen Lösung aus Objekten 1 bis i bei Rucksackgröße W Unterscheide, ob Objekt n in O ist: Fall 1(n nicht in O): Opt(n,W) = Opt(n-1,W) Fall 2(n in O): Opt(n,W) = v[n] + Opt(n-1,W-g[n]) 63

64 Dynamisches Programmieren Rucksack Erinnerung: Bezeichne Opt(i,w) den Wert einer optimalen Lösung aus Objekten 1 bis i bei Rucksackgröße W Rekursion: Opt(i,0)= 0 für 0 i n Opt(0,i)= 0 für 0 i W Wenn W<g[i], dann Opt(i,W) = Opt(i-1,W) Sonst: Opt(i,W) = max{opt(i-1,w), v[i] + Opt(i-1,W-g[i])} 64

65 Dynamisches Programmieren Rucksack Rekursion: Opt(i,0)= 0 für 0 i n Opt(0,i)= 0 für 0 i W Kein Objekt passt in den Rucksack Wenn W<g[i], dann Opt(i,W) = Opt(i-1,W) Sonst: Opt(i,W) = max{opt(i-1,w), v[i] + Opt(i-1,W-g[i])} 65

66 Dynamisches Programmieren Rucksack Rekursion: Opt(i,0)= 0 für 0 i n Opt(0,i)= 0 für 0 i W Kein Objekt steht zur Auswahl Wenn W<g[i], dann Opt(i,W) = Opt(i-1,W) Sonst: Opt(i,W) = max{opt(i-1,w), v[i] + Opt(i-1,W-g[i])} 66

67 Dynamisches Programmieren Rucksack Rekursion: Opt(i,0)= 0 für 0 i n Opt(0,i)= 0 für 0 i W Passt aktuelles Objekt in den Rucksack? Wenn W<g[i], dann Opt(i,W) = Opt(i-1,W) Nein! Sonst: Opt(i,W) = max{opt(i-1,w), v[i] + Opt(i-1,W-g[i])} 67

68 Dynamisches Programmieren Rucksack Rekursion: Opt(i,0)= 0 für 0 i n Opt(0,i)= 0 für 0 i W Wenn W<g[i], dann Opt(i,W) = Opt(i-1,W) Sonst: Opt(i,W) = max{opt(i-1,w), v[i] + Opt(i-1,W-g[i])} Sonst: Verwende Rekursion 68

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

Dynamisches Programmieren Stand

Dynamisches Programmieren Stand Dyamisches Programmiere Stad Stad der Dige: Dyamische Programmierug vermeidet Mehrfachberechug vo Zwischeergebisse Bei Rekursio eisetzbar Häufig eifache bottom-up Implemetierug möglich Das Subset Sum Problem:

Mehr

Proseminar Effiziente Algorithmen

Proseminar Effiziente Algorithmen Proseminar Effiziente Algorithmen Kapitel 9: Divide & Conquer und Prof. Dr. Christian Scheideler WS 218 Generische Optimierungsverfahren: Systematische Suche lass nichts aus Divide and Conquer löse das

Mehr

Übungen zur Vorlesung Datenstrukturen und Algorithmen SS 07 Beispiellösung Blatt 5

Übungen zur Vorlesung Datenstrukturen und Algorithmen SS 07 Beispiellösung Blatt 5 Kamil Swierkot Paderborn, den 01.06.2007 Aufgabe 17 Übungen zur Vorlesung Datenstrukturen und Algorithmen SS 07 Beispiellösung Blatt 5 Bei der Optimierungsvariante des SubSetSum Problems wird bei der Eingabe

Mehr

Wiederholung. Divide & Conquer Strategie

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

Mehr

Algorithmen und Komplexität

Algorithmen und Komplexität Algorithmen und Komplexität Dynamische Programmierung Markus Ullrich Norbert Baum Fachbereich Informatik - IIb07 Hochschule Zittau/Görlitz 28. Mai 2009 1 / 29 Wie sieht es mit langen Ketten aus? A 1 A

Mehr

Algorithmen und Datenstrukturen 2

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

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

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

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

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy

Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy 2.2 Entwurfsparadigmen Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy 1 Top-Down Zerlege das gegebene Problem in Teilschritte Zerlege Teilschritte

Mehr

5.4 Das Rucksackproblem

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

Mehr

Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper

Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung Sebastian Küpper Redundanz Rekursiver Lösungen Rekursion kann elegante Bescheibungen zur Problemlösung ergeben

Mehr

Klausur Informatik 2: Algorithmen und Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Klausur Informatik 2: Algorithmen und Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden! Albert-Ludwigs-Universität Institut für Informatik Prof. Dr. F. Kuhn Klausur Informatik 2: Algorithmen und Datenstrukturen Donnerstag, 9. März 21, 2017, 9:00 bis 12.00 Uhr Name:.....................................................................

Mehr

Formulierung mittels Dynamischer Programmierung

Formulierung mittels Dynamischer Programmierung Formulierung mittels Dynamischer Programmierung Beobachtung: die Anzahl der Teilprobleme A i j n mit i j n ist nur Folgerung: der naïve rekursive Algo berechnet viele Teilprobleme mehrfach! Idee: Bottom-up-Berechnung

Mehr

Dynamische Programmierung II

Dynamische Programmierung II Vorlesungstermin 10: Dynamische Programmierung II Markus Püschel David Steurer talks2.dsteurer.org/dp2.pdf Algorithmen und Datenstrukturen, Herbstsemester 2018, ETH Zürich Plan für heute Dynamische Programmierung

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 05 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen Grundlagen

Mehr

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12 Grundlagen der Algorithmen und Datenstrukturen Kapitel 12 Christian Scheideler + Helmut Seidl SS 2009 28.06.09 Kapitel 12 1 Generische Optimierungsverfahren Techniken: Systematische Suche lass nichts aus

Mehr

Heute. Stoff Abschlussprüfung VO. Testen. Einführung Rekursion IT I - VO 13 1

Heute. Stoff Abschlussprüfung VO. Testen. Einführung Rekursion IT I - VO 13 1 Heute Stoff Abschlussprüfung VO Testen Einführung Rekursion 23.01.2018 IT I - VO 13 1 Organisatorisches Diese Woche letzte UE (ohne Wissensüberprüfung) Nächste Woche Fragestunde in VO Abschlusstest am

Mehr

Approximationsalgorithmen. 19. Dezember / 28

Approximationsalgorithmen. 19. Dezember / 28 Approximationsalgorithmen 19. Dezember 2017 1 / 28 Optimierungsprobleme Das Ziel: Bearbeite schwierige Optimierungsprobleme der Form opt y f (x, y) so dass L(x, y). Die Zielfunktion f (x, y) ist zu minimieren

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen

Mehr

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Einführung Grundlagen von Algorithmen Grundlagen

Mehr

Programmieren, Algorithmen und Datenstrukturen II 8. Allgemeine Lösungsverfahren

Programmieren, Algorithmen und Datenstrukturen II 8. Allgemeine Lösungsverfahren Programmieren, Algorithmen und Datenstrukturen II 8. Allgemeine Lösungsverfahren 1 Übersicht 1. Ziele des Kapitels 2. Bereits behandelte Lösungsstrategien 3. Backtracking 4. Branch-and-Bound 5. Weiterführende

Mehr

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016 Algorithmen und Datenstrukturen 2 Übung 1 Stefan Florian Palkovits, BSc 0926364 e0926364@student.tuwien.ac.at 12. Juni 2016 Aufgabe 1: Es existiert eine Reduktion von Problem A auf Problem B in O(n 3 +

Mehr

NP-vollständige Probleme

NP-vollständige Probleme Effiziente Algorithmen Lösen NP-vollständiger Probleme 256 NP-vollständige Probleme Keine polynomiellen Algorithmen, falls P NP. Viele wichtige Probleme sind NP-vollständig. Irgendwie müssen sie gelöst

Mehr

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2009 11. Vorlesung Uwe Quasthoff Universität Leipzig Institut für Informatik quasthoff@informatik.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen

Mehr

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Andreas Moser Dietmar Ebner Christian Schauer Markus Bauer 9. Dezember 2003 1 Einführung Der in der Vorlesung gezeigte Algorithmus für das Steiner

Mehr

INSERTION-SORT: Ja, Es wird immer das erste, kleinste Element an die neue Liste angehängt.

INSERTION-SORT: Ja, Es wird immer das erste, kleinste Element an die neue Liste angehängt. Aufgabe 1 INSERTION-SORT: Ja, Es wird immer das erste, kleinste Element an die neue Liste angehängt. QUICK-SORT: Hängt davon ab ob PARTITION stabil ist. MERGE-SORT: Ja, Splitten, sowie Mergen ist stabil.

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

11. Übung Algorithmen I

11. Übung Algorithmen I Timo Bingmann, Christian Schulz INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS KIT Timo Universität Bingmann, des LandesChristian Baden-Württemberg Schulz und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Rückblick: divide and conquer

Rückblick: divide and conquer Rückblick: divide and conquer pi = (xi,yi) } p å } ' }d(p,p) p ''=min(, ') F 0/0 p./95 weitere Algorithmentechniken Greedy-Algorithmen dynamische Programmierung Backtracking branch and bound Heuristiken

Mehr

Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei

Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei 7/7/ Das Rucksack-Problem Englisch: Knapsack Problem Das Problem: "Die Qual der Wahl" Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei Im Ladens

Mehr

Lösungsvorschlag Serie 2 Rekursion

Lösungsvorschlag Serie 2 Rekursion (/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge

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

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 11. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen Safe

Mehr

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 502 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1 Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 05/06 ITI Wagner. Musterlösung Problem : Average-case-Laufzeit vs. Worst-case-Laufzeit ** (a) Im schlimmsten Fall werden für jedes Element

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe

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 Geometrisches Problem: Problem: Nächstes Paar Eingabe: n Punkte in der Ebene Ausgabe: Das Paar q,r mit geringstem Abstand

Mehr

Klausur Algorithmen und Datenstrukturen II 01. Agust 2016

Klausur Algorithmen und Datenstrukturen II 01. Agust 2016 Technische Universität Braunschweig Sommersemester 2016 Institut für Betriebssysteme und Rechnerverbund Abteilung Algorithmik Prof. Dr. Sándor P. Fekete Dr. Christian Scheffer Klausur Algorithmen und Datenstrukturen

Mehr

Formaler. Gegeben: Elementfolge s = e 1,...,e n. s ist Permutation von s e 1 e n für eine lineare Ordnung ` '

Formaler. Gegeben: Elementfolge s = e 1,...,e n. s ist Permutation von s e 1 e n für eine lineare Ordnung ` ' Sortieren & Co 164 165 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e n mit s ist Permutation von s e 1 e n für eine lineare Ordnung ` ' 166 Anwendungsbeispiele Allgemein: Vorverarbeitung

Mehr

Kapitel 5: Dynamisches Programmieren Gliederung

Kapitel 5: Dynamisches Programmieren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

19. Dynamic Programming I

19. Dynamic Programming I Fibonacci Zahlen 9. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixettenmultipliation, Matrixmultipliation nach Strassen [Ottman/Widmayer,

Mehr

Probleme aus NP und die polynomielle Reduktion

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

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Mariano Zelke Datenstrukturen 2/19 Das Teilfolgenproblem: Algorithmus A 3 A 3 (i, j bestimmt den Wert einer maximalen Teilfolge für a i,..., a j. (1 Wenn

Mehr

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. 2. Grundlagen Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. Laufzeitverhalten beschreiben durch O-Notation. 1 Beispiel Minimum-Suche Eingabe bei Minimum

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 2 (22.4.2016) Sortieren II Algorithmen und Komplexität SelectionSort: Programm Schreiben wir doch das gleich mal als Java/C++ - Programm

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 Matthias Wieczorek Computer-Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45

Mehr

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Approximationsalgorithmen für NP-harte Optimierungsprobleme Approximationsalgorithmen für NP-harte Optimierungsprobleme Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 1 / 18 Was tun mit NP-harten Problemen? Viele praxisrelevante

Mehr

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016 Algorithmen und Datenstrukturen Übung Stefan Florian Palkovits, BSc 09 e09@student.tuwien.ac.at 9. Juni 0 Aufgabe 9: Anwenden der Spanning Tree Heuristik auf symmetrisches TSP 9 8 7 8 8 7 Bilden eines

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45

Mehr

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Approximationsalgorithmen für NP-harte Optimierungsprobleme Approximationsalgorithmen für NP-harte Optimierungsprobleme Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 4. Januar 2011 Berthold Vöcking, Informatik 1 () Vorlesung

Mehr

Algorithmen und Datenstrukturen 1 Kapitel 3

Algorithmen und Datenstrukturen 1 Kapitel 3 Algorithmen und Datenstrukturen 1 Kapitel 3 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 3.6 Dynamische Programmierung Die rekursive Problemzerlegung kann

Mehr

Das Problem des Handlungsreisenden

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

Mehr

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene Hallo Welt für Fortgeschrittene Dynamische Programmierung Thomas Karmann 4. Juni 2010 1 / 36 Übersicht Einführung Definition Anwendung Funktionsweise Grundlagen Memoisation Top-Down Bottom-Up Grenzen Anwendungsbeispiele

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

Effiziente Algorithmen (SS2015)

Effiziente Algorithmen (SS2015) Effiziente Algorithmen (SS205) Kapitel 5 Approximation II Walter Unger Lehrstuhl für Informatik 2.06.205 07:59 5 Inhaltsverzeichnis < > Walter Unger 5.7.205 :3 SS205 Z Inhalt I Set Cover Einleitung Approximation

Mehr

Lösungen von Übungsblatt 12

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

Mehr

Aufgabe (Schreibtischtest, lexikographische Ordnung)

Aufgabe (Schreibtischtest, lexikographische Ordnung) Aufgabe (Schreibtischtest, lexikographische Ordnung) Führen Sie einen Schreibtischtest für den Algorithmus Bubblesort aus der VL für die folgenden Eingabe-Arrays durch. Geben Sie das Array S nach jedem

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 21 (29.7.2014) String Matching (Textsuche) II Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei Zeichenketten (Strings)

Mehr

Sortieren & Co. KIT Institut für Theoretische Informatik

Sortieren & Co. KIT Institut für Theoretische Informatik Sortieren & Co KIT Institut für Theoretische Informatik 1 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e n mit s ist Permutation von s e e 1 n für eine Totalordnung ` ' KIT Institut

Mehr

20. Dynamic Programming II

20. Dynamic Programming II 536 20. Dynamic Programming II Subset Sum Problem, Rucksackproblem, Greedy Algorithmus, Lösungen mit dynamischer Programmierung, FPTAS, Optimaler Suchbaum [Ottman/Widmayer, Kap. 7.2, 7.3, 5.7, Cormen et

Mehr

Dynamische Programmierung

Dynamische Programmierung Dynamische Programmierung Hannes Schwarz - WS-06/07 Hannes.Schwarz@uni-konstanz.de Getting Ready for the ACM Programming Contest Übersicht Übersicht Was ist dynamische Programmierung? Entwicklung eines

Mehr

Das Rucksackproblem: schwache NP-Härte und Approximation

Das Rucksackproblem: schwache NP-Härte und Approximation Das Rucksackproblem: schwache NP-Härte und Approximation Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 1. Februar 2010 Berthold Vöcking, Informatik 1 () Vorlesung

Mehr

Informatik II: Algorithmen und Datenstrukturen SS 2013

Informatik II: Algorithmen und Datenstrukturen SS 2013 Informatik II: Algorithmen und Datenstrukturen SS 2013 Vorlesung 11b, Mittwoch, 3. Juli 2013 (Editierdistanz, dynamische Programmierung) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen

Mehr

Klausur Algorithmentheorie

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind

Mehr

Übung zur Vorlesung Berechenbarkeit und Komplexität

Übung zur Vorlesung Berechenbarkeit und Komplexität RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 9 10.12.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T20 Beweisen Sie die

Mehr

Algorithmentheorie Randomisierung

Algorithmentheorie Randomisierung Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Randomisierung Klassen von randomisierten Algorithmen Randomisierter Quicksort Randomisierter Primzahltest Kryptographie 2 1. Klassen von randomisierten

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Große Übung #6 Phillip Keldenich, Arne Schmidt 26.02.2017 Heute: Master-Theorem Phillip Keldenich, Arne Schmidt Große Übung 2 Vorbetrachtungen Wir betrachten rekursive Gleichungen

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 21 (11.7.2018) String Matching (Textsuche) II Greedy Algorithmen I Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei

Mehr

Hidden-Markov-Modelle

Hidden-Markov-Modelle Universität Potsdam Institut für Informatik Lehrstuhl Maschinelles Lernen Hidden-Markov-Modelle Tobias Scheffer Thomas Vanck Hidden-Markov-Modelle: Wozu? Spracherkennung: Akustisches Modell. Geschriebene

Mehr

Übersicht. 1 Einführung. 2 Suchen und Sortieren. 3 Graphalgorithmen. 4 Algorithmische Geometrie. 5 Textalgorithmen. 6 Paradigmen

Übersicht. 1 Einführung. 2 Suchen und Sortieren. 3 Graphalgorithmen. 4 Algorithmische Geometrie. 5 Textalgorithmen. 6 Paradigmen Übersicht 1 Einführung 2 Suchen und Sortieren 3 Graphalgorithmen 4 Algorithmische Geometrie 5 6 Paradigmen Übersicht 5 Editdistanz (Folie 446, Seite 83 im Skript) Eingabe: Zwei Strings v und w Frage: Kommt

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:

Mehr

11. Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P

11. Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P 11 Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P 11 Woche: Turingmaschinen, Entscheidbarkeit, P 239/ 333 Einführung in die NP-Vollständigkeitstheorie

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Große Übung #1 Christian Rieck, Arne Schmidt 25.10.2018 Organisatorisches Christian Rieck, Arne Schmidt Große Übung #1 - AuD 2 Homepage Aktuelle Informationen, Hausaufgaben,

Mehr

3. Übungsblatt zu Algorithmen I im SoSe 2017

3. Übungsblatt zu Algorithmen I im SoSe 2017 Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799

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

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

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

Mehr

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische

Mehr

Algorithmen und Datenstrukturen Kapitel 2: Korrektheit von Algorithmen und Laufzeitanalyse rekursiver Algorithmen (mittels Rekurrenzgleichungen)

Algorithmen und Datenstrukturen Kapitel 2: Korrektheit von Algorithmen und Laufzeitanalyse rekursiver Algorithmen (mittels Rekurrenzgleichungen) Algorithmen und Datenstrukturen Kapitel 2: und Laufzeitanalyse rekursiver Algorithmen (mittels Rekurrenzgleichungen) Frank Heitmann heitmann@informatik.uni-hamburg.de 21. Oktober 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Technische Universität München Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 03.12.2013 Algorithmische Geometrie: Schnitte von Strecken Sweep-Line INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil XI Peter F Stadler & Konstantin Klemm Bioinformatics Group, Dept of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 16

Mehr

Algorithmen I. Tutorium Sitzung. Dennis Felsing

Algorithmen I. Tutorium Sitzung. Dennis Felsing Algorithmen I Tutorium 1-12. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-07-04 Überblick 1 Dynamische Programmierung Idee Längste gemeinsame Teilfolge

Mehr

NP-Vollständigkeit einiger Zahlprobleme

NP-Vollständigkeit einiger Zahlprobleme NP-Vollständigkeit einiger Zahlprobleme Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 22. Januar 2010 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 156, Seite 56 im Skript) Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die letzte Ebene vollständig besetzt ist,

Mehr

OOP Aufgabenblatt 7 6. Dezember 2013

OOP Aufgabenblatt 7 6. Dezember 2013 1 Prof. Dr. Th. Letschert OOP Aufgabenblatt 7 6. Dezember 2013 Aufgabe 1 Hausaufgabe Nr. 4 (Klein) Implementieren Sie, ohne Arrays oder eine sonstige Kollektion zu nutzen, folgende Fingerübungen zu Rekursion

Mehr

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier Algorithmen und Datenstrukturen SoSe 2008 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Algorithmen und Datenstrukturen Gesamtübersicht Organisatorisches / Einführung Grundlagen: RAM,

Mehr