Prof. Dr. V. Strehl Informatik 8 May 8, 2003 Übungen zur Einführung in die Theoretische Informatik 3 SS 2003 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 9: Asymptotischer Vergleich von Funktionen 1. Zeigen Sie, dass für Funktionen f, g : N → R+ gilt: O(f (n)+g(n)) = O(max(f (n), g(n))) 2. Zeigen Sie, dass für Konstanten a, b (wobei b > 0) gilt: (n + a)b ∈ Θ(nb ). 3. Zeigen Sie, dass die Binomialkoeffizienten nk , wenn man sie für festes k ∈ N als Funktion n(n−1) n n n von n betrachtet, Polynome sind. Zum Beispiel: = 1, = n, = 2 . 0 1 2 n n k Allgemein: k ist ein Polynom vom Grad k, also k ∈ Θ(n ). Für welche Konstante ck gilt nk ∼ ck · nk ? 4. Vergleichen √ Sie das asymptotische Wachstum der beiden Funktionen f : n 7→ 2 log n und g : n 7→ nc , wobei 0 < c < 1 eine Konstante ist. Von welcher Stelle an ist die schneller wachsende Funktion immer grösser? (NB: diese Stelle hängt natürlich von c ab.) 5. Bekanntlich gilt loga n ∈ Θ(logb n) für Basen a, b > 1. Aber gilt auch 2loga n ∈ Θ(2logb n )? • Aufgabe 10: Mittlere Bitlänge — Komplexität des Grössenvergleichs 1. Betrachten sie in dieser Aufgabe für festes n ≥ 1 die Menge [0..2n − 1] als einen mit der Gleichverteilung (d.h. Wahrscheinlichkeit 2−n für jedes Element) ausgestatteten Wahrscheinlichkeitsraum. Die Längenfunktion `(k) = blog kc + 1 für ganze Zahlen1 `n : [0..2n − 1] → {1, 2, . . . , n} : k 7→ blog kc + 1 ist dann eine auf [0..2n − 1] definierte Zufallsvariable. Es bezeichne Ln = E(`n ) = 1 2n X `(k) 0≤k<2n den Mittelwert (Erwartungswert) dieser Zufallsvariablen. Zeigen Sie: Ln = n − 1 + 1 2n−1 (Überprüfen Sie das direkt für kleine Werte von n !) Hierfür gibt es verschiedene Möglichkeiten. (a) Stellen sie eine Rekursionsgleichung für die Zahlen Ln auf und lösen Sie diese. 1 Dabei wird log(0) = 0 gesetzt, damit 0 die Länge 1 erhält. (b) Zeigen sie direkt X `(k) = 1 + 0≤k<2n n X j · 2j−1 j=1 und werten Sie die rechte Summe (endliche geometrische Reihe!) aus mittels n n n X X X d xj j · 2j−1 = = j · xj−1 dx x=2 x=2 j=1 j=1 j=1 2. Anwendung: Stellt man natürliche Zahlen in der Binärdarstellung dar, so entspricht der Grössenvergleich der Zahlen dem Vergleich ihrer Bitdarstellungen in lexikografischer Ordnung. Dazu bezeichne Bn = {hbn−1 , bn−2 , . . . , b1 , b0 i ; bj ∈ {0, 1} (0 ≤ j < n)} die Menge des Bitvektoren der Länge n. Die Abbildung n Bn → [0..2 − 1] : hbn−1 , bn−2 , . . . , b1 , b0 i 7→ n−1 X b j 2j j=0 ist eine Bijektion. (Warum?) Für jede ganze Zahl k ∈ [0..2n − 1] bezeichne dann hki2 ∈ Bn deren Urbild, d.h. die Binärdarstellung der Länge k (mit führenden Nullen!). (a) Zeigen Sie, dass für x, y ∈ [0..2n − 1] gilt: x < y ⇔ hxi2 <lex hyi2 Dabei bezeichnet <lex die auf 0 <lex 1 basierende lexikografische Ordnung auf Bn . (b) Hat man Zahlen anhand Ihrer Bit-Darstellung der Grösse nach zu vergleichen, so benutzt man die lexikografische Ordnung. Wie? Formulieren Sie einen Algorithmus. (c) Für praktische Anwendungen interessant ist die Frage nach der mittleren Anzahl Vn von Vergleichen auf Bit-Ebene, die man braucht, um von zwei beliebigen Bitvektoren ∈ Bn zu entscheiden, welcher lexikografisch grösser ist (oder ob sie gleich sind). Hierbei sei Bn mit der Gleichverteilung ausgestattet. Begründen Sie die Aussage: Vn = n − Ln + 1 (Hinweis: zwei Bitvektoren gleicher Länge unterscheiden sich, von links gelesen, erstmals an der Position j, wenn ihre komponentenweise gebildete xor-Summe an dieser Position j die erste 1 (von links gelesen) hat.) Wie verhält sich also Vn bei wachsendem n? Wie drückt sich dies mit der LandauNotation aus? Was hat das für Konsequenzen in Bezug auf uniformes vs. logarithmisches Kostenmaß, falls es um den Grössenvergleich von natürlichen Zahlen geht? • Aufgabe 11: Binäre Bäume II (Gleiche Notation wie in Aufgabe 8) 1. Für Binärbäume (und auch für andere Typen von Bäumen) betrachtet man verschiedene Parameter, die induktiv definiert oder beschrieben werden: – i(t) = Anzahl der inneren (“internal”) Knoten von t: ( 0 falls t = i(t) = 1 + i(t` ) + i(tr ) falls t = h , t` , tr i – e(t) = Anzahl der äusseren (“external”) Knoten von t: ( 1 falls t = e(t) = e(t` ) + e(tr ) falls t = h , t` , tr i – s(t) = i(t) + e(t) = Grösse (“size”) von t: ( 1 falls t = s(t) = 1 + s(t` ) + s(tr ) falls t = h , t` , tr i – h(t) = Höhe (“height”) von t: ( 0 falls t = h(t) = 1 + max{h(t` ), h(tr )} falls t = h , t` , tr i Zeigen sie, dass für alle binären Bäume t ∈ B folgende Aussagen gelten: (a) e(t) = i(t) + 1, und damit s(t) = 2 · i(t) + 1 = 2 · e(t) − 1 (b) h(t) ≤ i(t) (c) e(t) ≤ 2h(t) , also log e(t) ≤ h(t) Identifizieren Sie in ii. und iii. die Situationen, in denen Gleichheit eintritt. 2. Es bezeichne cn die Anzahl der binären Bäume mit n inneren Knoten, also cn = ]Bn . Man kann zeigen, dass 1 2n cn = n+1 n gilt. Vergleichen sie dies mit den von Ihnen in Aufgabe 8.1 konstruierten Daten. Wie verhalten sich diese Anzahlen (cn )n≥0 asymptotisch für n → ∞? (Hinweis: Benutzen Sie die Stirling-Formel für das asymptotische Verhalten von n!. 3. Nur eine Bemerkung, aber als Anregung vielleicht ganz nützlich und interessant: Die Zahlen cn werden in der Literatur zu Ehren des belgischen Mathematikers Eugene Charles Catalan (1814–1894), der 1838 die obige Formel gefunden hat, als Catalan-Zahlen bezeichnet (obwohl sie in der Literatur schon früher auftauchen). Wegen der vielfältigen Vorkommen binärer Bäume in den verschiedensten Situationen und Verkleidungen spielen diese Zahlen eine enorme Rolle bei der quantitativen Analyse von Strukturen und Algorithmen — man trifft sie eher noch häufiger an als die notorischen Fibonacci-Zahlen. In dem Buch Grundlegende Algorithmen von V. Heun (die 2. Auflage ist gerade erschienen) beispielsweise finden Sie im Abschnitt 7.7 eine Untersuchung zur “optimalem Klammerung von Matrizenprodukten”, ein klassisches Optimierungsproblem, das man mit Hilfe der Technik der “dynamischen Programmierung” lösen kann. Die Catalan-Zahl cn gibt gerade die Anzahl der verschiedenen Möglichkeiten an, ein Produkt von n + 1 Matrizen (beliebigen, aber kompatiblen Formats) auszurechen. An der genannten Textstelle finden Sie ein drastisches Beispiel, wie unterschiedlich die Anzahl der Operationen (Additionen und Multiplikationen von Koeffizienten) sein kann, wenn man ein Produkt M1 · M2 · M3 · M4 von vier Matrizen auf die c3 = 5 verschiedenen Weisen M1 (M2 (M3 M4 )), M1 ((M2 M3 )M4 ), (M1 M2 )(M3 M4 ), (M1 (M2 M3 ))M4 , ((M1 M2 )M3 )M4 ausrechnet. Diese fünf verschiedenen Möglichkeiten entsprechen offensichtlich den fünf Binärbäumen mit drei inneren Knoten (= Multiplikationen). In dem genannten Abschnitt des Buches finden Sie auch einen Beweis der Formel aus dem vorigen Teil der Aufgabe.