Prof. Dr. V. Strehl Informatik 8 May 12, 2004 Übungen zur Einführung in die Theoretische Informatik 3 SS 2004 Practice yourself, for heavens sake, in little things; and thence proceed to greater. Epictetus, zitiert in Knuth, The Art of Computer Programming vol.1 • Aufgabe 11: Lineare Rekursionen 1. Ordnung In vielen Situationen, insbesondere bei der Komplexitätsanalyse von divide-and-conquerAlgorithmen, stösst man häufig auf Rekursionsgleichungen des allereinfachsten Typs, nämlich lineare Rekursionen 1. Ordnung: xn+1 = an+1 · xn + bn+1 (n ≥ 0) Dabei sind (an )n≥1 , (bn )n≥1 bekannte Folgen (von Zahlen), x0 ist ein Startwert. Die zu untersuchende Folge (xn )n≥0 ist durch diese Daten eindeutig bestimmt. Gesucht ist – wenn möglich – ein Ausdruck für xn , aus dem man das Wachstumsverhalten der Folge ablesen kann. Ob das gelingt, hängt natürlich davon ab, wie “gutartig” die Folgen (an )n≥1 und (bn )n≥1 sind. Für einen speziellen Fall kann man einen Lösungsansatz sofort hinschreiben: ∀n ≥ 1 an = 1 ⇒ xn = x0 + n X bk (n ≥ 0) k=1 Den allgemeinen Fall (s.o.) kann man mittels Variablentransformation (vorausgesetzt, dass alle an 6= 0 sind) auf diesen Typ reduzieren, indem neue Unbekannte yn einführt, wobei y0 = x0 und xn = a1 · a2 · · · an · yn (n ≥ 1) (a) Bestimmen Sie die Lösung der Rekursion xn+1 = −3 · xn + 2 (n ≥ 0) mit x0 = 1 nach dieser Methode. [Hinweis: Es ist gut, sich an die endliche geometrische Reihe zu erinnern. Die wird noch öfter gebraucht werden] (b) Bestimmen Sie die Lösung der Rekursion xn+1 = a · xn + b (n ≥ 0). (c) Bestimmen Sie die Lösung der Rekursion xn+1 = 3 · xn + n (n ≥ 0), x0 = P 0. n n−k [Hinweis: hier muss man wissen, wie man Summen vom Typ s(n) = k=1 k · b auswertet. Das muss man nicht unbedingt auswendig wissen. Wenn man keine Formelsammlung oder geeignete Software zur Hand hat, kann man sich das ganz schnell P überlegen: s(n) erfüllt sowohl s(n + 1) = n + 1 + b · s(n) als auch s(n + 1) = bn + s(n) + nj=1 bn−j , und daraus erhält man s(n).] • Aufgabe 12: Grössenvergleich in der lexicografischen Ordnung Übertragen Sie die in der Vorlesung behandelten Aussagen über die lexicografische Ordnung und den Grössenvergleich vom zweielementigen Alphabet auf beliebige (endliche) Alphabete. An die Stelle von B tritt nun ein k-elementiges Alphabet Ak = {0, 1, 2, . . . , k − 1} mit der “natürlichen” Ordnung 0 < 1 < 2 < . . . < k − 1. Die Menge (Ak )n Vektoren der Länge n über Ak entspricht bijektiv und ordnungtreu den Zahlen [0 . . . k n − 1] mittels Zahldarstellung zur Basis k. Insbesondere interessiert: wieviele Vergleichsoperationen von Elementen aus Ak benötigt man beim lexicografischen Grössenvergleich in (Ak )n im Mittel? Finden Sie eine lineare Rekursion für diese mittlere Anzahl Vn und lösen sie diese (vgl. die vorige Aufgabe). Was geschieht mit Vn für n → ∞ ? 1 • Aufgabe 13: Bitvektoren und Binomialkoeffizienten Mit B n wird die Menge der Bitvektoren der Länge n bezechnet. Das (Hamming-)Gewicht kak eines a ∈ B ∗ ist die Anzahl der von 0 verschiedenen Komponenten, rekursiv definiert: kk = 0, kak = h(a) + kt(a)k (a ∈ B + ) Für 0 ≤ k ≤ n bezeichne Bkn = {a ∈ Bn ; kak = k} die Menge der Bitvektoren der Länge n mit Gewicht k. Die Mächtigkeit von Bkn ist ein Binomialkoeffizient: n n! n(n − 1) · · · (n − k + 1) n ]Bk = = = k! (n − k)! k! k Üblicherweise setzt man nk = 0 für k < 0 und k > n. (a) Falls Ihnen entfallen sein sollte, was es mit den Binomialkoenffizienten auf sich hat (obige Formeln, Rekursionsformel, d.h. Pascalsches Dreieck, binomische Formel, etc.), so wäre es jetzt an der Zeit, dies zu rekapitulieren. (b) Wie verhält sich die Funktion n 7→ nk (für festes k) in ihrem Wachstum für n → ∞ ? Geben Sie eine Antwort in Θ und in ∼. (c) Mit Hn,k = {a ∈ B n ; kak ≤ k} bezeichnet man die Hamming-Kugel vom Radius k in B n – ein fundamentales Objekt in der Codierungstheorie. Wie wächst das “Volumen” (= Anzahl der Elemente) von Hn,k (bei festem k) für n → ∞? (d) Betrachten Sie im Sinne von Aufgabe 9 das Schleifenkonstrukt C(n) ≡ for a in B n do A(a) wobei die Kosten tA (a) für die Ausführung von A(a) gleich c · kak sein sollen. Welches sind die Kosten für die Auführung von C(n) ? 2