Prof. Dr. V. Strehl Informatik 8 17. April 2003 Übungen zur Einführung in die Theoretische Informatik 3 SS 2003 The homework was tough but I learned a lot. It was worth every hour. Anonymes Graffito in Concrete Mathematics • Zehn Fingerübungen zum Rechnen mit Logarithmen Bemerkung: Der sichere Umgang mit Logarithmen (und anderen elementaren Funktionen der Mathematik, wie Polynome, Exponentialfunktion, Winkelfunktionen) ist nicht Stoff der Veranstaltung, sondern gehört zum Handwerkszeug, dass man vorab beherrschen sollte. Die nachfolgenden Aufgaben sind als Test zu verstehen: wer mit so etwas ernsthaft Schwierigkeiten hat, hat etwas nachzuholen. Diese Aufgaben werden nicht unbedingt alle in der Übungsgruppe behandelt. Bezeichnung: für positives reelles b und positives reelles y bezeichnet logb y den Logarithmus von y zur Basis b: das ist die eindeutig bestimmte reelle Zahl x mit bx = y. Logarithmen zur Basis b = 2 werden oft einfach mit log y oder lg y bezeichnet, “natürliche” Logarithmen zur Basis e mit ln y. 1. Ist c eine weitere positive reelle Zahl, wie drückt sich logc y mittels Logarithmen zur Basis b aus? 2. In welchem Verhältnis stehen log10 2 und log2 10 zueinander? 3. Wieviele Binärstellen genügen in jedem Fall, um eine 14-stellige Dezimalzahl im Binärsystem darzustellen? 4. Wieviele Dezimalstellen hat die Zahl1 2128 + 1 ? 5. Überzeugen Sie erst einmal durch Beispiele (mittels Taschenrechner, Maple, Logarithmentafel, . . . ) davon, dass für beliebiges x > 0 die Zahlen log2 x und ln x + log10 x verblüffend nahe beieinander liegen. Wie gross ist der relative Fehler? 6. Wie drückt sich logb logb x mittels natürlicher Logarithmen aus? 7. An welcher Stelle nimmt die Funktion x 7→ x ∗ logb x für x ∈ R+ ihr Minimum an? 8. An welcher Stelle nimmt die Funktion b 7→ b ∗ logb x für b ∈ R+ ihr Minimum an? √ 9. Was ist das Minimum der Funktion x 7→ x · x n für x ∈ R+ , n ∈ N? 10. Zeigen Sie, dass log10 2 keine rationale Zahl ist. • Aufgabe 4 : Russische Bauernmultiplikation Formulieren Sie das Verfahren der sogenannten “Russischen Bauernmultiplikation” als Algorithmus (Pseudocode) und beweisen Sie dessen Korrektheit. Nehmen Sie an, dass — wie vorgeführt – eine Multiplikation a ∗ b von zwei natürlichen Zahlen in drei Spalten ausgeführt wird: in der ersten wird sukzessive a durch ba/2c ersetzt, in der zweiten wird sukzessive b durch 2 ∗ b ersetzt, in der dritten Spalte erscheinen die Zahlen der zweiten Spalte, sofern der entsprechende Eintrag in der ersten Spalte ungerade war. Die 1 N.B. Mit der Faktorisierung dieser Zahl in ihre zwei Primfaktoren durch M. Morrison und J. Brillhard im Jahr 1970 begann die Neuzeit des Faktorisierens. 1 Operationen des Halbierens und Verdoppelns sind, zumindest, wenn man eine Binärarithmetik unterstellt, sehr billig, sodass die Hauptarbeit durch das Addieren in der dritten Spalte geleistet werden muss. Welchen Aufwand (in Abhängigkeit von `(a) und `(b)) benötigt die abschliessende Summation in der dritten Spalte im worst-case, wenn man für das Addieren zweier Binärzahlen x und y einen Aufwand von max(`(x), `(y)) Operationen veranschlagt. • Aufgabe 5: Lineare Rekursionen 2. Ordnung und quadratische Gleichungen Was am Beispiel der Fibonacci-Zahlen gezeigt wurde, lässt sich ohne Schwierigkeiten für beliebige lineare Rekursionen 2. Ordnung durchführen. Untersucht werden soll das Verhalten von Folgen (an )≥0 von (komplexen) Zahlen, die durch eine Rekursion (∗) an+1 = c · an + d · an−1 gegeben sind, wobei die Startwerte a0 , a1 , mit denen die Folge dann eindeutig bestimmt ist, nicht spezifiziert sein sollen. c und d sind hierbei feste komplexe Zahlen. 1. Man bestimmt zunächst komplexe Zahlen α, β mit 1 − c · z − d · z 2 = (1 − α · z)(1 − β · z) durch Koeffizientenvergleich von Polynomen bezüglich der Variablen z. Tun Sie das! 2. Zeigen Sie, dass die beiden Folgen (αn )n≥0 bzw. (β n )n≥0 Lösungen der Rekursionsgleichung (∗) sind, und zwar zu den Anfangswerten a0 = 1, a1 = α bzw. a0 = 1, a1 = β. 3. Zu beliebigen ξ, η ∈ C erhält man durch Linearkombination ξ · (αn )n≥0 + η · (β n )n≥0 = (ξ · αn + η · β n )n≥0 eine Lösung der Rekursion (∗) zu den Anfangswerten a0 = ξ + η, a1 = ξ · α + η · β. Wie lautet die Lösung zu den Anfangswerten a0 = 0, a1 = 1? Klappt das immer? 4. Im Falle α 6= β (was bedeutet das für c und d?) ist jede Lösung der Rekursionsgleichung von der im vorigen Absatz beschriebenen Form. Warum? Was macht man im Fall α = β? 5. Einige konkrete Fälle. Bestimmen Sie explizit die Lösungen der folgenden Rekursionsgleichungen: (a) an+1 = 3 an − an−1 mit a0 = 2, a1 = 1 (b) bn+1 = 2 bn − 2 bn−1 mit b0 = 1, b1 = 0 (c) cn+1 = 4 cn − 4 cn−1 mit c0 = 3, c1 = 8 • Zum Fibonacci-Wythoff-Spiel Die nachfolgenden Idee und Konstruktionen sollen den Weg zu einer Beschreibung der Gewinnmenge G beim Fibonacci-Wythoff-Spiel bereiten, sind aber auch ganz unabhängig von dieser spielerischen Anwendung von Interesse — und sei es, um den Umgang mit Homomorphismen und Induktion zu üben. Wir betrachten das Alphabet {a, b}, das Monoid {a, b}∗ der Wörter über {a, b} mit der Konkatenation als Operation, sowie den Monoid-Homomorphismus Φ : {a, b}∗ → {a, b}∗ , der gegeben ist durch Φ(a) = ab und Φ(b) = a Dann gilt beispielsweise (“·” steht für Konkatenation) Φ(abaab) = Φ(a) · Φ(b) · Φ(a) · Φ(a) · Φ(b) = ab · a · ab · ab · a = abaababa 2 Nun nimmt man das Wort w(0) = b als Start für eine iterierte Anwendung des Homomorphismus Φ, d.h. wn+1 = Φ(w(n) ) = Φn (w(0) ): w(1) = Φ(w(0) ) = Φ(b) = a w(2) = Φ(w(1) ) = Φ(a) = ab w(3) = Φ(w(2) ) = Φ(ab) = ab · a = aba w(4) = Φ(w(3) ) = Φ(aba) = ab · a · ab = abaab w(5) = Φ(w(4) ) = Φ(abaab) = abaababa w(6) = Φ(w(5) ) = Φ(abaababa) = abaababaabaab .. . Die folgenden Aussagen sind leicht per Induktion zu beweisen (Sie sollten es übungshalber auch tun!): – die Länge|w(n) | von w(n) ist fn+1 – die Anzahl ]a (w(n) ) der a’s in wn ist fn – die Anzahl ]b (w(n) ) der b’s in wn ist fn−1 – w(n+1) = w(n) · w(n−1) Wegen der letzten Eigenschaft kann man sinnvollerweise von dem unendlich langen Wort w = limn→∞ w(n) reden, das dadurch beschrieben wird, dass sein Anfangsstück der Länge fn+1 gerade w(n) ist. w = abaababaabaababaababaabaababaabaab · · · Das ist das berühmte Fibonacci-Wort. Bezeichnen wir nun mit A(n) bzw. B (n) den Vektor der Positionen der a’s bzw. b’s in w(n) . Man sieht: Ah1i = h1i Ah2i = h1i Ah3i = h1, 3i Ah4i = h1, 3, 4i Ah5i = h1, 3, 4, 6, 8i B h1i = hi B h2i = h2i B h3i = h2i B h4i = h2, 5i B h5i = h2, 5, 7i und erkennt mittels w(n+1) = w(n) · w(n−1) , dass offenbar gilt A(n+1) = A(n) · (A(n−1) + hfn+1 , . . . , fn+1 i) und B (n+1) = B (n) · (B (n−1) + hfn+1 , . . . , fn+1 i) | {z } | {z } fn−1 fn−2 Jetzt ist es leicht, per Induktion die folgende Beziehung zu zeigen: B (n+1) = A(n) + h1, 2, 3, . . . , fn i (n ≥ 0) Erkennen Sie jetzt das Bildungsgesetz für die unendlichen Vektoren? A : B : 1 3 4 6 8 9 11 12 14 16 17 19 21 . . . 2 5 7 10 13 15 18 20 23 26 28 31 34 . . . Wenn Sie sich jetzt die empirisch ermittelten Gewinnpositionen für das Fibonacci-WythoffSpiel anschauen, müssten Sie etwas bemerken.... 3