Algorithmen und Datenstrukturen 2

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen 2"

Transkript

1 Algorithmen und Datenstrukturen Lerneinheit : Dynamisches Programmieren Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester.. Einleitung Diese Lerneinheit widmet sich einer weiteren Programmiertechnik zur Bearbeitung von Optimierungsproblemen, dem Dynamischen Programmieren. Es werden folgende Fragen behandelt: Was ist die Idee hinter dynamischem Programmieren? Welche Voraussetzungen sind für dynamisches Programmieren notwendig? Was gibt es bei der Implementierung zu beachten? Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

2 Dynamisches Programmieren Der Begriff Programmierung steht für die schrittweise Berechnung einer Tabelle Schritte zur Entwicklung eines Algorithmus:. Charakterisierung der Struktur einer optimalen Lösung. Berechnung des Werts einer optimalen Lösung Top Down rekursiver Algorithmus Bottom Up iterativer Algorithmus. Erweiterung des Algorithmus zur Konstruktion einer optimalen Lösung Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 Fertigungsplanung Linie Station S, Station S, Station S, Station S,n Station S,n a, a, a, a,n a,n e x A t, t, t,n E t, t, t,n e x a, a, a, a,n a,n Station S, Station S, Station S, Station S,n Station S,n Linie Aufgabe: Finde schnellste Produktionsroute Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

3 Fertigungsplanung (Forts.) Zur Herstellung eines Produkts sind n Arbeitsschritte notwendig Die Arbeitsschritte müssen sequentiell durchlaufen werden Zwei Fertigungslinien mit jeweils n Stationen stehen bereit: Linie : S,, S,,..., S,n Linie : S,, S,,..., S,n In der Regel durchläuft ein Produkt während der Herstellung eine der beiden Linien Für Expressbestellungen kann während der Produktion die Linie gewechselt werden Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 Fertigungsplanung (Forts.) Fertigungszeiten für Linie i =, : Bereitstellungszeit e i : Rohling betritt die Linie Bearbeitungszeit a i,j in Station j, j =,..., n: Dauer des j -ten Fertigungsschritts in Linie i Beendigungszeit x i : fertiges Produkt verläßt die Linie Die Dauer des Transports von Station j zu Station j + innerhalb derselben Linie ist vernachlässigbar Wechsel der Produktionslinien t,j : Dauer des Wechsels von S,j nach S,j + t,j : Dauer des Wechsels von S,j nach S,j + Aufgabe: Optimierung der Produktionszeit für Expressbestellungen Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

4 Fertigungsplanung (Beispiel) Linie S, S, S, S, S, S, A E 8 7 S, S, S, S, S, S, Linie Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/8 Idee zur Berechnung des Optimums Optimum zu Station S,j S,j S,j a,j a,j A Alternativen t,j a,j S,j Optimum zu Station S,j Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 8/8

5 Rekursiver Ansatz Ziel: Rekursive Definition einer optimalen Lösung f f i [j ] bezeichnet die Zeit um auf schnellsten Weg vom Produktionsbeginn zum Ende von Station S i,j zu gelangen Die Produktion beginnt bei Station S, oder S, : f [] = e + a, f [] = e + a, Ein Produkt muss alle n Stationen von Linie oder durchlaufen: f = min{f [n] + x, f [n] + x } Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 9/8 Rekursiver Ansatz (Forts.) Zwei Alternativen für den schnellsten Weg zu Station S,j wobei j =,,..., n: Direkter Weg von S,j : v = f [j ] + a,j Transfer von Station S,j der Linie auf Linie : v = f [j ] + t,j + a,j Der schnellste Weg verursacht minimale Kosten: f [j ] = min{v, v } Analoge Berechnung für f [j ] Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

6 Rekursiver Ansatz (Forts.) Rekursionsgleichung zur Berechnung von f [j ]: { e + a, j = f [j ] = min{f [j ] + a,j, f [j ] + t,j + a,j } j Rekursionsgleichung zur Berechnung von f [j ]: { e + a, j = f [j ] = min{f [j ] + a,j, f [j ] + t,j + a,j } j Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 Korrektheit des Verfahrens Satz: Für alle i {, } und alle j {,..., n} ist f i [j ] die kürzeste Produktionszeit bis zu Station S i,j. Beweis. Induktion über n. j = : Da die Werte f [] = e + a, und f [] = e + a, die einzig möglichen sind, sind sie optimal. j j : Sei i = und w die minimale Produktionszeit bis zu Station S i,j. Betrachte den durch die Rekursion berechneten Wert f [j ]. w f [j ]: Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

7 Korrektheit des Verfahrens (Forts.) w f [j ]: Angenommen, die optimale Produktionsroute zu S,j führt über S,j. Da laut Annahme f [j ] und f [j ] optimal sind, gilt: w f [j ] + a,j f [j ] Führt der optimale Weg über S,j, dann gilt: w f [j ] + t,j + a,j f [j ] Insgesamt: w = f [j ]. Der rekursiv berechnete Wert ist also optimal. Analog: i = Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 Erweiterung: Berechnung des besten Weges l i [j ] bezeichnet die Nummer der Produktionslinie deren Station S li [j ],j auf dem schnellsten Weg zu S i,j liegt l bezeichnet die Linie, deren n-te Station auf dem schnellsten Produktionsweg liegt Die Werte l i [j ] für i =, und j =,,..., n sind ein Nebenprodukt der Berechnung obiger Rekursionsgleichungen Beachte: l i [] ist nicht definiert Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

8 Rekursiver Algorithmus RecF(i, j, e, a, t) Output: f i [j ] if i = then if j = then return e + a, else v := RecF(, j, e, a, t) + a,j v := RecF(, j, e, a, t) + t,j + a,j Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 Rekursiver Algorithmus 7 if v v then 8 l [j ] := 9 return v else l [j ] := return v else Analog für i = Ergebnis: f = min{recf(, n, e, a, t) + x, RecF(, n, e, a, t) + x } Die optimale Route wird intern im Array l gespeichert. Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

9 Beispiel Linie S, S, S, S, S, S, A E 8 7 S, S, S, S, S, S, Linie j f [j] 9 8 f [j] 7 Ergebnis: f = 8, l = j l [j] l [j] Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/8 Laufzeit des rekursiven Algorithmus Laufzeit: Für die Anzahl T (n) der rekursiven Aufrufe von RecF(i, n, e, a, t) gilt: { n = T (n) = T (n ) n Somit: Laufzeit von RecF(i, n, e, a, t) ist Θ( n ) Fazit: rekursiver Algorithmus unbrauchbar Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 8/8

10 Grund für die Ineffizienz f f [n] f [n] f [n ] f [n ] f [n ] f [n ] f [n ] f [n ] f [n ] f [n ] f [n ] f [n ] f [n ] f [n ] Unnötiger Aufruf Problem: Die meisten rekursiven Aufrufe sind unnötig Lösung: Speichere bereits berechnete Werte in einer Tabelle ( Memoization) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 9/8 Modifizierter Algorithmus MemoRecF(i, j, e, a, t) Output: f i [j ] if f i [j ] < then return f i [j ] else if i = then if j = then return e + a, 7 else 8 v := MemoRecF(, j, e, a, t) + a,j 9 v := MemoRecF(, j, e, a, t) + t,j + a,j Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

11 Rekursiver Algorithmus if v v then f [j ] := v l [i] := return v else f [j ] := v l [i] := 7 return v 8 else 9 Analog für i = Laufzeit: O(n), da die Anzahl der rekursiven Aufrufe gleich n ist Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 Optimale Teilstruktur Optimale Teilstruktur Eigenschaft: Jede optimale Lösung eines Problems enthält optimale Lösungen für die im Problem enthaltenen Teilprobleme Das Problem Fertigungsplanung besitzt diese Eigenschaft, denn der schnellste Weg zu S,j ist entweder der schnellste Weg zu S,j und direkt weiter zu S,j, oder der schnellste Weg zu S,j und ein Wechsel von Linie zu Linie, also zu S,j Analog für S,j Die Optimale Teilstruktur Eigenschaft ermöglicht eine effiziente Berechnung einer optimalen Lösung. Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

12 Iterativer Algorithmus IterativeF(n, e, a, t, x) f [] := e + a, f [] := e + a, for j := to n do if f [j ] + a,j f [j ] + t,j + a,j then f [j ] := f [j ] + a,j l [j ] := 7 else 8 f [j ] := f [j ] + t,j + a,j 9 l [j ] := Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 Iterativer Algorithmus (Forts.) if f [j ] + a,j f [j ] + t,j + a,j then f [j ] := f [j ] + a,j l [j ] := else f [j ] := f [j ] + t,j + a,j l [j ] := if f [n] + x f [n] + x then 7 f := f [n] + x 8 l := 9 else f := f [n] + x l := Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

13 Bemerkungen zu IterativeF IterativeF() berechnet die Tabellen f und l in Bottom Up Manier In der for-schleife in Zeilen werden die Tabellen schrittweise unter Verwendung der Rekursionsgleichungen berechnet Die if-anweisung in Zeilen dient zur Berechnung der optimalen Werts Die Laufzeit von IterativeF() ist Θ(n), also linear in der Anzahl der Stationen einer Produktionslinie Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 Ausgabe des schnellsten Pfads Nach Aufruf von IterativeF() enthält die l-tabelle alle Informationen um den schnellen Produktionspfad auszugeben. PrintStations(l, n) for j := to n do i := l i [j ] print Linie i, Station j i := l print Linie i, Station n Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

14 Matrizenmultiplikation Eine n m Matrix A ist eine Tabelle mit m Zeilen und n Spalten: a, a,... a,m a,m a, a,... a,m a,m A =.. a n, a n,... a n,m a n,m Zwei Matrizen A und B kann man multiplizieren, falls die Anzahl der Spalten von A gleich der Anzahl der Zeilen von B ist Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/8 Matrizenmultiplikation (Forts.) Ist A eine n m Matrix und B eine m l Matrix, dann ist das Produkt C = A B eine n l, wobei c i,j = m a i,k b k,j k= für i =,,..., n und j =,,..., l Falls man A und B multiplizieren kann, dann nennt man A und B (multiplikations-) kompatibel Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 8/8

15 Algorithmus MatrixMultiply(A, B) MatrixMultiply(A, B) Input: Matrizen A und B Output: Matrix C = A B, falls Produkt berechenbar if columns(a) rows(b) then print Dimensionen nicht kompatibel else for i := to rows(a) do for j := to columns(b) do C[i, j ] := 7 for k := to columns(a) do 8 C[i, j ] := C[i,j ] + A[i, k] B[k, j ] 9 return C Laufzeit: O(rows(A) columns(b) columns(a)) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 9/8 Assoziativität der Matrixmultiplikation Gegeben: Matrizen A, A,..., A n, wobei A i und A i+ für alle i =,,..., n kompatibel sind Zur Berechnung von C = A A... A n müssen n Matrixmultiplikationen durchgeführt werden Da die Matrixmultiplation assoziativ ist, ist die Reihenfolge der Multiplikationen (aus mathematischer Sicht) irrelevant Die Reihenfolge beeinflusst jedoch den Aufwand zur Berechnung der Multiplikationen Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

16 Kettenmultiplikation von Matrizen Matrizen-Kettenmultiplikation steht für das folgende Optimierungsproblem: Gegeben: Eine Folge (Kette) von Matrizen A, A,..., A n, wobei A i die Dimension p i p i hat Aufgabe: Berechne das Produkt A A... A n mit minimalem Aufwand Beispiel: Betrachte die Matrizen A, A und A mit Dimension, und (A (A A )) 7 Multiplikationen ((A A ) A ) 7 Multiplikationen Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 Anzahl verschiedener Klammerungen Frage: Auf wieviele verschiedene Arten kann n Matrizen klammern? Die Anzahl P(n) der Klammerungen ist { n = P(n) = n k= P(k) P(n k) n Es gilt: P(n) = Ω( n ) Fazit: Alle Klammerungen zu analysieren, um die Matrix Kettenmultiplikation optimal zu berechnen, ist nicht effizient. Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

17 Lösung mittels dynamischem Programmieren Die optimale Klammerung kann mittels dynamischem Programmieren berechnet werden. Vier Schritte:. Analyse der Struktur einer optimalen Klammerung. Rekursive Berechnung der Anzahl Skalarmultiplikationen der optimalen Klammerung. Berechnung der Anzahl Skalarmultiplikationen durch schrittweise Berechnung einer Tabelle. Berechnung der optimalen Klammerung Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 Schritt : Strukturanalyse Betrachte eine optimale Klammerung für A i A i+... A j wobei i < j n: Die Klammerung teilt das Produkt A i A i+... A j in zwei Hälften A i A i+... A k und A k+... A j wobei i k < j Die Klammerung von A i A i+... A k ist optimal. Andernfalls könnte man die optimale Klammerung für A i A i+... A j verbessern Die Klammerung von A k+... A j ist ebenfalls optimal Fazit: Matrix Kettenmultiplikation besitzt die Optimale Teilstruktur Eigenschaft Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

18 Schritt : Rekursive Berechnung des Optimums Definiere A i..j = A i A i+... A j wobei i j Sei m[i, j] die minimale Anzahl Skalarmultiplikationen die zur Berechnung von A i..j notwendig sind Es gilt: A i..j = A i..k A k+..j für k = i, i +,..., j Der Aufwand zur Berechnung von A i..k A k+..j ist m[i, k] + m[k +, j] + p i p k p j Rekursive Berechnung von m[i, j]: { i = j m[i, j] = min i k<j {m[i, k] + m[k +, j] + p i p k p j } i < j Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 Schritt : Berechnung der Lösung In s[i, j] wird die Stelle k gespeichert, an der A i..j zerlegt wird Die direkte Implementierung der Rekursionsgleichung ist ineffizient Zur Berechnung werden die Werte m[i, j] für i j n benötigt Die Anzahl der m s ist ( n ) + n = Θ(n ) Die m s werden in einer Dreiecksmatrix gespeichert Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

19 Algorithmus MatrixChainOrder(p) MatrixChainOrder(p) Input: Dimensionsfolge p = p, p,..., p n Output: Tabelle m und s n := length(p) for i := to n do m[i, i] := for l := to n do for i := to n l + do j := i + l 7 m[i, j ] := Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/8 Algorithmus MatrixChainOrder(p) 8 for k := i to j do 9 q := m[i, k] + m[k +, j ] + p i p k p j if q < m[i, j ] then m[i, j ] := q s[i, j ] := k return m und s Laufzeit: Θ(n ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 8/8

20 Schritt : Berechnung der optimalen Klammerung Die korrekte Klammerung wird anhand der Tabelle s berechnet: PrintOptimalParens(s, i, j ) if i = j then print A[ i ] else print ( PrintOptimalParens(s, i, s[i, j ]) PrintOptimalParens(s, s[i, j ] +, j ) 7 print ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 9/8 Beispiel für Matrix Kettenmultiplikation Gegeben sind die Matrizen A, A,..., A mit folgenden Dimensionen: Matrix Dimension A A A A A A Eingabe für MatrixChainOrder(p): p =,,,,,, Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

21 i A ( ) A ( ) A ( ) A ( ) A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 i 7 A ( ) A ( ) A ( ) A ( ) + + = 7 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

22 i 7 A ( ) A ( ) A A ( ) ( ) + + = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 i 7 7 A ( ) A ( ) A A ( ) ( ) + + = 7 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

23 i 7 7 A ( ) A ( ) A A ( ) ( ) + + = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 i 7 7 A ( ) A ( ) A A ( ) ( ) + + = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

24 i A ( ) A ( ) A ( ) A ( ) + + = 787 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/8 i A ( ) A ( ) A ( ) A ( ) = 8 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 8/8

25 i A ( ) A ( ) A ( ) A ( ) = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 9/8 i A ( ) A ( ) A ( ) A ( ) + + = 7 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

26 i A ( ) A ( ) A ( ) A ( ) + + = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 i A ( ) A ( ) A ( ) A ( ) = 7 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

27 i A ( ) A ( ) A ( ) A ( ) + + = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 i A ( ) A ( ) A ( ) A ( ) + + = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

28 i A ( ) A ( ) A ( ) A ( ) = 87 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 i A ( ) A ( ) A ( ) A ( ) = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

29 i A ( ) A ( ) A ( ) A ( ) = 97 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/8 i A ( ) A ( ) A ( ) A ( ) + + = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 8/8

30 i A ( ) A ( ) A ( ) A ( ) + + = 7 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 9/8 i A ( ) A ( ) A ( ) A ( ) = 7 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

31 i A ( ) A ( ) A ( ) A ( ) + + = 7 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 i A ( ) A ( ) A ( ) A ( ) = 9 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

32 i A ( ) A ( ) A ( ) A ( ) + + = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 i A ( ) A ( ) A ( ) A ( ) = 8 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

33 i A ( ) A ( ) A ( ) A ( ) A ( ) = 7 A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8 i A ( ) A ( ) A ( ) A ( ) = 87 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen /8

34 i A ( ) A ( ) A ( ) A ( ) = 7 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/8 i A ( ) A ( ) A ( ) A ( ) = 8 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 8/8

35 i A ( ) A ( ) A ( ) A ( ) + + = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 9/8 i A ( ) A ( ) A ( ) A ( ) = 8 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/8

36 i A ( ) A ( ) A ( ) A ( ) = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/ i 7 A ( ) A ( ) A ( ) A ( ) + + = 7 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/8

37 i 7 A ( ) A ( ) A ( ) A ( ) A ( ) = 7 A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/ i 7 A ( ) A ( ) A ( ) A ( ) = A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/8

38 i 7 A ( ) A ( ) A ( ) A ( ) = 87 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/ i 7 A ( ) A ( ) A ( ) A ( ) = 87 A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 7/8

39 i 7 A ( ) A ( ) A ( ) A ( ) A ( ) A ( ) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 77/8 Berechnung der optimaler Klammerung: A[..] = (A[..])(A[..]) da s[,]= = ((A[])(A[..]))(A[..]) da s[,]= = ((A[])((A[])(A[])))(A[..]) da s[,]= = ((A[])((A[])(A[])))((A[..])(A[])) da s[,]= = ((A[])((A[])(A[])))(((A[])(A[]))(A[])) da s[,]= Bemerkung: A[i..j] steht für A i... A j Optimale Klammerung: ((A (A A ))((A A )A )) Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 78/8

40 Anwendbarkeit von dynamischem Programmieren Ein Optimierungsproblem ist mittels dynamischem Programmieren effizient lösbar, wenn es zwei Eigenschaften besitzt: Optimale Teilstruktur: Die optimale Lösung eines Problems enthält optimale Lösungen für die im Problem enthaltenen Teilprobleme Überlappende Teilprobleme: Die Menge der Teilprobleme zur rekursiven Berechnung der optimalen Lösung ist klein, d.h., polynomial in der Größe des Problems Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 79/8 Zusammenfassung Dynamisches Programmieren ist eine Technik zur Bearbeitung von Optimierungsproblemen Die Technik besteht darin, eine Tabelle mit Teillösungen zu berechnen und auf Basis dieser eine optimale Lösung zu ermitteln Dynamisches Programmieren eignet sich für Optimierungsprobleme mit der Optimale Teilstruktur Eigenschaft Dynamisches Programmieren wird auch als Heuristik für schwer zu handhabende Optimierungsprobleme eingesetzt Prof. Dr. C. Karg: Algorithmen und Datenstrukturen 8/8

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 2 Lerneinheit 3: Greedy Algorithmen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 2016 10.5.2016 Einleitung Einleitung Diese Lerneinheit

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

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

Dynamische Programmierung

Dynamische Programmierung Dynamische Programmierung Claudia Gerhold 9.5.6 Claudia Gerhold Dynamische Programmierung 9.5.6 / 4 Agenda Einführung Dynamische Programmierung Top-Down Ansatz mit Memoization Bottom-Up Ansatz 3 Anwendungsbeispiele

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

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

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

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

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 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

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

Kryptographische Protokolle

Kryptographische Protokolle Kryptographische Protokolle Lerneinheit 2: Generierung von Primzahlen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Wintersemester 2018/2019 15.11.2018 Einleitung Einleitung Diese Lerneinheit

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

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

0 i = n w n > k v n. V (i +1,k), max v i + V (i +1,k w i )

0 i = n w n > k v n. V (i +1,k), max v i + V (i +1,k w i ) Sei V(i,k) der maximal mögliche Wert für die egenstände i, i+1,, n bei gegebener max. Kapazität k V(i,k) kann dann für i n geschrieben werden als i = n w n > k v n V (i, k) = V (i +1,k) V (i +1,k), max

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

Wenn wir zudem a ii = 1 für 1 i n setzen, dann gilt für A k (boolesches Produkt, A 0 = I) 0 falls es im Graphen keinen Pfad von v i nach v j,

Wenn wir zudem a ii = 1 für 1 i n setzen, dann gilt für A k (boolesches Produkt, A 0 = I) 0 falls es im Graphen keinen Pfad von v i nach v j, 6.2 Boolesche Matrixmultiplikation und Transitive Hülle Wir ersetzen nun im vorhergehenden Abschnitt die Distanzmatrix durch die (boolesche) Adjazenzmatrix und (min, +) durch (, ), d.h.: n C = A B; c ij

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

Berechenbarkeits- und Komplexitätstheorie

Berechenbarkeits- und Komplexitätstheorie Berechenbarkeits- und Komplexitätstheorie Lerneinheit 5: Die Klasse NP Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Wintersemester 2015/2016 26.9.2015 Einleitung Thema dieser Lerneinheit

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Divide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen

Divide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen Teile & Herrsche: Divide & Conquer Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen Probleme: Wie setzt man zusammen? [erfordert algorithmisches Geschick

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

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

Teil I. Lineare Algebra I Vorlesung Sommersemester Olga Holtz. MA 378 Sprechstunde Fr und n.v.

Teil I. Lineare Algebra I Vorlesung Sommersemester Olga Holtz. MA 378 Sprechstunde Fr und n.v. Teil I Lineare Algebra I Vorlesung Sommersemester 2011 Olga Holtz MA 378 Sprechstunde Fr 14-16 und nv holtz@mathtu-berlinde Sadegh Jokar MA 373 Sprechstunde, Do 12-14 und nv jokar@mathtu-berlinde Kapitel

Mehr

Übersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen

Übersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Übersicht Greedy Algorithmen Einführung Aktivitäten-Auswahl-Problem Huffman Codierung Matthias Zwicker Universität Bern Frühling 2009 2 Greedy Algorithmen Entwurfsstrategie

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

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

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra Effiziente Algorithmen und Datenstrukturen I Kapitel 10: Lineare Algebra Christian Scheideler WS 2008 19.02.2009 Kapitel 10 1 Überblick Notation Arithmetik auf großen Zahlen (Addition und Multiplikation)

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

2. Entsprechende Listen P i von Vorgängern von i 3. for i := 1 to n do. (ii) S i = Knoten 2 + 1}

2. Entsprechende Listen P i von Vorgängern von i 3. for i := 1 to n do. (ii) S i = Knoten 2 + 1} 1. Berechne für jeden Knoten i in BFS-Art eine Liste S i von von i aus erreichbaren Knoten, so dass (i) oder (ii) gilt: (i) S i < n 2 + 1 und Si enthält alle von i aus erreichbaren Knoten (ii) S i = n

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

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

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

Algebraische und arithmetische Algorithmen

Algebraische und arithmetische Algorithmen Kapitel 1 Algebraische und arithmetische Algorithmen 1.1 Das algebraische Berechnungsmodell Struktur: Körper (oder Ring) mit den Operationen +,,, (/) Eingabe: endliche Folge von Zahlen Ausgabe: endliche

Mehr

Algorithmentheorie. 10 Greedy Verfahren

Algorithmentheorie. 10 Greedy Verfahren Algorithmentheorie 0 Greedy Verfahren Prof. Dr. S. Albers Greedy Verfahren. Allgemeine Vorbemerkungen 2. Einfache Beispiele Münzwechselproblem Handlungsreisenden-Problem 3. Das Aktivitäten Auswahlproblem

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

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 robert.legenstein@igi.tugraz.at 1 Kapitel 2 Algorithmische robert.legenstein@igi.tugraz.at 2 2. Algorithmische 1) Iterative Algorithmen 2) Rekursive Algorithmen

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

12.4 Traveling Salesman Problem

12.4 Traveling Salesman Problem 96 KOMBINATORISCHE SUCHE.4 Traveling Salesman Problem Definition.3(TSP, Problem des Handlungsreisenden): Wir betrachten einen gerichteten, gewichteten Graphen G = (V,E) mit K : V R. K({u,v}) sind die Kosten

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

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

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

bekannt: Eliminationsverfahren von Gauß Verfahren führt zu einer Zerlegung der Koeffizientenmatrix: A = LR A = LR

bekannt: Eliminationsverfahren von Gauß Verfahren führt zu einer Zerlegung der Koeffizientenmatrix: A = LR A = LR LR-Zerlegung bekannt: Eliminationsverfahren von Gauß Verfahren führt zu einer Zerlegung der Koeffizientenmatrix: A = LR Definition 2.17 Unter einer LR-Zerlegung einer Matrix A R n n verstehen wir eine

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

Effiziente Algorithmen 2

Effiziente Algorithmen 2 Effiziente Algorithmen 2 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 Algorithmen

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

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

Ü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 Fibonacci Zahlen Fibonacci Folge Die Fibonacci

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 7 Fortgeschrittene Datenstrukturen 8 Such-Algorithmen

Mehr

4 Rekursionen. 4.1 Erstes Beispiel

4 Rekursionen. 4.1 Erstes Beispiel 4 Rekursionen Viele Algorithmen besitzen sowohl eine iterative als auch eine rekursive Lösung. Sie unterscheiden sich darin, dass die iterative Version meist einen etwas längeren Kode besitzt, während

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft

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 Algorithmen

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 Algorithmen

Mehr

Das Divide - and - Conquer Prinzip. Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt

Das Divide - and - Conquer Prinzip. Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt Divide and Conquer Das Divide - and - Conquer Prinzip Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt 2 Quicksort: Sortieren durch Teilen

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Technische Universität München Fakultät für Informatik Lehrstuhl für Effiziente Algorithmen Dr. Hanjo Täubig Tobias Lieber Sommersemester 2011 Übungsblatt 1 16. September 2011 Grundlagen: Algorithmen und

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

Numerik I. Universität zu Köln SS 2009 Mathematisches Institut Prof. Dr. C. Tischendorf Dr. M. Selva,

Numerik I. Universität zu Köln SS 2009 Mathematisches Institut Prof. Dr. C. Tischendorf Dr. M. Selva, Universität zu Köln SS 009 Mathematisches Institut Prof. Dr. C. Tischendorf Dr. M. Selva, mselva@math.uni-koeln.de Numerik I Musterlösung 1. praktische Aufgabe, Bandmatrizen Bei der Diskretisierung von

Mehr

5. Bäume und Minimalgerüste

5. Bäume und Minimalgerüste 5. Bäume und Minimalgerüste Charakterisierung von Minimalgerüsten 5. Bäume und Minimalgerüste Definition 5.1. Es ein G = (V, E) ein zusammenhängender Graph. H = (V,E ) heißt Gerüst von G gdw. wenn H ein

Mehr

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

Greedy Algorithms - Gierige Algorithmen

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

Mehr

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck Lemma 15 KLP 1 ist genau dann lösbar, wenn das dazugehörige LP KLP 2 eine Lösung mit dem Wert Z = 0 besitzt. Ist Z = 0 für x 0, x 0, dann ist x eine zulässige Lösung von KLP 1. Beweis von Lemma 15: Nach

Mehr

Kryptographische Protokolle

Kryptographische Protokolle Kryptographische Protokolle Lerneinheit 4: Schlüsselvereinbarung Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 2017 8.5.2017 Einleitung Einleitung In dieser Lerneinheit

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

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Heapsort, Quicksort, Mergesort. 8. Sortieren II 209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] Heapsort 211 Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

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

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum

Mehr

Relationen und DAGs, starker Zusammenhang

Relationen und DAGs, starker Zusammenhang Relationen und DAGs, starker Zusammenhang Anmerkung: Sei D = (V, E). Dann ist A V V eine Relation auf V. Sei andererseits R S S eine Relation auf S. Dann definiert D = (S, R) einen DAG. D.h. DAGs sind

Mehr

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Kapitel 2. Weitere Beispiele Effizienter Algorithmen Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute 7 Fortgeschrittene Datenstrukturen 8

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

6. Algorithmen auf Zeichenketten

6. Algorithmen auf Zeichenketten 6. Algorithmen auf Zeichenketten Motivation Wir lernen nun Algorithmen zur Lösung verschiedener elementarer Probleme auf Zeichenketten zu lösen Zeichenketten spielen eine wichtige Rolle in diversen Gebieten

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

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

Universität Duisburg - Essen

Universität Duisburg - Essen BoS - Klausur - Bauinformatik - 16.08.2007 1 Universität Duisburg - Essen Campus Essen Fakultät für Ingenieurwissenschaften Abteilung Bauwissenschaften Fachprüfung - Bauinformatik SS 07-1 - Dienstag, den

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 9, Donnerstag 18. Dezember 2014 (Teile und Herrsche, Mastertheorem) Junior-Prof. Dr.

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Sortieren fortgesetzt Maike Buchin 16.5.2017 5.6 Brechen der Unteren Schranke nur Vergleichen erlauben keine Algorithmen mit Laufzeit schneller als O(n log n) stattdessen: Struktur

Mehr

Schriftlicher Test zu C (90 Minuten) VU Einführung ins Programmieren für TM. 1. Oktober 2012

Schriftlicher Test zu C (90 Minuten) VU Einführung ins Programmieren für TM. 1. Oktober 2012 Familienname: Vorname: Matrikelnummer: Aufgabe 1 (2 Punkte): Aufgabe 2 (3 Punkte): Aufgabe 3 (2 Punkte): Aufgabe 4 (3 Punkte): Aufgabe 5 (2 Punkte): Aufgabe 6 (1 Punkte): Aufgabe 7 (2 Punkte): Aufgabe

Mehr

LR Zerlegung. Michael Sagraloff

LR Zerlegung. Michael Sagraloff LR Zerlegung Michael Sagraloff Beispiel eines linearen Gleichungssystems in der Ökonomie (Input-Output Analyse Wir nehmen an, dass es 3 Güter G, G, und G 3 gibt Dann entspricht der Eintrag a i,j der sogenannten

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 8 Gerhard Heyer, Florian Holz unter Verwendung der Materialien der letzten Jahre Abteilung Automatische Sprachverarbeitung Institut für Informatik Universität

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

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 15 P Hinweise: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern

Mehr

Ein sortiertes Feld kann in O(log n) durchsucht werden, z.b. mit Binärsuche. Der Algorithmus 1 gibt den Pseudocode der binären Suche an.

Ein sortiertes Feld kann in O(log n) durchsucht werden, z.b. mit Binärsuche. Der Algorithmus 1 gibt den Pseudocode der binären Suche an. 2.5 Suchen Eine Menge S will nach einem Element durchsucht werden. Die Menge S ist statisch und S = n. S ist Teilmenge eines Universums auf dem eine lineare Ordnung definiert ist und soll so gespeichert

Mehr

3.2. Divide-and-Conquer-Methoden

3.2. Divide-and-Conquer-Methoden LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 01/13 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Guten Morgen! Tipps für unseren ersten Test am 0. November: Lesen

Mehr

Präfix-Summe. Das Schweizer Offiziersmesser der Parallelen Algorithmen. Parallele Rechenmodelle Präfix-Summe Brents Lemma Anwendungen

Präfix-Summe. Das Schweizer Offiziersmesser der Parallelen Algorithmen. Parallele Rechenmodelle Präfix-Summe Brents Lemma Anwendungen Präfix-Summe Das Schweizer Offiziersmesser der Parallelen Algorithmen Parallele Rechenmodelle Präfix-Summe Brents Lemma Anwendungen Parallele Rechenmodelle Beispiel: Summieren von Zahlen Verlauf des Rechenprozesses:

Mehr

3.3 Optimale binäre Suchbäume

3.3 Optimale binäre Suchbäume 3.3 Optimale binäre Suchbäume Problem 3.3.1. Sei S eine Menge von Schlüsseln aus einem endlichen, linear geordneten Universum U, S = {a 1,,...,a n } U und S = n N. Wir wollen S in einem binären Suchbaum

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

Graphenalgorithmen und lineare Algebra Hand in Hand Prof. Dr. Henning Meyerhenke

Graphenalgorithmen und lineare Algebra Hand in Hand Prof. Dr. Henning Meyerhenke Graphenalgorithmen und lineare Algebra Hand in Hand Prof. Dr. Henning Meyerhenke Institut für Theoretische Informatik 1 KIT Henning Universität desmeyerhenke, Landes Baden-Württemberg Institutund für Theoretische

Mehr

Algorithmen I - Tutorium 28 Nr. 2

Algorithmen I - Tutorium 28 Nr. 2 Algorithmen I - Tutorium 28 Nr. 2 11.05.2017: Spaß mit Invarianten (die Zweite), Rekurrenzen / Mastertheorem und Merging Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK

Mehr

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit

Mehr

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Heapsort, Quicksort, Mergesort. 8. Sortieren II 209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:

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

Multiplikation von Matrizen

Multiplikation von Matrizen Multiplikation von Matrizen Die Regeln der Multiplikation von Zahlen können nicht direkt auf die Multiplikation von Matrizen übertragen werden. 2-E Ma Lubov Vassilevskaya Multiplikation ccvon Matrizen

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

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