¢¡¤£¦¥¤§© ¤

Werbung
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
Herunterladen