Kurs:Algorithmen und Datenstrukturen (hsrw)/Vorlesung/Vollständige Induktion

Aus testwiki
Zur Navigation springen Zur Suche springen

Vorlage:Navigationsleiste/Algorithmen und Datenstrukturen


Vollständige Induktion

Auf dieser Seite wird die vollständige Induktion behandelt. Es handelt sich hierbei um eine rekursive Beweistechnik aus der Mathematik. Sie ist gut geeignet, um Eigenschaften von rekursiv definierten Funktionen zu beweisen.

Vorgehen

Zunächst vermutet man eine Eigenschaft (z.B. Aufwandsklasse einer Rekursionsgleichung). Nun folgt der Induktionsanfang: Eigenschaft hält für ein kleines n. Als nächstes folgt der Induktionsschritt: Die Annahme ist, dass wir es bereits für ein kleineres n gezeigt haben und wenn die Eigenschaft für kleinere n hält, dann hält sie auch für das nächstgrößere n!

Beispiel 1

T(n):={Θ(1)für n14T(n2)+Θ(n3)sonst

Nun wollen wir die obere Grenze für den Aufwand bestimmen. Unsere Vermutung ist, dass T(n)O(n3). Nun müssen wir zeigen, dass n0,c:nno:T(n)cn3 ( siehe Definition der O-Notation). Die vereinfachte Annahme lautet n=2k. Hierbei werden keine Spezialfälle behandelt und im Induktionsschritt wird von n2 nach n gegangen.

Induktionsvermutung: T(n2)c(n2)3

Induktionsschritt: Wir beweisen von n2nachn

zu zeigende obere Grenze:

T(n)cn3   |T(n)=4T(n2)+n3

Rekursionsgleichung einsetzen:

4T(n2)+n3cn3|T(n2)c(n2)3

Induktionsvermutung einsetzen:

 4c(n2)3+n3cn3

 4c(n38)+n3cn3|cn3

 12cn3+n30|:n3

 12c+10|+12c

 112c|2

 2c

Somit ist der Induktionsschritt erfolgreich, wenn c2.

Induktionsanfang

Wir zeigen die Induktionsvermutung für einen Anfangswert, am einfachsten ist es, dies für den Rekursionsabbruch zu zeigen.

Zu zeigende obere Grenze:

T(1)c13|T(1)=1

Rekursionsgleichung einsetzen:

1c

Der Induktionsanfang ist erfolgreich, wenn c1 ist. Doch wann können wir zeigen, dass T(n)cn3 ist? Für den Wert, den wir im Induktionsanfang gezeigt haben, also für n0=1 und wenn (c2c1)c2.

Beispiel 2

T(n):={Θ(1)für n14T(n2)+Θ(n)sonst

Nun wollen wir die obere Grenze für den Aufwand bestimmen. Unsere Vermutung ist, dass T(n)O(n2). Nun müssen wir zeigen, dass n0,c:nn0:T(n)cn2. Die vereinfachte Annahme lautet n=2k.

Induktionsvermutung: T(n2)c(n2)2

Induktionsschritt: Wir beweisen von n2nachn

T(n)cn2|T(n)=4T(n2)+n

4T(n2)+ncn2|T(n2)c(n2)2

4c(n2)2+ncn2

4c(n24)+ncn2|cn2

n0

Das Problem ist nun, dass wir den Induktionsschritt für positive n zeigen wollen und nicht für negative, daher müssen wir neu ansetzen.

Induktionsvermutung:

Dabei gibt es folgenden Trick: Modifiziere die Induktionsvermutung, in dem ein kleineres Polynom addiert wird.

T(n2)c1(n2)2+c2n2

Induktionsschritt: Wir beweisen von n2nachn

T(n)c1n2+c2n

4T(n2)+nc1n2+c2n

4(c1(n2)2+c2n2)+nc1n2+c2n

c1n2+2c2n+nc1n2+c2n|c1n2;c2n

c2n+n0

c2+10

c21

Induktionsanfang für n=1

T(1)c112+c21|T(1)=1

1c1+c2|c2

1c2c1

Wann können wir nun zeigen, dass T(n)c1n2+c2n?

Für n0=1undwenn(c21c11c2). Somit haben wir gezeigt, dass T(n)O(n2+n)T(n)O(max(n2,n))T(n)O(n2)

Literatur

Da die Vorlesungsinhalte auf dem Buch Algorithmen und Datenstrukturen: Eine Einführung mit Java von Gunter Saake und Kai-Uwe Sattler aufbauen, empfiehlt sich dieses Buch um das hier vorgestellte Wissen zu vertiefen. Die auf dieser Seite behandelten Inhalte sind in Kapitel 7.2.5 zu finden.


Discussion


Vorlage:Versteckt