Rekursion und Induktion Rekursion und Induktion Quick Start Informatik Theoretischer Teil WS2011/12 11. Oktober 2011 QSI - Theorie - WS2011/12 Rekursion und Induktion > Rekursion > Was ist Rekursion? Definition der Rekursion für Funktionen Definition Eine rekursive Funktion ist eine Funktion, die sich selber aufruft Beispiel: Wir kennen (aus der Schule): n! = 1 · 2 · 3 · · · n Wir können dies umformulieren zu einer rekursiven Funktion: f :N→N f (0) = 1 f (n) = f (n − 1) · n QSI - Theorie - WS2011/12 Rekursion und Induktion > Rekursion > Was ist Rekursion? Auswertung der Funktion f :N→N f (0) = 1 f (n) = f (n − 1) · n Wir können diese Funktion wie folgt auswerten: f (3) = f (2) · 3 = f (1) · 2 · 3 = f (0) · 1 · 2 · 3 = 1 · 1 · 2 · 3 = 6 Wir vermuten f (n) := n!. QSI - Theorie - WS2011/12 Rekursion und Induktion > Rekursion > Anwendungen in der Informatik Anwendung von Rekursion in der Informatik Die Rekursion hat viele Anwendungen in der Informatik zum Beispiel als Programmiertechnik. Beispiel: f :N→N f (0) = 1 f (n) = f (n − 1) · n wäre programmiert in Python: def f (n ) : i f n == 0 : return 1 else : r e t u r n f ( n−1) ∗ n QSI - Theorie - WS2011/12 Rekursion und Induktion > Rekursion > Anwendungen in der Informatik weitere Anwendungen in der Informatik Programmiertechnik Es gibt Programiersprachen, in denen die Rekursion sehr stark optimiert ist. (Beispiel: Haskell) Ersetzen in einigen Programmiersprachen, Kontrollstrukturen wie die for-Schleife (siehe: Haskell (PRG-2)) Gültige Syntax für Programmiersprachen werden (müssen meist sogar) rekursiv definiert werden Der Übersetzer (Compiler) arbeitet meist rekursiv QSI - Theorie - WS2011/12 Rekursion und Induktion > Rekursion > Basis- und Rekursionsfall ... wieder ein bisschen Fachchinesisch Definition (Basisfall) Der Basisfall in einer Rekursion beschreibt den Teil, in dem die Funktion nicht noch einmal aufgerufen wird. f :N→N f (0) = 1 f (n) = f (n − 1) · n Quizfrage der Folie Wo ist hier der Basisfall ?? QSI - Theorie - WS2011/12 Rekursion und Induktion > Rekursion > Basis- und Rekursionsfall ... und noch mehr Fachchinesisch :-P Definition (Rekursionsfall) Der Rekursionsfall in einer Rekursion beschreibt den Teil, in dem die Funktion noch einmal aufgerufen wird. f :N→N f (0) = 1 f (n) = f (n − 1) · n Quizfrage der Folie Wo ist hier der Rekursionsfall ?? QSI - Theorie - WS2011/12 Rekursion und Induktion > Rekursion > Rekursionstürmchen Türmchen bauen Wir können uns die einfache Rekursion auch wie ein Türmchen vorstellen. Sei f eine rekursive Funktion. f (n) stellt das Dach dar. Teile, die darunter sind, werden von dem oberen Teil aufgerufen. Irgendwann haben wir einen Boden und das ist dann unser Basisfall. (Animation siehe nächste Folie) QSI - Theorie - WS2011/12 Rekursion und Induktion > Rekursion > Rekursionstürmchen ...zur Animation QSI - Theorie - WS2011/12 Rekursion und Induktion > Rekursion > Rekursionstürmchen ...und als Sequenzdiagramm QSI - Theorie - WS2011/12 Rekursion und Induktion > Induktion > Einleitung Wie kann ich nachprüfen, dass rekursive Aussagen richtig sind? Wir erinnern uns: Wir haben unseren Python Code: def f (n ) : i f n == 0 : return 1 else : r e t u r n f ( n−1) ∗ n und wir haben dann vermutet, dass dieser Code die Fakultät: 0! = 1 n! = 1 · 2 · · · n berechnet. Tut er das wirklich???? QSI - Theorie - WS2011/12 Rekursion und Induktion > Induktion > Einleitung Die vollständige Induktion Auch dafür gibt es eine Beweistechnik: Die vollständig 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! Schauen wir uns mal das Beispiel von der vorherigen Folie an! QSI - Theorie - WS2011/12 Rekursion und Induktion > Induktion > Rekursive Definition der natürlichen Zahlen Was kann so eine Induktion noch? Aussagen für natürliche Zahlen beweisen. Wir hatten: N = {0, 1, 2, ...} Geht diese Definition auch rekursiv? In der Tat: Wir bauen ein Türmchen mit Zahlen. Unten ist die 0 und den Nachfolger stecken wir drauf. QSI - Theorie - WS2011/12 Rekursion und Induktion > Induktion > Rekursive Definition der natürlichen Zahlen ...zur Animation QSI - Theorie - WS2011/12 Rekursion und Induktion > Induktion > Rekursive Definition der natürlichen Zahlen Rekursion in nat. Zahlen Wir haben hier unseren N-Turm. Die Basis: 0 ist eine natürliche Zahl. Die Rekursion: Wenn n eine natürliche Zahl ist, dann ist der Nachfolger (also ein Stockwerk höher) n + 1 ebenfalls eine natürliche Zahl. QSI - Theorie - WS2011/12 Rekursion und Induktion > Induktion > Rekursive Definition der natürlichen Zahlen Wenn wir unser N-Turm betrachten, dann ... gilt für die Induktion für natürliche Zahlen: Der Induktionsanfang : Die Aussage ist für n = 0 zu prüfen. (Für Mengen wie {n|n ∈ N, n ≥ 2} nehmen wir n = 2 als Induktionsanfang) Der Induktionsschritt: Wir nehmen an, dass die Aussage für ein beliebiges n ∈ N gilt, und weisen dann nach, dass es für n + 1 (im Turm eine Etage höher) gilt. QSI - Theorie - WS2011/12 Rekursion und Induktion > Induktion > Rekursive Definition der natürlichen Zahlen Das Prinzip der Induktion Gilt eine Aussage für n = 0 und gilt die Aussage unter der Annahme, dass sie für n gilt, auch für n + 1, dann gilt sie für alle natürlichen Zahlen. QSI - Theorie - WS2011/12 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 ai = a1 + · · · + an i=1 n Y a1 = a1 · · · · · an i=1 Spezialfälle: 0 X i=1 ai = 0 0 Y ai = 1 i=1 QSI - Theorie - WS2011/12 Rekursion und Induktion > Induktion > Beispiel für die vollständige Induktion für natürliche Zahlen Jetzt zum Beispiel “Induktion für nat. Zahlen” Der Klassiker: Beweise: Satz Für alle n ∈ N gilt: n X i=0 i= n · (n + 1) 2 Beweis: siehe Tafel QSI - Theorie - WS2011/12 Rekursion und Induktion > Induktion > Beispiel für die vollständige Induktion für natürliche Zahlen Wie geht es jetzt weiter? ... mit der Diskreten Modellierung Mengen, Beweise Aussagenlogik Graphentheorie Markov-Ketten Logik erster Stufe kontextfreie Grammatiken QSI - Theorie - WS2011/12 Rekursion und Induktion > Induktion > Beispiel für die vollständige Induktion für natürliche Zahlen noch Fragen??? Quelle Bild: http://www.citycampus.eu/cms/images/comic fragezeichen.png QSI - Theorie - WS2011/12