Rekursion und Induktion Rekursion und Induktion Vorsemesterkurs Informatik Theoretischer Teil Wintersemester 2012/13 4. Oktober 2012 Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Was ist Rekursion? Definition der Rekursion für Funktionen Definition Eine rekursive Funktion ist eine Funktion, die durch sich selbst definiert ist. (Salopp: eine Funktion, die sich im Rumpf selbst aufruft) Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Was ist Rekursion? Definition der Rekursion für Funktionen Definition Eine rekursive Funktion ist eine Funktion, die durch sich selbst definiert ist. (Salopp: eine Funktion, die sich im Rumpf selbst aufruft) Ein offenes Problem aus der Mathematik: Beispiel ( c(n/2), falls n gerade ist c(n) := c(3n + 1), falls n ungerade ist Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Was ist Rekursion? Definition der Rekursion für Funktionen Definition Eine rekursive Funktion ist eine Funktion, die durch sich selbst definiert ist. (Salopp: eine Funktion, die sich im Rumpf selbst aufruft) Ein offenes Problem aus der Mathematik: Beispiel ( c(n/2), falls n gerade ist c(n) := c(3n + 1), falls n ungerade ist Collatz-Problem: Kommt es für jeden natürlichen Startwert n irgendwann zu einer c(4)-c(2)-c(1)-Endlosschleife? Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Was ist Rekursion? Auswertung der Funktion Beispiel ( c(n/2), falls n gerade ist c(n) := c(3n + 1), falls n ungerade ist Wir testen es für den Startwert n = 5: Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Was ist Rekursion? Auswertung der Funktion Beispiel ( c(n/2), falls n gerade ist c(n) := c(3n + 1), falls n ungerade ist Wir testen es für den Startwert n = 5: c(5) = c(5 · 3 + 1) = c(16) Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Was ist Rekursion? Auswertung der Funktion Beispiel ( c(n/2), falls n gerade ist c(n) := c(3n + 1), falls n ungerade ist Wir testen es für den Startwert n = 5: c(5) = c(5 · 3 + 1) = c(16) = c(16/2) = c(8) Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Was ist Rekursion? Auswertung der Funktion Beispiel ( c(n/2), falls n gerade ist c(n) := c(3n + 1), falls n ungerade ist Wir testen es für den Startwert n = 5: c(5) = c(5 · 3 + 1) = c(16) = c(16/2) = c(8) = c(4) Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Was ist Rekursion? Auswertung der Funktion Beispiel ( c(n/2), falls n gerade ist c(n) := c(3n + 1), falls n ungerade ist Wir testen es für den Startwert n = 5: c(5) = c(5 · 3 + 1) = c(16) = c(16/2) = c(8) = c(4) = c(2) Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Was ist Rekursion? Auswertung der Funktion Beispiel ( c(n/2), falls n gerade ist c(n) := c(3n + 1), falls n ungerade ist Wir testen es für den Startwert n = 5: c(5) = c(5 · 3 + 1) = c(16) = c(16/2) = c(8) = c(4) = c(2) = c(1) Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Was ist Rekursion? Auswertung der Funktion Beispiel ( c(n/2), falls n gerade ist c(n) := c(3n + 1), falls n ungerade ist Wir testen es für den Startwert n = 5: c(5) = c(5 · 3 + 1) = c(16) = c(16/2) = c(8) = c(4) = c(2) = c(1) = c(3 · 1 + 1) = c(4) = . . . Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Was ist Rekursion? Auswertung der Funktion Beispiel ( c(n/2), falls n gerade ist c(n) := c(3n + 1), falls n ungerade ist Mit anderen Startwerten: c(n) c(3) c(5) c(15) c(16) c(128) n-Folge bis zur ersten 1 3, 10, 5, 16, 8, 4, 2, 1 5, 16, 8, 4, 2, 1 15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1 16, 8, 4, 2, 1 128, 64, 32, 16, 8, 4, 2, 1 Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Anwendungen in der Informatik Wieso interessiert uns sowas überhaupt in der Informatik? Rekursionen tauchen sehr häufig auf: Laufzeitanalyse Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Anwendungen in der Informatik Wieso interessiert uns sowas überhaupt in der Informatik? Rekursionen tauchen sehr häufig auf: Laufzeitanalyse Algorithmenentwurf und Programmiertechnik Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Anwendungen in der Informatik Wieso interessiert uns sowas überhaupt in der Informatik? Rekursionen tauchen sehr häufig auf: Laufzeitanalyse Algorithmenentwurf und Programmiertechnik Datenstrukturen Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Anwendungen in der Informatik Wieso interessiert uns sowas überhaupt in der Informatik? Rekursionen tauchen sehr häufig auf: Laufzeitanalyse Algorithmenentwurf und Programmiertechnik Datenstrukturen funktionale Programmierung → Haskell (PRG-2) Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Anwendungen in der Informatik Wieso interessiert uns sowas überhaupt in der Informatik? Rekursionen tauchen sehr häufig auf: Laufzeitanalyse Algorithmenentwurf und Programmiertechnik Datenstrukturen funktionale Programmierung → Haskell (PRG-2) Syntax von (Programmier-)Sprachen Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Anwendungen in der Informatik Wieso interessiert uns sowas überhaupt in der Informatik? Rekursionen tauchen sehr häufig auf: Laufzeitanalyse Algorithmenentwurf und Programmiertechnik Datenstrukturen funktionale Programmierung → Haskell (PRG-2) Syntax von (Programmier-)Sprachen Übersetzer (Compiler) Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Basis- und Rekursionsfall wieder ein bisschen Fachchinesisch Definition (Basisfall) Als Basisfall in einer Rekursion bezeichnet man einen Fall, in dem die Funktion nicht noch einmal aufgerufen wird. Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Basis- und Rekursionsfall wieder ein bisschen Fachchinesisch Definition (Basisfall) Als Basisfall in einer Rekursion bezeichnet man einen Fall, in dem die Funktion nicht noch einmal aufgerufen wird. f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Quizfrage der Folie Wo ist hier der Basisfall ?? Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Basis- und Rekursionsfall . . . und noch mehr Fachchinesisch :-P Definition (Rekursionsfall) Als Rekursionsfall in einer Rekursion beschreibt man einen Fall, in dem die Funktion noch einmal aufgerufen wird. Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Basis- und Rekursionsfall . . . und noch mehr Fachchinesisch :-P Definition (Rekursionsfall) Als Rekursionsfall in einer Rekursion beschreibt man einen Fall, in dem die Funktion noch einmal aufgerufen wird. f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Quizfrage der Folie Wo ist hier der Rekursionsfall ?? Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Rekursionstürmchen Türmchen bauen Einfache Rekursionen sind wie Türmchen: f(n) f(n-1) f(n-2) .. . f(1) f(0) Dach Stockwerke Erdgeschoss (Animation siehe nächste Folie) Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Rekursionstürmchen ...zur Animation zur Animation Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Rekursionstürmchen ...und als Sequenzdiagramm zur Animation Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Rekursionstürmchen Achtung! Es gibt noch andere Formen der Rekursion: verzweigte Bäumchen statt Türmchen (die Funktion ruft sich mehrfach selbst auf) verschränkte Rekursion (zwei Funktionen rufen sich gegenseitig auf) verschachtelte Rekursion (das Argument ist selbst wieder eine rekursive Funktion) Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Rekursion > Rekursionstürmchen noch Fragen??? Quelle Bild: http://www.citycampus.eu/cms/images/comic fragezeichen.png Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Einleitung Vollständige Induktion Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Einleitung Vollständige Induktion Nochmal zurück zur Funktion f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Einleitung Vollständige Induktion Nochmal zurück zur Funktion f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Was berechnet f ? Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Einleitung Vollständige Induktion Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Einleitung Vollständige Induktion Wir vermuten, dass f die Fakultätsfunktion ist. Doch lässt sich das beweisen? Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Einleitung Vollständige Induktion Wir vermuten, dass f die Fakultätsfunktion ist. Doch lässt sich das beweisen? Auch dafür gibt es eine Beweistechnik: Die vollständige Induktion. Sie besteht aus zwei Teilen: Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Einleitung Vollständige Induktion Wir vermuten, dass f die Fakultätsfunktion ist. Doch lässt sich das beweisen? Auch dafür gibt es eine Beweistechnik: Die vollständige Induktion. Sie besteht aus zwei Teilen: Induktionsanfang: Wir überprüfen, ob die Aussagen für die Rekursionsbasis gilt. Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Einleitung Vollständige Induktion Wir vermuten, dass f die Fakultätsfunktion ist. Doch lässt sich das beweisen? Auch dafür gibt es eine Beweistechnik: Die vollständige Induktion. Sie besteht aus zwei Teilen: Induktionsanfang: Wir überprüfen, ob die Aussagen für die Rekursionsbasis gilt. Induktionsschritt: Wir nehmen an, dass im rekursiven Aufruf unsere Aussage stimmt. Dann weisen wir das nur noch für den Rest nach! Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Anwendungsbeispiel Korrektheitsbeweis für rekursive Funktionen Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Anwendungsbeispiel Korrektheitsbeweis für rekursive Funktionen f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Anwendungsbeispiel Korrektheitsbeweis für rekursive Funktionen f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Behauptung f (n) = n! für jede beliebige Eingabe n ∈ N Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Anwendungsbeispiel Korrektheitsbeweis für rekursive Funktionen f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Behauptung f (n) = n! für jede beliebige Eingabe n ∈ N Beweis durch vollständige Induktion nach n: Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Anwendungsbeispiel Korrektheitsbeweis für rekursive Funktionen f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Behauptung f (n) = n! für jede beliebige Eingabe n ∈ N Beweis durch vollständige Induktion nach n: Induktionsanfang: n = 0 Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Anwendungsbeispiel Korrektheitsbeweis für rekursive Funktionen f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Behauptung f (n) = n! für jede beliebige Eingabe n ∈ N Beweis durch vollständige Induktion nach n: Induktionsanfang: n = 0 f (0) = 1 und 0! = 1, also f (0) = 0! . Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Anwendungsbeispiel Korrektheitsbeweis für rekursive Funktionen Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Anwendungsbeispiel Korrektheitsbeweis für rekursive Funktionen f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Anwendungsbeispiel Korrektheitsbeweis für rekursive Funktionen f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Induktionsschritt: n → n + 1 Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Anwendungsbeispiel Korrektheitsbeweis für rekursive Funktionen f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Induktionsschritt: n → n + 1 Angenommen, für festes n gilt f (n) = n!. Wir wollen zeigen, dass dann auch f (n + 1) = (n + 1)! gilt. Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Anwendungsbeispiel Korrektheitsbeweis für rekursive Funktionen f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Induktionsschritt: n → n + 1 Angenommen, für festes n gilt f (n) = n!. Wir wollen zeigen, dass dann auch f (n + 1) = (n + 1)! gilt. f (n + 1) Def. von f = IA (n + 1) ∗ f (n) = (n + 1) ∗ n! = (n + 1)! Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Anwendungsbeispiel Korrektheitsbeweis für rekursive Funktionen f :N→N f (0) = 1 f (n) = f (n − 1) · n, falls n > 0 Induktionsschritt: n → n + 1 Angenommen, für festes n gilt f (n) = n!. Wir wollen zeigen, dass dann auch f (n + 1) = (n + 1)! gilt. f (n + 1) Def. von f = IA (n + 1) ∗ f (n) = (n + 1) ∗ n! = (n + 1)! Also berechnet f für jede Eingabe deren Fakultät. Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Induktion auf N Vollständige Induktion auf N Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Induktion auf N Vollständige Induktion auf N Analog besteht auch die Induktion auf N aus zwei Schritten: Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Induktion auf N Vollständige Induktion auf N Analog besteht auch die Induktion auf N aus zwei Schritten: Der Induktionsanfang : Die Aussage ist für n = 0 zu prüfen. Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Induktion auf N Vollständige Induktion auf N Analog besteht auch die Induktion auf N aus zwei Schritten: Der Induktionsanfang : Die Aussage ist für n = 0 zu prüfen. (Für Mengen wie N≥2 nehmen wir n = 2 als Induktionsanfang) Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Induktion auf N Vollständige Induktion auf N Analog besteht auch die Induktion auf N aus zwei Schritten: Der Induktionsanfang : Die Aussage ist für n = 0 zu prüfen. (Für Mengen wie N≥2 nehmen wir n = 2 als Induktionsanfang) Der Induktionsschritt: Wir nehmen an, dass die Aussage für ein festes n ∈ N gilt, und weisen dann nach, dass sie für n + 1 gilt. Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Korrektheit Das Prinzip der Induktion Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Korrektheit Das Prinzip der Induktion Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Korrektheit Das Prinzip der Induktion Gilt eine Aussage für n = 0 und gilt sie unter der Annahme, dass sie für n gilt, auch für n + 1, dann gilt sie für alle natürlichen Zahlen. Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Summen- und Produktzeichen Ein paar Kleinigkeiten... Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Summen- und Produktzeichen Ein paar Kleinigkeiten... Definition (Summen- und Produktzeichen) Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Summen- und Produktzeichen Ein paar Kleinigkeiten... Definition (Summen- und Produktzeichen) Sei n ∈ N. Seien a1 , ..., an beliebige Zahlen. Dann ist: Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Summen- und Produktzeichen Ein paar Kleinigkeiten... Definition (Summen- und Produktzeichen) Sei n ∈ N. Seien a1 , ..., an beliebige Zahlen. Dann ist: n X i=1 n Y ai = a1 + · · · + an ai = a1 · · · · · an i=1 Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Summen- und Produktzeichen Ein paar Kleinigkeiten... Definition (Summen- und Produktzeichen) Sei n ∈ N. Seien a1 , ..., an beliebige Zahlen. Dann ist: n X i=1 n Y ai = a1 + · · · + an ai = a1 · · · · · an i=1 Spezialfälle: Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Summen- und Produktzeichen Ein paar Kleinigkeiten... Definition (Summen- und Produktzeichen) Sei n ∈ N. Seien a1 , ..., an beliebige Zahlen. Dann ist: n X i=1 n Y ai = a1 + · · · + an ai = a1 · · · · · an i=1 Spezialfälle: 0 X i=1 ai = 0, 0 Y ai = 1 i=1 Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Beispiel Beispiel einer vollständigen Induktion auf N Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Beispiel Beispiel einer vollständigen Induktion auf N Wir wollen im Folgenden zeigen: Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Beispiel Beispiel einer vollständigen Induktion auf N Wir wollen im Folgenden zeigen: Satz Für alle n ∈ N gilt: Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Beispiel Beispiel einer vollständigen Induktion auf N Wir wollen im Folgenden zeigen: Satz Für alle n ∈ N gilt: n X i=0 i= n · (n + 1) 2 Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Beispiel Beispiel einer vollständigen Induktion auf N Wir wollen im Folgenden zeigen: Satz Für alle n ∈ N gilt: n X i=0 i= n · (n + 1) 2 Wie sieht der Induktionsanfang aus? Vorsemesterkurs WS 2012/13 Rekursion und Induktion > Induktion > Beispiel noch Fragen??? Quelle Bild: http://www.citycampus.eu/cms/images/comic fragezeichen.png Vorsemesterkurs WS 2012/13