Informatik II Dynamische Programmierung
|
|
- Karoline Heidrich
- vor 6 Jahren
- Abrufe
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
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
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale
MehrInformatik 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
MehrEntscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?
Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum
MehrInformatik 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:
MehrProgrammierung 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
MehrAlgorithmen und Datenstrukturen 1 Kapitel 3
Algorithmen und Datenstrukturen 1 Kapitel 3 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 3.6 Dynamische Programmierung Die rekursive Problemzerlegung kann
MehrDynamische 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
MehrDynamisches 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)
MehrDynamische 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
MehrDynamische 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
Mehr5.4 Das Rucksackproblem
Problemstellung: 5.4 Das Rucksackproblem Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke b. Aufgabe: Packe die Objekte in einen Rucksack von Volumen
MehrAchtung: 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
MehrKomplexitä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
MehrAlgorithmische 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
MehrDynamische Programmierung
Dynamische Programmierung Hannes Schwarz - WS-06/07 Hannes.Schwarz@uni-konstanz.de Getting Ready for the ACM Programming Contest Übersicht Übersicht Was ist dynamische Programmierung? Entwicklung eines
MehrRandomisierte 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
MehrOptimierung. 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
MehrEffiziente 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)
Mehr16. 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
MehrIn 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)
Mehr5.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!
MehrInformatik 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
MehrBinä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
Mehr11 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
MehrBabeș-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
MehrKomplexitä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
MehrAm 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
MehrKostenmaß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);
Mehr37 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
MehrFortgeschrittene 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
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:
Mehr11. 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
MehrAbgabe: (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,
Mehr4. 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 )
MehrComputer-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
Mehrdamit 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 >
Mehr3 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
MehrAbschnitt: 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
Mehr11. Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P
11 Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P 11 Woche: Turingmaschinen, Entscheidbarkeit, P 239/ 333 Einführung in die NP-Vollständigkeitstheorie
MehrÜ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.
MehrSatz 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.
MehrEinfü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
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)
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
MehrAlgorithmen 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:
MehrResolutionsalgorithmus
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:
MehrAlgorithmische Bioinformatik
Algorithmische Bioinformatik Effiziente Berechnung des Editabstands Dynamische Programmierung Ulf Leser Wissensmanagement in der Bioinformatik Inhalt dieser Vorlesung Rekursive Definition des Editabstands
MehrProgrammiertechnik 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
MehrMatrizen, 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
MehrS=[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
MehrKapitel 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:
MehrSS11 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
MehrVorlesung 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/
MehrVorkurs 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
MehrBabeș-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
MehrSuchen. 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
MehrKapitel 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:
MehrEinstieg 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
MehrAlle 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
MehrKapitel 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
Mehr1. 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
MehrAlignment-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
MehrGrundlagen 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
MehrTechnische 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
MehrInformatik 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
MehrSeminar ü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
MehrGrundlagen 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.
Mehr13. 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
MehrProgrammierkurs 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
MehrProbabilistische 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
MehrLineare 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
MehrVorkurs: 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
MehrDiskrete 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
MehrKapitel 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
MehrProgrammieren 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
Mehr15. 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
MehrRanking 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
MehrInformatik 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
MehrMathematik 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
MehrTeil 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
Mehr13. 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),
MehrDonnerstag, 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 )
MehrTeile 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,
MehrBeispiellö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
Mehr2 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
MehrInformatik 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
MehrUniversitä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/
MehrAbschnitt 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
MehrGliederung. 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
MehrElemente 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
MehrKapitel 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
MehrDatenbankanwendung. 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
MehrAlgorithmen & 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
MehrBesteht 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.
MehrBinary 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
MehrLineare 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
MehrKapitel 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
MehrRechnerische 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
MehrKapitel 5: Dynamisches Programmieren Gliederung
Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen
Mehr