Informatik II Dynamische Programmierung

Größe: px
Ab Seite anzeigen:

Download "Informatik II Dynamische Programmierung"

Transkript

1 /9/ lausthal Informatik II Dynamische Programmierung. Zachmann lausthal University, ermany Zweite Technik für den Algorithmenentwurf Zur Herkunft des Begriffes: " Programmierung" hat nichts mit "Programmieren" zu tun, sondern mit "Verfahren" - Vergleiche "lineares Programmieren", "Integer-Programmieren" (alles Begriffe aus der Optimierungstheorie) Dynamic programming = planning over time Secretary of Defense was hostile to mathematical research Bellman sought an impressive name to avoid confrontation - "it's impossible to use dynamic in a pejorative sense" - "something not even a ongressman could object to" Typische Anwendung für dynamisches Programmieren: Optimierung. Zachmann Informatik 2 SS Dynamische Programmierung 2

2 /9/ Matrix hain Multiplication Problem (MMP) egeben: eine Folge (Kette) A, A 2,, A n von Matrizen mit verschiedenen Dimensionen esucht: das Produkt A. A. 2. A n Optimierungsaufgabe: Organisiere die Multiplikationen so, daß möglichst wenig skalare Multiplikationen ausgeführt werden enerelle Idee hier: nutze Assoziativität aus Definition: Ein Matrizenprodukt heißt vollständig geklammert, wenn es entweder eine einzelne Matrix oder das geklammerte Produkt zweier vollständig geklammerter Matrizenprodukte ist. Zachmann Informatik 2 SS Dynamische Programmierung Multiplikation zweier Matrizen p A q q B r = r p # Eingabe: p q Matrix A, q r Matrix B # Ausgabe: p r Matrix = A B for i in range(,p ): for j in range(,r ): [i,j] = for k in range(,q ): [i,j] += A[i,k] * B[k,j] Anzahl der Muliplikationen und Additionen = p q r Erinnerung: für 2 n n-matrizen werden hier n Multiplikationen benötigt, aber es geht auch mit O(n 2.xxx ). Zachmann Informatik 2 SS Dynamische Programmierung 4 2

3 /9/ Beispiel Berechnung des Produkts von A, A 2, A mit A : Matrix A 2 : 5 Matrix A : 5 5 Matrix. Klammerung (A A 2 )A erfordert 2. Klammerung A (A 2 A ) erfordert A' = (A A 2 ) 5 Mult. A' A 25 Mult. A'' = (A 2A ) 25 Mult. A A'' 5 Mult. Summe: 75 Mult. Summe: 75 Mult.. Zachmann Informatik 2 SS Dynamische Programmierung 5 Problemstellung egeben: Folge von Matrizen A, A 2,, A n und die Dimensionen p, p,, p n, wobei Matrix A i Dimension p i- p i hat esucht: eine Multiplikationsreihenfolge, die die Anzahl der Multiplikationen minimiert Beachte: der Algorithmus führt die Multiplikationen nicht aus, er bestimmt nur die optimale Reihenfolge! Anwendungen: ermittle die optimale Ausführungsreihenfolge für eine Menge von Operationen Z.B. im ompilerbau: ode-optimierung Bei Datenbanken: Anfrageoptimierung. Zachmann Informatik 2 SS Dynamische Programmierung

4 /9/ Beispiel für A A 2 A n Alle vollständig geklammerten Matrizenprodukte der Folge A, A 2, A, A 4 sind: Klammerungen entsprechen strukturell verschiedenen Auswertungsbäumen: A A 4 A A 4 etc A A 2 A A 4 A A 2 A A 4 A 4 A 2 A A 4 A 4 A 2 A A A 2 A A 4 A A A 4 A 2 A A A 2. Zachmann Informatik 2 SS Dynamische Programmierung 7 Anzahl der verschiedenen Klammerungen P(n) sei die Anzahl der verschiedenen Klammerungen von A A k A k + A n : Definition: P(n +)=: n = n-te atalan'sche Zahl Es gilt (o. Bew.): P(n +)= 2n 4n 4 n n + n n πn + O n 5 Folge: Finden der optimalen Klammerung durch Ausprobieren aller Möglichkeiten ist sinnlos. Zachmann Informatik 2 SS Dynamische Programmierung 8 4

5 /9/ Die Struktur der optimalen Klammerung Bezeichne mit A i j das Produkt der Matrizen i bis j A i j ist eine p i- p j -Matrix Behauptung: Jede optimale Lösung des MMP enthält optimale Lösungen von Teilproblemen Anders gesagt: Jede optimale Lösung des MMP setzt sich zusammen aus optimalen Lösungen von bestimmten Teilproblemen. Zachmann Informatik 2 SS Dynamische Programmierung 9 Beweis (durch Widerspruch) Sei eine optimale Lösung so geklammert A i j = (A i k ) (A k+ j ), i k < j Behauptung: die Klammerung innerhalb A i k muß ihrerseits optimal sein Ann.: die Klammerung von A i k innerhalb der optimalen Lösung zu A i j sei nicht optimal Es gibt bessere Klammerung von A i k mit geringeren Kosten Setze diese Teillösung in Lösung zu A i j = (A i k ) (A k+ j ) ein Ergibt eine bessere Lösung für A i j Widerspruch zur Annahme der Optimalität der ursprünglichen Lösung zu A i j. Zachmann Informatik 2 SS Dynamische Programmierung 5

6 /9/ Eine rekursive Lösung Die optimalen Kosten können beschrieben werden als i = j Folge enthält nur eine Matrix, keine Kosten i < j kann geteilt werden, indem jedes k, i k < j betrachtet wird: Kosten für ein bestimmtes k = "Kosten links" + "Kosten rechts" + Kosten für die Matrix-Multiplikation (A i k ). (A k+ j ) Daraus lässt sich die folgende rekursive Regel ableiten: m[i,j] sei die minimale Anzahl von Operationen zur Berechnung des Teilprodukts A i j. Zachmann Informatik 2 SS Dynamische Programmierung Ein naiver rekursiver Algorithmus # Input p = Vektor der Array-rößen # Output m[i,j] = optimale Kosten für die # Multiplikation der Arrays i,.., j def mcm_rek( p, i, j ): if i = j: return m = for k in range( i,j ): q = p[i-]*p[k]*p[j] + \ mcm_rek( p, i, k ) + \ mcm_rek( p, k+, j ) if q < m: m = q return m Aufruf für das gesamte Problem: mcm_rek( p,, n ). Zachmann Informatik 2 SS Dynamische Programmierung 2

7 /9/ Laufzeit des naiven rekursiven Algorithmus' Sei T(n) die Anzahl der Operationen zur Berechnung von mcm_rek für Eingabefolge der Länge n Exponentielle Laufzeit! L. Zachmann Informatik 2 SS Dynamische Programmierung Formulierung mittels Dynamischer Programmierung Beobachtung: die Anzahl der Teilprobleme A i j n(n+) mit i j n ist nur Θ n 2 2 n Folgerung: der naive rekursive Algo berechnet viele Teilprobleme mehrfach! Idee: Bottom-up-Berechnung der optimalen Lösung: Speichere Teillösungen in einer Tabelle j n n i Daher "dynamische Programmierung" Welche Tabelleneinträge werden für m[i,j] benötigt? n n Hier: bottom-up = von der Diagonale nach "rechts oben" n. Zachmann Informatik 2 SS Dynamische Programmierung 4 7

8 /9/ Berechnungsbeispiel A : 5 A 2 : 5 5 A : 5 5 A 4 : 5 A 5 : 2 A : 2 25 p = (, 5, 5, 5,, 2, 25) j i m Zachmann Informatik 2 SS Dynamische Programmierung 5 ewinnung der optimalen Reihenfolge Speichere die Position für die beste Trennung, d.h., denjenigen Wert k, der zum minimalen Wert von m[i,j] führt Speichere dazu in einem zweiten Array s[i,j] dieses optimale k: s[i,j] wird nur für Folgen mit mindestens 2 Matrizen und j > i benötigt m s s[i,j] gibt an, welche Multiplikation zuletzt ausgeführt werden soll Für s[i,j] = k und die Teilfolge A i j ist es optimal, zuerst A i k, danach A k+ j und zum Schluss die beiden Teilergebnisse zu multiplizieren:. Zachmann Informatik 2 SS Dynamische Programmierung 8

9 /9/ Algorithmus mittels dynamischer Programmierung n = len(p) - for i in range(, n+ ): # assume m has dim (n+). (n+) m[i,i] = for L in range( 2,n+ ): # consider chains of length L for i in range(,n-l ): j = i+l- # len = L j-i = L- m[i,j] = for k in range( i,j ): q = m[i,k] + m[k+,j] + p[i-]*p[k]*p[j] if q < m[i,j]: m[i,j] = q s[i,j] = k Komplexität: es gibt geschachtelte Schleifen, die jeweils höchstens n-mal durchlaufen werden, die Laufzeit beträgt also O(n ). Zachmann Informatik 2 SS Dynamische Programmierung 7 Beispiel egeben: die Folge von Dimensionen (5, 4,, 2, 7) Multiplikation von A (5 4), A 2 (4 ), A ( 2) und A 4 (2 7) Optimale Folge ist ((A (A 2 A ))A 4 ) j 2 4 j A 4 A i s[i,j] 2 2 i 2 m[i,j] A 2 A A A 2 A 2 A 2 optimale Folge. Zachmann Informatik 2 SS Dynamische Programmierung 8 9

10 /9/ Die Technik der dynamischen Programmierung Rekursiver Ansatz: Lösen eines Problems durch Lösen mehrerer kleinerer Teilprobleme, aus denen sich die Lösung für das Ausgangsproblem zusammensetzt Häufiger Effekt: Mehrfachberechnungen von Lösungen Bottom-up-Berechnung: fügt Lösungen kleinerer Unterprobleme zusammen, um größere Unterprobleme zu lösen und liefert so eine Lösung für das gesamte Problem Methode: iterative Erstellung einer Tabelle. Zachmann Informatik 2 SS Dynamische Programmierung 9 Wichtige Begriffe Optimale Unterstruktur (optimal substructure): Ein Problem besitzt die (Eigenschaft der) optimalen Substruktur, bzw. gehorcht dem Prinzip der Optimalität : :. Die Lösung eines Problems setzt sich aus den Lösungen von Teilproblemen zusammen - Bsp. MMP: gesuchte Klammerung von A A n setzt sich zusammen aus der Klammerung einer (bestimmten) Teilkette A A k und einer Teilkette A k+ A n 2. Wenn die Lösung optimal ist, dann müssen auch die Teillösungen optimal sein! (meistens durch Widerspruchsbeweis) - Bsp. MMP: wir haben folgende Behauptung bewiesen: Falls Klammerung zu A A k nicht optimal Klammerung zu A A n (die gemäß Ann. die Teillsg zu A A k enthält) kann nicht optimal sein. Zachmann Informatik 2 SS Dynamische Programmierung 2

11 /9/ Achtung: die zweite Bedingung (Teillösungen müssen optimal sein) ist manchmal nicht erfüllt: Beispiel: längster Pfad durch einen raphen a b Aufgabe hier: bestimme längsten Pfad von a nach c d c Im Beispiel rechts: Lösung besteht aus Teilpfaden a b und b c Aber diese sind nicht optimale(!) Lösungen der entspr. Teilprobleme - Optimale (d.h., längste) Lösung für a b = a d c b. Zachmann Informatik 2 SS Dynamische Programmierung 2 Unabhängigkeit der Teillösungen: Die Teilprobleme heißen (im Sinne der Dyn. Progr.) unabhängig : : die Optimierung des einen Teilproblems beeinflußt nicht die Optimierung des anderen (z.b. bei der Wahl der Unterteilung) - Bsp. MMP: die Wahl der Klammerung für A A k ist völlig unabhängig von der Klammerung für A k+ A n - egenbsp. "längster Pfad": die optimale Lsg für a b (nämlich a d c b) nimmt der optimalen Lsg für b c Elemente weg a d b c. Zachmann Informatik 2 SS Dynamische Programmierung 22

12 /9/ Überlappende Teilprobleme: Ein Problem wird zerlegt in Unterprobleme, diese wieder in Unter- Unterprobleme, usw. Ab irgendeinem rad müssen dieselben Unter-Unterprobleme mehrfach vorkommen, sonst ergibt das DP wahrscheinlich keine effiziente Lösung - Bsp. MMP: Rekursionsbaum enthält viele überlappende Teilprobleme Zachmann Informatik 2 SS Dynamische Programmierung 2 Rekonstruktion der optimalen Lösung: Optimale Lösung für esamtproblem beinhaltet Schritte:. Entscheidung treffen zur Zerlegung des Problems in Teile 2. Optimalen Wert für Teilprobleme berechnen. Optimalen Wert für esamtproblem "zusammensetzen" Dynamische Programmierung berechnet zunächst oft nur den "Wert" der optimalen Lösung, aber gesucht ist i.a. der "Weg" zur optimalen Lösung - Bsp. MMP: gesucht ist die Klammerung an sich Übliche Methode: - Entscheidungen einfach speichern und diese in geeigneter Form ausgeben - Beispiel MMP: speichere Index k, der zum optimalen Wert führt, in 2-tem Array s m s. Zachmann Informatik 2 SS Dynamische Programmierung 24 2

13 /9/ Schritte zur dynamischen Programmierung. harakterisiere die (rekursive) Struktur der optimalen Lösung (Prinzip der optimalen Substruktur) 2. Definiere den Wert einer optimalen Lösung rekursiv. Transformiere die rekursive Methode in eine iterative bottom-up Methode, bei der alle Zwischenergebnisse in einer Tabelle gespeichert werden. Zachmann Informatik 2 SS Dynamische Programmierung 25 Das Rucksack-Problem (Knapsack Problem) Das Problem: "Die Qual der Wahl" Beispiel: ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei Im Laden findet er n egenstände; der i-te egenstand hat den Wert v i und das ewicht w i Sein Rucksack kann höchstens das ewicht c tragen w i und c sind ganze Zahlen(!) (die v i können aus sein) Aufgabe: welche egenstände sollten für den maximalen Profit gewählt werden?. Zachmann Informatik 2 SS Dynamische Programmierung 2

14 /9/ Beispiel Rucksack = = 8 = 22 Fazit: es ist keine gute Strategie, das Objekt mit dem besten Verhältnis Profit/ewicht als erstes zu wählen. Zachmann Informatik 2 SS Dynamische Programmierung 27 Einige Varianten des Knapsack-Problems Fractional Knapsack Problem: Der Dieb kann Teile der egenstände mitnehmen Lösungsalgo später (mit reedy-strategie) - Knapsack Problem: Binäre Entscheidung zwischen und : jeder egenstand wird vollständig genommen oder gar nicht Formale Problemstellung: x i = / : egenstand i ist (nicht) im Rucksack. Zachmann Informatik 2 SS Dynamische Programmierung 28 4

15 /9/ Die rekursive Lösung Betrachte den ersten egenstand i=; es gibt zwei Möglichkeiten:. Der egenstand wird in den Rucksack gepackt (x =) Rest-Problem: 2. Der egenstand wird nicht in den Rucksack gepackt (x =) Rest-Problem: Berechne beide Fälle, wähle den besseren. Zachmann Informatik 2 SS Dynamische Programmierung 29 Der Rekursionsbaum vorhandene Rest-Kapazität Wert des Rucksacks c Objekt c c - w v 2 c c - w 2 v 2 c - w v c - w - w 2 v + v 2 c c - w v c - w v c - w - w v + v. Zachmann Informatik 2 SS Dynamische Programmierung 5

16 /9/ Sei V(i,k) = der maximal mögliche Wert für die egenstände i, i+,, 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 +,k) V (i +,k), max v i + V (i +,k w i ) i = n w n k i < n w i > k i < n w i k. Zachmann Informatik 2 SS Dynamische Programmierung Beispiel: n = 5, c =, w = (2, 2,, 5, 4), v = (,, 5, 4, ) V(,) V(2,) V(2,8) V(,) V(,8) V(,8) V(,) gleiches Unterproblem Algorithmus, basierend auf diesen 4 Fällen, hat Laufzeit von O(2 n ) Ist ineffizient, denn V(i,k) wird für die gleichen i und k mehrmals berechnet dynamic programming. Zachmann Informatik 2 SS Dynamische Programmierung 2

17 /9/ Lösung mittels Dynamischer Programmierung Ineffizienz kann vermieden werden, indem alle V(i,k), einmal berechnet, in einer Tabelle gespeichert werden Die Tabelle wird in der Reihenfolge i = n, n-,, 2, für k c gefüllt k 2 j- j j+ c V(n, k) v n v n v n j ist das erste k mit w n k. Zachmann Informatik 2 SS Dynamische Programmierung Beispiel n = 5, c =, w = (2, 2,, 5, 4), v = (, (2,, 5, 4, ) i k Zachmann Informatik 2 SS Dynamische Programmierung 4 7

18 /9/ (Re-)konstruktion der Lösung n = 5, c =, w = (2, 2,, 5, 4), v = (2,, 5, 4, ) x = [,,,,] oder x = [,,,,] i k Zachmann Informatik 2 SS Dynamische Programmierung 5 Bemerkungen Aufwand: O(n c), c = Kapazität des Rucksacks Solche Komplexitäten nennt man auch pseudo-polynomial time Dabei erscheint nicht (nur) die Länge des Inputs, sondern (auch) dessen Wert in der Komplexitätsfunktion! Achtung: dieser Algorithmus klappt nur, wenn c und die w i Integers sind! Falls c oder die w i keine Integers sind, dann ist das Problem "NPvollständig", und es gibt (wahrscheinlich) keinen polynomiellen Algorithmus. Zachmann Informatik 2 SS Dynamische Programmierung 8

19 /9/ Die längste gemeinsame Teilfolge Seien X = (x,, x m ) und Y = (y,, y n ) zwei Folgen, wobei x i, y i A für ein endliches Alphabet A. Dann heißt Y Teilfolge von X, wenn es aufsteigend sortierte Indizes i,, i n gibt, mit x ij = y j für j =,, n Beispiel: Y = BA ist Teilfolge von X = ABAAB; wähle (i, i 2, i, i 4 ) = (2,4,5,7) Sind X, Y, Z Folgen über A, so heißt Z gemeinsame Teilfolge von X und Y, wenn Z Teilfolge sowohl von X als auch Y ist Beispiel: Z = BA ist gemeinsame Teilfolge von X = ABAAB und Y = BAABB. Zachmann Informatik 2 SS Dynamische Programmierung 7 Z heißt längste gemeinsame Teilfolge von X und Y, wenn Z gemeinsame Teilfolge von X und Y ist und es keine andere gemeinsame Teilfolge von X und Y gibt, die länger ist Beispiel: Z = BA ist nicht längste gemeinsame Teilfolge von X =ABAAB und Y = BAABB, denn BAA ist eine längere gemeinsame Teilfolge von X und Y Beim Problem Längste-emeinsame-Teilfolge (longest-commonsubsequence problem, LSP) sind als Eingabe zwei Folgen X = (x,, x m ) und Y = (y,, y n ) gegeben, gesucht ist eine längste gemeinsame Teilfolge X und Y Anwendung: "Distanz" zwischen Strings messen (Edit-Distanz). Zachmann Informatik 2 SS Dynamische Programmierung 8 9

20 /9/ Ein naiver Algorithmus Für jede mögliche Unterfolge von X: prüfe ob es eine Unterfolge von Y ist Laufzeit: Θ(n 2 m ) Es gibt 2 m mögliche Unterfolgen von X Für jede Unterfolge wird Zeit Θ(n) benötigt, um zu überprüfen, ob diese Unterfolge von Y ist: - Scanne Y, "verbrauche" jeweils den nächsten Buchstaben von X, falls er passt - X ist Unterfolge von Y, wenn am Ende von Y kein Zeichen von X mehr übrig ist. Zachmann Informatik 2 SS Dynamische Programmierung 9 Die Struktur des LSP Definition: sei X = (x,, x m ) eine beliebige Folge. Für i =,,, m ist der i-te Präfix von X definiert als X i = (x,, x i ). Der i-te Präfix von X besteht also aus den ersten i Symbolen von X, der -te Präfix ist die leere Folge.. Zachmann Informatik 2 SS Dynamische Programmierung 4 2

21 /9/ Satz: Seien X = (x,, x m ) und Y = (y,, y n ) beliebige Folgen und sei Z = (z,, z k ) eine längste gemeinsame Teilfolge von X und Y. Dann gilt eine der folgenden drei Aussagen:. Ist x m = y n, dann ist z k = x m = y n, und Z k- ist eine längste gemeinsame Teilfolge von X m- und Y n- 2. Ist x m y n und z k x m, dann ist Z eine längste gemeinsame Teilfolge von X m- und Y. Ist x m y n und z k y n, dann ist Z eine längste gemeinsame Teilfolge von X und Y n-. Zachmann Informatik 2 SS Dynamische Programmierung 4 Beweis Fall (x m = y n ):. Jede gemeinsame Teilfolge Z', die nicht mit z ' l = x m = y n endet, kann verlängert werden, indem x m = y n angefügt wird die LS Z muß mit x m = y n enden; 2. Z k- ist längste gemeinsame Teilfolge von X m- und Y n-, denn es gibt keine längere gemeinsame Teilfolge von X m- und Y n-, oder Z wäre keine längste gemeinsame Teilfolge. Fall 2 (x m y n und z k x m ): Da Z nicht mit x m endet Z ist gemeinsame Teilfolge von X m- und Y; daher gibt es keine längere gemeinsame Teilfolge von X m- und Y, oder Z wäre keine längste gemeinsame Teilfolge. Zachmann Informatik 2 SS Dynamische Programmierung 42 2

22 /9/ Eine Rekursion für die Länge der LS Lemma: Sei c[i,j] die Länge einer längsten gemeinsamen Teilfolge des i-ten Präfix X i von X und des j-ten Präfix Y j von Y, dann gilt falls i = j = c[i, j] = c[i, j ] + falls i, j > x i = y j max{c[i, j], c[i, j ]} falls i, j > x i = y j Beobachtung: Die rekursive Berechnung der c[m,n] würde immer wieder zur Berechnung derselben Werte führen! Also dynamische Programmierung: berechne die Werte c[i,j] iterativ bottom-up, z.b. zeilenweise Zusätzlich: speichere in b[i,j] Informationen zur späteren (Re-) Konstruktion einer längsten gemeinsamen Teilfolge. Zachmann Informatik 2 SS Dynamische Programmierung 4 Beispiel falls α leer oder β leer c[präfix α, präfix 2 β]= c[präfix, präfix 2 ] + falls end(α) =end(β) max{c[präfixα, präfix 2 ], c[präfix, präfix 2 β]} falls end(α) = end(β) c[springtime, printing] c[springtim, printing] c[springtime, printin] c[springti, printing] c[springtim, printin] c[springtim, printin] c[springtime, printi] c[springt, printing] c[springti, printin] c[springtim, printi] c[springtime, print]. Zachmann Informatik 2 SS Dynamische Programmierung 44 22

23 /9/ Berechnung der Werte c[i,j] def lcs_length( x, y ): for i in range(, len(x) ): c[i,] = for j in range(, len(y) ): c[,j] = for i in range(, len(x) ): for j in range(, len(y) ): if x[i] == y[j]: c[i,j] = c[i-,j-] + b[i,j] = "NW" else: if c[i-,j] >= c[i,j-]: c[i,j] = c[i-,j] b[i,j] = "N" else: c[i,j] = c[i,j-] b[i,j] = "W" return b, c. Zachmann Informatik 2 SS Dynamische Programmierung 45 Beispiele für die Tabellen c[i,j] und b[i,j] j i y j B D A B A x i A 2 B 4 B 5 D A 7 B b c. Zachmann Informatik 2 SS Dynamische Programmierung 4 2

24 /9/ Laufzeit Lemma: Der Algorithmus lcs_length hat die Laufzeit O(nm), wenn die Folgen X und Y die Längen n bzw. m haben.. Zachmann Informatik 2 SS Dynamische Programmierung 47 Verwandte Probleme Es gibt viele Probleme, die sehr ähnlich zum LSP sind Z.B. die Edit-Distanz (ein anderes Maß für den Abstand/Distanz 2-er Strings): egeben 2 Strings A, B Aufgabe: welches ist die minimale Folge von elementaren Editieroperationen, um A in B zu überführen? Zugelassene Operationen: Zeichen löschen und einfügen Beispiele: springtime ncaa tournament basketball printing north carolina krzyzewski. Zachmann Informatik 2 SS Dynamische Programmierung 48 24

25 /9/ Approximative Stringsuche: egeben Text T und String S Finde dasjenige Teilstück T[i:j], das am ähnlichsten zu S ist (von allen anderen Teilstücken T[i':j']) Anwendungen: DNA-Sequence-Alignment, oogle, Spell-hecker. Zachmann Informatik 2 SS Dynamische Programmierung 49 Memoisierung im Top-down-Ansatz "Memo" = edächtnis Üblicherweise ist Formulierung der optimalen Lösung rekursiv, aber Algorithmus geht bottom-up vor Memoization [sic] = Technik in der dynamischen Programmierung, falls ein Bottom-up-Algorithmus nicht klar ist Notizblock-Methode zur Beschleunigung einer rekursiven Problemlösung: Algo bleibt rekursiv Ein Teilproblem wird nur beim ersten Auftreten gelöst Die Lösung wird in einer Tabelle (z.b. Hash Table) gespeichert und bei jedem späteren Auftreten desselben Teilproblems (d.h., rekursiver Aufruf mit denselben Parametern) wird die Lösung (ohne erneute Rechnung!) in der Tabelle nachgeschlagen. Zachmann Informatik 2 SS Dynamische Programmierung 5 25

26 /9/ Beispiel: MMP mittels Memoisierung def mcm_mem_rek( p, i, j ): if i == j: return if m[i,j] < : return m[i,j] for k in range( i,j ): q = p[i-]*p[k]*p[j] + \ mcm_rek(p,i,k) + \ mcm_rek(p, k+, j) if q < m[i,j]: m[i,j] = q return m[i,j] # check first, # if already computed def mcm_mem( p ): for i in range(, len(p)+ ): for j in range(, len(p)+ ): m[i,j] = return mcm_mem_rek( p,, len(p)- ) # z.b. maxint. Zachmann Informatik 2 SS Dynamische Programmierung 5 Aufwand Behauptung: Zur Berechnung aller Einträge m[i,j] mit Hilfe von mcm_mem_rek genügen insgesamt O(n ) Schritte Beweis: O(n 2 ) Einträge jedes Element m[i,j] wird einmal eingetragen j n i n jeder Eintrag m[i,j] wird zur Berechnung von weniger als 2n weiteren Einträgen m[i',j'] herangezogen, wobei i = i' j < j' oder i > i' j= j' Bemerkungen zum MMP Es gibt einen Algorithmus mit linearer Laufzeit O(n), der eine Klammerung mit Multiplikationsaufwand.55. M opt findet Es gibt einen Algorithmus mit Laufzeit O(n log n), der eine optimale Klammerung findet. Zachmann Informatik 2 SS Dynamische Programmierung 52 2

27 /9/ Zusammenfassung Dynamische Programmierung = Algorithmenentwurfstechnik, die oft bei Optimierungsproblemen angewandt wird Man muß eine Menge von Entscheidungen treffen, die Bedingungen unterliegen, um eine optimale (min. / max.) Lösung zu erlangen Es kann verschiedene Lösungswege geben Allgemein einsetzbar bei rekursiven Verfahren, wenn Teillösungen (von Unterproblemen) mehrfach benötigt werden Lösungsansatz: Tabellieren von Teilergebnissen Vergleich mit Divide-and-onquer: Ähnlich: DP berechnet Lösung eines Problems aus Lösungen von Teilproblemen Anders: Teilprobleme werden oft nicht rekursiv gelöst sondern iterativ, beginnend mit den Lösungen der kleinsten Teilprobleme (bottom-up). Zachmann Informatik 2 SS Dynamische Programmierung 5 Zwei verschiedene Ansätze Bottom-up + kontrollierte effiziente Tabellenverwaltung, spart Zeit + spezielle optimierte Berechnungsreihenfolge, spart Platz - weitgehende Umcodierung des Originalprogramms erforderlich - möglicherweise Berechnung nicht benötigter Werte Top-down (Memoisierung, Notizblockmethode) + Originalprogramm wird nur gering oder nicht verändert + nur tatsächlich benötigte Werte werden berechnet - eventuell unnötige rekursive Aufrufe - Tabellengröße oft nicht optimal. Zachmann Informatik 2 SS Dynamische Programmierung 54 27

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

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

Informatik II Dynamische Programmierung

Informatik II Dynamische Programmierung lausthal Iformatik II Dyamische Programmierug. Zachma lausthal Uiversity, ermay zach@i.tu-clausthal.de Zweite Techik für de Algorithmeetwurf Zum Name: "Dyamische " hat ichts mit "Dyamik" zu tu, soder mit

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

Informatik II Greedy-Algorithmen

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

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

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

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

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

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

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

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

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen lausthal Informatik II Komplexität von Algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Leistungsverhalten von Algorithmen Speicherplatzkomplexität: Wird primärer & sekundärer

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

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

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

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

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

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

In diesem Abschnitt betrachten wir nur quadratische Matrizen mit Komponenten aus einem Körper K, also A K n n für ein n N. Wenn (mit einem n > 1)

In diesem Abschnitt betrachten wir nur quadratische Matrizen mit Komponenten aus einem Körper K, also A K n n für ein n N. Wenn (mit einem n > 1) 34 Determinanten In diesem Abschnitt betrachten wir nur quadratische Matrizen mit Komponenten aus einem Körper K, also A K n n für ein n N Wenn (mit einem n > 1) a 11 a 12 a 1n a 21 a 22 a 2n A =, (1)

Mehr

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) 5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!

Mehr

Informatik B von Adrian Neumann

Informatik B von Adrian Neumann Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000

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

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

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

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

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48 Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48 Grundbegriffe der Informatik Einheit 12: Erste Algorithmen in Graphen Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009

Mehr

Kostenmaße. F3 03/04 p.188/395

Kostenmaße. F3 03/04 p.188/395 Kostenmaße Bei der TM nur ein Kostenmaß: Ein Schritt (Konfigurationsübergang) kostet eine Zeiteinheit; eine Bandzelle kostet eine Platzeinheit. Bei der RAM zwei Kostenmaße: uniformes Kostenmaß: (wie oben);

Mehr

37 Gauß-Algorithmus und lineare Gleichungssysteme

37 Gauß-Algorithmus und lineare Gleichungssysteme 37 Gauß-Algorithmus und lineare Gleichungssysteme 37 Motivation Lineare Gleichungssysteme treten in einer Vielzahl von Anwendungen auf und müssen gelöst werden In Abschnitt 355 haben wir gesehen, dass

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen Fortgeschrittene Netzwerk- und Graph-Algorithmen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester

Mehr

Datenstrukturen und Algorithmen

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

Mehr

11. Rekursion, Komplexität von Algorithmen

11. Rekursion, Komplexität von Algorithmen 11. Rekursion, Komplexität von Algorithmen Teil 2 Java-Beispiele: Power1.java Hanoi.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 23. Nov. 2015 Anwendung der Rekursion Rekursiv

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

4. ggt und kgv. Chr.Nelius: Zahlentheorie (SS 2007) 9

4. ggt und kgv. Chr.Nelius: Zahlentheorie (SS 2007) 9 Chr.Nelius: Zahlentheorie (SS 2007) 9 4. ggt und kgv (4.1) DEF: Eine ganze Zahl g heißt größter gemeinsamer Teiler (ggt) zweier ganzer Zahlen a und b, wenn gilt: GGT 0 ) g 0 GGT 1 ) g a und g b GGT 2 )

Mehr

Computer-Graphik I Verallgemeinerte Baryzentrische Koordinaten

Computer-Graphik I Verallgemeinerte Baryzentrische Koordinaten lausthal omputer-raphik I Verallgemeinerte Baryzentrische Koordinaten. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Verallgemeinerungen der baryzentr. Koord. 1. Was macht man im 2D bei

Mehr

damit hätten wir nach Ende der Schleife: "a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge".

damit hätten wir nach Ende der Schleife: a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge. Korrektheit Invariante: a[0 k-1] enthält nur Elemente aus a[0 k-1], aber in sortierter Reihenfolge Terminierung: Die Schleife endet mit k=n def insertionsort(a): for k in range( 1, len(a) ): while i >

Mehr

3 Elementare Umformung von linearen Gleichungssystemen und Matrizen

3 Elementare Umformung von linearen Gleichungssystemen und Matrizen 3 Elementare Umformung von linearen Gleichungssystemen und Matrizen Beispiel 1: Betrachte das Gleichungssystem x 1 + x 2 + x 3 = 2 2x 1 + 4x 2 + 3x 3 = 1 3x 1 x 2 + 4x 3 = 7 Wir formen das GLS so lange

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

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

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

Mehr

Ü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

Satz 16 (Multiplikationssatz)

Satz 16 (Multiplikationssatz) Häufig verwendet man die Definition der bedingten Wahrscheinlichkeit in der Form Damit: Pr[A B] = Pr[B A] Pr[A] = Pr[A B] Pr[B]. (1) Satz 16 (Multiplikationssatz) Seien die Ereignisse A 1,..., A n gegeben.

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Suchen in Datenmengen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v.

Mehr

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP Kap..1 Heuristiken Kap.. Approximative Algorithmen und Gütegarantien Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 3. VO DAP SS 008 14. Juli 009 Überblick

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Tanya Braun (Übungen) sowie viele Tutoren Danksagung Animationen wurden übernommen aus dem Kurs:

Mehr

Resolutionsalgorithmus

Resolutionsalgorithmus 112 Resolutionskalkül Mit dem Begriff Kalkül bezeichnet man eine Menge von syntaktischen Umformungsregeln, mit denen man semantische Eigenschaften der Eingabeformel herleiten kann. Für den Resolutionskalkül:

Mehr

Algorithmische Bioinformatik

Algorithmische Bioinformatik Algorithmische Bioinformatik Effiziente Berechnung des Editabstands Dynamische Programmierung Ulf Leser Wissensmanagement in der Bioinformatik Inhalt dieser Vorlesung Rekursive Definition des Editabstands

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Matrizen, Determinanten, lineare Gleichungssysteme

Matrizen, Determinanten, lineare Gleichungssysteme Matrizen, Determinanten, lineare Gleichungssysteme 1 Matrizen Definition 1. Eine Matrix A vom Typ m n (oder eine m n Matrix, A R m n oder A C m n ) ist ein rechteckiges Zahlenschema mit m Zeilen und n

Mehr

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

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

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung

SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung Martin Dietzfelbinger Juni/Juli 2011 FG KTuEA, TU Ilmenau Effiziente Algorithmen SS11 Kapitel 5 Kapitel 5: Dynamische Programmierung Typische

Mehr

Vorlesung 4 BETWEENNESS CENTRALITY

Vorlesung 4 BETWEENNESS CENTRALITY Vorlesung 4 BETWEENNESS CENTRALITY 101 Aufgabe! Szenario: Sie arbeiten bei einem sozialen Online-Netzwerk. Aus der Netzwerk-Struktur Ihrer Benutzer sollen Sie wichtige Eigenschaften extrahieren. [http://www.fahrschule-vatterodt.de/

Mehr

Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion

Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion Saskia Klaus 07.10.016 1 Motivation In den ersten beiden Vorträgen des Vorkurses haben wir gesehen, wie man aus schon bekannten Wahrheiten

Mehr

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

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Rekursion Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Rekursion Rekursion Neue Denkweise Wikipedia: Als Rekursion bezeichnet man den Aufruf

Mehr

Suchen. lineare Suche, binäre Suche, divide and conquer, rekursive und iterative Algorithmen, geordnete Daten, Comparable

Suchen. lineare Suche, binäre Suche, divide and conquer, rekursive und iterative Algorithmen, geordnete Daten, Comparable Suchen lineare Suche, binäre Suche, divide and conquer, rekursive und iterative Algorithmen, geordnete Daten, Comparable Welche Nummer hat Herr Meier? Enthält Einträge (Elemente) der Form : Name, Vorname

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen 1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

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

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). 8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame

Mehr

Kapitel 3. Konvergenz von Folgen und Reihen

Kapitel 3. Konvergenz von Folgen und Reihen Kapitel 3. Konvergenz von Folgen und Reihen 3.1. Normierte Vektorräume Definition: Sei V ein Vektorraum (oder linearer Raum) über (dem Körper) R. Eine Abbildung : V [0, ) heißt Norm auf V, falls die folgenden

Mehr

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

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der

Mehr

Alignment-Verfahren zum Vergleich biologischer Sequenzen

Alignment-Verfahren zum Vergleich biologischer Sequenzen zum Vergleich biologischer Sequenzen Hans-Joachim Böckenhauer Dennis Komm Volkshochschule Zürich. April Ein biologisches Problem Fragestellung Finde eine Methode zum Vergleich von DNA-Molekülen oder Proteinen

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung

Mehr

Technische Universität München Zentrum Mathematik. Übungsblatt 7

Technische Universität München Zentrum Mathematik. Übungsblatt 7 Technische Universität München Zentrum Mathematik Mathematik (Elektrotechnik) Prof. Dr. Anusch Taraz Dr. Michael Ritter Übungsblatt 7 Hausaufgaben Aufgabe 7. Für n N ist die Matrix-Exponentialfunktion

Mehr

Informatik II Backtracking

Informatik II Backtracking 6//0 lausthal Informatik II Backtracking. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Allgemeines Problem-Statement egeben: Eine Reihe von Variablen, für die man eine Belegung sucht onstraints

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

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

13. Der diskrete Logarithmus

13. Der diskrete Logarithmus 13. Der diskrete Logarithmus 13.1. Definition. Sei p eine Primzahl. Wie wir in 9 bewiesen haben, ist die multiplikative Gruppe F p des Körpers F p = Z/p zyklisch. Sei g ein erzeugendes Element von F p

Mehr

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri & Stefan Thater Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Winter 2010/11 Übersicht Kurze Wiederholung: while Sammeltypen (kurz

Mehr

Probabilistische Primzahltests

Probabilistische Primzahltests 23.01.2006 Motivation und Überblick Grundsätzliches Vorgehen Motivation und Überblick Als Primzahltest bezeichnet man ein mathematisches Verfahren, mit dem ermittelt wird, ob eine gegebene Zahl eine Primzahl

Mehr

Lineare Abhängigkeit

Lineare Abhängigkeit Lineare Abhängigkeit Vorbemerkung. Es sei X eine Menge. Eine Familie von Elementen von X ist eine Abbildung I X, i x i. I heißt dabei Indexmenge. Man verwendet dabei oft die Schreibweise (x i ) oder (x

Mehr

Vorkurs: Mathematik für Informatiker

Vorkurs: Mathematik für Informatiker Vorkurs: Mathematik für Informatiker Teil 3 Wintersemester 2016/17 Steven Köhler mathe@stevenkoehler.de mathe.stevenkoehler.de 2 c 2016 Steven Köhler Wintersemester 2016/17 Inhaltsverzeichnis Teil 1 Teil

Mehr

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise) WS 2014/15 Diskrete Strukturen Kapitel 2: Grundlagen (Beweise) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_14

Mehr

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle Kapitel 9 Algorithm. Geometrie Kürzeste Abstände Konvexe Hülle Überblick Teilgebiet der Informatik, in dem es um die Entwicklung effizienter Algorithmen und die Bestimmung der algorithmischen Komplexität

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

15. Algorithmus der Woche Das Rucksackproblem Die Qual der Wahl bei zu vielen Möglichkeiten

15. Algorithmus der Woche Das Rucksackproblem Die Qual der Wahl bei zu vielen Möglichkeiten 15. Algorithmus der Woche Das Rucksackproblem Die Qual der Wahl bei zu vielen Möglichkeiten Autoren Rene Beier, MPI Saarbrücken Berthold Vöcking, RWTH Aachen In zwei Monaten startet die nächste Rakete

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

Informatik I Komplexität von Algorithmen

Informatik I Komplexität von Algorithmen Leistungsverhalten von Algorithmen Informatik I Komplexität von Algorithmen G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Speicherplatzkomplexität: Wird primärer & sekundärer Speicherplatz

Mehr

Mathematik II für Studierende der Informatik. Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2015

Mathematik II für Studierende der Informatik. Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2015 und Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2015 4. April 2016 Zu der Vorlesung wird ein Skript erstellt, welches auf meiner Homepage veröffentlicht wird: http://www.math.uni-hamburg.de/home/geschke/lehre.html

Mehr

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik Grundlagen der Programmierung 1 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2 Softwaretechnik Prof. Dr. O. Drobnik Professur Architektur und Betrieb verteilter Systeme Institut für

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

Donnerstag, 11. Dezember 03 Satz 2.2 Der Name Unterraum ist gerechtfertigt, denn jeder Unterraum U von V ist bzgl.

Donnerstag, 11. Dezember 03 Satz 2.2 Der Name Unterraum ist gerechtfertigt, denn jeder Unterraum U von V ist bzgl. Unterräume und Lineare Hülle 59 3. Unterräume und Lineare Hülle Definition.1 Eine Teilmenge U eines R-Vektorraums V heißt von V, wenn gilt: Unterraum (U 1) 0 U. (U ) U + U U, d.h. x, y U x + y U. (U )

Mehr

Teile und Herrsche Teil 2

Teile und Herrsche Teil 2 Teile und Herrsche Teil 2 binär Suchen und schnell Multiplizieren Markus Fleck Manuel Mauky Hochschule Zittau/Görlitz 19. April 2009 Suchen in langen Listen (0, 1, 2, 7, 8, 9, 9, 13, 13, 14, 14, 14, 16,

Mehr

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Robert Elsässer u.v.a. Paderborn, 29. Mai 2008 Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Aufgabe 1 (6 Punkte): Zunächst sollte klar sein, daß ein vollständiger Binärer

Mehr

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) : 2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine

Mehr

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum

Mehr

Universität des Saarlandes

Universität des Saarlandes Universität des Saarlandes FR 6.2 Informatik Prof. Dr. Kurt Mehlhorn WiSe 2015/2016 Übungen zu Ideen der Informatik http://www.mpi-inf.mpg.de/departments/algorithms-complexity/teaching/winter15/ideen/

Mehr

Abschnitt 18: Effizientes Suchen in Mengen

Abschnitt 18: Effizientes Suchen in Mengen Abschnitt 18: Effizientes Suchen in Mengen 18. Effizientes Suchen in Mengen 18.1 Vollständig ausgeglichene binäre Suchbäume 18.2 AVL-Bäume 18.3 Operationen auf AVL-Bäumen 18.4 Zusammenfassung 18 Effizientes

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

Elemente der Analysis II

Elemente der Analysis II Elemente der Analysis II Kapitel 3: Lineare Abbildungen und Gleichungssysteme Informationen zur Vorlesung: http://www.mathematik.uni-trier.de/ wengenroth/ J. Wengenroth () 15. Mai 2009 1 / 35 3.1 Beispiel

Mehr

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs

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

Besteht eine Matrix nur aus einer Spalte (Zeile), so spricht man auch von einem Spaltenvektor (Zeilenvektor)

Besteht eine Matrix nur aus einer Spalte (Zeile), so spricht man auch von einem Spaltenvektor (Zeilenvektor) Matrizenrechnung. Matrizen Matrizen sind bereits im Kapitel Lineare Gleichungssysteme aufgetreten. Unter einer (m n) -Matrix A verstehen wir ein rechteckiges Zahlenschema mit m Zeilen und n Spalten. Der.

Mehr

Binary Decision Diagrams (Einführung)

Binary Decision Diagrams (Einführung) Binary Decision Diagrams (Einführung) Binary Decision Diagrams (BDDs) sind bestimmte Graphen, die als Datenstruktur für die kompakte Darstellung von booleschen Funktionen benutzt werden. BDDs wurden von

Mehr

Lineare Gleichungssysteme - Grundlagen

Lineare Gleichungssysteme - Grundlagen Lineare Gleichungssysteme - Grundlagen Betrachtet wird ein System linearer Gleichungen (im deutschen Sprachraum: lineares Gleichungssystem mit m Gleichungen für n Unbekannte, m, n N. Gegeben sind m n Elemente

Mehr

Kapitel 2: Mathematische Grundlagen

Kapitel 2: Mathematische Grundlagen [ Computeranimation ] Kapitel 2: Mathematische Grundlagen Prof. Dr. Stefan M. Grünvogel stefan.gruenvogel@fh-koeln.de Institut für Medien- und Phototechnik Fachhochschule Köln 2. Mathematische Grundlagen

Mehr

Rechnerische Komplexität

Rechnerische Komplexität Proseminar Effiziente Algorithmen SS 2002 Rechnerische Komplexität Ulrike Krönert (34180) 0. Inhalt 1. Einführung 2. Algorithmen und Komplexität 2.1. Algorithmen 2.2. Laufzeitabschätzung 2.3. Polynomialzeit

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