Übungen zur Computeralgebra — Blatt 2 Dr. D. Vogel Dr. A. Maurischat Sommersemester 2012, Abgabe: Mi 2.5.2012, 9.00 Uhr 5. Aufgabe: (4 Punkte) (a) Zeigen Sie, dass für alle x, y ∈ Z die Gleichheit x · y = 14 ((x + y)2 − (x − y)2 ) gilt. (b) Unter Verwendung der Gleichung in (a) erhält man aus einem Algorithmus zum Quadrieren (und Additions- bzw. Subtraktionsalgorithmen) einen Algorithmus zum Multiplizieren zweier Zahlen. Berechnen Sie den Aufwand θ(m, n) zur Multiplikation zweier ganzer Zahlen der (Bit-)längen m und n mittels dieses Algorithmus, wenn das Quadrieren einer ganzen Zahl der (Bit-)länge n den Aufwand Q(n) hat. (c) Berechnen Sie den Aufwand, wenn man rekursiv auf diese Weise 2k Zahlen der (Bit-)längen ≤ n multiplizieren möchte. 6. Aufgabe: (4 Punkte) (Strassen-Algorithmus zur Matrixmultiplikation) Analog zur Karatsuba-Multiplikation zweier ganzer Zahlen, berechnen wir für beliebiges k ≥ 1 das Produkt zweier 2k × 2k -Matrizen nach folgendem Schema (die Aij , Bij und Mi bezeichnen 2k−1 × 2k−1 -Matrizen): A11 A12 B11 B12 M1 + M2 − M4 + M6 M4 + M5 = , A21 A22 B21 B22 M6 + M7 M2 − M3 + M5 − M7 wobei M1 = (A12 − A22 )(B21 + B22 ) M2 = (A11 + A22 )(B11 + B22 ) M3 = (A11 − A21 )(B11 + B12 ) M4 = (A11 + A12 )B22 M5 = A11 (B12 − B22 ) M6 = A22 (B21 − B11 ) M7 = (A21 + A22 )B11 . Auch die Produkte Mi werden dabei rekursiv nach diesem Schema berechnet, und 1×1-Matrizen werden gewöhnlich multipliziert. Analysieren Sie den Aufwand dieses Algorithmus und vergleichen Sie ihn mit der üblichen“ ” Matrixmultiplikation. 7. Aufgabe: (4 Punkte) (a) Bestimmen Sie eine primitive 8-te Einheitswurzel w im Körper F17 . (b) Berechnen Sie von Hand die diskrete Fouriertransformierte DF Tw (f ) von f (T ) = T 6 + 2T 4 − 3T 3 − 2T 2 + T + 1 ∈ F17 [T ] mit der im Beweis von Satz 2.3 verwendeten rekursiven Methode. Führen Sie dabei über die Anzahl der benötigten Ringadditionen und Ringmultiplikationen in F17 buch. 8. Aufgabe: (4 Punkte) (a) Implementieren Sie Algorithmus 2.13 (schnelle Polynomdivision mit Rest) in Magma: Schreiben Sie dazu eine Funktion SchnellePolyDiv(f,g), die als Argumente f,g zwei Polynome besitzt und den Quotienten q und den Rest r (ebenfalls Polynome) zurückgibt. Für die Multiplikation zweier Polynome a und b soll eine Funktion Mal(a,b) verwendet werden. (b) Lassen Sie mit Hilfe Ihrer Funktion Quotient und Rest der folgenden Polynome berechnen: (i) f = T 20 + T 3 − T 2 + 1, g = T 7 − T + 1 ∈ Q[T ] (ii) f = T 20 + T 3 + T 2 + 1, g = T 7 + T + 1 ∈ F2 [T ] Bemerkung: Verwenden Sie von Magma bereitgestellte Funktionen zur Umwandlung von Polynome in Arrays und umgekehrt, um Polynome modulo T -Potenzen zu berechnen. Die Funktion mod (u.ä.) darf nicht verwendet werden. Für Teil (b) soll man die Funktion Mal(a,b) als die von Magma vordefinierte Polynommultiplikation a*b definieren. Die Übungsblätter sowie weitere Informationen zur Vorlesung Computeralgebra finden Sie unter http://www.iwr.uni-heidelberg.de/~Andreas.Maurischat/compalg-ss2012