Rekursion und Induktion

Werbung
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
Herunterladen