Prof. Dr. V. Strehl, Informatik 8 WS 2007/08 16. Oktober 2007 Übungen zu Theoretische Informatik 3 Cheaters may pass this course by just copying the answers, but they’re only cheating themselves. Anonymes Graffito in Concrete Mathematics • Aufgabe 1 — Der Fibonacci-Bluff (ein Puzzle) Beginnen wir die Übungen mit einem bekannten Puzzle: Sie sehen hier ein Quadrat der Seitenlänge 8, das aus Einheitsquadraten der Seitenlänge 1 zusammengesetzt ist, also die Fläche 64 hat. Dieses Quadrat wird entlang der fett gezeichneten Linien in vier Teile zerschnitten. Die vier Teile werden dann zu einem Rechteck der Seitenlänge 5 × 13 zusammengesetzt. Das Rechteck hat also die Fläche 65. Damit ist (zumindest optisch) überzeugend nachgewiesen, dass 64 = 65 ist — was Sie vermutlich schwerlich akzeptieren werden. Dann müssen Sie aber herausfinden, wo der Fehler liegt! Was das mit der Vorlesung zu tun hat? Nun ja, dass man sich da leicht täuschen lässt, hat etwas damit zu tun, dass die beteiligten Seitenlängen 5, 8, 13 aufeinanderfolgende FibonacciZahlen (s.u.) sind! Machen Sie sich den Spass und produzieren Sie das gleiche Phänomen mit den Seitenlängen 21 (für das Quadrat) und 34 × 13 (für das Rechteck). Nehmen Sie Papier und Schere und realisieren Sie den Bluff physikalisch! 1 • Aufgabe 2: Rekursion und Induktion mit Fibonacci Die durch die Rekursion f0 = 0, f1 = 1, fn+1 = fn + fn−1 (n ≥ 1) definierte Folge der Fibonacci-Zahlen (fn )n≥0 = (0, 1, 1, 2, 3, 5, 8, 13, 21, 34, . . .) muss immer wieder als Ur-Beispiel einer rekursiven Definition herhalten. Tatsächlich hat diese Zahlenfolge aber so interessante Eigenschaften und ist so häufig vorkommend in Natur, Wissenschaft, Kunst, Architektur, etc., dass man ihr ganze Bücher, eine Serie von Tagungen und sogar eine eigene Zeitschrift (The Fibonacci Quarterly) gewidmet hat. Der tiefere Grund ist der Zusammenhang mit dem Goldenen Schnitt, also der reellen Zahl √ φ = (1 + 5)/2 = 1.61803 . . . , die positive Lösung der quadratischen Gleichung X 2 = X + 1. Die andere, negative, Lösung (1 − φ + φb = 1 und φ · φb = −1. √ 5)/2 = −0.61803 . . . wird mit φ̂ bezeichnet. Es gilt also Im Zusammenhang mit dem euklidischen Algorithmus spielen die Fibonacci-Zahlen auch eine bedeutsame Rolle – davon später. Beweise über rekursive Programme bzw. rekursiv definierte Objekte führt man mittels Induktion. Trainieren Sie Ihre Fertigkeiten in dieser Technik, indem Sie die folgenden Aussagen über die Fibonacci-Zahlen sorgfältig per Induktion beweisen: 1. fn = φn√ −φ̂n 5 (n ≥ 0) 2. fn+1 fn−1 − fn2 = (−1)n (n ≥ 1) ( fn+1 − 1 falls n gerade 3. fn + fn−2 + fn−4 + · · · = fn+1 falls n ungerade Übrigens: die zweite Eigenschaft erklärt den Bluff in der ersten Aufgabe. Warum? Beweisen Sie ebenso sorgfältig (im Sinne der Analysis), dass limn→∞ fn+1 fn = φ gilt. Veran- fn+1 fn , schaulichen Sie grafisch das Konvergenzverhalten der Werte d.h. tragen Sie die ersten Werte auf einer Zahlengeraden ab und beobachten Sie, wie sich die Folge entwickelt. • Aufgabe 3 : Russische Bauernmultiplikation Formulieren Sie das Verfahren der sogenannten “Russischen Bauernmultiplikation” als Algorithmus (Pseudocode) und beweisen Sie dessen Korrektheit. Nehmen Sie an, dass — wie in der Vorlesung 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 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 den Bit-Längen `(a) und `(b) der Operanden 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. [Dabei ist `(a) = blog2 ac + 1 die Bit-Länge von a, also die Länge der Binärdarstellung von a] 2