Rekursion Klaus Becker (2002).

Slides:



Advertisements
Ähnliche Präsentationen
Fast Fourier Transformation
Advertisements

Die Schulkonsole für Lehrerinnen und Lehrer
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
CPCP Institute of Clinical Pharmacology AGAH Annual Meeting, 29. Februar 2004, Berlin, Praktischer Umgang mit den Genehmigungsanträgen gemäß 12. AMG Novelle.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Übung 6.6Schranken 1.Angenommen, Ihr Algorithmus habe einen Aufwand von g(n) = 5n 3 + n für alle n a)Geben sie eine obere Schranke O(g(n)) an. b)Beweisen.
= = = = 47 = 47 = 48 = =
Scratch Der Einstieg in das Programmieren. Scatch: Entwicklungsumgebung Prof. Dr. Haftendorn, Leuphana Universität Lüneburg,
Klicke Dich mit der linken Maustaste durch das Übungsprogramm! Vereinfachung von Termen Ein Übungsprogramm der IGS - Hamm/Sieg © IGS-Hamm/Sieg 2006 Dietmar.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Die Türme von Hanoi Die Lösungsfindung nach dem Prinzip der Rekursion wird noch einmal textuell und grafisch erläutert
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
PYTHAGORAS 570 v. Chr. wurde Pythagoras auf der ionischen Insel Samos geboren. Als 20-jähriger ging er in Milet bei Thales und Anaximander in die Lehre,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Schieferdeckarten Dach.ppt
Schleifen mit der Turtle
Heute: Scherenzange zeichnen
1 Teil 4 Übung: Uhr. 2 Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert.
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
1. 2 Schreibprojekt Zeitung 3 Überblick 1. Vorstellung ComputerLernWerkstatt 2. Schreibprojekt: Zeitung 2.1 Konzeption des Kurses 2.2 Projektverlauf.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
Gebäudeverschneidung 4
20:00.
© Gabriele Sowada © Gabriele Sowada 2 Manuell Beispiel 1 demonstriert die Vorgehensweise bei der manuellen Programm- Eingabe am.
SK / , , in Hochkössen und der Wildschönau flow Ski- und Snowboardschule Intersport Menzel.
Materialien zum Informatikunterricht (Pohlig-Häberle)
1 Fachtagung am Seniorenorientiertes Design und Marketing ThyssenKrupp Immobilien Design for all - Anpassungen im Wohnungsbestand 1.Demographie.
Die folgenden Gleichungen wurden über die Grundmenge R gelöst. HAYAL ÖZ.
Problemlösen mit Rekursion
Wir üben die Malsätzchen
Turtle Grafik mit Logo Mairegger Martin Schroll Hannes.
Didaktische Programminterpreter
Geg.: Zeichnungsdaten, O Ges.: F´, O´, Strahlengang
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
2.4 Rekursion Klassifikation und Beispiele
PROCAM Score Alter (Jahre)
Baum-Simulation mit Lindenmayer-System
Geometrische Aufgaben
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Analyseprodukte numerischer Modelle
Pigmentierte Läsionen der Haut
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Vortrag von Rechtsanwältin Verena Nedden, Fachanwältin für Steuerrecht zur Veranstaltung Wege zum bedingungslosen Grundeinkommen der Piratenpartei Rhein-Hessen.
1 Mathematical Programming Nichtlineare Programmierung.
Imperfekt Wie sagt man das mit Imperfekt
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Bildergalerie PRESEASON CAMP Juni 2014 Romanshorn Get ready for the Season!
Quali- Aufgaben.
Es war einmal ein Haus
Kompetenztraining Jura Martin Zwickel / Eva Julia Lohse / Matthias Schmid ISBN: © 2014 Walter de Gruyter GmbH, Berlin/Boston Abbildungsübersicht.
Sehen, Hören, Schmecken: wenn uns unsere Sinne täuschen
Wesensmerkmale Gottes UNABHÄNGIG
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Wer ist der Herr? Apostelgeschichte 2,22-36
Rekursionen Erstellt von J. Rudolf im November 2001
 Präsentation transkript:

Rekursion Klaus Becker (2002)

Rekursive Algorithmen Teil 1 Rekursive Algorithmen

Türme von Hanoi 1883 hatte der französische Mathematiker Edouard Lucas jene kleine Geschichte ersonnen, die fortan als die Geschichte der Türme von Hanoi selbst Geschichte machte: Im Großen Tempel von Benares, unter dem Dom, der die Mitte der Welt markiert, ruht eine Messingplatte, in der drei Diamantnadeln befestigt sind, jede eine Elle hoch und so stark wie der Körper einer Biene. Bei der Erschaffung der Welt hat Gott vierundsechzig Scheiben aus purem Gold auf eine der Nadeln gesteckt, wobei die größte Scheibe auf der Messingplatte ruht, und die übrigen, immer kleiner werdend, eine auf der anderen. Das ist der Turm von Brahma. Tag und Nacht sind die Priester unablässig damit beschäftigt, den festgeschriebenen und unveränderlichen Gesetzen von Brahma folgend, die Scheiben von einer Diamantnadel auf eine andere zu setzen, wobei der oberste Priester nur jeweils eine Scheibe auf einmal umsetzen darf, und zwar so, dass sich nie eine kleinere Scheibe unter einer größeren befindet. Sobald dereinst alle vierundsechzig Scheiben von der Nadel, auf die Gott sie bei der Erschaffung der Welt gesetzt hat, auf eine der anderen Nadeln gebracht sein werden, werden der Turm samt dem Tempel und allen Brahmanen zu Staub zerfallen, und die Welt wird mit einem Donnerschlag untergehen.

Türme von Hanoi A B C Aufgabe: Versuchen Sie, 4 (einfach) bzw. 5 oder 6 (schwieriger) Scheiben von Platz A nach Platz C nach den Regeln der Priester von Benares zu bringen. Benutzen Sie das Simulationsprogramm „Hanoi“. Wenn Sie es geschafft haben, überlegen Sie sich, wie lang es dauert, einen Turm aus 64 Scheiben umzubauen, wenn man 1 Sekunde benötigt, um eine Scheibe zu bewegen.

Problembeschreibung A B C A B C AZ: Bringe n-Stapel von A über B nach C ZZ: A B C

Lösungsidee AZ: A B C ... A B C ... A B C ZZ: A B C

Struktur der Lösungsidee A B C Bringe (n-1)-Stapel von A über C nach B A B C Bringe Scheibe von A nach C A B C Bringe (n-1)-Stapel von B über A nach C A B C

Rekursive Problemreduktion Bringe n-Stapel von A über B nach C Lösung: Bringe (n-1)-Stapel von A über C nach B Bringe Scheibe von A nach C Bringe (n-1)-Stapel von B über A nach C Beachte: Die Lösung reduziert das Problem auf ein strukturgleiches Problem in verkleinerter Form (rekursive Problemreduktion).

Rekursiver Algorithmus Bringe n-Stapel von X über Y nach Z wenn n> 1 dann Bringe (n-1)-Stapel von X über Z nach Y Bringe Scheibe von X nach Z Bringe (n-1)-Stapel von Y über X nach Z sonst Bringe Scheibe von X nach Z Beachte: Der Algorithmus ruft sich selbst auf, er ist infolgedessen rekursiv.

Rekursiver Algorithmus Hanoi(n: integer; X, ,Y, Z: char) wenn n> 1 dann Hanoi(n-1, X,Z,Y) Bringe Scheibe von X nach Z Hanoi(n-1, Y, X, Z) sonst Bringe Scheibe von X nach Z Beachte: Der Algorithmus ruft sich selbst auf, er ist infolgedessen rekursiv.

Abarbeitung rekursiver Algorithmen Hanoi(3, A, B, C) Hanoi(2, A, C, B) Hanoi(1, A, B, C) Bringe Scheibe von A nach C Bringe Scheibe von A nach B Hanoi(1, C, A, B) Bringe Scheibe von C nach B Hanoi(2, B, A, C) Hanoi(1, B, C, A) Bringe Scheibe von B nach A Bringe Scheibe von B nach C ALG. Hanoi(n: integer; X, ,Y, Z: char) WENN n> 1 DANN Hanoi(n-1, X,Z,Y) Bringe Scheibe von X nach Z Hanoi(n-1, Y, X, Z) SONST Wiederholte Ausführung des Algorithmus, bis die Abbruchbedingung erfüllt ist.

Übung ALG. Hanoi(n: integer; X, ,Y, Z: char) WENN n> 1 DANN Hanoi(n-1, X,Z,Y) Bringe Scheibe von X nach Z Hanoi(n-1, Y, X, Z) SONST Sie sollen einen Turm mit 4 Scheiben umschichten. Gehen Sie dabei nach dem entwickelten rekursiven Algorithmus vor. Notieren Sie sich zunächst sämtliche Scheibenbewegungen. Testen Sie sie anschließend mit dem Simulationsprogramm.

Zusammenfassung Entwurf: Ausführung: Muss vom Entwickler geleistet werden. Wird vom System übernommen. ALG. Hanoi(n: integer; X, ,Y, Z: char) WENN n> 1 DANN Hanoi(n-1, X,Z,Y) Bringe Scheibe von X nach Z Hanoi(n-1, Y, X, Z) SONST Hanoi(3, A, B, C) Hanoi(2, A, C, B) Hanoi(1, A, B, C) Bringe Scheibe von A nach C Bringe Scheibe von A nach B Hanoi(1, C, A, B) Bringe Scheibe von C nach B Hanoi(2, B, A, C) Hanoi(1, B, C, A) Bringe Scheibe von B nach A Bringe Scheibe von B nach C Entwurfsstrategie: Reduziere das Problem auf ein strukturgleiches Problem in „verkleinerter Form“, sofern das Problem nicht direkt lösbar ist.

Quicksort Eine Reihung von Zahlen / ... soll der Größe nach sortiert werden. AZ: Zahlen: 27 13 80 82 6 44 26 15 16 39 90 53 anfang ende Quicksort(anfang, ende) ZZ: Zahlen: 6 13 15 16 26 27 39 44 53 80 82 90 anfang ende

Quicksort ALGORITHMUS Quicksort(anfang, ende: tIndex) links := anfang; rechts := ende; Zahlen: 27 13 80 82 6 44 26 15 16 39 90 53 anfang ende links rechts zerlege(links, rechts) p Zahlen: 27 13 39 16 6 15 26 44 82 80 90 53 anfang rechts links ende WENN anfang < rechts Quicksort(anfang, rechts) Zahlen: 6 13 15 16 26 27 39 44 82 80 90 53 anfang rechts links ende WENN links < ende Quicksort(links, ende) Zahlen: 6 13 15 16 26 27 39 44 53 80 82 90 anfang rechts links ende

Rekursive Reduktions-schritte Quicksort Entwurfsstrategie: Reduziere das Problem auf ein strukturgleiches Problem in „verkleinerter Form“, sofern das Problem nicht direkt lösbar ist. ALGORITHMUS Quicksort(anfang, ende: tIndex) links := anfang; rechts := ende; Vorbereitung zerlege(links, rechts); WENN anfang < rechts Quicksort(anfang, rechts); Rekursive Reduktions-schritte WENN links < ende Quicksort(links, ende); Abbruch-bedingung Bemerkung: Kurzer Algorithmus, der einen komplexen Ablauf festlegt.

Teil 2 Turtle-Grafik

Turtle-Grafik Die Turtle lebt auf einer Zeichenfläche. Die Turtle kann sich bewegen, drehen und – zum Zeichnen – eine Spur hinterlassen. Zeichen-fläche Turtlespur Turtle

Turtle-Grafik Die Turtle agiert auf Befehle / führt Anweisungen aus. Draw(100)

Turtle-Grafik Die Turtle kann „neue Befehle“ lernen. Diese werden in Turtle-Programmen festgelegt. Quadrat procedure Quadrat; begin with Turtle do begin Draw(100); Turn(90); Draw(100); Turn(90); Draw(100); Turn(90); Draw(100); Turn(90); end; end;

Die Turtle als Objekt Die Turtle wird als ein Objekt der Klasse TTurtle erzeugt. Sie besitzt infolgedessen charakteristische Eigenschaften ( Attribute) und kann charakteristische Operationen ausführen ( Methoden). (0|0) (688|0) TTurtle Attribute XPos : double // x-Position YPos : double // y-Position Angle : double // Richtung Color : TColor // Zeichenfarbe ... Ereignisse Methoden Turtle (0|452) (688|452)

Die Turtle als Objekt TTurtle ... Attribute ... Ereignisse Methoden Init // Die Turtle wird in die Mitte der Zeichenfläche mit Blickrichtung nach rechts gesetzt. Draw(d: double) // Die Turtle zeichnet in der aktuell. Blickrichtung eine Strecke der Länge d. DrawTo(x,y: double) // Die Turtle zeichnet eine Strecke zum Punkt (x|y). Turn(a: double) // Die Turtle dreht sich um den Winkel a (a > 0: Linksdr.; a < 0: Rechtsdr.). TurnTo(a: double) // Die Turtle setzt ihre Blickricht. nach a (a = 0: rechts; a = 90: oben; ...). Move(d: double) // Die Turtle bewegt sich – ohne zu zeichnen – um d in Blickrichtung. MoveTo(x,y: double) // Die Turtle bewegt sich – ohne zu zeichnen – zum Punkt (x|y). Clear // Die Zeichenfläche der Turtle wird gelöscht.

Zeichnen mit der Turtle AZ: procedure Quadrat(x: real); var i: integer; begin for i := 1 to 4 do begin Turtle.Draw(x); Turtle.Turn(90); end; end; Al: Quadrat(200); ZZ:

Zeichnen mit der Turtle AZ: procedure Quadrat(x: real); var i: integer; begin with Turtle do begin for i := 1 to 4 do begin Draw(x); Turn(90); end; end; end; Al: Quadrat(200); ZZ: Quadrat

Übungen Entwickeln Sie ein Turtle-Programm, mit dem man einen (primitiven) Tannenbaum zeichnen kann. Gehen Sie wie folgt vor: Überlegen Sie sich zunächst, aus welchen Bestandteilen der Tannenbaum besteht. Formulieren Sie anschließend die Algorithmen für die Bestandteile. Implementieren und testen Sie die Algorithmen abschließend mit Hilfe der Turtle-Komponente.

Übungen Entwickeln Sie ein Turtle-Programm, mit dem man einen Quadratturm (beliebiger) Höhe zeichnen kann. Formulieren Sie zunächst die benutzten Algorithmen. Implementieren und testen Sie die Algorithmen abschließend mit Hilfe der Turtle-Komponente.

Selbstähnliche Figuren Teil 3 Selbstähnliche Figuren

Selbstähnlichkeit

Selbstähnlichkeit Eine Figur ist selbstähnlich, wenn sie sich in Teile zerlegen lässt, die zur ihr ähnlich sind.

Rekursive Problemreduktion Baum(200) Rekursive Problemreduktion: Baum(200) Turtle.Draw(200); Turtle.Turn(45); Baum(100); Turtle.Turn(-90); Turtle.Move(-200); Baum(100) Baum(100) Trivialer Fall: Draw(200) Baum(x) // falls x < 2 // keine Operationen

Rekursiver Algorithmus Algorithmus Baum(Stamm: real) WENN Stamm >= 2 DANN Turtle.Draw(Stamm); Turtle.Turn(45); Baum(Stamm/2); Turtle.Turn(-90); TurtleTurn(45); Turtle.Move(-Stamm);

Übungen Suchen Sie sich auf den folgenden Seiten eine selbstähnliche Figur aus und entwickeln Sie für diese ein Turtle-Zeichenprogramm. Gehen Sie wie folgt vor: Machen Sie sich (exemplarisch) einen rekursiven Problemreduktionsschritt klar. Überlegen Sie sich, was im trivialen Fall erfolgen soll (nichts / ...). Formulieren Sie einen rekursiven Algorithmus und implementieren ihn mit Hilfe der Turtle-Komponente.

Schachtelhalm

Busch

Teufelsgabel

Treppe ins Nirgendwo

Quadratpflanze

Sierpinski-Dreieck

Pythagoras-Baum

Farn

Koch-Kurve

Variationen der Koch-Kurve