4. Fortgeschrittene Algorithmen 4.1 Rekursion 4.2 Daten und Datenstrukturen 4.3 Bäume
|
|
- Valentin Hermann
- vor 7 Jahren
- Abrufe
Transkript
1 4. Fortgeschrittene Algorithmen 4.1 Rekursion 4.2 Daten und Datenstrukturen 4.3 Bäume 4.1-1
2 4.1 Rekursion Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines Gesamtalgorithmus rekursiv verwendet. Klassisches Beispiel: Berechnung von n! (Fakultät von n) Definition: n! = 1*2*3*4*...*n oder: 1! = 1 n! = n*(n-1)!, n>1 Wir sehen: Die Berechnung von n! wird auf die Berechnung von (n-1)! zurück geführt, diese auf die Berechnung von (n-2)! usw
3 Rekursive Berechnung der Fakultät (1) Pseudocode Modul Fakultät (n) // Berechne die Fakultät von n für alle Ganzzahlen n mit n > 0 // d.h. n! = Fakultät (n) = 1 * 2 * 3 *...* n; z. B. Fakultät(4) = 24 Falls n = 1 dann Ergebnis ist 1 sonst multipliziere n mit Fakultät (n-1) 4.1-3
4 Rekursive Berechnung der Fakultät (2) Anmerkung: Die Berechnung von n! kann auch ohne Rekursion (iterativ) beschrieben werden. Allgemein gilt sogar: für jeden rekursiven Algorithmus gibt es einen gleich-wertigen iterativen Algorithmus. Rekursive Algorithmen sind aber häufig knapper und leichter zu verstehen
5 Vermeidung endloser Rekursion Die Definition des rekursiven Moduls muss einen Ausgang vorsehen, bei dem die Berechnung ohne erneuten Aufruf desselben Moduls erfolgt. Es muss sichergestellt sein, dass dieser Ausgang nach endlich vielen Modulaufrufen erreicht wird
6 Beispiel: Umkehrung einer Buchstabenfolge (1) Algorithmus Entferne ersten Buchstaben Kehre den Rest des Wortes um Hänge den ersten Buchstaben hinten an Modul Umkehrung(Buchstabenfolge) // Kehrt die Folge der Buchstaben eines gegebenen // Strings um Falls Buchstabenfolge enthält nur einen Buchstaben dann schreibe ihn nieder sonst entferne ersten Buchstaben von Buchstabenfolge Umkehrung(Rest der Buchstabenfolge) hänge entfernten Buchstaben hinten an 4.1-6
7 Beispiel: Umkehrung einer Buchstabenfolge (2) Kehre "GRAS" um 4.1-7
8 Beispiel: Umkehrung einer Buchstabenfolge (3) Anmerkung Die Rückkehr aus einem rekursiven Modul erfolgt stets an die Stelle, von der aus das Modul aufgerufen wurde
9 Berühmtes Beispiel: Die Türme von Hanoi (1) Das Problem Bringe 64 Scheiben von a (Quelle) nach b (Senke) unter Zuhilfenahme von c (Arbeitsbereich). Es darf niemals eine größere Scheibe über einer kleineren Scheibe liegen, und es darf immer nur eine Scheibe auf einmal bewegt werden
10 Beispiel: Die Türme von Hanoi (2) Schrittweise Verfeinerung 1. Übertrage die oberen 63 Scheiben von Stab a nach Stab c Bewege die unterste Scheibe von Stab a nach Stab b Übertrage die oberen 63 Scheiben von Stab c nach Stab b 2. Übertrage n-1 Scheiben von der Quelle zum Arbeitsbereich Bewege 1 Scheibe von der Quelle zur Senke Übertrage n - 1 Scheiben vom Arbeitsbereich zur Senke
11 Beispiel: Die Türme von Hanoi (3) Modul Turmbewegung(n, Quelle, Senke, Arbeitsbereich) // Bewegt einen Turm mit n Scheiben von Quelle zu Senke und benutzt den Arbeits- // bereich, falls erforderlich. Falls n = 1 dann bewege Scheibe von der Quelle zur Senke sonst Turmbewegung(n-1, Quelle, Arbeitsbereich, Senke) bewege 1 Scheibe von der Quelle zur Senke Turmbewegung(n-1, Arbeitsbereich, Senke, Quelle)
12 Beispiel: Die Türme von Hanoi (1) Falls 3 = 1 dann sonst übertrage 2 Scheiben von a nach c Falls 2 = 1 dann sonst übertrage 1 Scheiben von a nach b a b c Falls 1 = 1 dann bewege Scheibe von a nach b sonst Bewege Scheibe von a nach c Übertrage 1 Scheibe von b nach c Falls 1 = 1 dann bewege Scheibe von b nach c sonst Bewege Scheibe von a nach b Übertrage 2 Scheiben von c nach b Quelle Senke
13 Beispiel: Die Türme von Hanoi (2) Falls 2 = 1 dann sonst übertrage 1 Scheibe von c nach a a b c Falls 1 = 1 dann bewege Scheibe von c nach a sonst Bewege Scheibe von c nach b Übertrage 1 Scheibe von a nach b Falls 1 = 1 dann bewege Scheibe von a nach b sonst Quelle Senke Anmerkung Die Lösung des Problems "Türme von Hanoi" durch einen iterativen Algorithmus ist wenig elegant und schwerer zu verstehen
14 Strategie zum Entwurf rekursiver Algorithmen 1. Definiere Schritt i durch Rückgriff auf Schritt i-1, wobei Schritt i-1 ein "einfacheres" Problem löst. 2. Finde eine Ausstiegsbedingung zum Abbruch der Rekursion
15 Weiteres Beispiel: Rekursives Sortieren (1) Algorithmus Sortiere erste Hälfte der Liste Sortiere zweite Hälfte der Liste Mische beide Hälften zusammen (engl.: merge) Modul Sortiere (Liste) // Sortiert eine gegebene Liste von n Namen alphabetisch Falls n > 1 dann Sortiere (erste Listenhälfte) Sortiere (zweite Listenhälfte) Mische die zwei Hälften zusammen
16 Beispiel: Rekursives Sortieren (2)
17 Beweis von rekursiven Formeln Mathematische Formeln, die rekursiv definiert sind, werden meist durch Induktion bewiesen. Induktionsbasis: Formel ist korrekt für n = 1, n N Induktionsannahme: Formel sei korrekt für ein n 1, n N Schluss von n auf n+1: Berechnung des Formelwertes für n+1 unter Verwendung der Formel für n
18 Komplexität Bei rekursiver Berechnung ist die Komplexität eines Algorithmus oft wesentlich höher als bei geschlossenen Ausdrücken! Beispiel: Berechnen der Summe aller Zahlen von 1 bis n s(1) = 1, n = 1 s(n) = n + s(n-1), n > 1 erfordert n-1 Operationen. n(n+1) 2 erfordert drei Operationen für beliebig große n
19 Beweis der Korrektheit für die Türme von Hanoi (1) Behauptung Der Algorithmus Turmbewegung(n, Quelle, Senke, Arbeitsbereich) ist korrekt (tut das Gewünschte und terminiert). Beweis Behauptung 1: Turmbewegung tut das Gewünschte
20 Beweis der Korrektheit für die Türme von Hanoi (2) Beweis durch Induktion über die Anzahl der Scheiben n: Induktionsbasis: n = 1: klar Induktionsannahme: Der Algorithmus funktioniere für n Scheiben, n 1 Induktionsschluss: Algorithmus bewegt zunächst n Scheiben von der Quelle zum Arbeitsbereich (funktioniert nach Induktionsannahme), bewegt dann die n+1-te Scheibe zur Senke (funktioniert nach Induktionsbasis) und bewegt schließlich die n Scheiben vom Arbeitsbereich zur Senke (funktioniert nach Induktionsannahme)
21 Beweis der Korrektheit für die Türme von Hanoi (3) Behauptung 2: Turmbewegung terminiert Beweis: Da jeder Aufruf höchstens zwei neue Aufrufe erzeugen kann und bei jedem Aufruf weniger Scheiben bewegt werden, wird irgendwann der Algorithmus mit n = 1 aufgerufen
22 Rekursion in Java Wir werden uns jetzt näher mit der Rekursion in Java beschäftigen
23 Binomische Formel Aus der Schule bekannt: (a+b) 2 = a * a * b+b 2 (a+b) 3 = a * a 2 *b + 3 * a * b 2 + b 3 (a+b) n = Σn n k a n-k b k = a n n * a (n-k) *b k b n k heißt Binominalkoeffizient und ist definiert durch das Pascalsche Dreieck n k=0 n k k Pascalsches Dreieck n-1 k-1 + n k Bauprinzip n-1 k
24 Binomische Formel in BlueJ 2 rekursive Aufrufe Aufruf Parameter Resultat
25 Verfolgung des Codes Wir verfolgen die Berechnung von n!, indem wir diagnostische Ausgabe einbauen: static int fakultaet(int n){ if (n==0) return 1; else { System.out.println( ">>>fakultaet("+ n +")"); int result = fakultaet(n-1)*n; System.out.println( "<<< fakultaet("+ n +")="+result); return result; Wer zuletzt kommt, mahlt zuerst
26 Entfaltung der Berechnung Die Berechnung fakt(4) = = fakt(3) 4 int fakt(int n){ kann man als Aufrufbaum darstellen: if(n==0) return 1; else return fakt(n-1)*n; * * * 4 = * * 4 fakt(2) 3 * fakt(1) 2 * 3 * = * * 3 4 = * * 3 4 * 2 * 2 fakt(0)
27 Rekursion kann jede Schleife ersetzen Jede Schleife while(bedingung) {... tuwas();... lässt sich ersetzen durch einen Aufruf schleife(); wobei schleife() definiert ist durch void schleife(){ if(bedingung) {... tuwas();... schleife(); Ulam-Schleife int n = 17; while (n>1){ if (n mod 2==0) n=n/2; else n=3*n+1; Ulam - Rekursion void ulam(int n){ if (n>1){ if (n%2==0) n=n/2; else n=3*n+1; ulam(n); ulam(17);
28 Wechselseitige Rekursion Wenn zwei oder mehr Funktionen wechselseitig aufeinander Bezug nehmen, spricht man von wechselseitiger Rekursion boolean istgerade(int n){ if (n==0) return true; else return istungerade(n-1); boolean istungerade(int n){ if (n==0) return false; else return istgerade(n-1);
29 Das Spiel Zwei Spieler dürfen von einem Haufen von n Smarties abwechselnd 3, 7, oder 11 Smarties entfernen Wer nicht mehr ziehen kann, hat verloren. Wir beginnen mit n Smarties (z.b. n=137) Sie machen den ersten Zug Haben Sie eine Gewinnstrategie? Wie lautet diese ggf.? Schreiben Sie eine Java-Methode, um optimal zu spielen
30 Einer wird gewinnen Wenn ich am Zug bin Wenn n < 3 habe ich verloren Wenn Du am Zug bist Wenn n < 3 hast Du verloren Wenn Ich am Zug bin Wenn Du bei (n-3) verloren hast, kann ich gewinnen Wenn Du bei (n-7) verloren hast, kann ich gewinnen Wenn Du bei (n-11) verloren hast, kann ich gewinnen Wenn Du am Zug bist Wenn ich bei (n-3) verloren habe, kannst Du gewinnen Wenn ich bei (n-7) verloren habe, kannst Du gewinnen Wenn ich bei (n-11) verloren habe, kannst Du gewinnen Für die letzten beiden Punkte müssen natürlich mindestens noch 3, 7 bzw. 11 Smarties vorhanden sein
31 Erster Entwurf Funktion boolean iwin(int n) Soll genau dann true zurückliefern, wenn noch n Smarties auf dem Tisch liegen, ich am Zug bin, und es eine Gewinnstrategie gibt für mich. Funktion boolean youwin(int n) Analog für den Gegner Kann noch eleganter programmiert werden
32 Das Spiel Man käme sogar mit nur einer Funktion firstplayerwins aus, denn iwin und youwin stellen die gleiche Funktion dar!
33 Testen der Zugoptionen iwin(137) = true Ich kann also gewinnen Aber wie? Wir testen youwin(137-3) = true youwin(137-7) = true youwin(137-11)= false Wir schließen 11 Smarties wegnehmen ist der Siegeszug
34 Terminierung rekursiver Funktionen Damit eine rekursive Funktion t rekfunk(t 1 n 1,..., t k n k ){... rekfunk(e 1,...,e k )... terminiert, müssen die Parameterwerte e 1,..., e k des rekursiven Aufrufes einfacher sein als die Parameterwerte n 1,..., n k des ursprünglichen Aufrufs Was heißt einfacher? Es muss eine mathematische Funktion F : t 1... t k N geben mit F(n 1,...,n k ) > F(e 1,...,e k )
35 Beispiele int ggt(int m,int n){ if (m==n) return m; else if (m > n) return ggt(m-n,n); else return ggt(m,n-m); int fakt(int n){ if (n==0) return 1; else return fakt(n-1)*n; int fibo(int n){ if (n < 2) return 1; else return fibo(n-1)+fibo(n-2); int mccarthy(int n){ if (n > 100) return n-10; else return mccarthy(mccarthy(n+11)); F(m,n) = m+n F(n) = n F(n) = n Experimentieren Sie mit dieser Funktion Zeigen Sie, dass sie immer terminiert
36 Die Fibonacci-Folge (F n ) = 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,... Bildungsgesetz: F 0 = 1, F 1 = 1, F n+1 =F n + F n-1 Anwendungen Natürliche Wachstumsprozesse Kaninchenvermehrung Blütenstände, Tannenzapfen Schneckenhäuser Die Fibonacci-Folge ist eng mit dem goldenen Schnitt verknüpft Populäres Thema im Internet, z.b. hier:
37 Effizienz Mit jeder Programmiermethodologie kann man ineffiziente Programme schreiben Anfängerfehler bei rekursiven Funktionen: Wiederberechnung bereits bekannter Werte int fibo(int n){ if (n < 2) return 1; else return fibo(n-2)+fibo(n-1); Dieser Aufruf muss fibo(n-2) erneut berechnen Aufrufbaum: fibo(4) fibo(2) fibo(3) fibo(0) fibo(1) fibo(1) fibo(2) fibo(0) fibo(1)
38 Effizienzsteigerung Iterative Version von fibo: static int fibonacci(int n){ int letzte=1, vorletzte = 1; for(int k=0; k<=n; k++){ {int temp = letzte; letzte = letzte+vorletzte; vorletzte = temp; return vorletzte; Zwei Hilfsvariablen: letzte, vorletzte letzte fibo(n+1) vorletzte fibo(n) In jedem Schritt: vorletzte letzte letzte letzte + vorletzte Da das nicht gleichzeitig geht, braucht man Hilfsvariable temp. fibo(n) : n letzte vorletzte
39 Rekursiv: effizient und klarer Rekursiv geht auch dies einfacher Vertauschen der Variablen bei der Parameterübergabe Keine Hilfsvariable benötigt Trick: Hilfsvariablen werden zu Parametern static int fibrek(int n, int k, int letzte, int vorletzte){ if(k==n) return vorletzte; else return fibrek(n, k+1,letzte+vorletzte, letzte); static int fibo(int n){ return fibrek(n,0,1,1); fibo(n) : n letzte vorletzte
40 Weitere Vereinfachung Wir können fibrek noch vereinfachen: In fibrek(n,k,...,...) wird k hochgezählt bis n. Stattdessen können wir n bis zu 0 hinunterzählen: static int fibrek(int n, int letzte, int vorletzte){ if(n==0) return vorletzte; else return fibrek(n-1, letzte+vorletzte, letzte); static int fibo(int n){ return fibrek(n,1,1); Wie können wir sicher sein, dass alles stimmt? Testen? Beweisen? n letzte vorletzte
41 Fazit Rekursion bedeutet Selbstbezüglichkeit. Die Rekursion stellt eine einfache und elegante Ausdrucksmöglichkeit für die Berechnung vieler Probleme dar. Sie ist grundsätzlich gleichwertig mit der Iteration (Schleife). Der Beweis der Korrektheit erfolgt durch Induktion
Rekursion. Selbstbezug, rekursive Funktionen, rekursive Prozeduren, Terminierung, Effizienz, Korrektheit, Rekursion und Induktion
Rekursion Selbstbezug, rekursive Funktionen, rekursive Prozeduren, Terminierung, Effizienz, Korrektheit, Rekursion und Induktion Ein kleines Problem Schreiben Sie eine Methode writebin, die eine Dezimalzahl
MehrEin Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines Gesamtalgorithmus rekursiv verwendet.
3.6 Rekursion Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines Gesamtalgorithmus rekursiv verwendet. Klassisches Beispiel: Berechnung von n! (Fakultät
MehrII.3.1 Rekursive Algorithmen - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -
MehrAufgabenblatt: Methoden - rekursiv
Aufgabenblatt: Methoden - rekursiv- Seite 1 Aufgabenblatt: Methoden - rekursiv (1.) Wird noch erstellt! Lösen Sie die folgenden Aufgaben indem Sie: - Basis und Rekursive Bedingung formulieren! - die vorgegebene
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
MehrFHZ. K13 Rekursion. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt
Inhalt 1. Einführung 1. Beispiel: Fakultät 2. Beispiel: Zahlenfolge 3. Beispiel: Formale Sprache 4. Unterschied Iteration/Rekursion 2. Rekursive Methoden 1. Beispiel: Fakultät 2. Beispiel: "Türme
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
MehrRekursive Funktionen
Um Rekursion zu verstehen, muss man vor allem Rekursion verstehen. http://www2.norwalk-city.k12.oh.us/wordpress/precalc/files/2009/05/mona-lisa-jmc.jpg Rekursive Funktionen OOPM, Ralf Lämmel Was ist Rekursion?
MehrBeispiel 1: Fakultät
16. Rekursion Beispiel 1: Fakultät Rekursive Definition der Fakultät (Mathematik) n! = 1 falls n=0 n*(n-1)! falls n>0 Programmierung mittels einer rekursiven Funktion in C++ double fakultaet(int n) if
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
MehrRekursive Funktionen
Um Rekursion zu verstehen, muss man vor allem Rekursion verstehen. http://www2.norwalk-city.k12.oh.us/wordpress/precalc/files/2009/05/mona-lisa-jmc.jpg Rekursive Funktionen OOPM, Ralf Lämmel Was ist Rekursion?
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 Administratives Zentralübung (Mittwoch, 09:45
MehrAlgorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen
Ludwig-Maximilians-Universität München München, 16.04.2018 Institut für Informatik Prof. Dr. Thomas Seidl Anna Beer, Florian Richter Algorithmen und Datenstrukturen SS 2018 Übungsblatt 1: Grundlagen Tutorien:
MehrDatenstrukturen. Mariano Zelke. Sommersemester 2012
Datenstrukturen Mariano Zelke Sommersemester 2012 Mariano Zelke Datenstrukturen 2/19 Das Teilfolgenproblem: Algorithmus A 3 A 3 (i, j bestimmt den Wert einer maximalen Teilfolge für a i,..., a j. (1 Wenn
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
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
MehrGrundlagen der Programmierung
Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind ausgewählte Teile in Anlehnung an
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
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
MehrSoftware Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Rekursion Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27 Motivation Beispiel: Fibonacci-Folge
Mehr11. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Mathematische Rekursion. Rekursion in Java: Genauso! Unendliche Rekursion. n!
Mathematische Rekursion 11. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration, Lindenmayer Systeme Viele mathematische Funktionen sind sehr natürlich
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
Mehr12. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Lernziele. Mathematische Rekursion. Rekursion in Java: Genauso! n! =
Lernziele Sie verstehen, wie eine Lösung eines rekursives Problems in Java umgesetzt werden kann. Sie wissen, wie Methoden in einem Aufrufstapel abgearbeitet werden. 12. Rekursion Mathematische Rekursion,
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
MehrAlgorithmenbegriff: Berechenbarkeit. Algorithmenanalyse. (Berechnung der Komplexität)
Über-/Rückblick Algorithmenbegriff: Berechenbarkeit Turing-Maschine RAM µ-rekursive Funktionen Zeit Platz Komplexität Algorithmentechniken Algorithmenanalyse (Berechnung der Komplexität) Rekursion Iteration
MehrÜbung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 Matthias Wieczorek Computer-Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45
MehrJAVA - Rekursion
Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Allgemeines Fakultät Fibonacci Türme von Hanoi Übungen Informatik 1 Folie 2 Ein Objekt
Mehr11. Rekursion, Komplexität von Algorithmen
11. Rekursion, Komplexität von Algorithmen Teil 2 Java-Beispiele: Power1.java Hanoi.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 23. Nov. 2015 Anwendung der Rekursion Rekursiv
MehrAlgorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1
Algorithmen und Datenstrukturen 1. EINLEITUNG Algorithmen und Datenstrukturen - Ma5hias Thimm (thimm@uni-koblenz.de) 1 Allgemeines Einleitung Zu den Begriffen: Algorithmen und Datenstrukturen systematische
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
MehrMathematische Rekursion
Rekursion Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die Funktion erscheint in ihrer eigenen Definition. Mathematische Rekursion o Viele mathematische
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassenmethoden Teil 2
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Klassenmethoden Teil 2 Rekursion 2/23 Definition Rekursion, die siehe Rekursion Was ist Rekursion Allgemein: Rekursion ist die Definition
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
MehrKasparov versus Deep Blue. Till Tantau. Institut für Theoretische Informatik Universität zu Lübeck
Kasparov versus Deep Blue Institut für Theoretische Informatik Universität zu Lübeck 18. Vorlesung zu Informatik A für MLS 14. Dezember 2006 Die Lernziele der heutigen Vorlesung und der Übungen. 1 Das
MehrAbschnitt 11: Korrektheit von imperativen Programmen
Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961
MehrDiskrete Strukturen Kapitel 2: Grundlagen (Beweise)
WS 2014/15 Diskrete Strukturen Kapitel 2: Grundlagen (Beweise) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_14
MehrC++ - Kontrollstrukturen Teil 2
C++ - Kontrollstrukturen Teil 2 Reiner Nitsch 8417 r.nitsch@fbi.h-da.de Schleife und Verzweigung kombiniert SV initialisieren while(b1) if(b2) w f V1 V2 SV Richtung Ziel verändern Wichtiger Baustein vieler
MehrProgrammieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik
Programmieren I Methoden-Spezial Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe bei primitivem Datentypen (Wertkopie) public class MethodParameters
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2015/16 2. Vorlesung Sortieren mit anderen Mitteln Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-11 Teile und herrsche Idee: teile den Kartenstapel
MehrMB2-PR2, WS10/11 Rekursive Unterprogramme S. 1
MB2-PR2, WS10/11 Rekursive Unterprogramme S. 1 Inhaltsverzeichnis Rekursive Unterprogramme...1 1. Das Beispiel fakultaet...1 2. Rekursive Funktionen mit Papier und Bleistift ausführen...1 3. Das Beispiel
MehrObjektorientierte Programmierung (ZQ1u2B)
Objektorientierte Programmierung (ZQ1u2B) Woche 4 Rekursion Christopher Scho lzel Technische Hochschule Mittelhessen 4. November 2015 Inhalt Rekursion Lineare Rekursion Verzweigte Rekursion Verschränkte
Mehr8 Anwendung: Suchen. Folge a ganzer Zahlen; Element x. Wo kommt x in a vor?
8 Anwendung: Suchen Gegeben: Gesucht: Folge a ganzer Zahlen; Element x Wo kommt x in a vor? Naives Vorgehen: Vergleiche x der Reihe nach mit a[0], a[1], usw. Finden wir i mit a[i] == x, geben wir i aus.
MehrFolgen und Funktionen in der Mathematik
Folgen und Funktionen in der Mathematik Anhand von einigen exemplarischen Beispielen soll die Implementierung von mathematischen Algorithmen in C/C++ gezeigt werden: Reelle Funktionen in C/C++ Diese wird
MehrInformatik I. Informatik I Iteration vs. Rekursion. Iteration vs. Rekursion Iteration vs. Rekursion. 20. Iteration vs.
Informatik I 1. Februar 2011 20. Informatik I 20. Jan-Georg Smaus 20.1 Albert-Ludwigs-Universität Freiburg 1. Februar 2011 Jan-Georg Smaus (Universität Freiburg) Informatik I 1. Februar 2011 1 / 31 Jan-Georg
MehrProgrammieren I. Methoden-Special Heusch --- Ratz 6.1, Institut für Angewandte Informatik
Programmieren I Methoden-Special Heusch --- Ratz 6.1, 6.2 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Parameterübergabe: Wertkopie -By- public class MethodParameters { public
MehrErste Java-Programme (Scopes und Rekursion)
Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Scopes und Rekursion) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/
MehrKapitel 12: Induktive
Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter
MehrSchnittstellen, Stack und Queue
Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In
Mehr4 Rekursionen. 4.1 Erstes Beispiel
4 Rekursionen Viele Algorithmen besitzen sowohl eine iterative als auch eine rekursive Lösung. Sie unterscheiden sich darin, dass die iterative Version meist einen etwas längeren Kode besitzt, während
MehrVorkurs Informatik WiSe 17/18
Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 10.10.2017 Technische Universität Braunschweig, IPS Überblick Einleitung Türme von Hanoi Rekursion Beispiele 10.10.2017 Dr. Werner Struckmann
MehrProf. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015
Technische Universität Dortmund Informatik VII (Graphische Systeme) Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015 Übungsaufgaben zum Vorkurs Informatik Wintersemester 2015/2016 Teil I
Mehr2 Programmiermethodik 2.1 1
2 Programmiermethodik 2.1 1 Schlagwörter: strukturiertes Programmieren systematisches Programmieren Techniken und Tricks Programmierstil Benutzung von Bibliotheken etc. etc. 2.1 2 2.1 Schrittweise Verfeinerung
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2016/17 2. Vorlesung Sortieren mit anderen Mitteln Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2-1 Teile und herrsche Idee: teile den Kartenstapel
MehrVorkurs Informatik WiSe 16/17
Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 11.10.2016 Technische Universität Braunschweig, IPS Überblick Einleitung Beispiele 11.10.2016 Dr. Werner Struckmann / Stephan Mielke,
Mehr// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String
// Objekt-Methoden: public void insert(int x) { next = new List(x,next); } public void delete() { if (next!= null) next = next.next; } public String tostring() { String result = "["+info; for(list t=next;
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
MehrTeil 14: Rekursive Programmierung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden
Teil 14: Rekursive Programmierung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 14 Rekursive Programmierung... 3 14.1 Die Fakultätsfunktion...
MehrKapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte
Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In
Mehr11. Rekursion. - Wiederholung von Anweisungen: durch Iteration und Rekursion - Anwendungsfälle der Rekursion
11. Rekursion 258 K. Bothe, PI1, WS 2000/01 259 ' ( ) - Wiederholung von Anweisungen: durch Iteration und Rekursion - Anwendungsfälle der Rekursion - induktiv definierte Funktionen - rekursive Problemlösungen
MehrProgrammiertechnik Methoden, Teil 2
Programmiertechnik Methoden, Teil 2 Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Rekursion Oliver Haase Hochschule Konstanz 2 Definition Was ist Rekursion? Allgemein: Rekursion ist die Definition
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= =
9. Januar 2007 Arbeitsblatt 9 Übungen zu Mathematik I für das Lehramt an der Grund- und Mittelstufe sowie an Sonderschulen I. Gasser, H. Strade, B. Werner WiSe 06/07 19.12.06 Präsenzaufgaben: 1. Zu Beginn
MehrÜbungsblatt 5. Thema: Algorithmen: Rekursion vs Iteration, O-Notation, Korrektheit
Informatik I WS 05/06 Prof. Dr. W. May Dipl.-Inform. Oliver Fritzen Dipl.-Inform. Christian Kubczak Übungsblatt 5 Ausgegeben am: Abgabe bis: 25.11.2005 6.12.2005 (Theorie) 9.12.2005 (Praktisch) Thema:
MehrLösungsvorschlag Serie 2 Rekursion
(/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma
Mehr5.3 Korrektheit und Verifikation
5.3 Korrektheit und Verifikation Korrektheit bedeutet, dass ein Algorithmus oder ein Programm das in der Spezifikation beschriebene Problem für beliebige Eingabedaten korrekt löst. Die Korrektheit kann
MehrSpeicher und Adressraum
Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode
MehrTheoretische Informatik. Alphabete, Worte, Sprachen
Theoretische Informatik Alphabete, Worte, Sprachen Alphabete, Worte, Sprachen 1. Alphabete und Worte Definitionen, Beispiele Operationen mit Worten Induktionsbeweise 2. Sprachen Definition und Beispiele
Mehr5.3 Korrektheit und Verifikation
5.3 Korrektheit und Verifikation Korrektheit bedeutet, dass ein Algorithmus oder ein Programm das in der Spezifikation beschriebene Problem für beliebige Eingabedaten korrekt löst. Die Korrektheit kann
Mehrpublic class Test extends MiniJava { public static void main (String [] args) { write(args[0]+args[1]); } } // end of class Test
Manche Funktionen, deren Ergebnistyp void ist, geben gar keine Werte zurück im Beispiel: write() und main(). Diese Funktionen heißen Prozeduren. Das Hauptprogramm hat immer als Parameter ein Feld args
MehrDas Kontrollfluss-Diagramm für Ò ¼ µ:
Das Kontrollfluss-Diagramm für Ò ¼ µ: find0(a,x,n1,n2) t = (n1+n2)/2; no a[t]==x yes no n1==n2 yes return t; no x > a[t] yes return 1; no n1 < t yes return find0(a,x,t+1,n2); return 1; return find0(a,x,n1,t
MehrÜberblick. Rekursive Methoden. Backtracking. Memorization. Einfache rekursive Datenstrukturen. Aufzählen, Untermengen, Permutationen, Bitmengen
Überblick 2 Rekursive Methoden Backtracking Memorization Bäume Aufzählen, Untermengen, Permutationen, Bitmengen Memorization Nochmals Fibonacci-Zahlen int fibo(int n) { if(n == 0) { return 0; else if(n
MehrInhalt. 3. Spezielle Algorithmen
Inhalt 0. Rechner und Programmierung für Kommunikationstechniker und Mechatroniker 1. Algorithmen - Wesen, Eigenschaften, Entwurf 2. Darstellung von Algorithmen mit Struktogrammen und Programmablaufplänen
MehrKapitel 7: Rekursion. Inhalt. Rekursion: Technik Rekursion vs. Iteration
Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Inhalt Rekursion: Technik Prof. Dr. Günter Rudolph Fakultät
MehrProgrammierung für Mathematik (HS13)
software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 11 1 Aufgabe: Codeverständnis 1.1 Aufgabenstellung Notieren Sie, was der folgende Code ausgeben würde, wenn er so in einer
MehrNachklausur Bitte in Druckschrift leserlich ausfüllen!
Übungen zur Vorlesung Informatik für Informationsmanager WS 2005/2006 Universität Koblenz-Landau Institut für Informatik Prof. Dr. Bernhard Beckert Dr. Manfred Jackel Nachklausur 24.04.2006 Bitte in Druckschrift
MehrEinführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe
Ludwig-Maximilians-Universität München München, 04.12.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt
MehrGrundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem
Grundzüge der Wirtschaftsinformatik WS 2002/03 Wiederholung Java Heiko Rossnagel www.m-lehrstuhl.de accelerate.com Grundzüge der Wirtschaftsinformatik WS 2002/03 1 Programmierzyklus Problem Formulierung
MehrRekursive Algorithmen
Rekursive Algorithmen In der Mathematik sind viele Funktionen rekursiv definiert. Der Begriff der Rekursion beinhaltet, dass zur Definition einer Funktion diese selbst wieder mit benutzt wird, allerdings
MehrInhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.
1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Beispiele für Algorithmen Im folgenden Abschnitt sollen ausgewählte
MehrAlgorithmen und Datenstrukturen 04
(17. Mai 2012) 1 Besprechung Blatt 3 Hinweise 2 Induktion Allgemeines Beispiele 3 Rekursion Lineare Rekursion und Endrekursion Entrekursivierung Weitere Rekursionstypen 4 O-Kalkül Allgemein Wichtige Formeln
MehrProgrammierstarthilfe SS 2009 Fakultät für Ingenieurwissenschaften und Informatik 4. Blatt Für die Woche vom bis zum 22.5.
Programmierstarthilfe SS 2009 Fakultät für Ingenieurwissenschaften und Informatik 4. Blatt Für die Woche vom 18.5. bis zum 22.5.2009 (KW 21) Organisatorisches Die Webseiten zur Veranstaltung sind unter
MehrAlgorithmen und Datenstrukturen 04
15. November 2011 1 Besprechung Blatt 3 Hinweise 2 Induktion Allgemeines Beispiele 3 Rekursion Allgemeines Lineare Rekursion und Endrekursion Entrekursivierung Weitere Rekursionstypen 4 Backtracking 5
MehrEinführung in die Informatik I
Einführung in die Informatik I Fortgeschrittene Rekursion Prof. Dr. Nikolaus Wulff Problematische Rekursion Mittels Rekursion lassen sich Spezifikationen recht elegant und einfach implementieren. Leider
MehrSortieren II / HeapSort Heaps
Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:
Mehr13 Berechenbarkeit und Aufwandsabschätzung
13 Berechenbarkeit und Aufwandsabschätzung 13.1 Berechenbarkeit Frage: Gibt es für jede Funktion, die mathematisch spezifiziert werden kann, ein Programm, das diese Funktion berechnet? Antwort: Nein! [Turing
Mehr13. Bäume: effektives Suchen und Sortieren
13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Version: 25. Jan. 2016 Schwerpunkte Aufgabe und Vorteile von Bäumen Sortieren mit Bäumen Ausgabealgorithmen:
MehrInformatik II Übung 10. Pascal Schärli
Informatik II Übung 0 Pascal Schärli pascscha@student.ethz.ch 09.0.0 Was gibts heute? Best-of Vorlesung: Teile und Herrsche Türme von Hanoi Mergesort O-Notation Vorbesprechung: U0A, - Mergesort U0A Türme
MehrInformatik I: Einführung in die Programmierung
Informatik I: Einführung in die Programmierung 7. Albert-Ludwigs-Universität Freiburg Bernhard Nebel 31. Oktober 2014 1 31. Oktober 2014 B. Nebel Info I 3 / 20 Um zu, muss man zuerst einmal. Abb. in Public
Mehr13. Bäume: effektives Suchen und Sortieren
Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder
MehrTechnische Universität München WiSe 2018/19 Fakultät für Informatik Übungsblatt 6 Dr. Ch. Herzog 26. November 2018
Technische Universität München WiSe 2018/19 Fakultät für Informatik Übungsblatt 6 Dr. Ch. Herzog 26. November 2018 Übungen zu Grundlagen der Programmierung Aufgabe 19 (Lösungsvorschlag) Rekursive Datenstruktur
MehrRekursion. Sie wissen wie man Programme rekursiv entwickelt. Sie kennen typische Beispiele von rekursiven Algorithmen
Rekursion Sie wissen wie man Programme rekursiv entwickelt Sie kennen typische Beispiele von rekursiven Algorithmen Sie kennen die Vor-/Nachteile von rekursiven Algorithmen Einführung 2 von 40 Rekursiver
MehrRekursion. Beispiel Fakultät (iterativ) Rekursive Java-Implementierung. Beispiel Fakultät (rekursiv) n! = n
Rekursion Beispiel Fakultät (iterativ) Methoden können Methoden aufrufen Methoden können nicht nur andere Methoden aufrufen, sondern auch sich selbst Eine Methode, die sich selbst (direkt oder indirekt)
MehrKonzepte und Methoden der Programmierung Lösungen P. Fierz / FS 2012
Kapitel 1 Rekursion Alle Programme finden Sie im mitgelieferten zip-file. Aufgabe 1.1 [Fakultät] Für diese Übung brauchen Sie die Klassen Factorial Skelett und MyTimer. n! ist rekursiv folgendermassen
Mehr