Übung zur Vorlesung Diskrete Strukturen I

Werbung
Technische Universität München
Institut für Informatik
Prof. Dr. J. Csirik
Brandt & Stein
WS 2002/03
Aufgabenblatt 10
7. Januar 2003
Übung zur Vorlesung Diskrete Strukturen I
Abgabetermin: Tutorübungen am 16. und 17. Januar
Aufgabe 56
Rekursion zweiten Grades (T/H)
Eine homogene, lineare Rekursionsgleichung zweiten Grades hat folgende Form.
x = a x + a x ∀n ≥ 2 und x = b , x = b
(a) (T) Seien α und β zwei Lösungen der Gleichung t − a t − a = 0. Zeigen Sie,
dass gilt:
Aα − Bβ
wenn α 6= β
x =
(An + B)α
sonst
mit
A = wenn α 6= β
sonst
B=
b
wenn α 6= β
sonst
(b) (H) Stellen Sie eine Rekursionsgleichung für die Anzahl der perfekten Matchings in einem 2 × n-Gittergraphen auf und lösen Sie diese mit der oben bewiesenen Lösungsformel.
(c) (H) n Personen (Informatikstudenten, Mathematikstudenten oder Professoren)
rutschen hintereinander in einer der Rutschen im FMI-Gebäude. Wie viele Möglichkeiten gibt es, wenn nicht zwei Professoren hintereinander rutschen dürfen?
Hinweis: Stellen Sie eine Rekursionsgleichung auf und lösen Sie diese mit der
Lösungsformel.
Aufgabe 57
Lukaszahlen (H)
Die Lukaszahlen sind durch folgende Rekursionsgleichung definiert.
L = L + L ∀n ≥ 2 und L = 1, L = 2
(a) Zeigen Sie, dass L = F + F gilt, wobei F die Fibonaccizahlen sind.
(b) Geben Sie eine explizite Darstellung für L an.
Aufgabe 58
Sortierverfahren (T)
Gegeben sei ein Array A[1 . . . n]. Hugo Hacker schlägt folgendes Sortierverfahren
S LOW S ORT vor, das mit S LOW S ORT (A, 1, n) aufgerufen wird:
S LOW S ORT(A,i,j)
if i = j then return (* Terminierungsfall, Array der Länge 1 *)
else if i + 1 = j then (* Terminierungsfall, Array der Länge 2 *)
if A[i] > A[j] then exchange A[i] ↔ A[j] endif;
return
else
k := b(j − i + 1)/3c; (* Drittel der Länge berechnen und abrunden *)
S LOW S ORT (A, i, j − k); (* Erste zwei Drittel sortieren *)
S LOW S ORT (A, i + k, j); (* Hintere zwei Drittel sortieren *)
S LOW S ORT (A, i, j − k) (* Nochmal erste zwei Drittel sortieren *)
endif;
(a) Zeigen Sie durch Induktion über die Länge des Arrays, dass der Algorithmus
S LOW S ORT ein Array aufsteigend sortiert. Beweisen Sie dazu, dass aus der Korrektheit des Algorithmus für (Teil-)Arrays der Länge m ≤ n die Korrektheit des
Algorithmus für (Teil-)Arrays der Länge n + 1 folgt.
Hinweis: Machen Sie sich klar, dass nach dem zweiten rekursiven Aufruf von
S LOW S ORT die k größten Elemente des Arrays bereits an ihrem korrekten Platz
im letzten Drittel des Arrays sind.
(b) Bestimmen Sie eine Rekursionsgleichung, die die Anzahl V(n) der Vergleiche
von Array-Elementen beim Ablauf des Algorithmus S LOW S ORT auf einem Array der Länge n beschreibt.
Bestimmen Sie eine Funktion f(n), so dass V(n) ∈ O(f(n)).
Aufgabe 59
Zahlenmengen (H)
Geben Sie eine Rekursionsgleichung an, die die Anzahl aller Teilmengen der Menge
{1, 2, . . . , n}, die keine drei aufeinander folgenden Zahlen enthalten, beschreibt?
2
Herunterladen