Dynamisches Programmieren - Problemstruktur
|
|
- Ingelore Wetzel
- vor 7 Jahren
- Abrufe
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 1 Klausur Wichtige Hinweise: 2.7.07, Beginn 9 Uhr Bitte spätestens 8:4 Uhr vor Ort sein Sporthalle + Audimax Informationen
MehrDynamisches 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:
MehrProseminar 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
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
MehrWiederholung. Divide & Conquer Strategie
Wiederholung Divide & Conquer Strategie Binäre Suche O(log n) Rekursives Suchen im linken oder rechten Teilintervall Insertion-Sort O(n 2 ) Rekursives Sortieren von a[1..n-1], a[n] Einfügen von a[n] in
MehrAlgorithmen 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
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen Lerneinheit : Dynamisches Programmieren Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester.. Einleitung Diese Lerneinheit widmet sich einer
Mehr19. 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.
MehrAufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.
Aufgabe 8 Betrachten Sie den folgenden Algorithmus namens Bubble-Sort. Bubble-Sort(A[1..n]): 1 for i 1 to length(a) 1 2 do for j length(a) downto i + 1 3 do if A[j 1] > A[j] 4 then A[j 1] A[j] 1 Arbeitsweise
Mehr19. 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.
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 25. Vorlesung Dynamisches Programmieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Klausurvorbereitung Tipp: Schreiben Sie sich alle Fragen
MehrTop-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
Mehr5.4 Das Rucksackproblem
Problemstellung: 5.4 Das Rucksackproblem Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke b. Aufgabe: Packe die Objekte in einen Rucksack von Volumen
MehrEinfü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
MehrKlausur 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:.....................................................................
MehrFormulierung 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
MehrDynamische 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
MehrAlgorithmen 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
MehrGrundlagen 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
MehrHeute. 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
MehrApproximationsalgorithmen. 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
MehrAlgorithmen 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
Mehr1 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
MehrProgrammieren, 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
MehrAlgorithmen 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 +
MehrNP-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
MehrEntscheidungsbä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
MehrDatenstrukturen & 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 Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.
MehrAlgorithmen 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
MehrDer 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
MehrINSERTION-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.
MehrAlgorithmen 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
Mehr11. Ü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
MehrRü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
MehrEin 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
MehrLö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
MehrAlgorithmen 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
MehrAlgorithmen und Datenstrukturen 2 VU 3.0 Nachtragstest SS Oktober 2016
Technische Universität Wien Institut für Computergraphik und Algorithmen Algorithms and Complexity Group 186.815 Algorithmen und Datenstrukturen 2 VU 3.0 Nachtragstest SS 2016 5. Oktober 2016 Machen Sie
MehrAlgorithmen 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
Mehr9. 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
Mehr19. 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.
Mehr1. 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
MehrAlgorithmen 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
MehrDatenstrukturen 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
MehrKlausur 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
MehrFormaler. 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
MehrKapitel 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
Mehr19. 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,
MehrProbleme aus NP und die polynomielle Reduktion
Probleme aus NP und die polynomielle Reduktion Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 15. Dezember 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit
MehrDatenstrukturen. 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
Mehr2. 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
MehrInformatik 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) Sommersemester 2015 Matthias Wieczorek Computer-Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45
MehrApproximationsalgorithmen 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
MehrAlgorithmen 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) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45
MehrApproximationsalgorithmen 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
MehrAlgorithmen 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
MehrDas Problem des Handlungsreisenden
Seite 1 Das Problem des Handlungsreisenden Abbildung 1: Alle möglichen Rundreisen für 4 Städte Das TSP-Problem tritt in der Praxis in vielen Anwendungen als Teilproblem auf. Hierzu gehören z.b. Optimierungsprobleme
MehrHallo 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
Mehr21. Greedy Algorithmen. Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3
581 21. Greedy Algorithmen Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3 Aktivitäten Auswahl 582 Koordination von Aktivitäten, die gemeinsame Resource exklusiv
MehrEffiziente 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
MehrLösungen von Übungsblatt 12
Lösungen von Übungsblatt 12 Algorithmen (WS 2018, Ulrike von Luxburg) Lösungen zu Aufgabe 1 Eine (kanonische) Möglichkeit, die Branch-Schritte auszuführen ergibt sich wie folgt: Das ursprüngliche Problem
MehrAufgabe (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
MehrInformatik 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)
MehrSortieren & 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
Mehr20. 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
MehrDynamische 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
MehrDas 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
MehrInformatik 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
MehrKlausur Algorithmentheorie
Prof. Dr. G. Schnitger Frankfurt, den 06.04.2009 Klausur Algorithmentheorie WS 2008/2009 Name: Vorname: Geburtsdatum: Studiengang: BITTE GENAU LESEN Die Klausur besteht aus 4 Aufgaben, in denen maximal
MehrAlgorithmen 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
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
MehrAlgorithmentheorie Randomisierung
Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Randomisierung Klassen von randomisierten Algorithmen Randomisierter Quicksort Randomisierter Primzahltest Kryptographie 2 1. Klassen von randomisierten
MehrAlgorithmen 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
MehrInformatik 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
MehrHidden-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 6 Paradigmen Übersicht 5 Editdistanz (Folie 446, Seite 83 im Skript) Eingabe: Zwei Strings v und w Frage: Kommt
MehrDatenstrukturen 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:
Mehr11. 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
MehrTechnische 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
MehrAlgorithmen 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,
Mehr3. Ü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
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen Lerneinheit : Kürzeste Pfade in Graphen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 016.6.01 Einleitung Diese Lerneinheit beschäftigt
MehrAlgorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8
ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1
MehrDatenstrukturen 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
MehrAlgorithmen 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
MehrStand 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
MehrAlgorithmen 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
MehrADS: 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
MehrAlgorithmen 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
MehrNP-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
MehrSuchen 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,
MehrOOP 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
MehrAlgorithmen 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