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