Algorithmen und Datenstrukturen I - Strategien der algorithmischen Problemlösung -
|
|
- Alexa Adenauer
- vor 5 Jahren
- Abrufe
Transkript
1 Algorithmen und Datenstrukturen I - Strategien der algorithmischen Problemlösung - Thies Pfeiffer Technische Fakultät tpfeiffe@techfak.uni-bielefeld.de Vorlesung, Universität Bielefeld, Winter 2012/ / 104
2 Kapitel 4 - Strategien der algorithmischen Problemlösung 1 Strategien 2 Strukturelle Rekursion 3 Divide and Conquer 4 Brute Force 5 Greedy 6 Dynamische Programmierung 2 / 104
3 Kapitel 4: Strategien der algorithmischen Problemlösung Ziele des Kapitels Hier werden an einfachen Beispielen verschiedene Strategien erklärt, die zur Lösung eines wohldefinierten algorithmischen Problems benutzt werden können. In diesem Kapitel nehmen wir an, dass wir die Probleme der Modellierung (Kapitel 2) bereits erfolgreich hinter uns gelassen haben. 3 / 104
4 Unsere Beispiele sind einfach, um die Strategien in Reinform darzustellen. Für umfangreichere Aufgaben werden in der Regel Kombinationen und Mischformen der Strategien eingesetzt. Die Nutzung dieser Strategien ist vergleichbar mit dem Dreisatz: Wer das Rechnen mit Proportionen einmal verstanden hat, wendet bei Bedarf eine Variante des Dreisatzes an, ohne explizit an ein Schema zu denken. Zusammen mit den Strategien betrachten wir auch den Rechenaufwand, den sie erfordern. Dies allerdings nur intuitiv eine mathematische Behandlung wird später nachgeholt. 4 / 104
5 Eine einfache Aufwandsabschätzung für Arithmetik Zum Aufwand A[... ] für Arithmetik: Wir nehmen an: A[ + ] = A[ (x + y) ] x, y N 5 / 104
6 Eine einfache Aufwandsabschätzung für Arithmetik Zum Aufwand A[... ] für Arithmetik: Wir nehmen an: A[ + ] = A[ (x + y) ] x, y N Diese Annahme ist eine starke Vereinfachung Sie gilt auf dem Computer für das Rechnen in einem beschränkten Zahlenbereich (32 Bit, 64 Bit) Sie gilt nicht für uns für den Computer beim Rechnen mit beliebig großen Zahlen (In Haskell: Typ Int versus Typ Integer.) 6 / 104
7 Eine einfache Aufwandsabschätzung für Arithmetik Rechnen mit großen Zahlen hat wichtige Anwendungen, z.b. in der Verschlüsselungstechnik. Rechenaufwand hängt auch vom Zahlsystem ab. Dezimal: = 21 (3 A[ + Ziffer ]) Binär: = (9 A[ + Ziffer ]) Unär: = (17 A[ 1 ]) 7 / 104
8 Eine einfache Aufwandsabschätzung für Arithmetik Leibniz hat als Erster die Binärzahlen beschrieben und bemerkt, dass durch diese Zahldarstellung das kleine und 1 1 einfacher werden, die Zahlen und damit die Rechnungen länger werden. Er hielt die Binärzahlen für elegant, aber unpraktisch. 8 / 104
9 Ausrechnen von Formeln Ausrechnen von Formeln Der einfachste Fall ist das Ausrechnen von Formeln. Die Modellierung hat schon ganze Arbeit geleistet und fertige Formeln für die Lösung aufgestellt: Beispiel: Tübinger Parkplatz Variante 1: Variante 2: r(p, m) = 4p + 2m p(n, r) = r 2n 2 m(n, r) = n r 2n 2 9 / 104
10 Ausrechnen von Formeln Betrachtet man arithmetische Grundoperationen als einen Rechenschritt, sieht man leicht: A[ r(p, m) ] = 3, A[ p(n, r) ] = 3, A[ m(n, r) ] = 4 Die Lösung der Variante 2 erfordert so 7 Schritte es geht aber auch mit 4: r 2n p(n, r) = 2 =: P m(n, r) = n P 10 / 104
11 Lösungsansätze Probleme, deren Lösungen sich allgemein als fertige Formeln beschreiben lassen, sind zugleich die einfachsten Aufgaben. Das ganze Problem wird auf einen Schlag gelöst. Meistens jedoch müssen Aufgaben erst in Teilaufgaben zergliedert, diese gelöst und deren Lösungen anschließend kombiniert werden. 11 / 104
12 Lösungsansätze Möglichkeiten zur Problemzerlegung Wir beschäftigen uns im folgenden mit diesen offenen Fragen: Welche Strategien zur Problemzerlegung gibt es? Wovon hängen diese Strategien ab? Wie entscheidet man, welche Strategie zum Einsatz kommen soll? 12 / 104
13 Strukturelle Rekursion Allgemeines zur Rekursion: Rekursion heißt: Eine Methode M benutzt sich selbst zur Lösung von Problem X Terminierungsfall: Problem direkt lösbar Rekursiver Fall: M(X) benutzt Lösung von M(X ) Endlose Rekursion tritt auf, wenn beim Übergang M(X) M(X ) M(X )... nie der Terminierungsfall erreicht wird. Es gibt verschiedene Wege, Endlosrekursion auszuschließen. 13 / 104
14 Strukturelle Rekursion Strukturelle Rekursion bedeutet Problemzerlegung durch direkte Zerlegung der Datenstruktur. D.h. die Struktur der Daten ist entscheidend für die Anwendbarkeit der Rekursion. Beispiel: Berechnen der Spieldauer eines Musikstückes (in Takten): playtime(p(d)) = d playtime(n(t, d)) = d playtime(m 1 m 2 ) = playtime(m 1 ) + playtime(m 2 ) playtime(m 1 + m 2 ) = max(playtime(m 1 ), playtime(m 2 )) 14 / 104
15 Schema Grundschema der Strukturellen Rekursion Eine Gleichung pro Konstruktor des Datentyps Nicht-rekursive Konstruktoren Terminierungsfall Rekursive Konstruktoren rekursive Problemzerlegung 15 / 104
16 Schema Grundschema der Strukturellen Rekursion Eine Gleichung pro Konstruktor des Datentyps Nicht-rekursive Konstruktoren Terminierungsfall Rekursive Konstruktoren rekursive Problemzerlegung Beispiele aus den Vorlesungen bisher: Permutationen erzeugen Musik: Instrument austauschen Auf Subsequenz prüfen Hamming-Abstand / 104
17 Schema Strukturelle Rekursion über Listen Kleinstes Element einer nichtleeren Liste: minimum(x : xs) = min x xs where min a [] = a min a (x : xs) = if a <= x then min a xs else min x xs Hier folgt die Hilfsfunktion min dem Schema der Strukturellen Rekursion. Die Funktion minimum selbst kann nicht durch Strukturelle Rekursion definiert werden, da sie für den Terminierungsfall gerade nicht definiert ist. 17 / 104
18 Überlegungen zur Strukturellen Rekursion Als Invariante gilt: Das erste Argument a ist zu jedem Zeitpunkt das Minimum des bisher bearbeiteten Präfixes der Liste. Aufwand: Entspricht der Größe der Datenstruktur pro Konstruktor wird eine Gleichung angewandt. Das ist der Aufwand des rekursiven Schemas. Hinzu kommt der Aufwand für die sonstige Operationen auf den rechten Seiten der Gleichungen. 18 / 104
19 Überlegungen zur Strukturellen Rekursion Terminierung bei Struktureller Rekursion Terminierung ist gesichert, wenn die Datenstruktur eine endliche Formel ist. Endlos-Rekursion kann auf unendlichen Datenstrukturen eintreten. Beispiel: playtime(ad_libitum(p(1/2))). 19 / 104
20 Wohlfundierte Rekursion Wohlfundierte Rekursion (Teile-und-Herrsche) Allgemeiner als die Strukturelle ist die Wohlfundierte Rekursion. Die Zerlegung des Problems folgt nicht dem rekursiven Aufbau der Datenstruktur. Die Aufgabe wird auf beliebige Aufgaben (der gleichen Art) zurückgeführt, die in einem wohldefinierten Sinn einfacher sein müssen. Als Hilfskonstrukt führen wir dazu eine Ordnungsrelation ein. 20 / 104
21 Ordnungsrelation Eine (partielle) Ordnungsrelation auf einer Menge M erfüllt die Gesetze x y und y z impliziert x z (Transitivität) x y und y x impliziert x = y (Antisymmetrie) x x (Reflexivität) Die Relation < ist definiert als x < y gdw x y und x y und > als y > x gdw x < y 21 / 104
22 Ordnungsrelation Partielle vs. Totale Ordnungsrelation Zwei Elemente einer Menge mit partieller Ordnungsrelation heißen vergleichbar, wenn für diese beiden Elemente die Ordnungsrelation eine Aussage macht bzw. gilt. Eine Ordnungsrelation über einer Menge heißt total, wenn für jedes beliebige Paar aus Elementen der Menge die Ordnungsrelation gilt. 22 / 104
23 Ordnungsrelation Eine absteigende Kette aus M ist eine Folge von Elementen x 1 > x 2 > x 3 >... Wohlfundierte Ordnungsrelation Eine Ordnungsrelation auf M heißt wohlfundiert, wenn jede absteigende Kette aus M endlich ist (und damit ein kleinstes Element hat). 23 / 104
24 Beispiele Beispiele aus der Zahlenwelt (N, >) ist wohlfundiert (N, >) ist wohlfundiert für alle N N (Z, >) ist nicht wohlfundiert (Gegenbeispiel: 2 > 1 > 0 > 1 > 2... ) (R + 0, >) ist nicht wohlfundiert (Gegenbeispiel: 1 > 1/2 > 1/4 >... ) (N N, >) mit (a, b) (c, d) gdw a < c oder a = c und b d ist wohlfundiert. Man nennt dies lexikographische Erweiterung von (N, >). 24 / 104
25 Beispiele Ein Schukarton ist größer als ein anderer, wenn man den anderen in ihn reinpacken kann. 25 / 104
26 Beispiele Ein Schukarton ist größer als ein anderer, wenn man den anderen in ihn reinpacken kann. Ist das eine Ordnungsrelation? 26 / 104
27 Beispiele Ein Schukarton ist größer als ein anderer, wenn man den anderen in ihn reinpacken kann. Ist das eine Ordnungsrelation? Partiell oder total? 27 / 104
28 Schema der Wohlfundierten Rekursion Schema der Wohlfundierten Rekursion zur Lösung von X, gegeben eine wohlfundierte Ordnung auf Problemen der Art X: Falls X einfach, löse X direkt. Andernfalls: Teile X auf in Probleme X 1,..., X k mit X > X i Löse X 1,..., X k (rekursiv) Kombiniere diese Lösungen zur Lösung von X Das Verfahren terminiert, weil alle so von X ausgehenden Ketten endlich sind und die Teilprobleme irgendwann einfach werden. 28 / 104
29 Schema der Wohlfundierten Rekursion Die vier Bestandteile dieser Methode: Was ist einfach?, Löse direkt, Teile X auf!, und Kombiniere Teil-Lösungen! muss man sich für jede Anwendung neu überlegen. 29 / 104
30 Schema der Wohlfundierten Rekursion Die vier Bestandteile dieser Methode: Was ist einfach?, Löse direkt, Teile X auf!, und Kombiniere Teil-Lösungen! muss man sich für jede Anwendung neu überlegen. Dabei ist die Relation < ( einfacher ) frei wählbar, nur wohlfundiert muss sie sein. 30 / 104
31 Quicksort Beispiel: Quicksort Sortiere Liste von n Elementen aufsteigend. Wohlfundierte Ordnung auf Listen: l 1 < l 2 gdw length(l 1 ) < length(l 2 ) Da length(l) N, ist diese Ordnung wohlfundiert. 31 / 104
32 Quicksort Beispiel: Quicksort Sortiere Liste von n Elementen aufsteigend. Wohlfundierte Ordnung auf Listen: l 1 < l 2 gdw length(l 1 ) < length(l 2 ) Da length(l) N, ist diese Ordnung wohlfundiert. Quicksort (l): Falls l = [] oder l = [a]: Lösung = l. Andernfalls: Wähle x aus l, so dass x nicht maximal ist. Teile auf l 1 = [a a l, a x] l 2 = [a a l, x < a] Berechne ˆl 1 = Quicksort(l 1 ) ˆl 2 = Quicksort(l 2 ) Kombiniere ˆl1 ++ ˆl 2 32 / 104
33 Quicksort Achtung x darf nicht maximales Element in l sein, weil dann l 1 < l verletzt ist. Die Listen l 1 und l 2 sind keine Unterstrukturen der Liste l, daher liegt keine Strukturelle Rekursion vor. 33 / 104
34 Quicksort Achtung x darf nicht maximales Element in l sein, weil dann l 1 < l verletzt ist. Die Listen l 1 und l 2 sind keine Unterstrukturen der Liste l, daher liegt keine Strukturelle Rekursion vor. Achtung: Es gibt einen Fall, in dem unser Verfahren nicht funktioniert. Wer sieht ihn und weiß die Lösung? 34 / 104
35 Quicksort Wenn alle Elemente gleich sind, gibt es kein nicht-maximales x! Besser x = head(l) Teile l 1 = [a a tail(l), a x] l 2 = [a a tail(l), a > x] Berechne ˆl1 = Quicksort (l 1 ) ˆl 2 = Quicksort (l 2 ) Kombiniere ˆl 1 ++[x]++ˆl 2 35 / 104
36 Quicksort Aufwand beim Kombinieren merge (1, bzw. merge ( merge (1, merge (1,1) merge (1,1)) merge (1,1))) 36 / 104
37 Quicksort guter Fall: Teile: Rekursionstiefe: Kombiniere: insgesamt kritischer Fall: Teile: Kombiniere: Rekursionstiefe: insgesamt: auf jeder Ebene 2 n Schritte log 2 n Ebenen n/2 Schritte pro Ebene 3 n log 2 n Schritte auf Ebene i 2 (n i) Schritte auf jeder Ebene 1 Schritt n Ebenen n 1 ( ) 2(n i) + 1 = n + 2 i=0 n j j=1 (n + 1) n = n = n 2 + 2n Schritte 37 / 104
38 Schnelle Multiplikation Beispiel: Schnelle Multiplikation langer Zahlen Vorüberlegung: Wir betrachten zwei n-stellige Zahlen x = x 1,..., x n, y = y 1,..., y n. A[ + ] ist der Aufwand einer Ziffern-Addition. A[ x + y ] 2 n A[ + ] (Addition der Überträge nicht vergessen!) A[ x y ] n 2 A[ ] + 2n 2 A[ + ] Multiplikation ist also erheblich aufwendiger. 38 / 104
39 Schnelle Multiplikation Schon weil jede Ziffer im Inneren des Diagramms Resultat einer Multiplikation ist, braucht man n 2 elementare Multiplikationen. Besser geht es nicht oder doch? 39 / 104
40 Schnelle Multiplikation Wir zerlegen die Zahlen in der Mitte x = x 1 x 0 x = x 1 10 n/2 + x 0 y = y 1 y 0 y = y 1 10 n/2 + y 0 x y = (x 1 10 n/2 + x 0 ) (y 1 10 n/2 + y 0 ) = x 1 y 1 10 n + (x 1 y 0 + x 0 y 1 ) 10 n/2 + x 0 y 0 Jetzt haben wir 1 Mulitplikation mit Aufwand n 2 durch vier ( ) 2 n Multiplikationen mit Aufwand je 2 ersetzt. Nichts ist dabei eingespart. 40 / 104
41 Schnelle Multiplikation x y 1 1 x y 1 x y x y 0 0 xy Idee: Wir können den Wert x 1 y 0 + x 0 y 1 mit nur einer Multiplikation der Länge n/2 berechnen. 41 / 104
42 Schnelle Multiplikation (x 0 x 1 )(y 0 y 1 ) = x 0 y 0 (x 1 y 0 + x 0 y 1 ) + x 1 y 1 Da x 0 y 0 und x 1 y 1 ohnehin berechnet werden, und Subtraktionen nur Aufwand 4 n/2 haben, erhalten wir billig (x 1 y 0 + x 0 y 1 ) = x 1 y 1 + x 0 y 0 + (x 1 x 0 )(y 0 y 1 ) 42 / 104
43 Schnelle Multiplikation x 1 y 1 x y 0 x y 1 (x x )(y y ) xy x y / 104
44 Schnelle Multiplikation Die Teilaufgaben x 1 y 1, x 0 y 0, (x 1 x 0 ) (y 0 y 1 ) der Länge n/2 werden nach der gleichen Methode (wohlfundiert rekursiv) berechnet. Wir schätzen ab A[n] 3 A[n/2] < n 2. Ist dies eine signifikante Verbesserung? Damit werden wir uns in Kapitel 5 näher beschäftigen. 44 / 104
45 Vollständige Suche Vollständige Suche heißt auch Brute Force oder Exhaustive Search. Ein Beispiel der Strategie Vollständige Suche haben wir bereits kennengelernt beim Problem des Handlungsreisenden. Alle möglichen Rundreisen wurden aufgestellt und bewertet, um die beste zu finden. Was ist daran schon strategisch? 45 / 104
46 Auch die vollständige Suche muss organisiert werden keine Lösung darf übersehen werden, keine Lösung sollte mehrfach berechnet werden, Lösungswege, die nicht erfolgreich sein können, sollten möglichst früh abgebrochen werden. 46 / 104
47 Beispiel Als weiteres Beispiel zur vollständigen Suche betrachten wir das 8-Damen-Problem. Es ist zugleich eine Anwendung der wohlfundierten Rekursion. Wir werden allerdings sehen, dass das Problem erst verallgemeinert werden muss, ehe man es zerlegen kann. Vermutlich muss man das n-damen-problem lösen (für beliebige n), um das 8-Damen-Problem rekursiv zu lösen. 47 / 104
48 Problembeschreibung: Das n-damen-problem Das n-damen-problem Aufgabe Platziere n Damen auf einem Schachbrett mit n n Feldern, so dass sie einander nicht bedrohen. 48 / 104
49 Problembeschreibung: Das n-damen-problem Erinnerung: Damen schlagen längs, quer und diagonal. Fragen zur Existenz/Eindeutigkeit von Lösungen 49 / 104
50 Problembeschreibung: Das n-damen-problem Erinnerung: Damen schlagen längs, quer und diagonal. Fragen zur Existenz/Eindeutigkeit von Lösungen Gibt es immer eine Lösung? 50 / 104
51 Problembeschreibung: Das n-damen-problem Erinnerung: Damen schlagen längs, quer und diagonal. Fragen zur Existenz/Eindeutigkeit von Lösungen Gibt es immer eine Lösung? Nein, nicht für n = 2, / 104
52 Problembeschreibung: Das n-damen-problem Erinnerung: Damen schlagen längs, quer und diagonal. Fragen zur Existenz/Eindeutigkeit von Lösungen Gibt es immer eine Lösung? Nein, nicht für n = 2, 3. Gibt es manchmal mehr als eine Lösung? 52 / 104
53 Problembeschreibung: Das n-damen-problem Erinnerung: Damen schlagen längs, quer und diagonal. Fragen zur Existenz/Eindeutigkeit von Lösungen Gibt es immer eine Lösung? Nein, nicht für n = 2, 3. Gibt es manchmal mehr als eine Lösung? Ja, für große n gibt es viele Lösungen. 53 / 104
54 Problembeschreibung: Das n-damen-problem Lösung des n-damen-problem für n = 4 1 Q 2 Q 3 Q 4 Q / 104
55 Problembeschreibung: Das n-damen-problem Grundidee der vollständigen Suche 1 Wir setzen eine Dame versuchsweise auf ein unbedrohtes Feld x. 2 Wir setzen die weiteren Damen, indem wir das Problem für n 1 Damen lösen. 3 Dies ergibt 0, 1, 2... Lösungen mit der Dame auf x. 4 Nach dem gleichen Schema versuchen wir noch andere Felder x. 55 / 104
56 Problembeschreibung: Das n-damen-problem Die obige Idee ist zu schlicht: (a) Jede Lösung würde mehrfach gefunden (stehen Damen auf Feld x und y, kann sowohl x wie y im 1. Schritt gewählt werden). 56 / 104
57 Problembeschreibung: Das n-damen-problem Die obige Idee ist zu schlicht: (a) Jede Lösung würde mehrfach gefunden (stehen Damen auf Feld x und y, kann sowohl x wie y im 1. Schritt gewählt werden). (b) Das Schema der wohlfundierten Rekursion funktioniert nicht so einfach: 57 / 104
58 Problembeschreibung: Das n-damen-problem Die obige Idee ist zu schlicht: (a) Jede Lösung würde mehrfach gefunden (stehen Damen auf Feld x und y, kann sowohl x wie y im 1. Schritt gewählt werden). (b) Das Schema der wohlfundierten Rekursion funktioniert nicht so einfach: Das Restproblem nach Setzen der 1. Dame ist kein (n 1)-Damen-Problem. 58 / 104
59 Problembeschreibung: Das n-damen-problem Die obige Idee ist zu schlicht: (a) Jede Lösung würde mehrfach gefunden (stehen Damen auf Feld x und y, kann sowohl x wie y im 1. Schritt gewählt werden). (b) Das Schema der wohlfundierten Rekursion funktioniert nicht so einfach: Das Restproblem nach Setzen der 1. Dame ist kein (n 1)-Damen-Problem. Warum nicht? 59 / 104
60 Problembeschreibung: Das n-damen-problem Die obige Idee ist zu schlicht: (a) Jede Lösung würde mehrfach gefunden (stehen Damen auf Feld x und y, kann sowohl x wie y im 1. Schritt gewählt werden). (b) Das Schema der wohlfundierten Rekursion funktioniert nicht so einfach: Das Restproblem nach Setzen der 1. Dame ist kein (n 1)-Damen-Problem. Warum nicht? Das verbleibende Feld ist kein (n 1) (n 1) Schachbrett. 60 / 104
61 Problembeschreibung: Das n-damen-problem Die obige Idee ist zu schlicht: (a) Jede Lösung würde mehrfach gefunden (stehen Damen auf Feld x und y, kann sowohl x wie y im 1. Schritt gewählt werden). (b) Das Schema der wohlfundierten Rekursion funktioniert nicht so einfach: Das Restproblem nach Setzen der 1. Dame ist kein (n 1)-Damen-Problem. Warum nicht? Das verbleibende Feld ist kein (n 1) (n 1) Schachbrett. Einige Felder im verbleibenden Feld sind schon bedroht. 61 / 104
62 Problembeschreibung: Das n-damen-problem Wir haben also im Ausgangspunkt ein quadratisches Brett mit unbedrohten Feldern, im allgemeinen einen Teil eines (größeren) quadratischen Bretts, in dem einige Felder besetzt und andere bedroht sind. Wir bauen die Lösung spaltenweise auf, und vermeiden damit Problem (a). (Die Spalten heißen Linien im Schach.) 62 / 104
63 Entwicklung einer Lösung Festlegung der Repräsentation Lösung: Liste der Zeilenposition in Spalte 1, 2, 3,..., n (restliches) Brett: c = Nummer der ersten freien Spalte Bedrohungen: Liste von freien Zeilen (alias Reihen im Schach) belegten Diagonalen belegten Diagonalen 63 / 104
64 Entwicklung einer Lösung Darstellung der Diagonalen aufsteigend: j i = konstant ([ 3,..., +3]) absteigend: j + i = konstant ([2,..., 8]) / 104
65 Entwicklung einer Lösung Schnappschuss 4 3 Q 2 1 Q Lösung soweit: [3, 1,...?] nächste freie Spalte: c = 3 freie Zeilen: [2, 4] bedroht aufsteigend: [ 2, 1] bedroht absteigend: [3, 4] 65 / 104
66 Entwicklung einer Lösung Startsituation Lösung soweit: [ ] nächste freie Spalte: c = 1 freie Zeilen: [1, 2, 3, 4] bedroht aufsteigend: [ ] bedroht absteigend: [ ] 66 / 104
67 Entwicklung einer Lösung Eine Sackgasse 4 3 Q 2 1 Q Lösung soweit: [1, 3] nächste freie Spalte: 3 freie Zeilen: [2, 4] bedroht aufsteigend: [ 1, 0] bedroht absteigend: [2, 5] Die Felder (2,3) und (4,3) sind beide bedroht diese Anfangslösung hat keine Fortsetzung. 67 / 104
68 Entwicklung einer Lösung Bestandteile des Schemas der wohlfundierten Rekursion einfach: direkte Lösung: teile auf: kombiniere: alle Zeilen besetzt (fertig) alle Felder der aktuellsten Spalte bedroht (Sackgasse) [ ] (komplettiert bisherige Lösung) finde neue Platzierung und die daraus resultierende Konfiguration hänge Teil-Lösung vor Rest-Lösung 68 / 104
69 Umgang mit Sackgassen Zwei Sichtweisen der Suchstrategie bei Sackgassen: Zurücksetzen (back tracking): Bei Sackgasse (Failure) zurück zur letzten Wahl-Entscheidung, dort anderes Feld wählen. Bei Erfolg: ebenso, weil wir alle Lösungen finden wollen. Vorwärtsrechnen (List of Successes): Alles wird probiert. Unvollständige Lösungen (Sackgassen) werden weggelassen. 69 / 104
70 Umgang mit Sackgassen Phil Wadler: How to replace failure by a list of successes Wir verwenden die Methode List of Successes. 70 / 104
71 Umgang mit Sackgassen queens n = place 1 [1..n] [] [] place c [] ud dd = [[]] - der erfolgreiche Fall place c rs ud dd = [q:qs - gewähltes Feld, weitere Lösung q <- rs, - aus freier Reihe (q - c) not Elem ud, - unbedroht up (q + c) not Elem dd, - unbedroht down qs <- place (c+1) (delete q rs) ((q-c):ud)((q+c):dd) ] delete q (x:xs) = if q == x then xs else x:(delete q xs) 71 / 104
72 Umgang mit Sackgassen Beachte: Für jede Spalte werden alle freien Zeilen genau einmal untersucht. Sind alle Felder bedroht, ist die im gegebenen Aufruf berechnete Liste von Lösungen leer. Sie kann damit auch keine Rest-Lösungen für frühere Aufrufe beisteuern. Sackgassen verschwinden einfach. Wichtig für den Rechenaufwand ist, dass die Überprüfung dieser Bedingungen vor dem rekursiven Aufruf erfolgt. 72 / 104
73 Einbettung Das Prinzip der Einbettung Oft lässt sich ein Problem A dadurch besser lösen, dass man es als Spezialfall eines allgemeineren Problems B betrachtet, und dieses löst. Wie kann es sein, dass das allgemeine Problem B einfacher zu lösen ist als A? Siehe Beispiele: minimum mini 8-Damen-Problem für teilbesetzte Felder 73 / 104
74 Einbettung Die Wirksamkeit der Einbettung liegt an der Rekursion: Wir haben dann im Rekursionsschritt eine mächtigere Funktion zur Verfügung, die wir nutzen können. Die gleiche Situation liegt vor, wenn ein Mathematiker per Induktion erst einen allgemeinen Satz B beweist, um daraus Satz A als Korollar abzuleiten. 74 / 104
75 Greedy-Algorithmus Die opportunistische Suche, auch greedy -Strategie, haben wir ebenfalls bereits in Kapitel 2 kennengelernt beim Problem des Handlungsreisenden. Dort war Greedy eine Heuristik ein (schnelles) Verfahren, das eine (hoffentlich) gute Lösung findet aber vielleicht nicht die beste. Allgemein sucht die greedy -Strategie stets nur lokal den nächsten besten Folgezustand und achtet nicht auf die Qualität bzw. Exaktheit der globalen Lösung. Es gibt aber auch Probleme, für die eine Greedy-Strategie die exakte Lösung findet. 75 / 104
76 Strategien Strukturelle Rekursion Divide and Conquer Brute Force Greedy Dynamische Programmierung Beispiel TSP Revisited Scotland Yard Ravensburger Spiele Erstellen eines Künstlichen Intelligenz-Spielers Projekt in den Übungen zur Veranstaltung Spezielle Themen der Künstlichen Intelligenz im SoSe / 104
77 Strategien Strukturelle Rekursion Divide and Conquer Brute Force Greedy Dynamische Programmierung Beispiel Ausschnitt - Dijkstras Algorithmus 10 1 u v 6 s 3 5 x 2 y Initialisierung: Pro Wegpunkt die Kosten zum Startpunkt festhalten. Initial für S = 0 und alle anderen. Alle Tupel (Knoten, Distanz) in eine geordnete Liste L einfügen. Ordnung nach absteigenden Distanzen. Algorithmus-Schritte: erstes Tupel t = (kt, dt ) aus L entnehmen. Distanz dt ist derzeit beste Distanz. Für alle zu kt benachbarten Knoten kn prüfen, ob deren Distanzen dn schlechter (=höher) sind als die Summe von dt plus der Kosten von kt nach kn. Falls ja, dn entsprechend aktualisieren. 77 / 104
78 Strategien Strukturelle Rekursion Divide and Conquer Brute Force Greedy Dynamische Programmierung Beispiel Ausschnitt - Dijkstras Algorithmus 10 1 u v 6 s 3 5 x 2 y Gesucht ist der kürzeste Weg von s nach v. L = [(s, 0), (u, ), (v, ), (x, ), (y, )] L = [(x, 5), (u, 10), (v, ), (y, )] L = [(y, 7), (u, 8), (v, )] L = [(u, 8), (v, 13)] L = [(v, 9)] L = [] 78 / 104
79 Dynamische Programmierung Die rekursive Problemzerlegung kann an mehreren Stellen auf das gleiche Teilproblem führen. Dann sollte dessen Lösung gespeichert werden, um sie wieder zu verwenden statt neu zu berechnen. 79 / 104
80 Beispiel Gedankenlose Wiederberechnung führt meistens zu exponentieller Explosion: E B A C D F A braucht B, C, D, B braucht E, C, usw. 8 Probleme werden gelöst, wenn G, C, H, F, tabelliert werden. G H 80 / 104
81 Beispiel A Problemzerlegung ohne Tabellierung: 18 Probleme werden gelöst. E G B C C G G H H F H D C G H F H C wird 3 mal, F wird 2 mal, G wird 4 mal H wird 5 mal gelöst. A, B, D, E müssen nicht tabelliert werden. 81 / 104
82 Beispiel: Fibonacci Beispiel zur Wirkung der Tabellierung: Fibonacci-Zahlen Berechne: fib(1) = 1 (1) fib(2) = 1 (2) fib(n) = fib(n 1) + fib(n 2) für n > 2 (3) 82 / 104
83 Beispiel: Fibonacci Zählen wir die Aufrufe von fib zur Berechnung von fib(n): A[ fib(1) ] = 1 (4) A[ fib(2) ] = 1 (5) A[ fib(3) ] = 3 (6) A[ fib(4) ] = 5 (7) allgemein: A[ fib(n) ] = 1+A[ fib(n 1) ]+A[ fib(n 2) ] (8) Daraus folgt: A[ fib(n) ] > fib(n) 83 / 104
84 Beispiel: Fibonacci Aufgabe: Mit B[ fib(n) ] berechnen wir die Anzahl der Aufrufe der Basisfälle fib(1) und fib(2) in der rekursiven Berechnung von fib(n). Wie verhält sich B[ fib(n) ] verglichen mit fib(n)? 84 / 104
85 Beispiel: Fibonacci Berechnung von Tabelle F mit F (i) = fib(i) F (1) = 1 (9) F (2) = 1 (10) F(n) = F(n 1) + F (n 2) für n = 3, 4,... (11) Hier wird F (n) in n Schritten berechnet. 85 / 104
86 Beispiel: Fibonacci Bottom-Up versus Top-Down Die tabellierende Berechnung beginnt mit F(1). Die rekursive Berechnung beginnt mit dem Aufruf fib(n). fib und F haben die gleiche rekursive Definition. Nur die Reihenfolge garantiert, dass kleine Probleme bereits tabelliert vorliegen, wenn größere sie als Teillösungen brauchen. 86 / 104
87 Beispiel: Fibonacci Verbesserung: Sobald F (n) berechnet ist, kann man hier F (1)... F(n 2) vergessen. Statt der Tabelle reichen 2 Vorgängerwerte. Oder eine Funktion mit Gedächtnis / 104
88 Beispiel: Fibonacci fastfib(n) = fst (twofib(n)) (12) fst(x, y) = x (13) twofib(1) = (1, 1) (14) twofib(n) = (b, a + b) where (15) (a, b) = twofib(n 1) Diese Lösung ist wieder ein Fall von Einbettung. 88 / 104
89 Schema der Dynamischen Programmierung Schema der Dynamischen Programmierung Rekursion + Tabellierung Aspekte Wie wird Problem zerlegt? Welche Teillösungen werden tabelliert? Wie organisiert man die Tabellierung? Berechnungs-Reihenfolge der Tabellen? 89 / 104
90 Schema der Dynamischen Programmierung Es genügt, zu jedem Teilproblem eine optimale Lösung zu speichern, wenn folgendes Prinzip gilt Bellman s Optimalitätsprinzip Eine optimale Lösung hat stets eine Zerlegung in optimal gelöste Teilprobleme. Offensichtlich ist dieses Prinzip für die Kettenmultiplikation von Matrizen erfüllt. 90 / 104
91 Schema der Dynamischen Programmierung Zwei Möglichkeiten zur Organisation der Berechnung: Top-Down: Rekursive Zerlegung, vom Gesamtproblem ausgehend. Tabellierung von Teillösungen bei erster Berechnung. Bottom-Up: Es werden die einfachsten Teillösungen auf Vorrat berechnet, danach die zusammengesetzten... bis zum Gesamtergebnis. 91 / 104
92 Beispiel Schnelle Matrizenmultiplikation in Ketten Erinnerung: A m,n B n,r = C m,r n c ij = a ik b kj k=1 A[ A m,n B n,r ] = m n r 92 / 104
93 Beispiel Matrix-Kette: M 1 M 2 M 3 M K mit Dimension (d 0, d 1 ), (d 1, d 2 )... (d K 1, d K ) Matrix-Multiplikation ist assoziativ (A B) C = A (B C) 93 / 104
94 Beispiel Matrix-Kette: M 1 M 2 M 3 M K mit Dimension (d 0, d 1 ), (d 1, d 2 )... (d K 1, d K ) Matrix-Multiplikation ist assoziativ (A B) C = A (B C) Beobachtung Der Aufwand hängt von der Klammerung ab, da Zwischenergebnisse unterschiedlicher Dimension anfallen. 94 / 104
95 Beispiel A B C (A. B). C A.(B. C) C 10 A B. C 50 A. B A. B. C 95 / 104
96 Beispiel Rechnung (A B) C Rechnung A (B C) = = Der Rechenweg (A B) C ist hier deutlich schneller. 96 / 104
97 Beispiel Rechnung (A B) C Rechnung A (B C) = = Der Rechenweg (A B) C ist hier deutlich schneller. Problem der Matrix-Kettenmultiplikation Bestimme optimalen Aufwand und Klammerung für Matrixkette M 1 M K. 97 / 104
98 Beispiel Rechnung (A B) C Rechnung A (B C) = = Der Rechenweg (A B) C ist hier deutlich schneller. Problem der Matrix-Kettenmultiplikation Bestimme optimalen Aufwand und Klammerung für Matrixkette M 1 M K. Wir suchen zunächst den optimalen Aufwand. 98 / 104
99 Beispiel Rekursive Lösung: Der Gesamtaufwand zerlegt sich gemäß der letzten Multiplikation: A[ (M 1... M s ) (M s+1... M K ) ] = (16) A[ M 1 M s ] + A[ M s+1 M K ] + d 0 d s d K 99 / 104
100 Beispiel Minimal ist der Aufwand dann, 1 wenn die Teilprodukte optimal berechnet werden, 2 wenn der Punkt der letzten Multiplikation (s) optimal gewählt wurde. (1) bedeutet einfach wohlfundierte Rekursion (2) hier müssen wir über alle Punkte s optimieren. 100 / 104
101 Beispiel Rekursive Bestimmung des Aufwands: w(i, i) = 0 für i = 1... K w(i, j) = d i 1 d i d i+1 für j = i + 1 w(i, j) = min [w(i, s) + w(s, s + 1) + w(s + 1, j) s [i... j 1]] Gesamtaufwand = w(1, K ) 101 / 104
102 Beispiel Rekursion + Tabellierung Betrachte w als (K K ) Tabelle, in der das obere Dreieck berechnet wird. w(i, i) = 0 für i = 1... K w(i, i + 1) = d i 1 d i d i+1 für i = 1... K 1 l für l = 2... K 1 für i = 1... K l sei j = i + l berechne w(i, j) wie in (17). 102 / 104
103 Beispiel Bestimmung der besten Klammerung In der Tabelle wird neben w(i, j) in (17) auch noch derjenige Wert von s gespeichert, der das Minimum ergab. Ist also w(1, K ) = (..., s), so ist die Klammerung, die zum minimalen Aufwand führt, (M 1 M s ) (M s+1 M K ), und in den Teilketten verfährt man analog. 103 / 104
104 Beispiel Zusammenfassung Strukturelle Rekursion Wohlfundierte Rekursion (Divide and Conquer) Brute Force Greedy Dynamische Programmierung 104 / 104
Algorithmen und Datenstrukturen 1 Kapitel 4
Algorithmen und Datenstrukturen 1 Kapitel 4 Robert Giegerich Technische Fakultät Universität Bielefeld robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2011/2012 1 / 78 Kapitel 4: Strategien
MehrAlgorithmen und Datenstrukturen I - Strategien der algorithmischen Problemlösung -
Algorithmen und Datenstrukturen I - Strategien der algorithmischen Problemlösung - Alexander Sczyrba Technische Fakultät asczyrba@techfak.uni-bielefeld.de Vorlesung, Universität Bielefeld, Winter 2013/2014
MehrAlgorithmen und Datenstrukturen I - Strategien der algorithmischen Problemlösung -
Algorithmen und Datenstrukturen I - Strategien der algorithmischen Problemlösung - Thies Pfeiffer Technische Fakultät tpfeiffe@techfak.uni-bielefeld.de Vorlesung, Universität Bielefeld, Winter 2012/2013
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
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 Kapitel 3: Strategien der algorithmischen Problemlösung Vorbemerkungen
Mehr19. Dynamic Programming I
495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.
Mehr19. Dynamic Programming I
495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 05 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen Grundlagen
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen
Mehr1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Einführung Grundlagen von Algorithmen Grundlagen
MehrÜbung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Fibonacci Zahlen Fibonacci Folge Die Fibonacci
MehrWiederholung. Divide & Conquer Strategie
Wiederholung Divide & Conquer Strategie Binäre Suche O(log n) Rekursives Suchen im linken oder rechten Teilintervall Insertion-Sort O(n 2 ) Rekursives Sortieren von a[1..n-1], a[n] Einfügen von a[n] in
Mehr19. Dynamic Programming I
502 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.
MehrDynamische Programmierung
Dynamische Programmierung Claudia Gerhold 9.5.6 Claudia Gerhold Dynamische Programmierung 9.5.6 / 4 Agenda Einführung Dynamische Programmierung Top-Down Ansatz mit Memoization Bottom-Up Ansatz 3 Anwendungsbeispiele
Mehr19. Dynamic Programming I
Fibonacci Zahlen 9. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixettenmultipliation, Matrixmultipliation nach Strassen [Ottman/Widmayer,
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen Lerneinheit : Dynamisches Programmieren Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester.. Einleitung Diese Lerneinheit widmet sich einer
MehrTop-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy
2.2 Entwurfsparadigmen Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy 1 Top-Down Zerlege das gegebene Problem in Teilschritte Zerlege Teilschritte
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
MehrDas Problem des Handlungsreisenden
Seite 1 Das Problem des Handlungsreisenden Abbildung 1: Alle möglichen Rundreisen für 4 Städte Das TSP-Problem tritt in der Praxis in vielen Anwendungen als Teilproblem auf. Hierzu gehören z.b. Optimierungsprobleme
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Lernziele Rekursive Prozeduren zu charakterisieren. Terminierung von rekursiven Prozeduren mit Hilfe von geeigneten Abstiegsfunktionen
MehrAlgorithmen und Komplexität
Algorithmen und Komplexität Dynamische Programmierung Markus Ullrich Norbert Baum Fachbereich Informatik - IIb07 Hochschule Zittau/Görlitz 28. Mai 2009 1 / 29 Wie sieht es mit langen Ketten aus? A 1 A
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
MehrADS: Algorithmen und Datenstrukturen 2
.. ADS: Algorithmen und Datenstrukturen 2 8. Vorlesung Uwe Quasthoff Abteilung Automatische Sprachverarbeitung Institut für Informatik Universität Leipzig 6. Juni 2012 1 / 25 Editier-Distanz Beobachtungen:
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2012/13 25. Vorlesung Dynamisches Programmieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Klausurvorbereitung Tipp: Schreiben Sie sich alle Fragen
MehrADS: Algorithmen und Datenstrukturen 2
ADS: Algorithmen und Datenstrukturen 2 Teil 8 Gerhard Heyer, Florian Holz unter Verwendung der Materialien der letzten Jahre Abteilung Automatische Sprachverarbeitung Institut für Informatik Universität
MehrAlgorithmen und Datenstrukturen
Technische Universität München SoSe 2017 Fakultät für Informatik, I-16 Lösungsblatt 4 Dr. Stefanie Demirci 31. Mai 2017 Rüdiger Göbl, Mai Bui Algorithmen und Datenstrukturen Aufgabe 1 Komplexität Berechnung
MehrAlgorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8
ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1
MehrÜbersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Übersicht Greedy Algorithmen Einführung Aktivitäten-Auswahl-Problem Huffman Codierung Matthias Zwicker Universität Bern Frühling 2009 2 Greedy Algorithmen Entwurfsstrategie
MehrG. Zachmann Clausthal University, Germany Die wichtigsten Entwurfsverfahren für Algorithmen:
lausthal Informatik II Divide & onquer. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Algorithmen-Design-Techniken Die wichtigsten Entwurfsverfahren für Algorithmen: 1. Divide and onquer
MehrKapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung
Gliederung 1. Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs 6. Ausgewählte
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 robert.legenstein@igi.tugraz.at 1 Kapitel 2 Algorithmische robert.legenstein@igi.tugraz.at 2 2. Algorithmische 1) Iterative Algorithmen 2) Rekursive Algorithmen
MehrAm Dienstag, den 15. Dezember, ist Eulenfest. 1/60
Am Dienstag, den 15. Dezember, ist Eulenfest. 1/60 Grundbegriffe der Informatik Einheit 12: Erste Algorithmen in Graphen Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester
MehrSchnelle Multiplikation
Informationsblatt für die Lehrkraft Schnelle Multiplikation $&*&*& 999 3 x 3 =? 10001110 π/3 7 X 6 14 666 x 987 Informationsblatt für die Lehrkraft Thema: Schultyp: Vorkenntnisse: Bearbeitungsdauer: Schnelle
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
MehrAlgorithmen und Datenstrukturen 1 Kapitel 5
Algorithmen und Datenstrukturen 1 Kapitel 5 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 Kapitel 5: Effizienz von Algorithmen 5.1 Vorüberlegungen Nicht
MehrMultiplikation langer Zahlen
Multiplikation langer Zahlen Aljoscha Rudawski 20.5.2017 Inhaltsverzeichnis 1 Einleitung 1 2 Multiplikation nach Lehrbuch 1 2.1 Addition langer Zahlen............................. 2 2.2 Multiplikation
MehrDas Damenproblem - funktional und logisch
- funktional und logisch 1 1 Technische Fakultät Universität Bielefeld 14.5.2014 / Seminar Programmiersprachen Gliederung Einleitung 1 Einleitung 2 3 Problembeschreibung Definition Definition Sei N eine
MehrLösungen von Übungsblatt 12
Lösungen von Übungsblatt 12 Algorithmen (WS 2018, Ulrike von Luxburg) Lösungen zu Aufgabe 1 Eine (kanonische) Möglichkeit, die Branch-Schritte auszuführen ergibt sich wie folgt: Das ursprüngliche Problem
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.
MehrGrundbegriffe der Informatik
Grundbegriffe der Informatik Kapitel 16: Erste Algorithmen in Graphen Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für
MehrStand der Vorlesung Komplexität von Algorithmen (Kapitel 3)
Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Technische Universität München Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften
MehrCopyright, Page 1 of 7 Heapsort
www.mathematik-netz.de Copyright, Page 1 of 7 Heapsort Alle grundlegenden, allgemeinen Sortierverfahren benötigen O(n 2 ) Zeit für das Sortieren von n Schlüsseln. Die kritischen Operationen, d.h. die Auswahl
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Sommersemester 2007 11. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen Safe
MehrProgrammieren 1 C Überblick
Programmieren 1 C Überblick 1. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen
MehrAm Dienstag, den 16. Dezember, ist Eulenfest. 1/45
Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45 Grundbegriffe der Informatik Einheit 12: Erste Algorithmen in Graphen Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009
Mehr3.2. Divide-and-Conquer-Methoden
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch
MehrTechnische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen
Technische Universität München SoSe 2015 Institut für Informatik I-16 27. Mai 2015 Dr. Tobias Lasser Lösungsvorschläge zur Musterklausur zu Algorithmen und Datenstrukturen Aufgabe 1 Rechnen mit Landau-Symbolen
Mehr( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)
Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften Ziel: Methoden kennen
MehrInhalt Kapitel 2: Rekursion
Inhalt Kapitel 2: Rekursion 1 Beispiele und Definition 2 Partialität und Terminierung 3 Formen der Rekursion Endständige Rekursion 4 Einbettung 29 Beispiele und Definition Rekursion 30 Man kann eine Funktion
MehrAlgorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier
Algorithmen und Datenstrukturen SoSe 2008 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Algorithmen und Datenstrukturen Gesamtübersicht Organisatorisches / Einführung Grundlagen: RAM,
Mehr7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
MehrKonvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510
Konvexe Hülle Definition konvexe Menge: Für je zwei beliebige Punkte, die zur Menge gehören, liegt auch stets deren Verbindungsstrecke ganz in der Menge. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links),
MehrInformatik II: Algorithmen und Datenstrukturen SS 2013
Informatik II: Algorithmen und Datenstrukturen SS 2013 Vorlesung 11b, Mittwoch, 3. Juli 2013 (Editierdistanz, dynamische Programmierung) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen
MehrADS: Algorithmen und Datenstrukturen 2
ADS: Algorithmen und Datenstrukturen 2 Teil 9 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 06. Juni 2018 [Letzte Aktualisierung: 06/07/2018,
Mehr9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion
Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen
Mehr16. Algorithmus der Woche Multiplikation langer Zahlen... schneller als in der Schule
16. Algorithmus der Woche Multiplikation langer Zahlen... schneller als in der Schule Autor Arno Eigenwillig, Max-Planck-Institut für Informatik, Saarbrücken Kurt Mehlhorn, Max-Planck-Institut für Informatik,
Mehr6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.
Algorithmen und Datenstrukturen 132 6 Quicksort In diesem Abschnitt wird Quicksort, ein weiterer Sortieralgorithmus, vorgestellt. Trotz einer eher langsamen Worst-Case Laufzeit von Θ(n 2 ) ist Quicksort
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Sommersemester 2009 11. Vorlesung Uwe Quasthoff Universität Leipzig Institut für Informatik quasthoff@informatik.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen
Mehr2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017
2. Algorithmische Methoden 2.1 Rekursion 18. April 2017 Rekursiver Algorithmus Ein rekursiver Algorithmus löst ein Problem, indem er eine oder mehrere kleinere Instanzen des gleichen Problems löst. Beispiel
MehrAlgorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
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
MehrDivide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen
Teile & Herrsche: Divide & Conquer Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen Probleme: Wie setzt man zusammen? [erfordert algorithmisches Geschick
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
MehrBlockmatrizen. Beispiel 1 Wir berechnen das Produkt von A R 4 6 mit B R 6 4 :
Blockmatrizen Beispiel 1 Wir berechnen das Produkt von A R 4 6 mit B R 6 4 : 2 1 3 1 1 0 1 0 1 0 0 2 1 1 11 1 1 4 0 1 0 1 0 1 4 1 0 2 1 0 1 0 1 0 3 1 2 1 = 2 4 3 5 11 1 1 4 0 1 0 1 0 1 5 1 2 1 2 4 3 5
MehrProgrammieren in Haskell Programmiermethodik
Programmieren in Haskell Programmiermethodik Peter Steffen Universität Bielefeld Technische Fakultät 12.01.2011 1 Programmieren in Haskell Bisherige Themen Was soll wiederholt werden? Bedienung von hugs
MehrAbschnitt 19: Sortierverfahren
Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758
MehrEinführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper
Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung Sebastian Küpper Redundanz Rekursiver Lösungen Rekursion kann elegante Bescheibungen zur Problemlösung ergeben
MehrVorlesung Diskrete Strukturen Die natürlichen Zahlen
Vorlesung Diskrete Strukturen Die natürlichen Zahlen Bernhard Ganter WS 2009/10 Alles ist Zahl? Wenn in der modernen Mathematik alles auf Mengen aufgebaut ist, woher kommen dann die Zahlen? Sind Zahlen
MehrÜbung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Jakob Vogel Computer-Aided Medical Procedures Technische Universität München Komplexität von Programmen Laufzeit kann näherungsweise
MehrWS 2011/2012. RobertGiegerich. November 12, 2013
WS 2011/2012 Robert AG Praktische Informatik November 12, 2013 Haskell-Syntax: Ergänzungen Es gibt noch etwas bequeme Notation für Fallunterscheidungen, die wir bisher nicht benutzt haben. Bisher kennen
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach
MehrGrundlagen der Informatik
Jörn Fischer j.fischer@hs-mannheim.de Willkommen zur Vorlesung Grundlagen der Informatik ADS-Teil Page 2 Überblick Inhalt 1 Eigenschaften von Algorithmen Algorithmenbegriff O-Notation Entwurfstechniken
MehrBeispiel: Quicksort. Theoretische Informatik III (Winter 2018/19) Prof. Dr. Ulrich Hertrampf. quicksort(a 1,...,a n ): IF n 2 THEN
Als zweites Beispiel betrachten wir ein weiteres Sortierverfahren, das unter dem Namen quicksort bekannt ist. Eingabe ist wieder ein Array a 1,...,a n AUFGABE: Sortiere a 1,...,a n nach vorgegebenem Schlüssel!
MehrWS 2011/2012. RobertGiegerich. November 12, 2013
WS 2011/2012 Robert AG Praktische Informatik November 12, 2013 Haskell-Syntax: Ergänzungen Es gibt noch etwas bequeme Notation für Fallunterscheidungen, die wir bisher nicht benutzt haben. Bisher kennen
MehrDatenstrukturen und Algorithmen (SS 2013)
Datenstrukturen und Algorithmen (SS 2013) Präsenzübung Musterlösung Dienstag, 28.05.2013 Aufgabe 1 (Allgemeine Fragen [20 Punkte]) 1. Tragen Sie in der folgenden Tabelle die Best-, Average- und Worst-Case-
MehrAlgebraische und arithmetische Algorithmen
Kapitel 1 Algebraische und arithmetische Algorithmen 1.1 Das algebraische Berechnungsmodell Struktur: Körper (oder Ring) mit den Operationen +,,, (/) Eingabe: endliche Folge von Zahlen Ausgabe: endliche
MehrKapitel 08: Rekursion und Terminierung Software Entwicklung 1
Kapitel 08: Rekursion und Terminierung Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Rekursion ist eine elegante Strategie zur Problemlösung, die es erlaubt eine Problemstellung
Mehr6. Algorithmen auf Zeichenketten
6. Algorithmen auf Zeichenketten Motivation Wir lernen nun Algorithmen zur Lösung verschiedener elementarer Probleme auf Zeichenketten zu lösen Zeichenketten spielen eine wichtige Rolle in diversen Gebieten
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 7 Fortgeschrittene Datenstrukturen 8 Such-Algorithmen
Mehr6. Induktives Beweisen - Themenübersicht
6. Induktives Beweisen - Themenübersicht Ordnungsrelationen Partielle Ordnungen Quasiordnungen Totale Ordnungen Striktordnungen Ordnungen und Teilstrukturen Noethersche Induktion Anwendung: Terminierungsbeweise
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016
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
Mehr5. Vorrangwarteschlangen - Priority Queues
5. Vorrangwarteschlangen - Priority Queues Priority Queues unterstützen die Operationen Insert(), Delete(), ExtractMin(), FindMin(), DecreaseKey(), Merge(). Priority Queues per se sind nicht für IsElement()-Anfragen,
MehrRückblick: divide and conquer
Rückblick: divide and conquer pi = (xi,yi) } p å } ' }d(p,p) p ''=min(, ') F 0/0 p./95 weitere Algorithmentechniken Greedy-Algorithmen dynamische Programmierung Backtracking branch and bound Heuristiken
MehrLernmodul 7 Algorithmus von Dijkstra
Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer
MehrFormulierung mittels Dynamischer Programmierung
Formulierung mittels Dynamischer Programmierung Beobachtung: die Anzahl der Teilprobleme A i j n mit i j n ist nur Folgerung: der naïve rekursive Algo berechnet viele Teilprobleme mehrfach! Idee: Bottom-up-Berechnung
MehrGrundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Sommersemester 2018 Tobias Lasser Computer Aided Medical Procedures Technische Universität München Multiplikation langer Zahlen Schulmethode: gegeben Zahlen
MehrRekursionsbäume Aufstellen eines Baumes dessen Knoten die Laufzeit auf jeder Rekursionsstufe darstellen und Aufsummieren
Algorithmen und Datenstrukturen 74 3 Rekursionen Vor allem bei rekursiven Algorithmen besitzt die Laufzeitfunktion eine naheliegende rekursive Formulierung, d.h. die Laufzeitfunktion ist konstant für den
MehrStrukturelle Rekursion und Induktion
Kapitel 2 Strukturelle Rekursion und Induktion Rekursion ist eine konstruktive Technik für die Beschreibung unendlicher Mengen (und damit insbesondere für die Beschreibung unendliche Funktionen). Induktion
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
Mehr20. Dynamic Programming II
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
MehrRekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren
Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die
MehrDatenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität
Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität 1 Geometrisches Problem: Problem: Nächstes Paar Eingabe: n Punkte in der Ebene Ausgabe: Das Paar q,r mit geringstem Abstand
MehrDer folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre 1990.
Ein polynomieller Algorithmus für das N-Damen Problem 1 Einführung Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre
MehrEinführung in die Informatik I
Einführung in die Informatik I LOOP Programme, rekursive Funktionen und der Turm von Hanoi Prof. Dr. Nikolaus Wulff Berechenbarkeit Mitte des 20. Jahrhunderts beantworteten Pioniere, wie Alan M. Turing
Mehr