Induktionsbeweise in der Informatik

Werbung
Induktionsbeweise in der Informatik
Der knuffige Leitfaden zum Kuscheln und Liebhaben
21. Juli 2017
Zusammenfassung
Dieser Haufen Text stellt die ausformulierte Mitschrift einer Sonderveranstaltung zum Thema Induktionsbeweise von Prof. Dr. Berghammer
dar. Wir werden uns die strukturelle Induktion (inklusive ihrer Anwendungen auf natürliche Zahlen und Zeichenreihen) und noethersche Induktion
ansehen und dabei immer erst versuchen, das grundlegende Prinzip zu verstehen, bevor wir uns an Beispiele heran wagen. Die Beispiele stammen
ebenfalls aus jener Veranstaltung.
Inhaltsverzeichnis
1 Wann werden Induktionsbeweise benutzt?
1.1 Induktiv definierte Mengen . . . . . . . . . . . . . . . . . . . . .
1.2 Wann funktionieren Induktionsbeweise? . . . . . . . . . . . . . .
2
2
3
2 Strukturelle Induktion
2.1 Vollständige Induktion . . . . . . . . . . .
2.1.1 Beispiel: Summe von Potenzen . .
2.1.2 Beispiel: Zwei Funktionen . . . . .
2.2 Strukturelle Induktion über Zeichenreihen
2.2.1 Beispiel: Zeichenvorkommen zählen
4
5
6
7
9
9
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Noethersche Induktion
11
3.1 Beispiel: Summe von Potenzen . . . . . . . . . . . . . . . . . . . 12
3.2 Beispiel: Nieder mit undefinierten Funktionswerten . . . . . . . . 13
1
1
Wann werden Induktionsbeweise benutzt?
Der erste Schritt beim Führen eines Beweises ist, festzustellen, was genau man
überhaupt beweisen soll, also die Behauptung aufzustellen. Eine zu beweisende
Behauptung soll im Allgemeinen für einen ganzen Haufen von Fällen gelten,
zum Beispiel für alle natürlichen Zahlen.
Hat man sich die zu beweisende Behauptung klargemacht, muss man überlegen, auf welche Art man die Behauptung beweisen kann. Dazu stellt man sich
die Frage, unter welchen Bedingungen sie angeblich gelten soll. Abhängig davon
wählt man nun die Beweismethode aus.
Induktionsbeweise bieten sich potentiell dann an, wenn die Richtigkeit der
Behauptung für alle Elemente aus einer Menge gezeigt werden soll. So kann
man per Induktion zum Beispiel ganz wunderbar zeigen, dass eine Behauptung
für alle natürlichen Zahlen gilt. Für die reellen Zahlen aber funktioniert das
schon nicht mehr: um einen Induktionsbeweis führen zu können muss die Menge, für deren Elemente eine Behauptung bewiesen werden soll, also bestimmte
Eigenschaften erfüllen. Welche das sind werden wir uns in der nächsten Sektion
anschauen.
Hat man sich entschieden, dass man einen Beweis über Induktion führen
will,1 bleibt noch zu klären, welche Art von Induktionsbeweis man führen möchte. Derer gibt es grundsätzlich zwei: strukturelle Induktion und noethersche Induktion (auch starke Induktion genannt). Wann welche zum Einsatz kommt
schauen wir uns später noch genau an; hier nur so viel um die Spannung bereits
jetzt in’s Unermessliche zu steigern: nicht immer stehen einem beide Wege offen.
1.1
Induktiv definierte Mengen
Eine Möglichkeit, Mengen zu definieren, ist, sie induktiv zu definieren. Induktiv bedeutet, dass man sich einen Startpunkt wählt von dem man losgeht und
feste Regeln dafür aufstellt, wie man sich aus einem Mengenelement das nächste baut. Was das anschaulich bedeutet wird an einem kleinen, beeindruckend
realitätsnahen Beispiel vielleicht am besten deutlich:
Man stelle sich ein beliebiges im Bau befindliches Hochhaus vor,
welches auf dem Fußboden einer beliebigen Stadt stehe und unendlich viele Stockwerke habe (wie gesagt, beeindruckend realitätsnah).
Nehmen wir nun einen beliebigen Bauingenieur her, welcher dafür zuständig ist, vom Fundament des Hochhauses ausgehend jedes
Stockwerk auf dem letzten aufzubauen. Wir gehen also vom Fundament des Hochhauses aus und benutzen unseren Bauingenieur,
um das erste Stockwerk zu bekommen. Da uns ein Stockwerk natürlich nicht reicht,2 benutzen wir ihn wieder, um ausgehend vom
ersten Stockwerk ein zweites zu bekommen. Wir könnten nun theoretisch aufhören, aber weil wir grundsätzlich sadistisch veranlagt sind
(und eine gute Metapher für induktiv definierte Mengen haben wollen) lassen wir unseren Bauingeneur bis in die Unendlichkeit weitere
Stockwerke liefern. Nimm das, imaginärer Bauingenieur!
1 Oder haben die Menschen, welche die Aufgabenzettel zusammenbauen, das für einen entschieden. . .
2 Gerüchten zufolge ist „Eins“ knapp weniger als „Unendlich“.
2
In der Mathematik kann das ganze im Prinzip genauso funktionieren falls
wir geeignete Bauingenieure finden. Wir nehmen uns ein Fundament für unsere induktiv definierte Menge (die Basis) und definieren uns einen oder mehr
Bauingeneure (die Konstruktoren), um, ausgehend von der Basis, an jedes Element der Menge heranzukommen. Auf diese Weise können wir nun zum Beispiel
die Menge der natürlichen Zahlen
definieren. Unsere Basis wäre die 0 (Basismenge B := {0}) und wir haben eine einzige Konstruktorfunktion, nämlich
die, welche uns, ausgehend von einer natürlichen Zahl, deren Nachfolger liefert
(succ(x) := x + 1). Auf diese Weise können wir alle natürlichen Zahlen erreichen indem wir von der 0 ausgehen und wiederholt unsere Konstruktorfunktion
benutzen. So können wir die 3 zum Beispiel folgendermaßen darstellen:
N
3 = succ(succ(succ(0)))
= succ(succ(1))
= succ(2)
=3
Die induktive Definition unserer natürlichen Zahlen heißt also, dass wir von
unserer Basis ausgehen und uns hochhangeln können, wie beim Hochklettern an
einer Leiter Sprosse für Sprosse. Wir müssen erst eine Sprosse erreicht haben
bevor wir die nächste besteigen können.
Ein weiteres Beispiel ist die Menge der ganzen Zahlen . Unsere Basis
ist wieder die 0, und für die Konstruktorfunktionen haben wir gleich mehrere Möglichkeiten. Eine ist, zwei Funktionen succ(x) und pred(x) zu definieren
(succ(x) := x + 1 und pred(x) := x − 1). Eine weitere ist, zwei Funktionen
succ(x) und neg(x) zu definieren (succ(x) wie gehabt und neg(x) := −x).
Z
1.2
Wann funktionieren Induktionsbeweise?
Wie bereits erwähnt gibt es zwei Arten von Induktionsbeweisen: den strukturellen und den noetherschen Induktionsbeweis. Für beide gelten etwas andere
Voraussetzungen.
• Strukturelle Induktion: Um einen strukturellen Induktionsbeweis durchführen zu können müssen die Elemente, für die wir eine Behauptung beweisen wollen, Teil einer induktiv definierten Menge sein. Wir hangeln uns
bei diesem Beweis quasi an der Struktur der Menge entlang.
• Noethersche Induktion: Ein Beweis durch noethersche Induktion setzt voraus, dass die Elemente, für die wir die Behauptung zeigen wollen, Teil einer Menge sind, die noethersch geordnet ist. Eine geordnete Menge (M, ≤)
heißt noethersch geordnet, wenn jede ihrer Teilmengen (abgesehen von der
leeren Menge) mindestens ein minimales Element besitzt. Da die Menge
natürlich Teilmenge ihrer selbst ist, heißt das, dass die Menge selbst auch
mindestens ein minimales Element hat. Darauf bauen wir später unseren
Beweis auf.
Nun, da wir wissen, welche Beweisart wir wann anwenden können, auf zu
den Beweisarten selbst.
3
2
Strukturelle Induktion
Wie bereits erwähnt müssen die Elemente, über die der Beweis geführt werden
soll, Teil einer induktiv definierten Menge sein. Haben wir das sichergestellt
müssen wir klären, wie die Menge genau definiert ist. Bei den natürlichen Zahlen
ist die Definition recht einfach, bei Zeichenketten zum Beispiel ist das aber schon
etwas schwieriger und liegt nicht mehr direkt auf der Hand. Worüber wir uns klar
werden müssen ist also, aus welcher Basis und mit Hilfe welcher Konstruktoren
unsere Menge definiert ist.
Haben wir Basis und Konstruktoren ist das Prinzip der strukturellen Induktion gar nicht so schwer. Wir fangen einfach damit an, zu zeigen, dass die
Behauptung für alle Elemente der Basis gilt. Ist das so, haben wir schonmal
das Fundament für unseren Beweis gelegt und können uns nun den anderen
Elementen der Menge zuwenden.
Wir können alle Elemente einer induktiv definierten Menge erreichen indem
wir von der Basis ausgehen und unsere Konstruktoren benutzen. Was wir nun,
da wir gezeigt haben, dass die Behauptung für die Basis gilt, noch zu zeigen
haben, ist, dass sie auch nach Anwendung aller Konstruktoren gilt. Das tun
wir, indem wir voraussetzen, dass die Behauptung für ein beliebiges Element
unserer Menge gilt (da wir ja bereits gezeigt haben, dass es Elemente in der
Menge gibt, für welche die Behauptung gilt – nämlich die Basis – können wir
das einfach tun). Unter dieser Voraussetzung müssen wir nun nur noch zeigen,
dass die Behauptung auch für das Element gilt, welches wir erhalten, wenn wir
unsere Konstruktoren auf unser beliebiges Element anwenden. Dabei wenden wir
natürlich nicht alle Konstruktoren gleichzeitig darauf an, sondern beweisen für
jeden Konstruktor einzeln, dass die Behauptung für das damit neu konstruierte
Element gilt.
Wenn wir beides gezeigt haben ist die Behauptung für alle Elemente der
Menge bewiesen. Für die Basis haben wir sie “zu Fuß” bewiesen und für die
Konstruktoren wissen wir nun, dass die Behauptung für die Elemente gilt, die
wir nach der Anwendung der Konstruktoren erhalten.
Formal sieht das Prinzip der vollständigen Induktion nun folgendermaßen
aus:
∀x ∈VB : P (x)
nc
∀c ∈ C ∀x1 , . . . , xnc ∈ S : ( i=1
P (xi )) → P c(x1 , . . . , xnc )
∀x ∈ S : P (x)
Die erste Zeile heißt nichts anderes als dass wir unsere Behauptung, P (x) genannt, für alle Elemente x aus unserer Basis B zeigen. Dies wird als Induktionsbeginn, Induktionsanfang oder Induktionsanker bezeichnet und mit IB oder IA
abgekürzt.
Die zweite Zeile ist etwas unverständlicher. Sie bedeutet, dass wir uns erst
einmal alle Konstruktoren zusammensuchen, mit der wir unsere Menge definieren (∀c ∈ C). Dann nehmen wir uns genau so viele Elemente beliebig aus
unsere Menge, wie unser jeweiliger Konstruktor als Parameter erwartet, um ein
nächstes Element zu liefern (die Anzahl der Parameter bezeichnen wir hier als
nc ). Wir zeigen dann, dass immer folgendes gilt: wenn die Behauptung für all
diese Elemente gilt, dann gilt sie auch für das vom Konstruktor neu gelieferte
Element.
4
Das klingt vergleichsweise kompliziert. Am Beispiel der natürlichen Zahlen
haben wir gesehen, dass der Konstruktor succ(x) genau einen Parameter erwartet. Wir suchen uns also ein Element x1 heraus und nehmen an, dass für dieses
Element unsere Behauptung gilt. Diese Annahme wird als Induktionshypothese
oder Induktionsvoraussetzung bezeichnet und mit IV abgekürzt. Dann zeigen
wir, dass sie dann auch immer für die Zahl gilt, welche wir erhalten, wenn wir
unseren Konstruktor anwenden, hier also das Element succ(x1 ). Dies wird als
Induktionsschluss bezeichnet und mit IS abgekürzt.
Haben wir gezeigt, dass die beiden Zeilen über dem Strich (auch Oberformeln oder Prämissen genannt) wahr sind, ist die Zeile unter dem Strich (auch
Unterformel oder Konklusion) auch wahr. Und die Unterformel ist genau das,
was wir beweisen wollten, nämlich, dass unsere Behauptung P (x) für alle x aus
unserer Menge S gilt.
So, dann gleich mal auf zu zwei Anwendungen von struktureller Induktion.
2.1
Vollständige Induktion
Haben wir entschieden, dass wir zeigen wollen, dass eine Behauptung für alle
Elemente der natürlichen Zahlen gilt, können wir herangehen und einen strukturellen Induktionsbeweis über die natürlichen Zahlen führen (wie bereits erwähnt
sind die natürlichen Zahlen ja induktiv definiert) und das ganze eine vollständige
Induktion nennen.3
Wir müssen uns nun zunächst klarmachen, welche Basis und Konstruktoren wir haben. Letzteres ist einfach, die natürlichen Zahlen kommen mit einer
Konstruktorfunktion aus (die bereits erwähnte Funktion succ(x) := x + 1). Bei
der Basis müssen wir unterscheiden ob wir uns in der Welt der Informatik oder
der Mathematik bewegen. In der Informatik ist die Basis der natürlichen Zahlen
üblicherweise die 0, in der Mathematik meist die 1. Wir entscheiden uns hier
selbstverständlich für die Informatik und nehmen als Basis die 0 an.
Das Prinzip der strukturellen Induktion, angewendet auf die natürlichen
Zahlen, sieht also folgendermaßen aus:
P (0)
∀x ∈
N : P (x) → P (x + 1)
∀x ∈ N : P (x)
Wir können und müssen dieses Prinzip manchmal ändern und an unser vorliegendes Problem anpassen. Es könnte zum Beispiel vorkommen, dass eine bestimmte Behauptung erst ab einer bestimmten Zahl gilt, was eine entsprechende
Anpassung der Basismenge nach sich zieht. Oder wir wollen zeigen, dass eine
Behauptung nur für ungerade Zahlen gilt, was für eine Basismenge B = {1}
und eine Konstruktorfunktion succodd (x) = x + 2 sprechen würde. Man beachte, dass wir dann nicht mehr über die natürlichen Zahlen selbst, sondern
nur noch über eine Teilmenge induzieren. Solange wir die aber auch induktiv
definiert bekommen, ist alles prima.
3 Der Hauptgrund dafür ist natürlich, dass wir grundsätzlich faul sind und „vollständige
Induktion“ kürzer ist als „strukturelle Induktion über natürliche Zahlen“.
5
2.1.1
Beispiel: Summe von Potenzen
Beh.:
∀n ∈
N∀x ∈ R \ {1} :
n
X
xi =
i=0
xn+1 − 1
x−1
Zunächst müssen wir uns aus dieser Behauptung unser P zusammensuchen. Da die Aussage für alle reellen Zahlen (außer 1) gelten soll, könnten
wir schauen, ob wir den Beweis nicht über alle reelen Zahlen (außer 1)
führen wollen. Dummerweise sind die reellen Zahlen (auch mit 1) nicht
induktiv aufgebaut, also dürfte das etwas schwierig werden. Praktischerweise soll die Aussage aber auch für alle natürlichen Zahlen gelten, also
entscheiden wir uns einfach für eine vollständige Induktion.
P (n) := ∀x ∈
R \ {1} :
n
X
xi =
i=0
xn+1 − 1
x−1
Nun, wo wir unsere Behauptung haben, aufi-auf zum Beweis!
Bew.: durch vollständige Induktion.
IA: n = 0. Zu zeigen ist P (0), das heißt
P (0) = ∀x ∈
R \ {1} :
0
X
xi =
i=0
Sei also x ∈
x0+1 − 1
x−1
R \ {1} beliebig. Dann:
0
X
xi = x0 = 1
i=0
Nun nehmen wir uns die rechte Seite der Gleichung vor, und schauen,
ob sie auch 1 wird.
x0+1 − 1
x−1
=
=1
x−1
x−1
Damit haben wir gezeigt, dass beide Seiten der Gleichung für n = 0
gleich sind und die Behauptung für die Basis der natürlichen Zahlen
gilt. Weiter geht’s mit dem Induktionsschluss.
IV: Sei n ∈
N und gelte P (n).
IS: P (n) → P (n + 1). Zu zeigen:
P (n + 1) = ∀x ∈
R \ {1} :
n+1
X
i=0
6
xi =
xn+1+1 − 1
x−1
Sei also x ∈
R \ {1} beliebig. Dann:
n+1
X
xi =
i=0
n
X
xi + xn+1
i=0
n+1
−1
+ xn+1
x−1
xn+1 − 1 + xn+1 · (x − 1)
=
x−1
n+1
x
− 1 + xn+1+1 − xn+1
=
x−1
xn+1+1 − 1
=
x−1
IV
=
x
Was haben wir hier getan? Zunächst haben wir den letzten Summanden aus der Summe herausgezogen und explizit hingeschrieben.
Damit haben wir die Summe auf i = 0 bis n zurückgeführt. Und nun
kommt das interessante beim Induktionsschluss: Wir setzen voraus,
dass P (n) gilt und P (n) sagt in diesem Fall etwas darüber aus, was
Pn
xn+1 −1
i
i=0 x ist, nämlich
x−1 . Und genau das dürfen wir nun für unsere Summe einsetzen. Der Rest ist nur noch einfaches Ausrechnen.
Und damit sind wir auch schon fertig.
2.1.2
Beispiel: Zwei Funktionen
Es seien die folgenden beiden Funktionen gegeben:
1
:x=0
f : → , f (x) =
2 · f (x − 1) : x 6= 0
y
:x=0
g : × → , g(x, y) =
g(x − 1, 2y) : x 6= 0
N N
N N N
Beh.:
N : f (x) = g(x, 1)
Hier haben wir eine Behauptung für alle x ∈ N. Das heißt, hier brauchen
∀x ∈
wir gar nicht lange überlegen was wir tun, da sich die vollständige Induktion förmlich aufzwingt.4 Damit können wir auch schon unser P aufstellen:
P (x) := f (x) = g(x, 1)
Bew.: durch vollständige Induktion.
IA: x = 0. Zu zeigen ist P (0), das heißt
P (0) = (f (0) = g(0, 1))
Dass P (0) wahr ist sieht man sofort an den Definitionen der Funktionen. f (0) ist 1, und g(0, 1) liefert ebenfalls 1. Also weiter.
IV: Sei x ∈
4 Allein
N und gelte P (x).
schon, weil dieses Beispiel im Abschnitt über vollständige Induktion steht.
7
IS: P (x) → P (x + 1). Zu zeigen:
P (x + 1) = (f (x + 1) = g(x + 1, 1))
Aufi-auf:
IV
f (x + 1) = 2 · f (x) = 2 · g(x, 1)
Da wir an dieser Stelle mit unseren Definitionen erstmal nicht weiterkommen schauen wir einfach mal, ob wir die rechte Seite unserer
Behauptung so umformen können, dass wir auf das Ergebnis kommen, das wir gerade erhalten haben:
g(x + 1, 1) = g(x, 2 · 1)
An dieser Stelle kommen wir schon wieder nicht weiter. Wir müssen
also irgendwie zeigen, dass gilt
2 · g(x, 1) = g(x, 2 · 1)
Da das nicht sofort aus den Definitionen folgt müssen wir uns an
dieser Stelle etwas einfallen lassen. Und weil wir so viel Spaß daran
haben, zeigen wir die Gleichheit der beiden Terme für alle x (wir erinnern uns, dass wir in unserer Induktionsvoraussetzung ein beliebiges
x herausgegriffen haben) mit Hilfe einer vollständigen Induktion.
Beh.: Wir verallgemeinern unser Problem einfach ein wenig und stellen
die folgende Behauptung auf:
∀x ∈
N∀y ∈ N : 2 · g(x, y) = g(x, 2y)
Da wir dies für alle x zeigen wollen ergibt sich unser P zu folgendem:
P (x) = ∀y ∈ : 2 · g(x, y) = g(x, 2y)
N
Fangen wir also an, indem wir das ganze in unserem Induktionsanfang für x = 0 zeigen.
Bew.: durch vollständige Induktion.
IA: x = 0 Zu zeigen ist P (0), das heißt
P (0) = ∀y ∈
Sei y ∈
N : 2 · g(0, y) = g(0, 2y)
N also beliebig. Dann:
2 · g(0, y) = 2y = g(0, 2y)
Nun, da wir die Behauptung für x = 0 gezeigt haben, auf
zum Induktionsschluss.
IV: Sei x ∈ und gelte P (x).
IS: P (x) → P (x + 1). Zu zeigen:
N
P (x + 1) = ∀y ∈
Sei y ∈
N : 2 · g(x + 1, y) = g(x + 1, 2y)
N also beliebig. Dann:
IV
Def
2 · g(x + 1, y) = 2 · g(x, 2y) = g(x, 2 · 2y) = g(x + 1, 2y)
8
Um einzusehen, dass die letzte Gleichheit gilt, wende man die
Definition von g auf den rechten Teil an und bemerke, dass
man auf wundersame Weise beim linken Teil herauskommt.
Toll!
Nun, da wir die Gültigkeit unserer zweiten Behauptung auch
gezeigt haben, zurück zu unserer Hauptinduktion.
Wir haben nun gezeigt, dass folgendes gilt:
2 · g(x, 1) = g(x, 2 · 1)
Damit haben wir unsere Behauptung also bewiesen und sind fertig.
2.2
Strukturelle Induktion über Zeichenreihen
Haben wir die Gültigkeit einer Behauptung für Zeichenreihen zu zeigen müssen
wir die allgemeine strukturelle Induktion auf Zeichenreihen anwenden. Zeichenreihen kann man durchaus induktiv definieren: die Basis enthält lediglich die
leere Zeichenreihe (B = {ε}) und als Konstruktoren haben wir für jeden möglichen Buchstaben a aus einer Menge von Buchstaben A die Möglichkeit, aus
ihm und einem bereits existierenden Wort w ∈ A∗ ein neues Wort zu bauen:
pref ixa (w) = a&w
postf ixa (w) = w&a
Es gibt hier zwei Möglichkeiten: entweder, wir hängen a von links an w oder
von rechts. Es genügt, sich für eine der beiden (äquivalenten) Möglichkeiten zu
entscheiden. Im Folgenden entscheiden wir uns einfach für das Anfügen von links
(pref ixa (w)).
Nun, da wir eine induktive Definition haben, können wir strukturelle Induktion also benutzen. Deren Anwendung sieht in diesem Fall folgendermaßen
aus:
P (ε)
∀a ∈ A, ∀w ∈ A∗ : P (w) → P pref ixa (w)
∀w ∈ A∗ : P (w)
Die Basis der Zeichenreihen ist immer die leere Zeichenreihe, daher zeigen
wir die Gültigkeit der Behauptung zunächst für jene (erste Zeile). Nun haben
Zeichenreihen aber nicht nur einen Konstruktor: es gibt immer genau so viele
Konstruktoren, wie wir Zeichen in unserem Zeichenvorrat A haben. Hätten wir
einen Zeichenvorrat von 26 Buchstaben hätten wir auch 26 Konstruktoren, nämlich für jedes Zeichen a ∈ A einen Konstruktor pref ixa (w). Bei der zweiten Zeile
nehmen wir an, dass die Behauptung für eine beliebige Zeichenreihe gilt und zeigen dann, dass sie immer noch gilt, wenn wir einen unserer Konstruktoren auf
die Zeichenreihe anwenden.
2.2.1
Beispiel: Zeichenvorkommen zählen
Wir wollen uns nun eine Funktion zusammenbauen, welche sich induktiv durch
eine Zeichenreihe wühlt und das Vorkommen eines bestimmten Zeichens in der
Zeichenreihe zählt:
9
anz : A∗ × A →
N
anz(ε, x) = 0
1 + anz(w, x) : x = a
anz(a&w, x) =
anz(w, x)
: x 6= a
Soll die Funktion also das Vorkommen eines bestimmten Zeichens in einer
leeren Zeichenreihe bestimmen gibt sie 0 zurück, da kein Zeichen in der leeren
Zeichenreihe vorhanden ist. Wird sie dagegen auf eine nichtleere Zeichenreihe
angewandt (welche wir immer darstellen können mit Hilfe eines unserer Konstruktoren), prüft sie, ob das erste Zeichen gleich dem Zeichen ist, nach dem wir
suchen. Ist das der Fall, addiert sie 1 zum Vorkommen des Zeichens im Rest der
Zeichenreihe. Wenn nicht gibt sie die Anzahl der Vorkommen des Zeichens in
der Restzeichenreihe zurück. An dieser Stelle zahlt sich aus, dass wir uns weiter
oben rein zufällig für den pref ixa (w)-Konstruktor entschieden haben: er passt
passgenau zur Art und Weise, wie anz sich durch eine Zeichenreihe wühlt.
Damit wir gleich etwas zu beweisen haben definieren wir uns jetzt noch eine
Funktion conc : A∗ × A∗ → A∗ , welche zwei beliebige Zeichenreihen aneinander
hängt:
conc(ε, t) = t
conc(a&s, t) = a&conc(s, t)
Also, Zeit für eine Behauptung, die wir beweisen können.
Beh.:
∀s ∈ A∗ ∀t ∈ A∗ ∀x ∈ A : anz conc(s, t), x = anz(s, x) + anz(t, x)
Daraus müssen wir uns nun erstmal wieder unser P heraussuchen. Wenn
wir uns die Definition der conc-Funktion ansehen, entdecken wir folgende
Zeile:
conc(a&s, t) = a&conc(s, t)
Die Funktion wird also über den induktiven Aufbau des ersten Arguments
definiert. Und genau das machen wir uns zunutze um die Induktion zu
führen:
P (s) := ∀t ∈ A∗ ∀x ∈ A : anz conc(s, t), x = anz(s, x) + anz(t, x)
Bew.: durch strukturelle Induktion.
IA: s = ε. Zu zeigen ist P (ε), das heißt
P (ε) = ∀t ∈ A∗ ∀x ∈ A : anz conc(ε, t), x = anz(ε, x) + anz(t, x)
Seien also t ∈ A∗ und x ∈ A beliebig. Dann:
anz conc(ε, t), x = anz(t, x)
(Definition von conc)
= 0 + anz(t, x)
= anz(ε, x) + anz(t, x)
10
(Definition von anz)
Damit haben wir die Gültigkeit unserer Behauptung für die Basis der
Zeichenreihen, die leere Zeichenreihe, bewiesen. Auf zum Induktionsschluss.
IV: Sei s ∈ A∗ und gelte P (x).
IS: Zu zeigen ist P (s) → P (a&s) für alle a ∈ A und s ∈ A∗ . Seien also
t ∈ A∗ und x ∈ A beliebig. Dann:
anz conc(a&s, t), x = anz a&conc(s, t), x
1 + anz conc(s, t),
x :x=a
=
anz conc(s, t), x
: x 6= a
1 + anz(s, x) + anz(t, x) : x = a
IV
=
anz(s, x) + anz(t, x)
: x 6= a
Die erste Zeile folgt aus der Definition der conc-Funktion. Die zweite
Zeile ist die Anwendung der zweiten Zeile der Definition der anzFunktion. Bei der dritten Zeile nun kommt wieder mal unsere Induktionsvoraussetzung ins Spiel. Von der ersten auf die zweite Zeile
haben wir unsere Gleichung auf eine Form gebracht, die es uns erlaubt, unsere Induktionsvoraussetzung anzuwenden. Indem wir das
getan haben haben wir schließlich gezeigt, dass unsere Behauptung
für eine beliebige Zeichenreihe gilt und damit den Beweis abgeschlossen.
3
Noethersche Induktion
Die noethersche Induktion ist vom Prinzip her ähnlich wie die strukturelle Induktion. Es gelten lediglich etwas andere Voraussetzungen. Um einen Beweis per
noetherscher Induktion führen zu können muss die Variable, über die wir den
Beweis führen wollen, Teil einer noethersch geordneten Menge sein. Haben wir
das sichergestellt, suchen wir uns die minimalen Elemente heraus und beweisen
unsere Behauptung zunächst für jene. Dann nehmen wir uns ein beliebiges Element der Menge und dürfen annehmen, dass die Behauptung für alle kleineren
Elemente der Menge gilt (Induktionsvoraussetzung oder Induktionshypothese).
Dann zeigen wir, dass die Behauptung für das Element unter den gegebenen
Voraussetzungen gilt. Formal sieht das Prinzip der noetherschen Induktion für
eine Menge M mit minimalen Elementen B ⊆ M wie folgt aus:
∀x ∈ B : P (x)
∀x ∈ M : ∀y ∈ M : y < x → P (y) → P (x)
∀x ∈ M : P (x)
Vergleichen wir die Definition mal mit der Definition der strukturellen (und
damit auch der vollständigen) Induktion. Beiden ist gemeinsam, dass wir die
Behauptung zunächst für alle Elemente einer Basis explizit zeigen. Danach unterscheiden sie sich allerdings: bei struktureller Induktion hangeln wir uns an
den Konstruktoren entlang. Am Beispiel der natürlichen Zahlen nehmen wir
uns beispielsweise eine Zahl heraus und nehmen an, dass unsere Behauptung
für die Zahl gilt. Dann zeigen wir, dass unsere Behauptung dann auch für die
11
Zahl gelten muss, die wir bekommen, wenn wir den Konstruktor der natürlichen Zahlen anwenden. Wir können dabei nur auf die Zahl zurückgreifen, die
wir uns herausgegriffen haben. Bei der noetherschen Induktion ist unsere Induktionsvoraussetzung in gewisser Weise stärker (weswegen einige diese Art der
Induktion auch als starke Induktion bezeichnen). Hier können wir bei unserem
Beweis nicht nur auf die herausgegriffene Zahl zurückgreifen, sondern auch noch
alle kleineren Zahlen.
Wann sollte man noethersche Induktion benutzen? Nun, immer dann, wenn
wir einen gegebenen Fall auf „kleinere“ Fälle zurückführen können, aber nicht
wissen, wie viel kleiner sie tatsächlich sind.
3.1
Beispiel: Summe von Potenzen
Wir wollen an dieser Stelle noch einmal das erste Beispiel zur vollständigen
Induktion aufgreifen und den Beweis zum Vergleich mit einer noetherschen Induktion auf ( , ≤) führen. Das minimale Element ist die 0.
N
Beh.:
∀n ∈
N∀x ∈ R \ {1} :
n
X
xi =
i=0
xn+1 − 1
x−1
Analog zum Beispiel der vollständigen Induktion definieren wir uns unser
P wie folgt:
P (n) := ∀x ∈
R \ {1} :
n
X
xi =
i=0
xn+1 − 1
x−1
Nun wo wir unser P haben können wir mit dem Führen des Beweises
beginnen.
Bew.: durch noethersche Induktion.
IA: n = 0 (also minimal). Zu zeigen ist P (0), das heißt
P (0) = ∀x ∈
R \ {1} :
0
X
xi =
i=0
x0+1 − 1
x−1
Der Beweis der Induktionsbehauptung ist analog zum Beispiel im
Abschnitt über vollständige Induktion.
IA: Sei n ∈
N>0 und gelte P (y) für alle y ∈ N<n.
IS: Zu zeigen: Dann gilt auch P (n), das heißt:
P (n) = ∀x ∈
R \ {1} :
n
X
i=0
12
xi =
xn+1 − 1
x−1
Sei also x ∈
R \ {1} beliebig. Dann:
n
X
xi =
i=0
n−1
X
xi + xn
i=0
n−1+1
−1
+ xn
x−1
xn−1+1 − 1 + xn · (x − 1)
=
x−1
xn − 1 + xn+1 − xn
=
x−1
xn+1 − 1
=
x−1
IV
=
x
Zunächst haben wir versucht, unsere Summe aufzuteilen, nämlich in
die Summe von xi von 0 bis n − 1 und xn . Nun haben wir bei der
Summe eine obere Grenze n − 1, die kleiner ist als n. Damit können
wir unsere Induktionsvoraussetzung einsetzen, welche nämlich sagt,
dass unsere Behauptung für alle Werte gilt, die kleiner sind als n.
Der Rest ist nur noch das Vereinfachen der Brüche. Am Ende bekommen wir genau die rechte Seite unserer Behauptung heraus und
haben jene damit bewiesen. Da wir die Summe bis n auf die Summe
bis n − 1 zurückführen konnten, hätten wir auch einfach weiter vollständige Induktion verwenden können. Der Punkt ist aber, dass wir
bei noethersch geordneten Mengen genauso gut noethersche Induktion anwenden können weil die Induktionsvoraussetzung dort nicht
schwächer, sondern stärker ist.
3.2
Beispiel: Nieder mit undefinierten Funktionswerten
Sei folgende Funktion gegeben:
f:
N×N→N
f (0, y) = 1
(1)
f (x + 1, 0) = f (x, 1)
(2)
f (x + 1, y + 1) = f x, f (x + 1, y)
(3)
Was wir hier haben ist eine Funktion, welche zwei Argumente übergeben
bekommt. Bevor wir nun weitermachen, brauchen wir erst einmal unsere Behauptung die wir beweisen wollen.
Beh.:
∀x, y ∈
N : f (x, y) 6= undef
Das bedeutet, wir behaupten, dass es keine einzige Kombination von x
und y gibt, für welche der Funktionswert undefiniert ist. Wir haben also
eine Behauptung, welche sich auf zwei natürliche Zahlen bezieht, über
welche die Funktion auch definiert wird. Wir müssen also die Gültigkeit
13
der Aussage über ein Zahlenpaar beweisen. Zur Verdeutlichung könnten
wir die Behauptung auch folgendermaßen schreiben:
N × N : f (x, y) 6= undef
∀hx, yi ∈
Unser P ergibt sich damit zu folgendem:
P (hx, yi) := f (x, y) 6= undef
Um die Behauptung mit einem noetherschen Induktionsbeweis beweisen
zu können, benötigen wir erst einmal eine Ordnung auf hx, yi. Was wir nun
tun können, ist, uns die beiden Zahlen als Zeichen vorzustellen und das
Paar hx, yi als Zeichenreihe. Dann wenden wir auf die Menge aller Paare
hx, yi ∈ × folgende Ordnung an, welche erst nach der ersten und dann
nach der zweiten Komponente ordnet (wie es auch eine lexikographische
Ordnung tun würde):
N N
hx, yi ≤ hu, vi ⇐⇒ (x < u) ∨ (x = u ∧ y ≤ v)
Im Klartext bedeutet das folgendes: Ein Paar hx, yi ist genau dann kleiner
als oder gleich einem Paar hu, vi wenn die rechte Seite der Äquivalenz wahr
ist. Die rechte Seite unterscheidet erst einmal zwischen zwei Fällen. Wenn
das x kleiner als das u ist, soll hx, yi auf jeden Fall kleiner als oder gleich
dem Paar hu, vi sein. Ist x = u schauen wir uns das zweite Element der
Paare an. Wenn y kleiner als oder gleich v ist, ist hx, yi kleiner als oder
gleich hu, vi, ansonsten nicht.
Diese Beziehungen kann man sich auch anschaulich vorstellen indem man
sich Paare von Ziffern denkt, welche die Zahlen von 0 bis 99 darstellen
sollen. Wollen wir feststellen, ob 53 ≤ 32 ist schauen wir zunächst auf die
erste Ziffer der beiden Zahlen. Die 5 ist weder kleiner als noch gleich 3,
daher kann nicht 53 ≤ 32 sein. Schauen wir uns an, ob dagegen 32 ≤ 53
gilt stellen wir fest, dass 3 < 5 ist und damit auf jeden Fall 32 ≤ 53 sein
muss. Bei 53 ≤ 54 ist 5 = 5, daher schauen wir uns die zweite Ziffer an.
Da 3 ≤ 4 ist 53 ≤ 54.
N × N, ≤) ist h0, 0i.
Das minimale Element von (
Bew.: durch noethersche Induktion.
IA: hx, yi = h0, 0i (also minimal). Zu zeigen ist P (h0, 0i), das heißt
P (h0, 0i) = f (0, 0) 6= undef
Da laut der Definition von f gilt f (0, 0) = 1 6= undef , ist der Induktionsbeginn schnell abgehakt. Auf zum Induktionsschluss, der bei
diesem Beweis etwas komplexer ist als bei den bisher erbrachten Beweisen.
N × N mit hx, yi > h0, 0i und gelte P (hu, vi) für alle
N N mit hu, vi < hx, yi.5
IV: Sei hx, yi ∈
hu, vi ∈ ×
5 Eine
gute Verständnisübung ist, herauszufinden, an welchen Stellen des Beweises wir diese
starke Voraussetzung brauchen statt nur auf ein Element der Menge zurückzugreifen, wie bei
struktureller Induktion.
14
IS: Zu zeigen: Dann gilt auch P (hx, yi), das heißt:
P (hx, yi) = f (x, y) 6= undef
Beobachte zunächst, dass hx, yi > h0, 0i impliziert, dass x 6= 0 oder
y 6= 0. Wir haben jetzt zwei Fälle: y = 0 (und damit x 6= 0) und
y 6= 0, also machen wir eine kleine Fallunterscheidung.
Fall 1: y = 0. Dann ist x 6= 0 und es gilt:
f (x, 0) = f (x − 1, 1)
IV
6= undef
Wenn wir uns die Definition unserer Funktion einmal anschauen,
gibt es eine Zeile, die etwas darüber aussagt, was passiert, wenn
y = 0 ist, nämlich die zweite. Die können wir hier ganz wunderbar anwenden und indem wir unser x in die Funktionsdefinition
einsetzen. Da in der Funktionsdefinition auf der linken Seite für
das erste Argument x + 1 statt x steht und auf der rechten Seite
vom x + 1 eins abgezogen wird müssen wir sicherstellen, dass unser x größer ist als null, was aber gilt, da y = 0 ist. Wir kommen
auf diese Weise also auf f (x, 0) = f (x − 1, 1), der Funktionswert
von f für das Paar hx, 0i wird also auf den Funktionswert des
Paares hx − 1, 1i zurückgeführt. Laut unserer Ordnung gilt nun
hx, 0i ≤ hx − 1, 1i, da x < x − 1 ist. Damit greift mal wieder
unsere Induktionsannahme, die besagt, dass die Behauptung für
alle hu, vi < hx, yi wahr ist, und damit wissen wir, dass der Funktionswert von hx − 1, 1i nicht undefiniert ist. Kommen wir nun
also zum zweiten Fall.
Fall 2: y 6= 0. Wenn y nicht 0 ist haben wir für unser x zwei Möglichkeiten: x = 0 und x 6= 0. Also machen wir eine weitere Fallunterscheidung:
Fall 1: x = 0. Dann:
f (0, y) = 1
6= undef
Dies folgt aus der ersten Zeile unserer Funktionsdefinition.
Fall 2: x 6= 0. Dann:
f (x, y) = f x − 1, f (x, y − 1)
Wir betrachten nun einmal f (x, y − 1). Da hx, y − 1i ≤ hx, yi,
da y−1 ≤ y, ist der Funktionswert von f (x, y−1) nach der Induktionsvoraussetzung nicht undefiniert. Definieren wir uns
nun ein c mit c := f (x, y − 1) können wir dies in die obige
Gleichung einsetzen und erhalten:
f (x, y) = f (x − 1, c)
f (x−1, c) ist nach der Induktionsvoraussetzung also ebenfalls
nicht undefiniert, da hx − 1, ci ≤ hx, yi da x − 1 < x. Damit
haben wir nun insgesamt bewiesen, dass unsere Behauptung
gilt.
15
Herunterladen