Algorithmen und Datenstrukturen"

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen""

Transkript

1 Lehrstuhl für Medieninformatik Universität Siegen Fakultät IV 9 Rekursion Version: WS 14/15 Fachgruppe Medieninformatik 9.1

2 9 Rekursion... Motivation: Rekursive Formulierung von Algorithmen führt in vielen Fällen zu sehr effizienten Algorithmenbeschreibung Zusammenhang zwischen Rekursion und Iteration Herausforderungen: Rekursive Algorithmen sind häufig nicht leicht nachvollziehbar bzw. verifizierbar Einordnung der verschiedenen Typen von Rekursionen Literatur: 1. [Ernst] Kapitel [Gumm] Kapitel [Herold] Abschnitte und (leider fehlen diverse Begriffsbezeichungen) 4. Rekursion.pdf Fachgruppe Medieninformatik 9.2

3 9.1 Einleitung Bislang kennen wir Iterationen: wiederholtes Durchlaufen einer Folge von Anweisungen Umsetzung durch Schleifen (for, while, do-while) Rekursion ist die direkte oder indirekte Zurückführung eines Problems / einer Funktion / einer zu definierenden Größe auf ein Problem / eine Funktion / eine Größe gleichen Typs. Meist vereinfachen sich bei jeder Rekursion die Parameter des Problems oder der Funktion, indem zum Beispiel die Zahlenwerte kleiner oder Zeichenketten kürzer werden. Eine erste Rekursion wurde bei formalen Sprachen (Abs. 7.4) besprochen: Nonterminale werden häufig durch sich selbst beschrieben Bemerkungen zu Rekursionen: Rekursionen können häufig elegant, kompakt und schnell implementiert werden,... sind in bestimmten Fällen äquivalent zur Iteration,... sind meist eine von mehreren Lösungsmöglichkeiten Rekursionen, die nicht abbrechen, führen zu einer Endlosschleife (unendlicher Regress). Fachgruppe Medieninformatik 9.3

4 9.1 Einleitung... Ein Mops kam in die Küche und stahl dem Koch ein Ei, da nahm der Koch den Löffel und schlug den Mops zu Brei Da kamen viele Möpse und gruben ihm ein Grab und setzten drauf nen Grabstein auf dem geschrieben stand: Ein Mops kam in die Küche und stahl dem Koch ein Ei, da nahm der Koch den Löffel und schlug den Mops zu Brei Da kamen viele Möpse und gruben ihm ein Grab und setzten drauf nen Grabstein auf dem geschrieben stand: Ein Mops kam in die Küche... Fachgruppe Medieninformatik 9.4

5 9.1 Einleitung... Erinnerung: Vollständige Induktion Vollständige Induktion: Mathematisches Beweistechnik für eine Formel oder Aussage f, die in der Regel von natürlichen Zahlen abhängt Elemente der Induktion sind Induktionsanfang: Beweis der Formel f für 0 oder 1 Induktionsannahme: Formel f gilt für alle i < n N Induktionsschritt: Beweis der Formel für n unter Rückführung auf die Induktionsannahme, d.h. auf Werte f(i) mit i < n Beispiel: Beweis der Summenformel S ( n) n n = i = ( n + 1) Zu beweisen: i= Induktionsanfang: S( 0 ) = = 0 2 Induktionsannahme (IA): Formel gilt bis n 1; n n 1 IA Induktionsschritt: S ( n) = i = n + i i= 0 i= 0 2 ( ) ( n 1) n 2n + n n n( n + 1) = n + 2 = 2 = 2 Fachgruppe Medieninformatik 9.5

6 9.1 Einleitung... Bemerkungen zur vollständigen Induktion Induktion ist das Schließen vom Speziellen auf das Allgemeine. Beispiel: Ein Naturgesetz aus einzelnen Experimenten ableiten. Methodisch sehr problematisch Deduktion ist das Schließen vom Allgemeinen auf das Spezielle. Beispiel: Aus gegebenen Naturgesetzen soll eine Prognose für ein Einzelexperiment abgeleitet werden. Dazu müssen die Gesetze nur geeignet verknüpft werden. Warum gelingt die Induktion bei natürlichen Zahlen? Sie sind per definitionem so aufgebaut, dass das Induktionsprinzip funktioniert. Man kann die natürlichen Zahlen N so definieren, dass man eine Zahl (1) vorgibt und festlegt, dass mit jeder Zahl n auch die nachfolgende n+1 in N enthalten sein soll. Fachgruppe Medieninformatik 9.6

7 9.1 Einleitung... Ein einfaches Beispiel: Fakultät Mathematische Definition der Fakultät: Iterativ: Rekursiv: n =1 2 n = i n n ( n ) n = i=1 1 1 n n > 0 = 0 Programme zur Implementierung der Fakultät: Iterativ: int factorial(int n) { int result = 1; int i; for(i=1; i<=n; i++){ result = result i; } return result; } Rekursiv: int factorial(int n) { if( n == 0 ){ // Rekursionsanker return 1; } else { // Rekursionsschritt return n factorial( n-1 ); } } Fachgruppe Medieninformatik 9.7

8 9.2 Definition von Rekursion und Rekursionstypen Bezug zum Beispiel Bestandteile zur rekursiven Berechnung der Funktion f: Rekursionsanker ( Induktionsanfang): Nicht-rekursive Angabe des Ergebnisse für bestimmte Parameter (hier: 0 = 1) Rekursionsschritt ( Induktionsschritt): Ergebnisberechnung mittels f selbst mit anderem Parameter (hier: n= n (n 1) ) Rekursionstiefe: Anzahl der rekursiven Funktionsaufrufe Bemerkungen: Ohne Rekursionsrichtung, d.h.,,versatz des Parameters im Rekursionsschritt ist die Rekursion nicht definiert. Rekursionsanker und Rekursionsrichtung müssen konsistent sein, sonst führt die Berechnung zu infiniten Regress (,,Endlosschleife ) n n = ( n ) Beispiel: Rekursionsanker für x = 0 und ansteigende Rekursionsrichtung für x > 0 Rekursionen sind häufig, aber nicht zwangsweise, über den natürlichen oder ganzen Zahlen definiert 1 1 n > 0 n = 0 Fachgruppe Medieninformatik 9.8

9 9.2 Definition von Rekursion und Rekursionstypen... Lineare Rekursion Charakterisierung: Pro Stufe genau ein rekursiver Aufruf zur Definition von f f g = h ( x, f ( r )) r bestimmt den Versatz des Parameters x P P h stellt eine Funktion dar, die einen rekursiv gewonnenen Wert,,verrechnet Bedingung P(x) ist 1 (wahr) genau dann, wenn für x ein Rekursionsanker g(x) definiert ist und f nicht erneut benötigt wird. Weitere Eigenschaften: Es entsteht eine (lineare) Sequenz von Aufrufen Beispiel Fakultät: Aufruf-Sequenz und Rückgabewerte in der Funktion factorial( ) Rekursiver Aufruf fac(3) fac(2) fac(1) fac(0) fac(4) fac(3) fac(2) fac(1) fac(0) Rückgabe: 4 fac(3) 3 fac(2) 2 fac(1) 1 fac(0) 1 Fachgruppe Medieninformatik 9.9

10 9.2 Definition von Rekursion und Rekursionstypen... Primitive Rekursion Charakterisierung: Lineare Rekursion, bei der das Funktionsargument genau um 1 verschoben wird f g = h ( x, f ( s )) P P = x + 1oder s = x 1, s Weitere Eigenschaften: Kann unmittelbar durch eine Iteration ersetzt werden (und umgekehrt) Beispiel: Fakultät Fachgruppe Medieninformatik 9.10

11 9.2 Definition von Rekursion und Rekursionstypen... Endrekursion Charakterisierung: Lineare Rekursion, bei der das Funktionsergebnis unmittelbar der Wert eines Rekursionsankers ist f g = f ( r ) P P Beachte: Das Ergebnis des Rekursionsankers g(x) wird über die Aufrufsequenz nur,,zurückgereicht Weitere Eigenschaften: ein rekursiver Aufruf der Funktion pro Stufe kein weiteres Verrechnen des Rückgabewertes Funktionswert entspricht dem Wert eines Rekursionsankers Beispiel: Eine Funktion, die angibt, ob eine Zahl n gerade ist. ( n == 0) n 1 even(n) = even( n 2) sonst Fachgruppe Medieninformatik 9.11

12 9.2 Definition von Rekursion und Rekursionstypen... Beispiel: Euklidischer Algorithmus Ziel: Berechnung des größten gemeinsamen Teilers ggt zweier Zahlen n, m Euklidischer Algorithmus: Rekursive Berechnung des ggt nach Euklid: ggt m geht auf Euklid (ca. 300 v.chr.) zurück Kommt ohne Kenntnis der Primfaktorzerlegung aus m = n ( m, n) = ggt( m, n m) m < n ggt( m n, n) m > n Beweis: Fall m = n (Rekursionsanker) klar; Fall m n : Sei ohne Beschränkung der Allgemeinheit (o.b.d.a) m < n Dann ist zu zeigen: Alle Teiler von m und n sind auch Teiler von n-m, also ( k teilt m und n) ( k teilt m und n ) (*) k N : m Wenn dies gilt, so ist insbesondere auch der ggt gleich, und die rekursive Formel ist korrekt. Zeige also noch (*). Fachgruppe Medieninformatik 9.12

13 9.2 Definition von Rekursion und Rekursionstypen... Euklidischer Algorithmus, Beweis (Teil 2): Zeige: k N : k teilt m und n (1) Wenn k die Zahlen m und n teilt, so gibt es Zahlen p, q mit Dann ist aber n-m=(q-p)k und das bedeutet, dass k auch Teiler von n-m ist, was zu beweisen war. (2) ( ) ( k teilt m und n m) m = pk, n=qk, und p<q. Wenn k die Zahlen m und n-m teilt, so gibt es Zahlen p, q mit m = pk, n-m=qk. Dann ist aber (p+q)k = pk + qk = m+(n-m) = n, und das bedeutet, dass k auch Teiler von n ist, was zu beweisen war. Fachgruppe Medieninformatik 9.13

14 9.2 Definition von Rekursion und Rekursionstypen... Beispiel: Euklidischer Algorithmus (Forts.) Programm-Code: int ggt(int a, int b) { } if ( a == b ) // Rekursionsanker return a; else if ( a < b ) // Rekursionsschritt return ggt( a, b-a ); else return ggt( a-b, b ); Beachte: Dieser rekursive Programmcode ist äußerst kompakt Aufruf-Sequenz für ggt(21, 33): ggt(21,12) ggt(9,12) ggt(9,3) ggt(6,3) ggt(3,3) ggt(21,33) ggt(21,12) ggt(9,12) ggt(9,3) ggt(6,3) ggt(3,3) Fachgruppe Medieninformatik 9.14

15 9.2 Definition von Rekursion und Rekursionstypen... Nichtlineare, baumartige Rekursion Charakterisierung: Der Rekursionsschritt beinhaltet mehr als einen rekursiven Aufruf f g = h ( x, f ( r ),, f ( r ) 1 P k P wobei k > 1 Eigenschaften: es entsteht eine baumförmige Aufrufstruktur, die umso schneller in die Breite wächst, je größer k ist Nachteil: mehrfache, rekursive Funktionsaufrufe belegen viel Arbeitsspeicher Hier: Rekursionstiefe wächst mit der Anzahl der Aufrufe exponentiell Naive Implementierung als rekursiver Algorithmus ist i.a. nicht optimal Prüfe, ob z.b. durch Speicherung von Zwischenergebnissen unnötige mehrfache Berechnungen eingespart werden können. Fachgruppe Medieninformatik 9.15

16 9.2 Definition von Rekursion und Rekursionstypen... Beispiel: Fibonacci Zahlen Definition: fib 0 = 1 fib x = 0 x = 1 ( x 1) + fib( x 2) x > 1 Erste Fibonacci-Zahlen: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,... Naive Implementierung: int fib( int n ) { if (n == 0) return 0; // Rekursionsanker else if (n == 1) return 1; // Rekursionsanker else { // Rekursionsschritt return fib( n - 1 ) + fib( n - 2 ); } } Fachgruppe Medieninformatik 9.16

17 9.2 Definition von Rekursion und Rekursionstypen... Beispiel: Fibonacci Zahlen (Forts.) Problem: Mit dieser Implementierung werden Teilergebnisse mehrfach berechnet, z.b. für fib(4) werden fib(2) und fib(0) zwei Mal und fib(1) drei Mal berechnet Aufrufbaum für fib(4) fib(4) fib(3) fib(2) fib(2) fib(1) fib(1) fib(0) fib(1) fib(0) Anzahl der Aufrufe in Ebene n in etwa 2 n bei Fibonacci (k = 2), im allgemeinen Fall k n für k Aufrufe pro Auswerteebene Abhilfe würde hier also das Speichern von Zwischenergebnissen bringen. Fachgruppe Medieninformatik 9.17

18 9.2 Definition von Rekursion und Rekursionstypen... Bemerkung: Weitere Rekursionstypen: Direkte Rekursion: Ausschließliche Verwendung der Funktion selbst bei der rekursiven Definition (trifft auf alle bisherigen Beispiele zu) Indirekte Rekursion: Rekursion verwendet weitere Funktion(en): f 1 ( ) ruft f 2 ( ) auf, f 2 ( ) ruft f 1 ( ) auf. Rechnerintern: (Rekursive) Funktionsaufrufe: Kopien von Übergabeparameter und Rücksprungadressen liegen auf dem Stack Rücksprungadresse: Fortsetzungspunkt des aufrufenden Programms Beachte: Iterative Lösung braucht diesen Speicherplatz in der Regel nicht Rekursiver Aufruf fac(3) fac(2) fac(1) fac(0) fac(3) fac(2) fac(1) fac(0) Rückgabe: 3 fac(2) 2 fac(1) 1 fac(0) Fachgruppe Medieninformatik 9.18

19 9.3 Fraktale als Beispiele rekursiver Funktionen Geometrische Fraktale Ziel: Zeichnen komplexer Muster und Geometrien Beschreibung: Vorgeben einfacher Basisgeometrien (Rekursionsanker), die rekursive durch komplexere Geometrien ersetzt werden (Rekursionsschritt) Wende geometrische Ersetzungsregeln auf entsprechende Teilgeometrien an, so lange bis eine gewünschte Rekursionstiefe erreicht ist Vorteil: Im Gegensatz zu Bildern oder expliziten Geometrien belegen die zur Fraktal-Erstellung benötigten Algorithmen sehr wenig Speicherplatz Nachteil: Die Berechnung der Fraktale ist i.a. zeitaufwändiger als das Einlesen von Bild- oder Geometriedaten aus Dateien Online-Beispiel: Fachgruppe Medieninformatik 9.19

20 9.3 Fraktale als Beispiele rekursiver Funktionen... Koch-Kurve : Rekursionstiefe 1 Rekursionstiefe 2 Rekursionstiefe 3 Rekursionstiefe 4 Fachgruppe Medieninformatik 9.20

21 9.3 Fraktale als Beispiele rekursiver Funktionen... Drachen-Kurve Rekursionstiefe 1 Rekursionstiefe 2 Rekursionstiefe 3 Rekursionstiefe 12 Fachgruppe Medieninformatik 9.21

22 9.3 Fraktale als Beispiele rekursiver Funktionen... Gewinner des POVRay Fractal Raytracing Contest (2004) Fachgruppe Medieninformatik 9.22

23 9.4 Zusammenfassung Wichtige Erkenntnisse und Inhalte dieses Abschnitts: Erinnerung an die Beweismethode der vollständigen Induktion Beispiel-Vergleich zwischen Iteration und Rekursion Elemente der Rekursion: Rekursionsanker und Rekursionsschritt, sowie deren Bezug zur Rekursionsrichtung (Gefahr des infiniten Regress) Rekursionstypen: Lineare Rekursion und primitive Rekursion als Spezialfall Endrekursion: Linear, jedoch ohne weitere Verrechnung der Rekursionsankerwerte Baumartige Rekursion: Mehr als ein Funktionsaufruf pro Ebene; i.d.r. ungeeignet zur naiven Implementierung Rechnerintern: Nutzung des Stacks für rekursive Funktionsaufrufe Beispiele aus dem Bereich der Fraktale Fachgruppe Medieninformatik 9.23

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

Induktive Beweise und rekursive Definitionen

Induktive Beweise und rekursive Definitionen Induktive Beweise und rekursive Definitionen Vorlesung Logik in der Informatik, HU Berlin 1. Übungsstunde Beweis durch vollständige Induktion über N Aufgabe 1 Zeige, dass für alle n N gilt: n 2 i = 2 n+1

Mehr

Rekursive Funktionen

Rekursive 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

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl

Mehr

Speicher und Adressraum

Speicher und Adressraum Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

Mehr

Induktive Beweise und rekursive Definitionen

Induktive Beweise und rekursive Definitionen Induktive Beweise und rekursive Definitionen Vorlesung Logik in der Informatik, HU Berlin 1. Übungsstunde Beweis durch vollständige Induktion über N Aufgabe 1 Zeige, dass für alle n N gilt: n 2 i = 2 n+1

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs 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

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)

Diskrete 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

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

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2009/0 : Technik vs. Iteration Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund 2 Definition (einfache,

Mehr

Grundlagen der Programmierung

Grundlagen 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

Mehr

Komplexität von Algorithmen

Komplexität von Algorithmen Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen

Mehr

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Kapitel 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

Mehr

Abstrakte Algorithmen und Sprachkonzepte

Abstrakte Algorithmen und Sprachkonzepte Abstrakte Algorithmen und Sprachkonzepte Thomas Röfer Begriff des Algorithmus Algorithmenaufbau Programmiersprachliche Grundkonzepte Interative und rekursive Algorithmen Rückblick Aufbau und Funktionsweise

Mehr

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1 To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1 Rekursion: Beispiele Bier trinken 8-Damen-Problem ipod Shuffle für alle Mitarbeiter Karten

Mehr

Grundlagen der Informatik I (Studiengang Medieninformatik)

Grundlagen der Informatik I (Studiengang Medieninformatik) Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de

Mehr

Beispiel: Fibonacci-Zahlen

Beispiel: Fibonacci-Zahlen Beispiel: Fibonacci-Zahlen Unendliche Reihe: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,... Fibonacci-Kaninchen: L. P. Fibonacci (1170-1250) G. Zachmann Informatik 1 - WS 05/06 Rekursion 23 Fibonacci Zahlen in der

Mehr

1.2 Eigenschaften der ganzen Zahlen

1.2 Eigenschaften der ganzen Zahlen Lineare Algebra I WS 2015/16 c Rudolf Scharlau 13 1.2 Eigenschaften der ganzen Zahlen Dieser Abschnitt handelt von den gewöhlichen ganzen Zahlen Z und ihren Verknüpfungen plus und mal. Man kann die natürlichen

Mehr

Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung

Funktionale Programmierung. Funktionale Programmierung: Vorlesungsüberblick. Eigenschaften rein funktionaler Programmierung Funktionale Programmierung 1 Funktionale Programmierung: Vorlesungsüberblick 1. Funktionale Programmierung Prinzipien funktionaler Programmierung Funktionale Programmierung in prozeduralen Sprachen Rekursive

Mehr

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum: Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: 166270 Aufgabe: Beschreibung

Mehr

Resolutionsalgorithmus

Resolutionsalgorithmus 112 Resolutionskalkül Mit dem Begriff Kalkül bezeichnet man eine Menge von syntaktischen Umformungsregeln, mit denen man semantische Eigenschaften der Eingabeformel herleiten kann. Für den Resolutionskalkül:

Mehr

Algorithmen und Datenstrukturen Tafelübung 4. Jens Wetzl 15. November 2011

Algorithmen und Datenstrukturen Tafelübung 4. Jens Wetzl 15. November 2011 Algorithmen und Datenstrukturen Tafelübung 4 Jens Wetzl 15. November 2011 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter:

Mehr

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Vorkurs: Mathematik für Informatiker

Vorkurs: Mathematik für Informatiker Vorkurs: Mathematik für Informatiker Teil 3 Wintersemester 2016/17 Steven Köhler mathe@stevenkoehler.de mathe.stevenkoehler.de 2 c 2016 Steven Köhler Wintersemester 2016/17 Inhaltsverzeichnis Teil 1 Teil

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

Fachwissenschaftliche Grundlagen

Fachwissenschaftliche Grundlagen Fachwissenschaftliche Grundlagen Vorlesung im Wintersemester 2011/2012, Universität Landau Roland Gunesch 8. Vorlesung Roland Gunesch (Mathematik) Fachwissenschaftliche Grundlagen 8. Vorlesung 1 / 25 Themen

Mehr

II.3.1 Rekursive Algorithmen - 1 -

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

Mehr

A N A L Y S I S I F Ü R T P H, U E ( ) 1. Übungstest (FR, ) (mit Lösung )

A N A L Y S I S I F Ü R T P H, U E ( ) 1. Übungstest (FR, ) (mit Lösung ) Institut für Analysis und Scientific Computing TU Wien W. Auzinger WS 05/6 A N A L Y S I S I F Ü R T P H, U E (03.088). Übungstest (FR, 6..05) (mit Lösung ) Aufgabe. a ) Wandeln Sie die periodische Dezimalzahl

Mehr

12. Rekursion Grundlagen der Programmierung 1 (Java)

12. Rekursion Grundlagen der Programmierung 1 (Java) 12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Kapitel 3. Natürliche Zahlen und vollständige Induktion

Kapitel 3. Natürliche Zahlen und vollständige Induktion Kapitel 3 Natürliche Zahlen und vollständige Induktion In Kapitel 1 haben wir den direkten Beweis, den modus ponens, kennen gelernt, der durch die Tautologie ( A (A = B) ) = B gegeben ist Dabei war B eine

Mehr

6.1 Natürliche Zahlen 6.2 Induktion und Rekursion 6.3 Ganze, rationale, reelle und komplexe Zahlen 6.4 Darstellung von Zahlen

6.1 Natürliche Zahlen 6.2 Induktion und Rekursion 6.3 Ganze, rationale, reelle und komplexe Zahlen 6.4 Darstellung von Zahlen 6. Zahlen 6.1 Natürliche Zahlen 6.2 Induktion und Rekursion 6.3 Ganze, rationale, reelle und komplexe Zahlen 6.4 Darstellung von Zahlen 6. Zahlen GM 6-1 6.1 Natürliche Zahlen Vom lieben Gott gemacht Menschenwerk:

Mehr

Informatik I Rekursion

Informatik I Rekursion Informatik I Rekursion G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Motivation Neue Denkweise eistungsfähiges Algorithmenschema Divide-and-conquer Viele Berechnungen und Datenstrukturen

Mehr

Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion

Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion Saskia Klaus 07.10.016 1 Motivation In den ersten beiden Vorträgen des Vorkurses haben wir gesehen, wie man aus schon bekannten Wahrheiten

Mehr

Ersetzbarkeitstheorem

Ersetzbarkeitstheorem Ersetzbarkeitstheorem Die Abgeschlossenheit läßt sich auch folgendermaßen formulieren: Ersetzbarkeitstheorem Seien F und G Formeln mit F G. SeienH und H Formeln, so daß H aus H hervorgeht, indem ein Vorkommen

Mehr

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Musterlösung 1. Aufgabe (5 Punkte) Im folgenden Programmcode sind einige Fehler enthalten. Finden und markieren Sie mindestens

Mehr

Vorlesung. Vollständige Induktion 1

Vorlesung. Vollständige Induktion 1 WS 015/16 Vorlesung Vollständige Induktion 1 1 Einführung Bei der vollständigen Induktion handelt es sich um ein wichtiges mathematisches Beweisverfahren, mit dem man Aussagen, die für alle natürlichen

Mehr

Rekursive und primitiv rekursive Funktionen. Ein maschinenunabhängiges formales Berechnungsmodell auf den natürlichen Zahlen

Rekursive und primitiv rekursive Funktionen. Ein maschinenunabhängiges formales Berechnungsmodell auf den natürlichen Zahlen Rekursive und primitiv rekursive Funktionen Ein maschinenunabhängiges formales Berechnungsmodell auf den natürlichen Zahlen IDEE: Definiere eine Klasse von (partiell) berechenbaren Funktionen über N induktiv

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die

Mehr

Informationsblatt Induktionsbeweis

Informationsblatt Induktionsbeweis Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln

Mehr

Spezifikation der zulässigen Parameter. Bemerkungen: Bemerkungen: (2) Design by Contract:

Spezifikation der zulässigen Parameter. Bemerkungen: Bemerkungen: (2) Design by Contract: Spezifikation der zulässigen Parameter Bemerkungen: Bei jeder (partiellen) Funktion muss man sich überlegen und dokumentieren, welche aktuellen Parameter bei einer Anwendung zulässig sein sollen. Der Anwender

Mehr

C.3 Funktionen und Prozeduren

C.3 Funktionen und Prozeduren C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens

Mehr

1 Potenzen und Polynome

1 Potenzen und Polynome 1 Potenzen und Polynome Für eine reelle Zahl x R und eine natürliche Zahl n N definieren wir x n := x x x... x }{{} n-mal Einschub über die bisher aufgetretenen mathematischen Symbole: Definition mittels

Mehr

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de Diskrete Strukturen und Logik WiSe 2007/08 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Diskrete Strukturen und Logik Gesamtübersicht Organisatorisches Einführung Logik & Mengenlehre

Mehr

C- Kurs 04 Anweisungen

C- Kurs 04 Anweisungen C- Kurs 04 Anweisungen Dipl.- Inf. Jörn Hoffmann jhoffmann@informa@k.uni- leipzig.de Universität Leipzig Ins@tut für Informa@k Technische Informa@k Ausdrücke Institut für Informatik Anweisungen C-Programm

Mehr

Fachwissenschaftliche Grundlagen

Fachwissenschaftliche Grundlagen Fachwissenschaftliche Grundlagen Vorlesung im Wintersemester 2011/2012, Universität Landau Roland Gunesch 9. Vorlesung Roland Gunesch (Mathematik) Fachwissenschaftliche Grundlagen 9. Vorlesung 1 / 17 Themen

Mehr

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

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Rekursion Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Rekursion Rekursion Neue Denkweise Wikipedia: Als Rekursion bezeichnet man den Aufruf

Mehr

IT-Sicherheit. Jun.-Prof. Dr. Gábor Erdélyi. Siegen, 15. November 2016 WS 2016/2017

IT-Sicherheit. Jun.-Prof. Dr. Gábor Erdélyi. Siegen, 15. November 2016 WS 2016/2017 IT-Sicherheit WS 2016/2017 Jun.-Prof. Dr. Gábor Erdélyi Lehrstuhl für Entscheidungs- und Organisationstheorie, Universität Siegen Siegen, 15. November 2016 Wiederholung Warum IT-Sicherheit? Grundlagen

Mehr

11. Rekursion, Komplexität von Algorithmen

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

Mehr

Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (1)

Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (1) Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (1) Anweisungen: Eingabeanweisungen, z.b. Eingabe: x Ausgabeanweisungen, z.b. Ausgabe: Das Maximum ist, max Die Symbole x und max werden

Mehr

31 Polynomringe Motivation Definition: Polynomringe

31 Polynomringe Motivation Definition: Polynomringe 31 Polynomringe 31.1 Motivation Polynome spielen eine wichtige Rolle in vielen Berechnungen, einerseits weil oftmals funktionale Zusammenhänge durch Polynome beschrieben werden, andererseits weil Polynome

Mehr

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration Algorithmen & Programmierung Steuerstrukturen im Detail Selektion und Iteration Selektion Selektion Vollständige einfache Selektion Wir kennen schon eine Möglichkeit, Selektionen in C zu formulieren: if

Mehr

Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe)

Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe) Humboldt-Universität zu Berlin Institut für Informatik Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe) Übungsblatt 4: Felder und Rekursion Abgabe: bis 9:00 Uhr am 14.12.2015 über Goya

Mehr

Prof. Dr. Margarita Esponda

Prof. Dr. Margarita Esponda Die O-Notation Analyse von Algorithmen Die O-Notation Prof. Dr. Margarita Esponda Freie Universität Berlin ALP II: Margarita Esponda, 5. Vorlesung, 26.4.2012 1 Die O-Notation Analyse von Algorithmen Korrektheit

Mehr

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen. Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe

Mehr

Projekt Systementwicklung

Projekt Systementwicklung Projekt Systementwicklung Effiziente Codierung: Laufzeitoptimierung Prof. Dr. Nikolaus Wulff Effiziente Codierung Der Wunsch effizienten Code zu schreiben entstammt mehreren Quellen: Zielplattformen mit

Mehr

3 Vom Zählen zur Induktion

3 Vom Zählen zur Induktion 7 3 Vom Zählen zur Induktion 3.1 Natürliche Zahlen und Induktions-Prinzip Seit unserer Kindheit kennen wir die Zahlen 1,, 3, 4, usw. Diese Zahlen gebrauchen wir zum Zählen, und sie sind uns so vertraut,

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Folgen und endliche Summen

Folgen und endliche Summen Kapitel 2 Folgen und endliche Summen Folgen und ihre Eigenschaften Endliche arithmetische und geometrische Folgen und Reihen Vollständige Induktion Anwendungen Folgen/endliche Summen Eigenschaften Folgen

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra Effiziente Algorithmen und Datenstrukturen I Kapitel 10: Lineare Algebra Christian Scheideler WS 2008 19.02.2009 Kapitel 10 1 Überblick Notation Arithmetik auf großen Zahlen (Addition und Multiplikation)

Mehr

3.6.4 Rekursive Funktionen

3.6.4 Rekursive Funktionen Klassifizierung von Funktionen mit Hilfe der Abstützrelation (Wenn eine Funktionsdefinition für f eine Funktion g aufruft, dann besteht zwischen beiden Definitionen die Relation f benutzt g ) Klasse 0

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

Vorkurs Mathematik für Informatiker. 1 Potenzen. Michael Bader, Thomas Huckle, Stefan Zimmer Oktober Kap.

Vorkurs Mathematik für Informatiker. 1 Potenzen. Michael Bader, Thomas Huckle, Stefan Zimmer Oktober Kap. 1 Potenzen Michael Bader, Thomas Huckle, Stefan Zimmer 1. 9. Oktober 2008 Kap. 1: Potenzen 1 Potenzen Definition Für reelle Zahl x R (Basis) und eine natürliche Zahl n N (Exponent): x n := x x x... x }{{}

Mehr

4. Fortgeschrittene Algorithmen 4.1 Rekursion 4.2 Daten und Datenstrukturen 4.3 Bäume

4. Fortgeschrittene Algorithmen 4.1 Rekursion 4.2 Daten und Datenstrukturen 4.3 Bäume 4. Fortgeschrittene Algorithmen 4.1 Rekursion 4.2 Daten und Datenstrukturen 4.3 Bäume 4.1-1 4.1 Rekursion Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines

Mehr

JAVA - Rekursion

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

Mehr

Rekursive Algorithmen

Rekursive 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

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

Präzedenz von Operatoren

Präzedenz von Operatoren Präzedenz von Operatoren SWE-30 Die Präzedenz von Operatoren bestimmt die Struktur von Ausdrücken. Ein Operator höherer Präzedenz bindet die Operanden stärker als ein Operator geringerer Präzedenz. Mit

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 3 Prof. R. Westermann, A. Lehmann, R.

Mehr

Rekursionsanfang, Rekursionsschritt oder äquivalente Antworten. (z.b.: Abbruchbedingung (= Basisfall), eigentliche Rekursion (= Selbstaufruf))

Rekursionsanfang, Rekursionsschritt oder äquivalente Antworten. (z.b.: Abbruchbedingung (= Basisfall), eigentliche Rekursion (= Selbstaufruf)) Formale Methoden der Informatik WS / Lehrstuhl für Datenbanken und Künstliche Intelligenz Prof.Dr.Dr.F.J.Radermacher H. Ünver T. Rehfeld J. Dollinger 8. Aufgabenblatt Besprechung in den Tutorien vom..

Mehr

Großübung zu Einführung in die Programmierung

Großübung zu Einführung in die Programmierung Großübung zu Einführung in die Programmierung Daniel Bimschas, M.Sc. Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/bimschas Inhalt 1. Besprechung Übung 4 Iteration

Mehr

Programmieren lernen mit Groovy Rekursion Rekursion und Iteration

Programmieren lernen mit Groovy Rekursion Rekursion und Iteration Programmieren lernen mit Groovy Rekursion Seite 1 Rekursion Rekursion Ursprung lat. recurrere ~ zurücklaufen rekursive Definition Definition mit Bezug auf sich selbst Beispiel Fakultätsfunktion n! 0! =

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 7. September 2015 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr

Mehr

Dynamische Programmierung

Dynamische Programmierung Dynamische Programmierung Hannes Schwarz - WS-06/07 Hannes.Schwarz@uni-konstanz.de Getting Ready for the ACM Programming Contest Übersicht Übersicht Was ist dynamische Programmierung? Entwicklung eines

Mehr

3 Vollständige Induktion

3 Vollständige Induktion 3.1 Natürliche Zahlen In den vorherigen Kapiteln haben wir die Menge der natürlichen Zahlen schon mehrfach als Beispiel benutzt. Das Konzept der natürlichen Zahlen erscheint uns einfach, da wir es schon

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 0..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum

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

Programmierkurs Python I

Programmierkurs Python I Programmierkurs Python I Michaela Regneri & Stefan Thater Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Winter 2010/11 Übersicht Kurze Wiederholung: while Sammeltypen (kurz

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

Theoretische Informatik SS 03 Übung 3

Theoretische Informatik SS 03 Übung 3 Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige

Mehr

Elementare Beweismethoden

Elementare Beweismethoden Elementare Beweismethoden Christian Hensel 404015 Inhaltsverzeichnis Vortrag zum Thema Elementare Beweismethoden im Rahmen des Proseminars Mathematisches Problemlösen 1 Einführung und wichtige Begriffe

Mehr

Rekursion und Induktion

Rekursion und Induktion Rekursion und Induktion Rekursion und Induktion Quick Start Informatik Theoretischer Teil WS2011/12 11. Oktober 2011 Rekursion und Induktion > Rekursion > Was ist Rekursion? Definition der Rekursion fu

Mehr

Crashkurs Haskell Mentoring WiSe 2016/17. Anja Wolffgramm Freie Universität Berlin

Crashkurs Haskell Mentoring WiSe 2016/17. Anja Wolffgramm Freie Universität Berlin Crashkurs Haskell Mentoring WiSe 2016/17 Anja Wolffgramm Freie Universität Berlin 02/11/2016 , Inhalt Kommandozeile Haskell installieren & starten Ein 1. Haskell-Programm Funktionsdefinition Primitive

Mehr

Induktive Definitionen

Induktive Definitionen Priv.-Doz. Dr.rer.nat.habil. Karl-Heinz Niggl Technische Universität Ilmenau Fakultät IA, Institut für Theoretische Informatik Fachgebiet Komplexitätstheorie und Effiziente Algorithmen J Induktive Definitionen

Mehr

1 Das Prinzip der vollständigen Induktion

1 Das Prinzip der vollständigen Induktion 1 1 Das Prinzip der vollständigen Induktion 1.1 Etwas Logik Wir nennen eine Formel oder einen Satz der Alltagssprache eine Aussage, wenn sie wahr oder falsch sein kann. Die Formeln 2 = 3, 2 4, 5 5 sind

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen 1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Programmiertechnik Methoden, Teil 2

Programmiertechnik 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

Mehr

4 Effizienz und Komplexität 3.1 1

4 Effizienz und Komplexität 3.1 1 4 Effizienz und Komplexität 3.1 1 Effizienz (efficiency): auf den Ressourcen-Verbrauch bezogene Programmeigenschaft: hohe Effizienz bedeutet geringen Aufwand an Ressourcen. Typische Beispiele: Speichereffizienz

Mehr

Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II

Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II Matrixzugriff Wir wollen nun unsere Einführung in die Arbeit mit Vektoren und Matrizen in MATLAB

Mehr

Induktive Definitionen

Induktive Definitionen Induktive Definitionen Induktive Definition: Konstruktive Methode zur Definition einer Menge M von Objekten aus Basisobjekten mittels (Erzeugungs-) Regeln Slide 1 Rekursion über den Aufbau: Konstruktive

Mehr