http://www.mpi-sb.mpg.de/~hannah/info5-ws00 R S IS UN E R SIT S WS 2000/2001 SA Schömer, Bast IV A Grundlagen zu Datenstrukturen und Algorithmen A VIE N 3. Übungsblatt Abgabetermin: Dienstag, 14. November 2000 Aufgabe 1 (10 + 10 + 10 Punkte) Gegeben seien zwei n × n-Matrizen A, B ∈ n×n mit ganzzahligen Einträgen. Wir wollen einen schnellen Algorithmus zur Berechnung des Produktes C = A · B analysieren. Als primitive Operationen gelten dabei Addition und Multiplikation zweier ganzer Zahlen (egal wie groß). (a) Bestimmen Sie, wieviele primitive Operationen die naiven Algorithmen zur Addition und Multiplikation zweier n × n-Matrizen benötigen. (b) Die Idee von Strassen (1969) zur Beschleunigung der Matrizenmultiplikation beruht auf einem Teile-und-Löse“ Verfahren. Der Einfachheit halber nehmen wir an, dass n = 2k für ” k ∈ . Wir zerlegen A, B und C in jeweils vier Untermatrizen der Größe n/2 × n/2 C11 C12 A11 A12 B11 B12 = · B21 B22 C21 C22 A21 A22 und berechnen C nach folgendem Schema: C11 C12 C21 C22 = = = = A11 · B11 + A12 · B21 A11 · B12 + A12 · B22 A21 · B11 + A22 · B21 A21 · B12 + A22 · B22 = M1 + M2 − M4 + M6 = M4 + M5 = M6 + M7 = M2 − M3 + M5 − M7 wobei M1 M2 M3 M4 M5 M6 M7 = = = = = = = (A12 − A22 ) · (B21 + B22 ) (A11 + A22 ) · (B11 + B22 ) (A11 − A21 ) · (B11 + B12 ) (A11 + A12 ) · B22 A11 · (B12 − B22 ) A22 · (B21 − B11 ) (A21 + A22 ) · B11 Beweisen Sie die Korrektheit dieser Vorgehensweise und zählen Sie die Anzahl der benötigten Matrizenadditionen und Matrizenmultiplikationen für die n/2 × n/2-Teilmatrizen. (c) Analysieren Sie den Strassen-Algorithmus zur Matrizenmultiplikation in Bezug auf die (Größenordnung der) Anzahl benötigter primitiver Operationen, indem Sie die zugehörige Rekursionsgleichung lösen. Aufgabe 2 (10 + 10 Punkte) Implementieren Sie eine Funktion bool is_prime(integer& a), die den Wert true zurückgibt, wenn a eine Primzahl darstellt, und sonst den Wert false, und die für n-stellige Zahlen mit O(B n ) primitiven Operationen auskommt, wobei B ≥ 2 die Basis ist, zu der die Zahlen dargestellt sind. Argumentieren Sie, dass ihre Implementierung korrekt ist, und beweisen Sie die geforderte Schranke von O(B n ). Aufgabe 3 (15 Punkte) Zeigen Sie auf möglichst elegante Weise, dass für alle k ≥ 3 und B ≥ 14 gilt, dass k − logB k − 2 ≥ k · (ln B)/B. Hinweis: Analysis I. Aufgabe 4 (15 Punkte) Lesen Sie das Kapitel 1.8 aus den Course Notes zur Vorlesung vom letzten Semester1 . Dort wird eine Verallgemeinerung der Karatsuba–Ofman-Methode beschrieben, mit der sich zwei n-stellige Zahlen mit O(n1+ε ) primitiven Operationen multiplizieren lassen, für ein beliebiges ε > 0. Insbesondere erhält man also für ε = 1/ log2 n, und damit n1+ε = n·n1/ log2 n = 2n, einen Multiplikationsalgorithmus mit Laufzeit O(2n) = O(n). Erklären Sie genau (= bringen Sie auf den Punkt, 6= schreiben Sie einen Roman darüber), was falsch ist an dieser Argumentation. Hinweis: Dafür muss man den verallgemeinerten Algorithmus nicht im Detail verstehen. Aufgabe 5 (20∗ Punkte) Seien Zahlen zu einer Basis B ≥ 4 dargestellt. Zeigen Sie, dass es für jedes n ∈ eine Zahl D mit höchstens n Stellen gibt, so dass alle natürlichen Zahlen ≤ n Teiler von D sind. Folgern Sie daraus, dass unter den Zahlen mit höchstens 2 + dlogB ne Stellen die Mehrzahl Teiler von D sind. Erklären Sie, welche Relevanz diese Aussage für unseren Checker hat. Hinweis: Betrachten Sie l Y blogp nc D= pi i , i=1 wobei p1 , . . . , pl die Primzahlen aus {1, . . . , n} sind. Sie dürfen ohne Beweis benutzen, dass für alle m ∈ die Anzahl der Primzahlen in {1, . . . , m} kleiner als m/ log4 m ist. Anmerkung zum Benotungsschema: Aus jedem Übungsblatt ergibt sich eine Prozentzahl aus dem Verhältnis der Anzahl erreichter Punkte zur Anzahl der erreichbaren Nichtsternchenpunkte (für dieses Blatt gibt es zum Beispiel maximal 100 Punkte, davon 80 ohne und 20 mit Sternchen; sie könnten also 125% erreichen). Am Ende des Semesters wird der Durchschnitt aus all diesen Prozentzahlen, bis auf die zwei schlechtesten, gebildet. Aus diesem Durchschnitt ergibt sich eine Note, die dann zu mindestens einem Drittel in die Endnote eingeht. 1 http://www.mpi-sb.mpg.de/~mehlhorn/ftp/Info5/introduction.ps