Algorithmen und Datenstrukturen I - Strategien der algorithmischen Problemlösung -

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen I - Strategien der algorithmischen Problemlösung -"

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

Mehr

Algorithmen und Datenstrukturen I - Strategien der algorithmischen Problemlösung -

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen I - Strategien der algorithmischen Problemlösung -

Algorithmen 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

Mehr

Algorithmen und Datenstrukturen 1 Kapitel 3

Algorithmen und Datenstrukturen 1 Kapitel 3 Algorithmen und Datenstrukturen 1 Kapitel 3 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 3.6 Dynamische Programmierung Die rekursive Problemzerlegung kann

Mehr

Algorithmen und Datenstrukturen 1 Kapitel 3

Algorithmen und Datenstrukturen 1 Kapitel 3 Algorithmen und Datenstrukturen 1 Kapitel 3 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 Kapitel 3: Strategien der algorithmischen Problemlösung Vorbemerkungen

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 495 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 05 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen Grundlagen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen

Mehr

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Einführung Grundlagen von Algorithmen Grundlagen

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Fibonacci Zahlen Fibonacci Folge Die Fibonacci

Mehr

Wiederholung. Divide & Conquer Strategie

Wiederholung. Divide & Conquer Strategie Wiederholung Divide & Conquer Strategie Binäre Suche O(log n) Rekursives Suchen im linken oder rechten Teilintervall Insertion-Sort O(n 2 ) Rekursives Sortieren von a[1..n-1], a[n] Einfügen von a[n] in

Mehr

19. Dynamic Programming I

19. Dynamic Programming I 502 19. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixkettenmultiplikation, Matrixmultiplikation nach Strassen [Ottman/Widmayer, Kap.

Mehr

Dynamische Programmierung

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

Mehr

19. Dynamic Programming I

19. Dynamic Programming I Fibonacci Zahlen 9. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixettenmultipliation, Matrixmultipliation nach Strassen [Ottman/Widmayer,

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Dynamisches Programmieren Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester.. Einleitung Diese Lerneinheit widmet sich einer

Mehr

Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy

Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy 2.2 Entwurfsparadigmen Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy 1 Top-Down Zerlege das gegebene Problem in Teilschritte Zerlege Teilschritte

Mehr

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Dynamische Programmierung. Problemlösungsstrategie der Informatik als Problemlösungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Präsentationen, WS 2010/2011 Gliederung

Mehr

Das Problem des Handlungsreisenden

Das Problem des Handlungsreisenden Seite 1 Das Problem des Handlungsreisenden Abbildung 1: Alle möglichen Rundreisen für 4 Städte Das TSP-Problem tritt in der Praxis in vielen Anwendungen als Teilproblem auf. Hierzu gehören z.b. Optimierungsprobleme

Mehr

Software Entwicklung 1

Software 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

Mehr

Algorithmen und Komplexität

Algorithmen und Komplexität Algorithmen und Komplexität Dynamische Programmierung Markus Ullrich Norbert Baum Fachbereich Informatik - IIb07 Hochschule Zittau/Görlitz 28. Mai 2009 1 / 29 Wie sieht es mit langen Ketten aus? A 1 A

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 20 Einstieg in die Informatik mit Java Rekursion Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 20 1 Überblick 2 Rekursion 3 Rekursive Sortieralgorithmen 4 Backtracking

Mehr

ADS: Algorithmen und Datenstrukturen 2

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 25. Vorlesung Dynamisches Programmieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Klausurvorbereitung Tipp: Schreiben Sie sich alle Fragen

Mehr

ADS: Algorithmen und Datenstrukturen 2

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1

Mehr

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

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

Mehr

G. Zachmann Clausthal University, Germany Die wichtigsten Entwurfsverfahren für Algorithmen:

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

Mehr

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

Kapitel 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

Mehr

Datenstrukturen und Algorithmen

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

Mehr

Am Dienstag, den 15. Dezember, ist Eulenfest. 1/60

Am 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

Mehr

Schnelle Multiplikation

Schnelle 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

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale

Mehr

Algorithmen und Datenstrukturen 1 Kapitel 5

Algorithmen 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

Mehr

Multiplikation langer Zahlen

Multiplikation 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

Mehr

Das Damenproblem - funktional und logisch

Das 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

Mehr

Lösungen von Übungsblatt 12

Lö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 Übung Algorithmen und Datenstrukturen Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.

Mehr

Grundbegriffe der Informatik

Grundbegriffe 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

Mehr

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Stand 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

Mehr

Copyright, Page 1 of 7 Heapsort

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

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen 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

Mehr

Programmieren 1 C Überblick

Programmieren 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

Mehr

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

Am 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

Mehr

3.2. Divide-and-Conquer-Methoden

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

Mehr

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

( )= 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

Mehr

Inhalt Kapitel 2: Rekursion

Inhalt 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

Mehr

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

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

Mehr

7. Sortieren Lernziele. 7. Sortieren

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

Mehr

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

Konvexe 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),

Mehr

Informatik II: Algorithmen und Datenstrukturen SS 2013

Informatik 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

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: 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,

Mehr

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen

Mehr

16. Algorithmus der Woche Multiplikation langer Zahlen... schneller als in der Schule

16. 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,

Mehr

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.

6 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

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen 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

Mehr

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

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

Mehr

Algorithmen und Datenstrukturen Heapsort

Algorithmen 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

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

Mehr

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

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

Mehr

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

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum

Mehr

Blockmatrizen. 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 : 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

Mehr

Programmieren in Haskell Programmiermethodik

Programmieren 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

Mehr

Abschnitt 19: Sortierverfahren

Abschnitt 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

Mehr

Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper

Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung Sebastian Küpper Redundanz Rekursiver Lösungen Rekursion kann elegante Bescheibungen zur Problemlösung ergeben

Mehr

Vorlesung Diskrete Strukturen Die natürlichen Zahlen

Vorlesung 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) Ü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

Mehr

WS 2011/2012. RobertGiegerich. November 12, 2013

WS 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

Mehr

Datenstrukturen & Algorithmen

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

Mehr

Grundlagen der Informatik

Grundlagen 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

Mehr

Beispiel: Quicksort. Theoretische Informatik III (Winter 2018/19) Prof. Dr. Ulrich Hertrampf. quicksort(a 1,...,a n ): IF n 2 THEN

Beispiel: 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!

Mehr

WS 2011/2012. RobertGiegerich. November 12, 2013

WS 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

Mehr

Datenstrukturen und Algorithmen (SS 2013)

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

Mehr

Algebraische und arithmetische Algorithmen

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

Mehr

Kapitel 08: Rekursion und Terminierung Software Entwicklung 1

Kapitel 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

Mehr

6. Algorithmen auf Zeichenketten

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

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

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

Mehr

6. Induktives Beweisen - Themenübersicht

6. Induktives Beweisen - Themenübersicht 6. Induktives Beweisen - Themenübersicht Ordnungsrelationen Partielle Ordnungen Quasiordnungen Totale Ordnungen Striktordnungen Ordnungen und Teilstrukturen Noethersche Induktion Anwendung: Terminierungsbeweise

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Algorithmen & Programmierung. Rekursive Funktionen (1)

Algorithmen & Programmierung. Rekursive Funktionen (1) Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden

Mehr

5. Vorrangwarteschlangen - Priority Queues

5. 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,

Mehr

Rückblick: divide and conquer

Rückblick: divide and conquer Rückblick: divide and conquer pi = (xi,yi) } p å } ' }d(p,p) p ''=min(, ') F 0/0 p./95 weitere Algorithmentechniken Greedy-Algorithmen dynamische Programmierung Backtracking branch and bound Heuristiken

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 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

Mehr

Formulierung mittels Dynamischer Programmierung

Formulierung mittels Dynamischer Programmierung Formulierung mittels Dynamischer Programmierung Beobachtung: die Anzahl der Teilprobleme A i j n mit i j n ist nur Folgerung: der naïve rekursive Algo berechnet viele Teilprobleme mehrfach! Idee: Bottom-up-Berechnung

Mehr

Grundlagen: Algorithmen und Datenstrukturen

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

Mehr

Rekursionsbäume Aufstellen eines Baumes dessen Knoten die Laufzeit auf jeder Rekursionsstufe darstellen und Aufsummieren

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

Mehr

Strukturelle Rekursion und Induktion

Strukturelle 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

Mehr

5.4 Das Rucksackproblem

5.4 Das Rucksackproblem Problemstellung: 5.4 Das Rucksackproblem Eingabe: Ganzzahlige Volumina a 1,..., a n > 0, Nutzenwerte c 1,..., c n > 0, ganzzahlige Volumenschranke b. Aufgabe: Packe die Objekte in einen Rucksack von Volumen

Mehr

20. Dynamic Programming II

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

Mehr

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren

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

Mehr

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität 1 Geometrisches Problem: Problem: Nächstes Paar Eingabe: n Punkte in der Ebene Ausgabe: Das Paar q,r mit geringstem Abstand

Mehr

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

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

Mehr

Einführung in die Informatik I

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