20. Dynamic Programming II

Ähnliche Dokumente
Approximationsalgorithmen

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Das Lastverteilungsproblem

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

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

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

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

NP-Vollständigkeit. Krautgartner Martin ( ) Markgraf Waldomir ( ) Rattensberger Martin ( ) Rieder Caroline ( )

Approximationsalgorithmen: Klassiker I. Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling

Dynamisches Programmieren - Problemstruktur

Übung zur Vorlesung Berechenbarkeit und Komplexität

Sortierverfahren für Felder (Listen)

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Kapitel 5: Dynamisches Programmieren Gliederung

13. Binäre Suchbäume

Das Dilemma des Einbrechers Wer die Wahl hat, hat die Qual!

Approximationsalgorithmen

Rechnerische Komplexität

Optimierungsprobleme. B. Langfeld, M. Ritter, B. Wilhelm Diskrete Optimierung: Fallstudien aus der Praxis

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Kapiteltests zum Leitprogramm Binäre Suchbäume

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

Datenstrukturen & Algorithmen

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

Die Klassen P und NP. Dr. Eva Richter. 29. Juni 2012

Algorithmen II Vorlesung am

Nichtdeterministische Platzklassen

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert.

abgeschlossen unter,,,, R,

16. All Pairs Shortest Path (ASPS)

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Alles zu seiner Zeit Projektplanung heute

Übrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus?

Algorithmentheorie Randomisierung. Robert Elsässer

Randomisierte Algorithmen

4 Greedy-Algorithmen (gierige Algorithmen)

3. Musterlösung. Problem 1: Boruvka MST

Wiederholung zu Flüssen

Algorithmen und Datenstrukturen 1

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

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

Abschnitt: Algorithmendesign und Laufzeitanalyse

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. SS 06

Programmieren, Algorithmen und Datenstrukturen II 8. Allgemeine Lösungsverfahren

Komplexitätstheorie Einführung und Überblick (Wiederholung)

Komplexita tstheorie eine erste Ubersicht. KTV bedeutet: Details erfahren Sie in der Komplexitätstheorie-Vorlesung.

Kap. 4.2: Binäre Suchbäume

Heuristiken im Kontext von Scheduling

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

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

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

Probeklausur zur Vorlesung Berechenbarkeit und Komplexität

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

Algorithmen und Datenstrukturen 1 Kapitel 3

Laufzeit und Komplexität

Informatik II, SS 2014

Datenstrukturen und Algorithmen

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn

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

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Technische Universität München Zentrum Mathematik Propädeutikum Diskrete Mathematik. Weihnachtsblatt

Informatik II Greedy-Algorithmen

Dynamische Optimierung. Kapitel 4. Dynamische Optimierung. Peter Becker (H-BRS) Operations Research II Wintersemester 2014/ / 206

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

Die Komplexitätsklassen P und NP

Einstieg in die Informatik mit Java

(27 - Selbstanordnende lineare Listen)

Einführung in Heuristische Suche

Lösungsblatt zur Vorlesung. Kryptanalyse WS 2009/2010. Blatt 6 / 23. Dezember 2009 / Abgabe bis spätestens 20. Januar 2010, 10 Uhr (vor der Übung)

Scheduling und Lineare ProgrammierungNach J. K. Lenstra, D. B. Shmoys und É.

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

9.2 Invertierbare Matrizen

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Datenstrukturen und Algorithmen

Approximations-Algorithmen

Programmiertechnik II

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

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Routing Algorithmen. Begriffe, Definitionen

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Streaming Data: Das Modell

Programmierung und Modellierung

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Theoretische Grundlagen der Informatik

Dynamische Programmierung

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Theoretische Informatik 1

Transkript:

536 20. Dynamic Programming II Subset Sum Problem, Rucksackproblem, Greedy Algorithmus, Lösungen mit dynamischer Programmierung, FPTAS, Optimaler Suchbaum [Ottman/Widmayer, Kap. 7.2, 7.3, 5.7, Cormen et al, Kap. 15,35.5]

Aufgabe 537 Hannes und Niklas sollen eine grosse Menge Geschenke unterschiedlichen monetären Wertes bekommen. Die Eltern wollen die Geschenke vorher so gerecht aufteilen, dass kein Streit eintritt. Frage: wie geht das? Antwort: wer Kinder hat, der weiss dass diese Aufgabe keine Lösung hat.

Realistischere Aufgabe 538 Teile obige Gegenstände so auf zwei Mengen auf, dass beide Mengen den gleichen Wert haben. Eine Lösung:

539 Subset Sum Problem Seien n N Zahlen a 1,..., a n N gegeben. Ziel: Entscheide, ob eine Auswahl I {1,..., n} existiert mit a i = a i. i I i {1,...,n}\I

Naiver Algorithmus 540 Prüfe für jeden Bitvektor b = (b 1,..., b n ) {0, 1} n, ob n n? b i a i = (1 b i )a i i=1 Schlechtester Fall: n Schritte für jeden der 2 n Bitvektoren b. Anzahl Schritte: O(n 2 n ). i=1

541 Algorithmus mit Aufteilung Zerlege Eingabe in zwei gleich grosse Teile: a 1,..., a n/2 und a n/2+1,..., a n. Iteriere über alle Teilmengen der beiden Teile und berechne Teilsummen S k 1,..., S k 2 n/2 (k = 1, 2). Sortiere die Teilsummen: S k 1 S k 2 S k 2 n/2. Prüfe ob es Teilsummen gibt, so dass S 1 i + S2 j = 1 2 n i=1 a i =: h Beginne mit i = 1, j = 2 n/2. Gilt S 1 i + S 2 j = h dann fertig Gilt S 1 i + S 2 j > h dann j j 1 Gilt S 1 i + S 2 j < h dann i i + 1

Beispiel 542 Menge {1, 6, 2, 3, 4} mit Wertesumme 16 hat 32 Teilmengen. Aufteilung in {1, 6}, {2, 3, 4} ergibt folgende 12 Teilmengen mit Wertesummen: {1, 6} {2, 3, 4} {} {1} {6} {1, 6} {} {2} {3} {4} {2, 3} {2, 4} {3, 4} {2, 3, 4} 0 1 6 7 0 2 3 4 5 6 7 9 Eine Lösung: {1, 3, 4}

543 Analyse Teilsummegenerierung in jedem Teil: O(2 n/2 n). Sortieren jeweils: O(2 n/2 log(2 n/2 )) = O(n2 n/2 ). Zusammenführen: O(2 n/2 ) Gesamtlaufzeit ) O (n 2 n/2 = O ( ( ) n ) n 2. Wesentliche Verbesserung gegenüber ganz naivem Verfahren aber immer noch exponentiell!

Dynamische Programmierung Aufgabe: sei z = 1 2 n i=1 a i. Suche Auswahl I {1,..., n}, so dass i I a i = z. DP-Tabelle: [0,..., n] [0,..., z]-tabelle T mit Wahrheitseinträgen. T [k, s] gibt an, ob es eine Auswahl I k {1,..., k} gibt, so dass i I k a i = s. Initialisierung: T [0, 0] = true. T [0, s] = false für s > 1. Berechnung: T [k, s] { T [k 1, s] T [k 1, s] T [k 1, s a k ] für aufsteigende k und innerhalb k dann s. falls s < a k falls s a k 544

545 Beispiel {1, 6, 2, 5} summe s 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 k 0 1 6 2 5 Auslesen der Lösung: wenn T [k, s] = T [k 1, s] dann a k nicht benutzt und bei T [k 1, s] weiterfahren, andernfalls a k benutzt und bei T [k 1, s a k ] weiterfahren.

Rätselhaftes 546 Der Algorithmus benötigt O(n z) Elementaroperationen. Was ist denn jetzt los? Hat der Algorithmus plötzlich polynomielle Laufzeit?

Aufgelöst 547 Der Algorithmus hat nicht unbedingt eine polynomielle Laufzeit. z ist eine Zahl und keine Anzahl! Eingabelänge des Algorithmus = Anzahl Bits zur vernünftigen Repräsentation der Daten. Bei der Zahl z wäre das ζ = log z. Also: Algorithmus benötigt O(n 2 ζ ) Elementaroperationen und hat exponentielle Laufzeit in ζ. Sollte z allerdings polynomiell sein in n, dann hat der Algorithmus polynomielle Laufzeit in n. Das nennt man pseudopolynomiell.

NP Man weiss, dass der Subset-Sum Algorithmus zur Klasse der NP-vollständigen Probleme gehört (und somit NP-schwer ist). P: Menge aller in Polynomialzeit lösbarer Probleme. NP: Menge aller Nichtdeterministisch in Polynomialzeit lösbarer Probleme. Implikationen: NP enthält P. Probleme in Polynomialzeit verifizierbar. Unter der (noch?) unbewiesenen 27 Annahme, dass NP P, gibt es für das Problem keinen Algorithmus mit polynomieller Laufzeit. 27 Die bedeutenste ungelöste Frage der theoretischen Informatik! 548

Das Rucksackproblem Wir packen unseren Koffer und nehmen mit... Zahnbürste Hantelset Kaffemaschine Oh jeh zu schwer. Zahnbürste Luftballon Taschenmesser Ausweis Hantelset Zahnbürste Kaffemaschine Taschenmesser Ausweis Oh jeh zu schwer. Oh jeh zu schwer. Wollen möglichst viel mitnehmen. Manche Dinge sind uns aber wichtiger als andere. 549

550 Rucksackproblem (engl. Knapsack problem) Gegeben: Menge von n N Gegenständen {1,..., n}. Jeder Gegenstand i hat Nutzwert v i N und Gewicht w i N. Maximalgewicht W N. Bezeichnen die Eingabe mit E = (v i, w i ) i=1,...,n. Gesucht: eine Auswahl I {1,..., n} die i I v i maximiert unter i I w i W.

Gierige (engl. greedy) Heuristik 551 Sortiere die Gegenstände absteigend nach Nutzen pro Gewicht v i /w i : Permutation p mit v pi /w pi v pi+1 /w pi+1 Füge Gegenstände in dieser Reihenfolge hinzu (I I {p i }), sofern das zulässige Gesamtgewicht dadurch nicht überschritten wird. Das ist schnell: Θ(n log n) für Sortieren und Θ(n) für die Auswahl. Aber ist es auch gut?

Gegenbeispiel zur greedy strategy 552 v 1 = 1 w 1 = 1 v 1 /w 1 = 1 v 2 = W 1 w 2 = W v 2 /w 2 = W 1 W Greedy Algorithmus wählt {v 1 } mit Nutzwert 1. Beste Auswahl: {v 2 } mit Nutzwert W 1 und Gewicht W. Greedy kann also beliebig schlecht sein.

553 Dynamic Programming Unterteile das Maximalgewicht. Dreidimensionale Tabelle m[i, w, v] ( machbar ) aus Wahrheitswerten. m[i, w, v] = true genau dann wenn Auswahl der ersten i Teile existiert (0 i n) deren Gesamtgewicht höchstens w (0 w W ) und Nutzen mindestens v (0 v n i=1 v i) ist.

Berechnung der DP Tabelle 554 Initial m[i, w, 0] true für alle i 0 und alle w 0. m[0, w, v] false für alle w 0 und alle v > 0. Berechnung { m[i 1, w, v] m[i 1, w wi, v v m[i, w, v] i ] falls w w i und v v i m[i 1, w, v] sonst. aufsteigend nach i und für festes i aufsteigend nach w und für festes i und w aufsteigend nach v. Lösung: Grösstes v, so dass m[i, w, v] = true für ein i und w.

555 Beobachtung Nach der Definition des Problems gilt offensichtlich, dass für m[i, w, v] = true gilt: m[i, w, v] = true i i, m[i, w, v] = true w w, m[i, w, v ] = true v w. für m[i, w, v] = false gilt: m[i, w, v] = false i i, m[i, w, v] = false w w, m[i, w, v ] = false v w. Das ist ein starker Hinweis darauf, dass wir keine 3d-Tabelle benötigen.

DP Tabelle mit 2 Dimensionen Tabelleneintrag t[i, w] enthält statt Wahrheitswerten das jeweils grösste v, das erreichbar ist 28 mit den Gegenständen 1,..., i (0 i n) bei höchstem zulässigen Gewicht w (0 w W ). 28 So etwas ähnliches hätten wir beim Subset Sum Problem auch machen können, um die dünnbesetzte Tabelle etwas zu verkleinern 556

557 Berechnung Initial t[0, w] 0 für alle w 0. Berechnung t[i, w] { t[i 1, w] falls w < wi max{t[i 1, w], t[i 1, w w i ] + v i } sonst. aufsteigend nach i und für festes i aufsteigend nach w. Lösung steht in t[n, w]

Beispiel E = {(2, 3), (4, 5), (1, 1)} w 0 1 2 3 4 5 6 7 0 0 0 0 0 0 0 0 (2, 3) 0 0 3 3 3 3 3 3 i (4, 5) 0 0 3 3 5 5 8 8 (1, 1) 0 1 3 4 5 6 8 9 Auslesen der Lösung: wenn t[i, w] = t[i 1, w] dann Gegenstand i nicht benutzt und bei t[i 1, w] weiterfahren, andernfalls benutzt und bei t[i 1, s w i ] weiterfahren. 558

Analyse 559 Die beiden Algorithmen für das Rucksackproblem haben eine Laufzeit in Θ(n W n i=1 v i) (3d-Tabelle) und Θ(n W ) (2d-Tabelle) und sind beide damit pseudopolynomiell, liefern aber das bestmögliche Resultat. Der greedy Algorithmus ist sehr schnell, liefert aber unter Umständen beliebig schlechte Resultate. Im folgenden beschäftigen wir uns mit einer Lösung dazwischen.

Approximation 560 Sei ein ε (0, 1) gegeben. Sei I opt eine bestmögliche Auswahl. Suchen eine gültige Auswahl I mit v i (1 ε) v i. i I i I opt Summe der Gewichte darf W natürlich in keinem Fall überschreiten.

Andere Formulierung des Algorithmus 561 Bisher: Gewichtsschranke w maximaler Nutzen v Umkehrung: Nutzen v minimales Gewicht w Alternative Tabelle: g[i, v] gibt das minimale Gewicht an, welches eine Auswahl der ersten i Gegenstände (0 i n) hat, die einen Nutzen von genau v aufweist (0 v n i=1 v i).

562 Berechnung Initial g[0, 0] 0 g[0, v] (Nutzen v kann mit 0 Gegenständen nie erreicht werden.). Berechnung g[i, v] { g[i 1, v] falls v < vi min{g[i 1, v], g[i 1, v v i ] + w i } sonst. aufsteigend nach i und für festes i aufsteigend nach v. Lösung ist der grösste Index v mit g[n, v] w.

Beispiel E = {(2, 3), (4, 5), (1, 1)} v 0 1 2 3 4 5 6 7 8 9 0 (2, 3) 0 2 i (4, 5) 0 2 4 6 (1, 1) 0 1 2 3 4 5 6 7 Auslesen der Lösung: wenn g[i, v] = g[i 1, v] dann Gegenstand i nicht benutzt und bei g[i 1, v] weiterfahren, andernfalls benutzt und bei g[i 1, b v i ] weiterfahren. 563

Der Approximationstrick 564 Pseudopolynomielle Laufzeit wird polynomiell, wenn vorkommenden Werte in Polynom der Eingabelänge beschränkt werden können. Sei K > 0 geeignet gewählt. Ersetze die Nutzwerte v i durch gerundete Werte ṽ i = v i /K und erhalte eine neue Eingabe E = (w i, ṽ i ) i=1...n. Wenden nun den Algorithmus auf Eingabe E mit derselben Gewichtsschranke W an.

Idee 565 Beispiel K = 5 Eingabe Nutzwerte 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,..., 98, 99, 100 0, 0, 0, 0, 1, 1, 1, 1, 1, 2,..., 19, 19, 20 Offensichtlich weniger unterschiedliche Nutzwerte

Eigenschaften des neuen Algorithmus 566 Auswahl von Gegenständen aus E ist genauso gültig wie die aus E. Gewicht unverändert! Laufzeit des Algorithmus ist beschränkt durch O(n 2 v max /K) (v max := max{v i 1 i n})

Wie gut ist die Approximation? 567 Es gilt vi v i K K = K ṽ i v i K Sei I opt eine optimale Lösung von E. Damit i I opt v i n K I opt n (v i K) (K ṽ i ) = K i I opt i I opt K ṽ i = K ṽ i v i. I opt optimal i I opt i I opt i I opt i I opt ṽ i

Wahl von K 568 Forderung: v i (1 ε) v i. i I i I opt Ungleichung von oben: v i i I v i Also: K = ε opt n. i I opt i I opt v i n K

Wahl von K i I v i Wähle K = ε opt n. Die optimale Summe ist aber unbekannt, daher wählen wir K = ε v max n.29 Es gilt v max i I opt v i und somit K K und die Approximation ist sogar etwas besser. Die Laufzeit des Algorithmus ist beschränkt durch O(n 2 v max /K ) = O(n 2 v max /(ε v max /n)) = O(n 3 /ε). 29 Wir können annehmen, dass vorgängig alle Gegenstände i mit w i > W entfernt wurden. 569

FPTAS 570 Solche Familie von Algorithmen nennt man Approximationsschema: die Wahl von ε steuert Laufzeit und Approximationsgüte. Die Laufzeit O(n 3 /ε) ist ein Polynom in n und in 1 ε. Daher nennt man das Verfahren auch ein voll polynomielles Approximationsschema FPTAS - Fully Polynomial Time Approximation Scheme

Optimale binäre Suchbäume Gegeben: Suchwahrscheinlichkeiten p i zu jedem Schlüssel k i (i = 1,..., n) und q i zu jedem Intervall d i (i = 0,..., n) zwischen Suchschlüsseln eines binären Suchbaumes. n i=1 p i + n i=0 q i = 1. Gesucht: Optimaler Suchbaum T mit Schlüsseltiefen depth( ), welcher die erwarteten Suchkosten n n C(T ) = p i (depth(k i ) + 1) + q i (depth(d i ) + 1) minimiert. i=1 = 1 + n p i depth(k i ) + i=1 i=0 n q i depth(d i ) i=0 571

572 Beispiel Erwartete Häufigkeiten i 0 1 2 3 4 5 p i 0.15 0.10 0.05 0.10 0.20 q i 0.05 0.10 0.05 0.05 0.05 0.10

573 Beispiel k 2 k 2 k 1 k 5 k 1 k 4 d 0 d 1 k 4 d 5 d 0 d 1 k 3 k 5 k 3 d 4 d 2 d 3 d 4 d 5 Suchbaum mit erwarteten Kosten 2.8 d 2 d 3 Suchbaum mit erwarteten Kosten 2.75

Struktur eines optimalen Suchbaumes Teilsuchbaum mit Schlüsseln k i,..., k j und Intervallschlüsseln d i 1,..., d j muss für das entsprechende Teilproblem optimal sein. 30 Betrachten aller Teilsuchbäume mit Wurzel k r, i r j und optimalen Teilbäumen k i,..., k r 1 und k r+1,..., k j 30 Das übliche Argument: wäre er nicht optimal, könnte er durch eine bessere Lösung ersetzt werden, welche die Gesamtlösung verbessert. 574

Teilsuchbäume 575 k i k r k j d i 1 d j d i k i+1..j d j leerer linker Teilsuchbaum d i 1 k i..r 1 k r+1..j d r 1 d r d j Teilsuchbäume links und rechts nichtleer d i 1 k i..j 1 d j 1 leerer rechter Teilsuchbaum

576 Erwartete Suchkosten Sei depth T (k) die Tiefe des Knotens im Teilbaum T. Sei k r die Wurzel eines Teilbaumes T r und T Lr und T Rr der linke und rechte Teilbaum von T r. Dann depth T (k i ) = depth TLr (k i ) + 1, (i < r) depth T (k i ) = depth TRr (k i ) + 1, (i > r)

577 Erwartete Suchkosten Seien e[i, j] die Kosten eines optimalen Suchbaumes mit Knoten k i,..., k j. Basisfall: e[i, i 1], erwartete Suchkosten d i 1 Sei w(i, j) = j l=i p l + j l=i 1 q l. Wenn k r die Wurzel eines optimalen Teilbaumes mit Schlüsseln k i,..., k j, dann e[i, j] = p r + (e[i, r 1] + w(i, r 1)) + (e[r + 1, j] + w(r + 1, j)) mit w(i, j) = w(i, r 1) + p r + w(r + 1, j): e[i, j] = e[i, r 1] + e[r + 1, j] + w(i, j).

Dynamic Programming 578 e[i, j] = { q i 1 falls j = i 1, min i r j {e[i, r 1] + e[r + 1, j] + w[i, j]} falls i j

Berechnung Tabellen e[1... n + 1, 0... n], w[1... n + 1, 0... m], r[1... n, 1... n] Initial e[i, i 1] q i 1, w[i, i 1] q i 1 für alle 1 i n + 1. Berechnung w[i, j] = w[i, j 1] + p j + q j e[i, j] = min {e[i, r 1] + e[r + 1, j] + w[i, j]} i r j r[i, j] = arg min {e[i, r 1] + e[r + 1, j] + w[i, j]} i r j für Intervalle [i, j] mit ansteigenden Längen l = 1,..., n, jeweils für i = 1,..., n l + 1. Resultat steht in e[1, n], Rekonstruktion via r. Laufzeit Θ(n 3 ). 579

Beispiel i 0 1 2 3 4 5 p i 0.15 0.10 0.05 0.10 0.20 q i 0.05 0.10 0.05 0.05 0.05 0.10 j 0 0.05 1 0.45 0.10 2 0.90 0.40 0.05 3 1.25 0.70 0.25 0.05 4 1.75 1.20 0.60 0.30 0.05 5 2.75 2.00 1.30 0.90 0.50 0.10 e 1 2 3 4 5 6 i j 0 0.05 1 0.30 0.10 w 2 0.45 0.25 0.05 3 0.55 0.35 0.15 0.05 4 0.70 0.50 0.30 0.20 0.05 5 1.00 0.80 0.60 0.50 0.35 0.10 1 2 3 4 5 6 i j 1 1 2 1 2 r 3 2 2 3 4 2 2 4 4 5 2 4 5 5 5 1 2 3 4 5 i 580