Aufgaben für die Zusatztutorien: 1

Werbung
Fachrichtung 6.2 — Informatik
Universität des Saarlandes
Tutorenteam der Vorlesung Programmierung 1
Programmierung 1 (Wintersemester 2015/16)
Aufgaben für die Zusatztutorien: 1
(Induktion)
1
natürliche Induktion
Aufgabe 1.1
Zeigen Sie mittels Induktion:
(a) ∀n ∈ N \ {0} : 6 | (3n − 3)
(b) ∀n ∈ N \ {0} : 3 + 7 + 11 + ... + (4n − 1) = 2n2 + n
(c) ∀n ∈ N : n ≥ 4 ⇒ n! > 2n
Aufgabe 1.2
Schreiben Sie mit Hilfe der mathematischen Prozedur
iter : N × X × (X → X) → X
iter(0, x, f ) = x
iter(n, x, f ) = iter(n − 1, f x, f ) für n > 0
eine mathematische Prozedur faki: N → N, die die Fakultät für natürliche Zahlen berechnet.
Beweisen Sie, dass Ihre Prozedur die Funktion λn ∈ N.n! berechnet.
Aufgabe 1.3
Beweisen Sie die folgenden Aussagen durch natürliche Induktion:
(a) ∀x, y ∈ N : x · y = iter(x, 0, λx ∈ N.x + y)
(b) ∀x, y ∈ N : x + y = iter(y, x, λx ∈ N.x + 1)
Überlegen Sie sich, worüber Sie in jedem Fall Induktion führen sollten. Sie dürfen die Vertauschungseigenschaft
von iter aus dem Buch verwenden.
Aufgabe 1.4
Zeigen Sie für die folgenden Prozeduren jeweils mittels Induktion, dass p die Funktion f berechnet, also dass
∀z ∈ Dom f : p z = f z gilt.
(a)
p : N2 → N
p (0, y) = y
p (x, y) = 1 + p(x − 1, y)
für x > 0
f = λ(x, y) ∈ N2 . x + y
(b)
p:N→N
p0=3
p x = 1 + p(x − 1)
f = λn ∈ N. n + 3
1
für x > 0
2
strukturelle Induktion
Aufgabe 1.5 (rev)
Sei X eine Menge. Beweisen Sie, dass für alle Listen xs, ys ∈ L(X) gilt:
(a) xs@nil = xs
(b) rev(xs@ys) = rev ys@rev xs
(c) rev(rev xs) = xs
Aufgabe 1.6
Listen lassen sich mit einer endrekursiven Prozedur reversieren, die die folgende Funktion berechnet:
revi ∈L(X) × L(X) → L(X)
revi(xs, ys) = (rev ys)@xs
(a) Konstruieren Sie eine endrekursive Prozedur revi, die die Funktion revi berechnet. (Es dürfen keine
Hilfsprozeduren verwendet werden.)
(b) Beweisen Sie die Korrektheit Ihrer Prozedur.
Hinweis: Sie dürfen die Assoziativität der Konkatenation verwenden.
Aufgabe 1.7
Seien X, Y Mengen. Wir
map : (X → Y ) × L(X)
map f nil
map f (x :: xr)
formulieren die mathematische Prozedur map wie folgt:
→ L(Y )
= nil
= f x :: map f xr
Beweisen Sie, dass für alle f : X → Y und xs, ys ∈ L(X) gilt:
(a) map f (xs @ ys) = (map f xs) @ (map f ys)
(b) map f (rev xs) = rev (map f xs)
Hinweis: Sie dürfen annehmen, dass xs @ nil = xs gilt.
Aufgabe 1.8
Zeigen Sie mittels Induktion die folgenden Aussagen. Überlegen Sie sich jeweils zuvor, ob Sie die Induktionshypothese verstärken müssen.
(a) ∀xs ∈ L(X).|xs| = f oldl(f, 0, xs) mit f = λ(x, a) ∈ X × N.a + 1
(b) ∀xs ∈ L(X).f oldl(f, nil, xs) = rev(map(g, xs)) mit f = λ(x, xs) ∈ X × L(X).g(x) :: xs und
map ∈ (X → Y ) × L(X) → L(Y )
map(f, nil) = nil
map(f, x :: xs) = f (x) :: map(f, xs)
Aufgabe 1.9 (Binomialbäume)
Ein Binomialbaum Bk ∈ B der Ordnung k ist ein geordneter Baum und rekursiv definiert:
(a) B0 ist der Baum mit einem Knoten.
B0 = []
(b) Bk besteht aus zwei Kopien von Bk−1 . Die Wurzel der einen Kopie wird das linkeste Kind der Wurzel der
anderen Kopie.
Bk = [Bk−1 , B10 , ...Bn0 ] wenn Bk−1 = B10 ...Bn0 .
Außerdem sei s wie in Kapitel 10.5 des Buches gegeben. Beweisen Sie: sBk = 2k .
2
Herunterladen