Dynamische Programmierung

Größe: px
Ab Seite anzeigen:

Download "Dynamische Programmierung"

Transkript

1 Dynamische Programmierung Ludwig Höcker Ludwig Höcker Dynamische Programmierung / 61

2 Gliederung Dynamic Programming Bsp.: FAU-Kabel Naiv Top-Down Bottom-Up Longest Increasing Subsequence Optimal Binary Search Tree Ludwig Höcker Dynamische Programmierung / 61

3 Was ist DP? Programmierkonzept zum Lösen von [Optimierungs-] Problemen Berechnung des Gesamtproblems aus [abhängigen] Teilproblemen Eingeführt von Richard Bellman Ludwig Höcker Dynamische Programmierung / 61

4 Wofür? Teilprobleme nicht mehrfach berechnen Meist bei Baumrekursion angewandt Bei großen Lösungsräume, bei denen die naive Variante zu lange dauern würde Ludwig Höcker Dynamische Programmierung / 61

5 Gliederung Dynamic Programming Bsp.: FAU-Kabel Naiv Top-Down Bottom-Up Longest Increasing Subsequence Optimal Binary Search Tree Ludwig Höcker Dynamische Programmierung / 61

6 FAU-Kabel Das Department Informatik hat beschlossen mehr CIP Pools für Studenten bereitzustellen. Da diese Computer mit dem Rest des Uni Netzwerks vernetzt werden müssen, werden nun LAN-Kabel benötigt. Die Kosten hierfür sollen natürlich so minimal wie nötig gehalten werden. Da die CIP Admins alle Frickler sind, ist es möglich LAN-Kabel so oft zu stückeln wie eben nötig. Die Kosten sind abhängig von der Länge. Für einen Kostenvoranschlag sollen nun die die Kosten für die billigste Kabelkombination berechnet werden Ludwig Höcker Dynamische Programmierung / 61

7 FAU-Kabel Kosten Länge Kosten Ludwig Höcker Dynamische Programmierung / 61

8 FAU-Kabel Kosten Länge Kosten Kabel Kosten Kabel Kosten Ludwig Höcker Dynamische Programmierung / 61

9 FAU-Kabel (naiv) Alle Möglichkeiten ausprobieren um die Länge mit 2 Kabeln zu erreichen. Aus diesen wird die kostengünstigste Kombination auswählen. 1 Teil: Kosten aus der Liste (1..n) 2 Teil: Kosten rekursiv berechnen (n-1..0) Immer das Minimum abspeichern cable (n): q: MAX for (i: 1.. n) q = min (q, kosten [i] + cable (n-i)); return q; Ludwig Höcker Dynamische Programmierung / 61

10 FAU-Kabel (naiv) Ludwig Höcker Dynamische Programmierung / 61

11 FAU-Kabel (naiv) Rekursiver Top-Down Ansatz int p[] = { 0,4,5,8,11,16,17,17,21,22,25 }; int cabletopdownnaiv ( int n){ if( n == 0) return 0; } int q = MAX ; for (i: 1.. n) q = min (q, p[i] + cabletopdownnaiv (n-i)); return q; Ludwig Höcker Dynamische Programmierung / 61

12 Memoization Those who cannot remember the past are condemned to repeat it George Santayana Ludwig Höcker Dynamische Programmierung / 61

13 Memoization Mehrfache Berechnung der Teilergebnisse überflüssig Bereits errechnete Teilergebnisse zwischenspeichern Basisfälle direkt eintragen Entweder muss ein Wert berechnet werden, oder er steht in der Tabelle D.h. statt exponentieller Laufzeit nun polynomiell D.h. Zusätzlicher Speicherplatz nötig Ludwig Höcker Dynamische Programmierung / 61

14 FAU-Kabel (Top-Down) Ludwig Höcker Dynamische Programmierung / 61

15 FAU-Kabel (Top-Down) Rekursiver Top-Down Ansatz int p[] = { 0,4,5,8,11,16,17,17,21,22,25 }; int tmp [ MAXN ]; // init. mit INF int cabletopdownmemo ( int n, int tmp []) { if( n == 0) return 0; if(tmp [n]!= INF ) return tmp [n]; // Lookup int q = MAX ; for (i: 1.. n) q = min (q, p[i] + cabletopdownmemo (n-i,tmp )); } tmp [n] = q; // Store return q; Ludwig Höcker Dynamische Programmierung / 61

16 FAU-Kabel (Bottom-Up) Umwandlung der rekursiven Variante in eine Iterative Von unten herauf zuerst alle möglichen Teilergebnisse berechnen und in einer Tabelle abspeichern Einfache Berechnung von prob(n+1) wenn prob(n) bekannt ist D.h. Zusätzlicher Speicherplatz nötig Ludwig Höcker Dynamische Programmierung / 61

17 FAU-Kabel (Bottom-Up) Bottom-Up Ansatz int p[] = { 0,4,5,8,11,16,17,17,21,22,25 }; int cablebottomup ( int n){ int tmp [n +1]; tmp [0] = 0; } for (i: 1.. n) { int q = MAX ; for (j: 1.. i){ q = min (q, p[j] + tmp [i-j]); } tmp [i] = q; } return tmp [n]; Ludwig Höcker Dynamische Programmierung / 61

18 Übersicht Zeittest cable (35) ; Zeit ist Geld $ time./cnaiv $ time./ctop $ time./cbottom real 7m54.389s real 0m0.001s real 0m0.001s Ludwig Höcker Dynamische Programmierung / 61

19 Pro und Contra Top-Down DP Pro Memoization Einfache Implementierung Nur Ergebnisse, die benötigt werden, werden berechnet Contra Rekursion Overhead durch Funktionsaufrufe Ludwig Höcker Dynamische Programmierung / 61

20 Pro und Contra Bottom-Up DP Pro Eine Rekursion Meist schneller Da Berechnung zu Beginn Contra Umwandlung zu iterativer Variante u.u. schwierig Eventuell mehr Ergebnisse berechnen als nötig Ludwig Höcker Dynamische Programmierung / 61

21 DP - Probleme DP nimmt man für... Optimierungsprobleme (Minimum, Maximum) Problem besitzt [überlappende] Teilprobleme DP nimmt man nicht für... Zu große Funktionswerte Zu kleine Funktionswerte (naiv ist da meist besser) Speicherplatz für die Speicherung der Teilergebnisse zu groß Ludwig Höcker Dynamische Programmierung / 61

22 Gliederung Dynamic Programming Bsp.: FAU-Kabel Naiv Top-Down Bottom-Up Longest Increasing Subsequence Optimal Binary Search Tree Ludwig Höcker Dynamische Programmierung / 61

23 Longest Increasing Subsequence Typisches Problem: Wir stehen in der Mensa-Schlange an, die an den Theken vorbei führt. Es gibt nur die Möglichkeit einmal von vorne bis hinten durchzulaufen. Wir wollen möglichst viele Teller aufladen Es dürfen aber nur Teller ausgewählt werden, die größer sind als der vorher Genommene, damit die Teller nicht im Essen stehen, sondern am Rand aufliegen. Die Teller, die wir nehmen können sind in beliebiger Reihenfolge und nicht sortiert. Ludwig Höcker Dynamische Programmierung / 61

24 Longest Increasing Subsequence Mathematisch: Wir haben eine Zahlenfolge gegeben und wollen von Anfang bis Ende die längste aufsteigende Folge haben, die wir finden. Die Zahlen müssen in der Anfangsfolge nicht benachbart sein. Ludwig Höcker Dynamische Programmierung / 61

25 Longest Increasing Subsequence Warum nicht einfach bruteforcen? Alle möglichen Kombinaten mit Zahlenfolgen der.. Länge 3: 123,12,13,23,1,2,3 Länge 4: 1234,123,124,134,234,12,13,14,23,24,34,1,2,3,4 Länge 5: 12345,123,124,125,234,235,345,12,13, n -1 Möglichkeiten Ludwig Höcker Dynamische Programmierung / 61

26 Longest Increasing Subsequence Vorgehensweise Durchlaufen der Zahlenfolge Abspeichern der Zahl an Stelle i in einem seperaten Array, sodass dieses immer aufsteigend sortiert ist. Eine weiter Liste(bspw. lis) speichert uns die LIS bis zur Position i Falls am Ende eingefügt wurde erhöhen wir die maxlänge Falls mitten drin eingefuegt wird, so wird der vorherige Wert an dieser Stelle überschrieben Ludwig Höcker Dynamische Programmierung / 61

27 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis min 0, maxlength: 0 Ludwig Höcker Dynamische Programmierung / 61

28 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis min 0, maxlength: 0 i: 0 Ludwig Höcker Dynamische Programmierung / 61

29 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1 min 0,17 maxlength: 1 i: 0 Ludwig Höcker Dynamische Programmierung / 61

30 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1 min 0,17 maxlength: 1 i: 1 Ludwig Höcker Dynamische Programmierung / 61

31 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2 min 0,17,20 maxlength: 2 i: 1 Ludwig Höcker Dynamische Programmierung / 61

32 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2 min 0,17,20 maxlength: 2 i: 2 Ludwig Höcker Dynamische Programmierung / 61

33 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3 min 0,17,20,50 maxlength: 3 i: 2 Ludwig Höcker Dynamische Programmierung / 61

34 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3 min 0,17,20,50 maxlength: 3 i: 3 Ludwig Höcker Dynamische Programmierung / 61

35 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3 min 0,17,20,30 maxlength: 3 i: 3 Ludwig Höcker Dynamische Programmierung / 61

36 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3 min 0,17,20,30 maxlength: 3 i: 4 Ludwig Höcker Dynamische Programmierung / 61

37 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4 min 0,17,20,30,40 maxlength: 4 i: 4 Ludwig Höcker Dynamische Programmierung / 61

38 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4 min 0,17,20,30,40 maxlength: 4 i: 5 Ludwig Höcker Dynamische Programmierung / 61

39 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4, 3 min 0,17,20,21,40 maxlength: 4 i: 5 Ludwig Höcker Dynamische Programmierung / 61

40 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4, 3 min 0,17,20,21,40 maxlength: 4 i: 6 Ludwig Höcker Dynamische Programmierung / 61

41 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4, 3, 4 min 0,17,20,21,22 maxlength: 4 i: 6 Ludwig Höcker Dynamische Programmierung / 61

42 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4, 3, 4 min 0,17,20,21,22 maxlength: 4 i: 7 Ludwig Höcker Dynamische Programmierung / 61

43 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4, 3, 4, 5 min 0,17,20,21,22,23 maxlength: 5 i: 7 Ludwig Höcker Dynamische Programmierung / 61

44 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4, 3, 4, 5 min 0,17,20,21,22,23 maxlength: 5 i: 8 Ludwig Höcker Dynamische Programmierung / 61

45 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4, 3, 4, 5, 1 min 0,11,20,21,22,23 maxlength: 5 i: 8 Ludwig Höcker Dynamische Programmierung / 61

46 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4, 3, 4, 5, 1 min 0,11,20,21,22,23 maxlength: 5 i: 9 Ludwig Höcker Dynamische Programmierung / 61

47 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4, 3, 4, 5, 1, 2 min 0,11,12,21,22,23 maxlength: 5 i: 9 Ludwig Höcker Dynamische Programmierung / 61

48 Longest Increasing Subsequence x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4, 3, 4, 5, 1, 2 min 0,11,12,21,22,23 maxlength: 5 i: 9 Ludwig Höcker Dynamische Programmierung / 61

49 Longest Increasing Subsequence LIS, Aufwand O(N*N) int sequ [ MAXN ]; int lis [ MAXN ]; int minval [ MAXN +1]; int LIS ( int N) { int maxlen = 0; minval [0] = INT_MIN ; FOR (i, 0, N) { lis [i] = maxlen +1; FOR (j, 1, maxlen ) { if( minval [j] > sequ [i]){ lis [i] = j; break ; } } if ( lis [i] > maxlen ) { maxlen = lis [i]; minval [ maxlen ] = sequ [i]; } else if ( sequ [i] < minval [ lis [i ]]) { minval [ lis [i]] = sequ [i]; } } return maxlen ; } Ludwig Höcker Dynamische Programmierung / 61

50 Longest Increasing Subsequence LIS, Aufwand O(N*log(N)) // aus dem HW wiki int sequ [ MAXN ]; int lis [ MAXN ]; int minval [ MAXN +1]; int LIS ( int N) { int maxlen = 0; minval [0] = INT_MIN ; FOR (i, 0, N) { // binary search : lis [i] = lower_bound ( minval, minval + maxlen + 1, sequ [i]) - minval ; if ( lis [i] > maxlen ) { maxlen = lis [i]; minval [ maxlen ] = sequ [i]; } else if ( sequ [i] < minval [ lis [i ]]) { minval [ lis [i]] = sequ [i]; } } return maxlen ; } Ludwig Höcker Dynamische Programmierung / 61

51 Longest Increasing Subsequence Rekonstruktion der Subsequence Statt Zahlen Indices in min speichern Zusätzliches Array id, welches Vorgänger speichert x 17,20,50,30,40,21,22,23,11,12 lis 1, 2, 3, 3, 4, 3, 4, 5, 2, 3 min 0, 8, 9, 5, 6, 7 (Index zu x) id -1, 0, 1, 1, 3, 1, 5, 6,-1, 8 maxid: 7 Ludwig Höcker Dynamische Programmierung / 61

52 Longest Increasing Subsequence LIS, Aufwand O(N*log(N)) int sequ [ MAXN ]; int lis [ MAXN ]; int minval [ MAXN +1]; int ids [ MAXN ]; int maxid = -1; // Speicherplatz fuer IDs int LIS ( int N) { int maxlen = 0; minval [0] = INT_MIN ; FOR (i, 0, N) { lis [i] = maxlen +1; FOR (j, 1, maxlen ) { if(sequ [ minval [j]] > sequ [i]){ lis [i] = j; break ; } } if(lis [i] == 1) id[i] = -1; // erstes Element else id[i] = minval [lis [i ] -1]; // Parentelement } if ( lis [i] > maxlen ) { maxlen = lis [i]; minval [ maxlen ] = i; maxid = i; // maxid setzen } else if ( sequ [i] < minval [ lis [i ]]) { minval [ lis [i]] = i; } } return maxlen ; Ludwig Höcker Dynamische Programmierung / 61

53 Gliederung Dynamic Programming Bsp.: FAU-Kabel Naiv Top-Down Bottom-Up Longest Increasing Subsequence Optimal Binary Search Tree Ludwig Höcker Dynamische Programmierung / 61

54 OBST k2 k1 k4 d0 d1 k3 k5 d2 d3 d4 d p i q i Ludwig Höcker Dynamische Programmierung / 61

55 OBST Gegeben: BST mit Knotenhäufigkeiten Gesucht: Optimaler BST anhand Gewichtungsfunktion Rekursiv alle möglichen BSTs zu testen dauert zu lange, da die Anzahl an BSTs mit wachsender Knotenanzahl exponentiell ansteigt. Lösung: Dynamische Programmierung Ludwig Höcker Dynamische Programmierung / 61

56 OBST Gewichtung Eine mögliche Gewichtung eines BST: n (Tiefe T (k i ) + 1) p i + i=1 n (Tiefe T (d i ) + 1) q i i=0 Ein optimal binary search tree ist die Konstellation mit der niedrigsten Gewichtung Ludwig Höcker Dynamische Programmierung / 61

57 OBST Zur Wiederholung Ein BST(i, j) hat einen linken Teilbaum k i...k r 1 und hat den root Knoten k r hat einen rechten Teilbaum k r+1...k j Ein BST(i, i-1) hat die Wahrscheinlichkeit d i 1 des Blattknoten Ludwig Höcker Dynamische Programmierung / 61

58 OBST Kosten für tree(i, j): Rekursionsformel: cost(i, j) = cost(i, r 1) + cost(r + 1, j) +GEWICHTUNG(i, j) q i 1 fallsj = i 1 cost(i, j) = min i r j (cost(i, r 1) + cost(r + 1, j) fallsi j +GEWICHTUNG(i, j)) Ludwig Höcker Dynamische Programmierung / 61

59 OBST OBST, naiv cost (i, j, p[], q []) { if(j == i -1) return q[i -1]; tmp : MAX ; for (r: i..j){ tmp = min (tmp, cost (i, r -1, p, q) + cost (r+1, j, p, q) + GEWICHTUNG (i, j, p, q)); } return tmp ; } Ludwig Höcker Dynamische Programmierung / 61

60 OBST Problem: Per naiver Rekursionsformel, werden Teilbäume mehrfach berechnet Lösung: Kosten für einen gefundenen optimal Teilbaum abspeichern Trick: Sind rechter und linker Teilbäume optimal, so ist auch der Baum optimal. Ludwig Höcker Dynamische Programmierung / 61

61 OBST OBST, TopDown mit DP table [MAXN ][ MAXN ]; // init. mit INF cost (i, j, p[], q []) { if(j == i -1) return q[i -1]; if( table [i][j]!= INF ) return table [i][j]; // Lookup } gewicht = GEWICHTUNG (i, j, p, q); tmp : MAX ; for (r: i..j){ tmp = min (tmp, cost (i, r -1, p, q) + cost (r+1, j, p, q) + gewicht ); } table [i][j] = tmp ; // Store return table [i][j]; Ludwig Höcker Dynamische Programmierung / 61

62 Quellen T. Cormen, et al. Introduction to Algorithms (Third Edition) Manuel Grandeit, Hallo Welt DP-Vortrag 2011 Rainer Müller, Hallo Welt DP-Vortrag 2008 Tobias Werth, Hallo Welt DP-Vortrag threadid=700080&start=0&mc=5 threadid=697925&start=0&mc=9 increasing subsequence Ludwig Höcker Dynamische Programmierung / 61

Dynamische Programmierung

Dynamische Programmierung Dynamische Programmierung Julian Brost 11. Juni 2013 Julian Brost Dynamische Programmierung 11. Juni 2013 1 / 39 Gliederung 1 Was ist dynamische Programmierung? Top-Down-DP Bottom-Up-DP 2 Matrix-Kettenmultiplikation

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

Dynamische Programmierung

Dynamische Programmierung Dynamische Programmierung Manuel Grandeit Hallo Welt -Seminar 28.06.2011 Manuel Grandeit 1 / 40 Inhaltsübersicht Einführung Münzwechsel Was ist ein Zustand? Konstruktion einer DP-Lösung Top-Down-DP Bottom-Up-DP

Mehr

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Dynamische Programmierung. Problemlösungsstrategie der Informatik als Problemlösungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Präsentationen, WS 2010/2011 Gliederung

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

Programmierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Dynamische Programmierung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 2 Übersicht Stammt aus den Zeiten als mit Programmierung

Mehr

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Paradigmen im Algorithmenentwurf Problemlösen Problem definieren Algorithmus entwerfen

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 20 Einstieg in die Informatik mit Java Rekursion Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 20 1 Überblick 2 Rekursion 3 Rekursive Sortieralgorithmen 4 Backtracking

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

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

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

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

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

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

JAVA - Suchen - Sortieren

JAVA - Suchen - Sortieren Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 12 (2-4)-Bäume (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 2. Die Ordnung (maximale Anzahl der Söhne eines Knotens) ist gleich 4 3. Innere Knoten haben 2 Söhne

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

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

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

Backtracking mit Heuristiken

Backtracking mit Heuristiken Backtracking mit Heuristiken Thomas Dübendorfer thomas@duebendorfer.ch 14. September 2000 Inhalt und Ablauf 1. Einführendes Beispiel (4 min) 2. Konzepte zu Backtracking (8 min) 3. Eingesperrt im Labyrinth

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

Randomisierte Algorithmen 2. Erste Beispiele

Randomisierte Algorithmen 2. Erste Beispiele Randomisierte Algorithmen Randomisierte Algorithmen 2. Erste Beispiele Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 1 / 35 Randomisierter Identitätstest

Mehr

13 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

13 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 13 (2-4)-Bäume (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 2. Die Ordnung (maximale Anzahl der Söhne eines Knotens) ist gleich 4 3. Innere Knoten haben 2 Söhne

Mehr

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. 8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Fortgeschrittene Rekursion Prof. Dr. Nikolaus Wulff Problematische Rekursion Mittels Rekursion lassen sich Spezifikationen recht elegant und einfach implementieren. Leider

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

Mehr

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

11. Elementare Datenstrukturen

11. Elementare Datenstrukturen 11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische

Mehr

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. smichel@cs.uni-kl.de

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. smichel@cs.uni-kl.de Datenbankanwendung Wintersemester 2014/15 Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern smichel@cs.uni-kl.de Wiederholung: Anfragegraph Anfragen dieses Typs können als Graph dargestellt werden: Der

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

Bäume. 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1

Bäume. 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Bäume 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Inhalt Grundbegriffe: Baum, Binärbaum Binäre Suchbäume (Definition) Typische Aufgaben Suchaufwand Löschen allgemein, Methode Schlüsseltransfer

Mehr

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13.1 Modellierung des Rucksackproblems 13.2 Lösung mit Greedy-Algorithmus 13.3 Lösung mit Backtracking 13.4 Lösung mit Dynamischer Programmierung

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

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr

Mehr

6. Verkettete Strukturen: Listen

6. Verkettete Strukturen: Listen 6. Verkettete Strukturen: Listen 5 K. Bothe, Inst. f ür Inf., HU Berlin, PI, WS 004/05, III.6 Verkettete Strukturen: Listen 53 Verkettete Listen : Aufgabe Vergleich: Arrays - verkettete Listen Listenarten

Mehr

11 Dynamisches Programmieren

11 Dynamisches Programmieren Algorithmen und Datenstrukturen 279 11 Dynamisches Programmieren Gegenstand dieses und des nächsten Kapitels sind noch einmal Algorithmen. Zunächst beschreiben wir das sog. dynamische Programmieren. kein

Mehr

Informatik B Sommersemester Musterlösung zur Klausur vom

Informatik B Sommersemester Musterlösung zur Klausur vom Informatik B Sommersemester 007 Musterlösung zur Klausur vom 0.07.007 Aufgabe : Graphen und Graphalgorithmen + + + () Punkte Für eine beliebige positive, ganze Zahl n definieren wir einen Graphen G n =

Mehr

Algorithmen & Programmierung. Rekursive Funktionen (1)

Algorithmen & Programmierung. Rekursive Funktionen (1) Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden

Mehr

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

Komplexität von Algorithmen

Komplexität von Algorithmen Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

Mehr

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

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

Algorithmische Bioinformatik 1

Algorithmische Bioinformatik 1 Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Paarweises

Mehr

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass f O g und auch g O f. Wähle zum Beispiel und G. Zachmann Informatik

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Listen & Bäume Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 SvenKosub@uni-konstanzde Sprechstunde: Freitag, 14:00-15:00 Uhr, onv Sommersemester

Mehr

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg

Mehr

Optimierung. Algorithmik III Algorithmen und Modelle für kontinuierliche Datenstrukturen. Vorgehen: Dynamische Programmierung

Optimierung. Algorithmik III Algorithmen und Modelle für kontinuierliche Datenstrukturen. Vorgehen: Dynamische Programmierung Optimierung Algorithmik III Algorithmen und Modelle für kontinuierliche Datenstrukturen Optimierung I Dynamisches Programmieren Günther Greiner Lehrstuhl für Graphische Datenverarbeitung Sommersemester

Mehr

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung Informatik I: Einführung in die Programmierung 7. Albert-Ludwigs-Universität Freiburg Bernhard Nebel 31. Oktober 2014 1 31. Oktober 2014 B. Nebel Info I 3 / 20 Um zu, muss man zuerst einmal. Abb. in Public

Mehr

12. Rekursion Grundlagen der Programmierung 1 (Java)

12. Rekursion Grundlagen der Programmierung 1 (Java) 12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

Mehr

Bäume, Suchbäume und Hash-Tabellen

Bäume, Suchbäume und Hash-Tabellen Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

Kasparov versus Deep Blue. Till Tantau. Institut für Theoretische Informatik Universität zu Lübeck

Kasparov versus Deep Blue. Till Tantau. Institut für Theoretische Informatik Universität zu Lübeck Kasparov versus Deep Blue Institut für Theoretische Informatik Universität zu Lübeck 18. Vorlesung zu Informatik A für MLS 14. Dezember 2006 Die Lernziele der heutigen Vorlesung und der Übungen. 1 Das

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)

Mehr

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Sortieren): a) Sortieren Sie das folgende Array durch Anwendung des Selectionsort-Algorithmus.

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

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

Informatik-Seminar Thema 6: Bäume

Informatik-Seminar Thema 6: Bäume Informatik-Seminar 2003 - Thema 6: Bäume Robin Brandt 14. November 2003 1 Robin Brandt Informatik-Seminar 2003 - Thema 6: Bäume Übersicht Definition Eigenschaften Operationen Idee Beispiel Datendefinition

Mehr

Rolf Wanka Sommersemester Vorlesung

Rolf Wanka Sommersemester Vorlesung Peer-to to-peer-netzwerke Rolf Wanka Sommersemester 2007 12. Vorlesung 12.07.2007 rwanka@cs.fau.de basiert auf einer Vorlesung von Christian Schindelhauer an der Uni Freiburg Aufbau Viceroy Knoten in Viceroy

Mehr

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen . Graphen viele praktische (Optimierungs-)Probleme sind als graphentheoretische Probleme formulierbar z.b. in Produktionsplanung, Personaleinsatzplanung,.... Grundlagen gerichteter, ungerichteter und gewichteter

Mehr

Algorithmen und Datenstrukturen 1-1. Seminar -

Algorithmen und Datenstrukturen 1-1. Seminar - Algorithmen und Datenstrukturen 1-1. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Inhalt der ersten beiden Vorlesungen Algorithmenbegriff Komplexität, Asymptotik

Mehr

Breiten- und Tiefensuche in Graphen

Breiten- und Tiefensuche in Graphen Breiten- und Tiefensuche in Graphen Inhalt Theorie. Graphen. Die Breitensuche in der Theorie am Beispiel eines ungerichteten Graphen. Die Tiefensuche in der Theorie am Beispiel eines gerichteten Graphen

Mehr

Klausur Algorithmen und Datenstrukturen II 10. August 2015

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

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

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

Praktikum Algorithmen-Entwurf (Teil 7)

Praktikum Algorithmen-Entwurf (Teil 7) Praktikum Algorithmen-Entwurf (Teil 7) 28.11.2005 1 1 Vier gewinnt Die Spielregeln von Vier Gewinnt sind sehr einfach: Das Spielfeld besteht aus 7 Spalten und 6 Reihen. Jeder Spieler erhält zu Beginn des

Mehr

Geometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen

Geometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen Geometrie I Sebastian Redinger 01.07.2015 Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Gliederung Grundlagen CCW Polygone Picks Theorem Konvexe Hülle - Graham Scan - Jarvis March 2 Gliederung

Mehr

Informatik II Greedy-Algorithmen

Informatik II Greedy-Algorithmen lausthal Informatik II reedy-algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Erinnerung: Dynamische Programmierung Zusammenfassung der grundlegenden Idee: Optimale Sub-Struktur:

Mehr

Klausur Algorithmen und Datenstrukturen II 29. Juli 2013

Klausur Algorithmen und Datenstrukturen II 29. Juli 2013 Technische Universität Braunschweig Sommersemester 2013 Institut für Betriebssysteme und Rechnerverbund Abteilung Algorithmik Prof. Dr. Sándor P. Fekete Stephan Friedrichs Klausur Algorithmen und Datenstrukturen

Mehr

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für "balanciert":

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für balanciert: Balancierte Bäume Aufwand, ein Element zu finden, entspricht der Tiefe des gefundenen Knotens im worst case = Tiefe des Baumes liegt zwischen log N und N Definition für "balanciert": es gibt verschiedene

Mehr

Wirtschaftsinformatik I

Wirtschaftsinformatik I Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation

Mehr

Seminar über aktuelle Forschungsthemen in der Algorithmik, Dozent Prof. Dr. Alt;

Seminar über aktuelle Forschungsthemen in der Algorithmik, Dozent Prof. Dr. Alt; Seminar über aktuelle Forschungsthemen in der Algorithmik, Dozent Prof. Dr. Alt Referent Matthias Rost 1 Einleitung Definitionen Maximaler Dynamischer Fluss Algorithmus von Ford-Fulkerson Techniken zur

Mehr

Algorithmentheorie Randomisierung. Robert Elsässer

Algorithmentheorie Randomisierung. Robert Elsässer Algorithmentheorie 03 - Randomisierung Robert Elsässer Randomisierung Klassen von randomisierten Algorithmen Randomisierter Quicksort Randomisierter Primzahltest Kryptographie 2 1. Klassen von randomisierten

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

Praxis der Programmierung

Praxis der Programmierung Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)

Mehr

Dynamisches Programmieren - Problemstruktur

Dynamisches Programmieren - Problemstruktur 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)

Mehr

Gliederung. Algorithmen und Datenstrukturen II. Problem: Längste gemeinsame Teilsequenz. Problem: Längste gemeinsame Teilsequenz

Gliederung. Algorithmen und Datenstrukturen II. Problem: Längste gemeinsame Teilsequenz. Problem: Längste gemeinsame Teilsequenz Gliederung Algorithmen und Datenstrukturen II Algorithmen zur Textverarbeitung II D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg

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

Binäre lineare Optimierung mit K*BMDs p.1/42

Binäre lineare Optimierung mit K*BMDs p.1/42 Binäre lineare Optimierung mit K*BMDs Ralf Wimmer wimmer@informatik.uni-freiburg.de Institut für Informatik Albert-Ludwigs-Universität Freiburg Binäre lineare Optimierung mit K*BMDs p.1/42 Grundlagen Binäre

Mehr

Rekursive Funktionen

Rekursive Funktionen Um Rekursion zu verstehen, muss man vor allem Rekursion verstehen. http://www2.norwalk-city.k12.oh.us/wordpress/precalc/files/2009/05/mona-lisa-jmc.jpg Rekursive Funktionen OOPM, Ralf Lämmel Was ist Rekursion?

Mehr

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren . Allgemeine (vergleichsbasierte) Sortierverfahren Vergleichsbaum: Der Aufbau des Verbleichsbaum ist für jeden Algorithmus und jede Eingabelänge n gleich. Jede Permutation der Eingabe, muss zu einem anderen

Mehr

Binärbäume: Beispiel

Binärbäume: Beispiel Binärbäume Als Beispiel für eine interessantere dynamische Datenstruktur sehen wir uns jetzt Binärbäume an Ein Binärbaum wird rekursiv definiert: Er ist leer oder besteht aus einem Knoten (die Wurzel des

Mehr

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmieren I. Kapitel 7. Sortieren und Suchen Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren

Mehr

Suchen und Sortieren

Suchen und Sortieren (Folie 69, Seite 36 im Skript) 5 6 1 4 Als assoziatives Array geeignet Schlüssel aus geordneter Menge Linke Kinder kleiner, rechte Kinder größer als Elternknoten Externe und interne Knoten Externe Knoten

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

Mehr

Projekt Systementwicklung

Projekt Systementwicklung Projekt Systementwicklung Effiziente Codierung: Laufzeitoptimierung Prof. Dr. Nikolaus Wulff Effiziente Codierung Der Wunsch effizienten Code zu schreiben entstammt mehreren Quellen: Zielplattformen mit

Mehr

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion: Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

Programmierung mit C Algorithmen

Programmierung mit C Algorithmen Programmierung mit C Algorithmen Informationen /7/ Robert Sedgewick Algorithmen in C. 742 Seiten, ISBN 3-827-37182-1. /8/ Kyle Loudon Algorithmen mit C, ISBN 3-4897-211653-0. Online-Buch "C von A bis Z",

Mehr

Ranking by Reordering Tobias Joppen

Ranking by Reordering Tobias Joppen Ranking by Reordering Tobias Joppen 09.07.2014 Fachbereich Informatik Knowledge Engineering Prof. Johannes Fürnkranz 1 Überblick Einleitung Rank-differential Methode Idee Problemdefinition Beispiel Vereinfachung

Mehr

Algorithmen und Datenstrukturen Tafelübung 4. Jens Wetzl 15. November 2011

Algorithmen und Datenstrukturen Tafelübung 4. Jens Wetzl 15. November 2011 Algorithmen und Datenstrukturen Tafelübung 4 Jens Wetzl 15. November 2011 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter:

Mehr