Kaplan Computeralgebra
Michael Kaplan
Computeralgebra Mit 30 Abbildungen
123
Dr. Michael Kaplan Zentrum Mathematik der TU München Boltzmannstr. 3 85747 Garching Deutschland e-mail:
[email protected]
Mathematics Subject Classification (2000): 68W30
Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detailierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.
ISBN 3-540-21379-1 Springer Berlin Heidelberg New York Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der Übersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und Tabellen, der Funksendung, der Mikroverfilmung oder der Vervielfältigung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine Vervielfältigung dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik Deutschland vom 9. September 1965 in der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich vergütungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des Urheberrechtsgesetzes. Springer ist ein Unternehmen der Springer Science+Business Media springer.de © Springer-Verlag Berlin Heidelberg 2005 Printed in Germany Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, daß solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Einbandgestaltung: design & production GmbH, Heidelberg Herstellung: LE-TEX Jelonek, Schmidt & Vöckler GbR, Leipzig Satz: Reproduktionsfertige Vorlage vom Autor Gedruckt auf säurefreiem Papier 44/3142YL-5 4 3 2 1 0
F¨ ur Claudia
Vorwort
Schon seit den 50-er Jahren versucht man, neben rein numerischen Rechnungen auch algebraische Umformungen mit Computern zu erledigen. Herausgekommen sind dabei kleine und große Computeralgebra-Systeme, in denen teilweise Hunderte von Mann-Jahren Entwicklung und eine ungeheure mathematische Expertise stecken. Deshalb bringt es nicht nur viel, wenn man mit solch einem Programm arbeitet, sondern es lohnt sich auch hinter die Kulissen zu schauen. Das vorliegende Buch stellt deshalb einige dieser Systeme vor und zeigt an Beispielen deren Leistungsf¨ ahigkeit. Grundlegende Techniken, wie etwa das Rechnen mit großen ganzen Zahlen oder Polynomen, werden untersucht. Dabei zeigt sich, dass man oft f¨ ur ein Problem mehrere Algorithmen braucht, weil diese ganz verschiedene St¨ arken haben. Die Algorithmen werden begr¨ undet, oft in einer Pseudoprogrammiersprache dargestellt, die sich nicht in technischen Details verliert, und analysiert. Dies wird begleitet von vielen durchgerechneten Beispielen. Oftmals stellt es sich heraus, dass vermeintliche Umwege u ¨ber andere mathematische Strukturen der schnellste Weg sind, z.B. wenn f¨ ur die Faktorisierung ganzzahliger Polynome in endlichen K¨ orpern gerechnet wird. Da dies algebraische Kenntnisse erfordert, werden die n¨ otigen Grundlagen m¨oglichst kurz und ohne Beweise eingef¨ uhrt, so dass Kenntnisse der linearen Algebra zum Verst¨ andnis ausreichen sollten. Sicher n¨ utzlich sind außerdem Erfahrungen mit einer Programmiersprache. Die ersten 4 Kapitel stellen die Grundlagen bereit. Die folgenden Kapitel sind weitestgehend unabh¨ angig voneinander und k¨ onnen auch einzeln oder in anderer Reihenfolge gelesen werden. Bei den vielen enthaltenen Beispielen w¨are es von Vorteil, wenn man diese selber (am besten mit einem Computeralgebra-System seiner Wahl) durchrechnet und variiert. Der vorliegende Text basiert auf Vorlesungen und Seminaren, die ich zwischen den Jahren 1997 und 2004 am Zentrum Mathematik der TU M¨ unchen f¨ ur Informatiker und Mathematiker (meist im Hauptstudium) angeboten habe. So sind auch die genannten Studenten die Hauptzielgruppe dieses Buches. Ansonsten sollen alle jene angesprochen werden, die sich f¨ ur algebraischen Algorithmen interessieren, etwa Ingenieure, die Anwendungen in der Codierungstheorie, Kryptographie oder benachbarten F¨ achern haben. M¨ unchen, im Sommer 2004
M. Kaplan
Inhalt
1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Was ist Computeralgebra ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Computeralgebra-Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1 2.2 2.3 2.4 2.5 2.6 2.7
Algorithmen und ihre Komplexit¨ at . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Kanonische Normalformen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 Umformungssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Ideale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Resultanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Partialbruchzerlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Einige Schranken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3 Rechnen mit homomorphen Bildern . . . . . . . . . . . . . . . . . . . 45 3.1 Grundlegende Ideen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.2 Das Chinesische Restproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.3 Der Satz von Hensel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
4 Grundlegende algebraische Strukturen . . . . . . . . . . . . . . . 57 4.1 Ganze Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.1.1 Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.1.2 Addition und Subtraktion . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.1.3 Multiplikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.1.4 Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.1.5 Gr¨ oßter gemeinsamer Teiler . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.2 Rationale Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.3 Algebraische Zahlen und Funktionen . . . . . . . . . . . . . . . . . . . . . . . . 89 4.3.1 Grundlagen und Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4.3.2 Nichtverschachtelte Radikale . . . . . . . . . . . . . . . . . . . . . . . . 94
X
Inhalt
4.3.3 Verschachtelte Radikale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.3.4 Allgemeine algebraische Ausdr¨ ucke . . . . . . . . . . . . . . . . . 100 4.4 Transzendente Ausdr¨ ucke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.4.1 Grundlagen und Probleme . . . . . . . . . . . . . . . . . . . . . . . . . .101 4.4.2 Der Satz von Risch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 4.5 Endliche K¨ orper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 4.6 Polynome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 4.6.1 Zul¨ assige Ordnungsrelationen . . . . . . . . . . . . . . . . . . . . . . . 113 4.6.2 Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 4.6.3 Addition und Subtraktion . . . . . . . . . . . . . . . . . . . . . . . . . . 123 4.6.4 Multiplikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 4.6.5 Division und Pseudodivision . . . . . . . . . . . . . . . . . . . . . . . .132 4.6.6 Gr¨ oßter gemeinsamer Teiler . . . . . . . . . . . . . . . . . . . . . . . . 135 4.6.7 Der erweiterte euklidische Algorithmus . . . . . . . . . . . . . 144 4.6.8 Subresultanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 4.6.9 Subresultanten-Ketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 4.6.10 Subresultanten und PRS Algorithmen . . . . . . . . . . . . . . 154 4.6.11 Verbesserte Subresultanten Algorithmen . . . . . . . . . . . . 160 4.6.12 Der erweiterte Subresultanten PRS-Algorithmus . . . . 164
5 Faktorisierung ganzer Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . 167 5.1 Vorbereitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167 5.2 Pollard-ρ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 5.2.1 Der Faktorisierungsalgorithmus . . . . . . . . . . . . . . . . . . . . . 169 5.2.2 Aufwandsabsch¨ atzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 5.3 Pollard-(p − 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 5.3.1 Der Faktorisierungsalgorithmus . . . . . . . . . . . . . . . . . . . . . 176 5.3.2 Aufwandsabsch¨ atzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 5.4 Elliptic Curve Method (ECM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179 5.4.1 Pollard-(p − 1) und ECM . . . . . . . . . . . . . . . . . . . . . . . . . . 179 5.4.2 Die Geometrie elliptischer Kurven . . . . . . . . . . . . . . . . . . 180 5.4.3 Multiplikation von Kurvenpunkten mit Skalaren . . . . 185 5.4.4 Der Faktorisierungsalgorithmus . . . . . . . . . . . . . . . . . . . . . 189 5.4.5 Aufwandsabsch¨ atzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 5.5 Der Algorithmus von Morrison und Brillhart . . . . . . . . . . . . . . . 197 5.5.1 Die Grundidee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 5.5.2 Approximation reeller Zahlen durch Kettenbr¨ uche . . 198 5.5.3 Die Kettenbruchentwicklung einer Wurzel . . . . . . . . . . 201 5.5.4 Der Faktorisierungsalgorithmus . . . . . . . . . . . . . . . . . . . . . 204 5.5.5 Aufwandsabsch¨ atzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Inhalt
XI
5.6 Verwendung der Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 5.7 Das quadratische Sieb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 5.7.1 Die Grundidee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 5.7.2 Die Faktorenbasis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 5.7.3 Das Sieben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 5.7.4 Mehrere Polynome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
6 Polynom–Faktorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 6.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 6.2 Quadratfreie Faktorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 6.3 Der Berlekamp-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 6.3.1 Grundvariante f¨ ur kleine K¨orper . . . . . . . . . . . . . . . . . . . .239 6.3.2 Variante f¨ ur große K¨ orper . . . . . . . . . . . . . . . . . . . . . . . . . . 247 6.3.3 Verbesserungen von Cantor und Zassenhaus . . . . . . . . 252 6.4 Berlekamp-Hensel Faktorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 6.4.1 Grundidee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 6.3.1 Wie weit muss man liften? . . . . . . . . . . . . . . . . . . . . . . . . . 270 6.3.2 Swinnerton-Dyer Polynome . . . . . . . . . . . . . . . . . . . . . . . . .273
7 Summation in endlich vielen Termen . . . . . . . . . . . . . . . . . 277 7.1 7.2 7.3 7.4 7.5 7.6 7.7
Grundbegriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Die unbestimmte Summation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Die Polygamma-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Shiftfreie Faktorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 Partielle Summation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Der Algorithmus von Moenck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Der Algorithmus von Gosper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
8 Gr¨ obner-Basen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 8.1 8.2 8.3 8.4
Variet¨ aten und Ideale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 Reduktionen modulo Polynomidealen . . . . . . . . . . . . . . . . . . . . . . . 312 Der Buchberger-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 Eliminationsideale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .325
A Anhang CA-Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 1. Universelle Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 2. Spezialisierte Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335
B Anhang Beispielsitzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 1. Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .341
XII
Inhalt
2. Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .364 3. Gap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 1. B¨ ucher und Zeitschriften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 2. Konferenzen und zugeh¨ origen Proceedingsb¨ ande . . . . . . . . . . . . 375
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
1 Einleitung
1.1 Was ist Computeralgebra ? In der a¨lteren Geschichte der Mathematik und insbesondere nach Einf¨ uhrung der Differentialrechnung durch Newton und Leibniz wurde eine große Anzahl mathematischer Probleme durch aufw¨ andige, und zu einem großen Teil algebraische, Berechnungen gel¨ ost. So festigte etwa Gauß im Alter von 24 Jahren (1801) seinen Ruf als herausragender Mathematiker durch die Berechnung der Bahngleichungen des gerade entdeckten (aber ziemlich unbedeutenden) Planetoiden Ceres. Das wohl bekannteste Beispiel f¨ ur solch komplizierte algebraische Umformungen lieferte der franz¨ osische Astronom Charles E. Delaunay: Im Jahre 1847 begann er die Berechnung der Bahn des Mondes aus dem Newtonschen Gravitationsgesetz. So einfach die L¨ osung des Zweik¨ orper-Problems Erde-Mond ist (1. Semester Physik), so kompliziert wird es, wenn man den Einfluss der Sonne noch mit einbezieht. Delaunay brauchte f¨ ur seine Berechnungen 10 Jahre und weitere 10 Jahre, um alles nochmals nachzupr¨ ufen ! Seine Ergebnisse wurden 1867 in zwei B¨anden ver¨offentlicht. Ein Band enth¨ alt dabei auf 128 Seiten nur die Formel f¨ ur die Mondbahn. Delaunays Arbeit wurde erst in den 60er Jahren dieses Jahrhunderts von Wissenschaftlern der Boeing Scientific Research Laboratories in Seattle wieder ausgegraben, die sich f¨ ur Satellitenbahnen interessierten [DHR]. Mit Hilfe eines Computeralgebra-Systems gelang es Ihnen, die Ergebnisse von Delaunay in ca. 20 Stunden nachzurechnen. Sie fanden dabei erstaunlicherweise nur 3 kleinere Fehler, wobei 2 davon Folgefehler des ersten waren. Inzwischen konnte man mit Hilfe gr¨ oßerer Rechner und verbesserter Computeralgebra-Programme noch weitere Information in die Rechnung eingehen lassen und die Bahngleichungen verfeinern (etwa den Einfluss at¨ mosph¨arischer Reibung auf erdnahe Satelliten oder Anderungen des Gravitationsfeldes der Erde durch die nicht exakt kugelf¨ ormige Gestalt usw.).
2
1 Einleitung
Delaunays Beispiel zeigt einige wichtige Aspekte: — Ein großes Problem beim exakten Umgang mit algebraischen Ausdr¨ ucken ist die Datenexplosion. Aus dem sehr einfachen Gravitationsgesetz wird durch Einsetzen in das Dreik¨ orperproblem Erde-Sonne-Mond eine 128 Seiten lange Formel. Dieses ist eines der Hauptprobleme der Computeralgebra. Oft tritt es noch heimt¨ uckischer auf, wenn n¨ amlich Ein- und Ausgabe relativ kleine Ausdr¨ ucke sind, aber beim Rechnen immens große Zwischenergebnisse vorkommen. — Die Verk¨ urzung der Rechenzeit von 20 Jahren auf 20 Stunden (heutzutage w¨aren es auf einem entsprechend schnellen Rechner wahrscheinlich einige Minuten), verbunden mit der garantierten Richtigkeit der Ergebnisse (abgesehen von Programmierfehlern), er¨ offnet auch Wissenschaftlern ohne die Engelsgeduld eines Ch. Delaunay ganz neue M¨ oglichkeiten. Durch Computeralgebra-Programme sind in einigen Gebieten die Grenzen des Machbaren deutlich verschoben worden. — Aus der fertigen Formel lassen sich im Gegensatz zu langen Zahlenkolonnen wertvolle allgemeine Erkenntnisse ziehen. Eine sp¨ atere numerische Auswertung – etwa die Berechnung der Mondposition zu einem gewissen Zeitpunkt – stellt meist kein Problem mehr dar. In vielen Computeralgebra-Programmen bestehen zus¨ atzlich zur eigenen (beliebig genauen) Arithmetik auch Schnittstellen zu Programmiersprachen wie C oder Fortran. W¨ahrend das Beispiel mit der Mondbahn eigentlich nur“ Computer-unter” st¨ utzte h¨ohere Mathematik umfasst und die ersten Computeralgebra-System auch auf dieses Gebiet spezialisiert waren, versteht man heute unter Computeralgebra den Grenzbereich zwischen Algebra und Informatik, der sich mit Entwurf, Analyse, Implementierung und Anwendung algebraischer Algorithmen befasst. Das umfasst sehr viel mehr, als man im ersten Moment glauben mag; ¨ die Uberg¨ ange zur Analysis, numerischen Mathematik, Zahlentheorie oder Algebra sind fließend: So ist man vielleicht nach der obigen Definiti” on“ erstaunt, dass man in vielen Computeralgebra-Systemen IntegrationsRoutinen vorfindet. Doch zeigt die Betrachtung dieser Algorithmen, dass sie erst durch eine Algebraisierung des Problems so effizient wurden, dass man sie erfolgreich in diesen Paketen einsetzen konnte. Heute gibt es einige Computeralgebra-Programme, die zus¨ atzlich zur u ¨blichen h¨oheren Mathematik noch einige Routinen etwa zur Gruppentheorie oder endlichen K¨ orpern anbieten. Weiterhin gibt es aber auch immer mehr spezialisierte Programme, etwa zur Gruppentheorie, zur Zahlentheorie, zu Lie-Gruppen oder auch zur Relativit¨ atstheorie. Auf einige dieser Programme wird noch in einem gesonderten Abschnitt eingegangen.
1.2 Literatur
3
1.2 Literatur Erst in den 80er Jahren wurden die ersten B¨ ucher speziell zur Computeralgebra herausgegeben. Die Forschung auf diesem Gebiet schl¨ agt sich seit den 60er Jahren in einigen speziellen Zeitschriften nieder, von denen ich hier nur zwei nennen m¨ochte: — SIGSAM Bulletin (Special Interest Group on Symbolic and Algebraic Manipulation der Association for Computing Machinery, viertelj¨ ahrlich bei ACM Press). — Journal of Symbolic Computation (gegr¨ undet von Bruno Buchberger von der Johannes Kepler Universit¨ at in Linz; monatlich bei Academic Press; ISSN 0747-7171). Viele andere Zeitschriften, wie etwa das SIAM Journal on Computing oder Mathematics of Computation sind ebenfalls gute Referenzen f¨ ur die Computeralgebra. Siehe hierzu auch die Bibliographie. Entsprechend zur SIGSAM in Amerika hat sich in Deutschland die Fachgruppe Computeralgebra der GI, DMV und GAMM gebildet. Der von dieser Fachgruppe herausgegebenen Computeralgebra-Rundbrief bringt Hinweise auf Konferenzen, Vorlesungen, Software etc. Der Rundbrief und viele andere Informationen zur Computeralgebra sind elektronisch u ¨ber den WWWServer der Fachgruppe (http://www.fachgruppe-computeralgebra.de/) abrufbar. Auch in anderen L¨ andern gibt es ¨ ahnliche Interessengruppen, so etwa die NIGSAM (Nordic Interest Group for Symbolic and Algebraic Manipulation), die die NIGSAM-News herausgibt oder die SAM-AFCET (Le Group Calcul Formel d’Association Fran¸caise pour la Cybern´etique Economique et Technique), die das CALSYF-Bulletin herausgibt. Weiterhin finden laufend Konferenzen zum Thema statt, die jeweils Proceedings herausgegeben haben. Einige dieser Konferenzen und genauere Literaturhinweise auf die zugeh¨ origen Proceedingsb¨ ande sind im Anschluss an die Bibliographie aufgelistet. In der Bibliographie selbst erscheinen sie jeweils nur unter Abk¨ urzungen wie etwa SYMSAC-76 oder ISSAC-90. Außer den speziellen B¨ uchern zur Computeralgebra ist nat¨ urlich jedes gute Buch zu den algebraischen, zahlentheoretischen etc. Grundlagen zu empfehlen, solange es die algorithmischen Aspekte nicht ignoriert. Dazu geh¨ort etwa die Moderne Algebra“ von B.L. van der Waerden [Wa1] und ” [Wa2]. Dieses Werk enth¨ alt viele konstruktive algebraische Methoden. Einige davon beruhen auf Leopold Kroneckers Konzept der Konstruktion in ” endlich vielen Schritten“, s. dazu auch die von Kurt Hensel herausgegebene Sammlung der Werke von Kronecker (z.B. [Kro]). F¨ ur die Langzahl- und Polynomarithmetik bis hin zur Faktorisierung ist der zweite Band der Reihe The Art of Computer Programming“ von D. E. ” Knuth mit dem Titel Seminumerical Algorithms“ [Kn2] eine Standardrefe” renz.
4
1 Einleitung
Speziell zu Gr¨obner-Basen und ihren Anwendungen sind erschienen: — Cox, Little, O’Shea: Ideals, Varieties and Algorithms“, [CLO]. ” — Th. Becker, V. Weispfenning, (H. Kredel): Gr¨ obner Bases. A Computa” tional Approach to Commutative Algebra“, [BWe]. Allgemeine Einf¨ uhrungen zur Computeralgebra sind etwa — B. Buchberger, G. E. Collins, R. Loos (Herausgeber): Computer Alge” bra, Symbolic and Algebraic Computation“, [BCL] (sehr gute Artikelsammlung mit ausf¨ uhrlichen Bibliographien). — J. H. Davenport, Y. Siret, E. Tournier: Computer Algebra“, [DST] ” ¨ (sch¨oner Uberblick mit einer Kurzeinf¨ uhrung in die Sprache Reduce). — M. Mignotte: Mathematics for Computer Algebra“, [Mi3] (Schwerpunkt ” bei Langzahl- und Polynomarithmetik). — K. O. Geddes, S. R. Czapor, G. Labahn: Algorithms for Computer Al” gebra“, [GCL] (sehr umfangreiche und praxisbezogene Einf¨ uhrung von einigen der Maple-Macher“). ” — J. von zur Gathen; J. Gerhard: Modern Computer Algebra“, [vGG] (800 ” Seiten voll mit Algorithmen, Laufzeitanalysen und Anwendungsbeispielen aus Chemie, Kryptographie usw.). — J. Grabmeier, E. Kaltofen, V. Weispfennig, V. (Herausgeber): Compu” ter Algebra Handbook“, [GKW] (Sammelband, zu dem ca. 200 Wissenschaftler beigetragen haben. Es werden 67 Computeralgebra-Systeme beschrieben, viele Anwendungen der Computeralgebra angegeben und auf die Theorie eingegangen).
1.3 Computeralgebra-Systeme H. G. Kahrimanian [Kah] und J. Nolan [Nol] schrieben unabh¨ angig voneinander im Jahr 1953 ihre Diplomarbeiten u ber symbolisches Differenzieren ¨ und Programme dazu in Philadelphia bzw. am M.I.T. Diese beiden Programme gelten heute als die ersten Computeralgebra-Programme. Man bedenke, dass es damals noch keine der heute g¨ angige Computer- Hochspra” chen“ gab (Fortran kam z.B. erst 1958 auf den Markt). Erst, als 1960/61 die Sprache Lisp auf den Markt kam, die wegen ihrer Listenverarbeitungsm¨ oglichkeiten f¨ ur die Computeralgebra ungleich besser geeignet war, als eher numerisch orientierte Sprachen, wie etwa Algol oder Fortran, wurden auch gr¨ oßere Computeralgebra-Pakete entwickelt. Eines der ersten, das einem gr¨ oßeren Publikum zug¨ anglich war, war Reduce. Obwohl das Gebiet also relativ jung ist, gibt es heute eine Flut von CAProgrammen.
1.3 Computeralgebra-Systeme
5
Wie bereits erw¨ ahnt, gibt es sowohl sehr allgemein gehaltene Programme, die mehr oder weniger gut die Vorlesungen bis zum Vordiplom und teilweise dar¨ uber hinaus abdecken, als auch sehr spezialisierte Programme, die daf¨ ur in ihrem Spezialgebiet oft sehr viel besser sind, als die anderen. Im Anhang A sind einige der verbreitetsten Systeme zusammengestellt. Die Liste erhebt allerdings weder Anspruch auf Vollst¨ andigkeit, noch sollen die Programme im einzelnen verglichen werden. Dies w¨ are schon wegen der verschiedenen Plattformen, auf denen die Programme laufen, und wegen der verschiedenen Absichten (und Preise) kaum m¨ oglich. Nur f¨ ur die allgemein gehaltenen Systeme, die auch auf ein und dem gleichen Rechner verf¨ ugbar sind, gibt es Vergleichstests: — Von Barry Simon (California Institute of Technology) gibt es mehrere vergleichende Artikel zu Derive, Macsyma, Maple und Mathematica, etwa [Si3] und [Si4]. — An der Universit¨ at Inria (Rocquencourt, Frankreich) wurden mehrmals Macsyma, Maple und Mathematica verglichen. Die Ergebnisse sind teilweise im WWW zu finden (http://www.loria.fr/˜zimmerma/maple/). — Die Fachgruppe Computeralgebra der GI, DMV und GAMM sammelt unter http://krum.rz.uni-mannheim.de/cafgbench.html Computer Algebra Benchmarks. Außer den Handb¨ uchern der einzelnen Programme, die teilweise in Bibliotheken oder Buchhandlungen zu haben sind, seien f¨ ur weiter Interessierte die folgenden Schriften empfohlen: — Wester, M. J. (ed.): Computer Algebra Systems: A Practical Guide [Wes] — Harper, D.; Wooff, C.; Hodgkinson, D.: A Guide to computer algebra systems [HWH] — Fuchssteiner, B; Wiwianka, W.; Hering, K. (Redaktion): mathPAD, Vol. 1, Heft 3 [FWH] — Gonnet, G. H.; Gruntz, D.W.: Algebraic Manipulation: Systems [GGr] — Computeralgebra in Deutschland (Herausgegeben von der Fachgruppe Computeralgebra der GI, DMV und GAMM), 1993. Eine aktualisierte Version davon findet sich unter http://www.fachgruppe-computeralgebra.de/ca-brd/ca-brd.html. Eine recht komplette Liste von zur Zeit verf¨ ugbarer Computeralgebra-Software mit viel Zusatzinformationen wird von Paulo Ney de Souza gef¨ uhrt und auf seiner Homepage http://www.math.berkeley.edu/˜desouza/ bereitgestellt.
2 Grundlagen
2.1 Algorithmen und ihre Komplexit¨ at Ein Algorithmus A ist eine Methode, eine Klasse K von Problemen zu l¨osen, seine Beschreibung ist endlich und pr¨azise, und alle beschriebenen Arbeitsschritte sind effektiv. Der Algorithmus soll terminierend sein, d.h. seine Ausf¨ uhrung immer nach einer endlichen Anzahl von Schritten enden. Bei deterministischen Algorithmen ist die Reihenfolge der einzelnen Ausf¨ uhrungsschritte f¨ ur jede Eingabe eindeutig festgelegt, d.h. bei wiederholtem Aufruf des Algorithmus ist die Berechnung schrittweise reproduzierbar. Bei probabilistischen Algorithmen wird die Entscheidung u ¨ber den n¨achsten Schritt in einem gewissen Rahmen auch dem Zufall u ¨berlassen. Unter der Komplexit¨at eines Algorithmus versteht man die Kosten“, ” die bei seiner Ausf¨ uhrung verursacht werden. Da der Zusammenhang zwischen den Eingabedaten eines Algorithmus und den zugeh¨ origen L¨ osungskosten meist sehr komplex ist, wird die Komplexit¨ at von Algorithmen nicht in Abh¨angigkeit der Eingabedaten x = x1 , . . . , xr selbst beurteilt, sondern in Abh¨angigkeit wichtiger Charakteristika n1 , . . . , nr der Eingangsdaten (z.B. Gr¨oße von Zahlen in Bit, Grad von Polynomen, usw.. . . ). Diese werden meist noch geb¨ undelt zu einer einzigen Zahl n , die die Gr¨oße des untersuchten Problems beschreibt. Bei ganzzahligen Polynomen in einer Variablen kann dies z.B. das Produkt aus einer Maßzahl f¨ ur die Gr¨oße der Koeffizienten und aus dem Grad des Polynoms sein. Die L¨ osungskosten werden in verschiedenen Einheiten gemessen, etwa in der Anzahl der Rechenschritte oder in Speicherplatz. Bei der Beurteilung von Algorithmen der Computeralgebra interessiert man sich meist f¨ ur Ihre zeitliche Komplexit¨at, insbesondere f¨ ur die asymptotische Komplexit¨at, also eine Grenzfunktion f¨ ur großes n . Dabei untersucht man meist die maximale zeitliche Komplexit¨at in Abh¨ angigkeit von n . Die so genannte erwartete zeitliche Komplexit¨at dagegen ist das Mittel u ¨ber alle Probleme aus K von dieser Gr¨ oße. Die erwartete zeitliche Komplexit¨ at w¨ are zwar die interessantere Gr¨ oße, in aller Regel muss man sich aber mit der maximalen Komplexit¨ at begn¨ ugen. Auch eine untere Schranke f¨ ur die zeitliche Komplexit¨ at ist gelegentlich von Interesse.
8
2 Grundlagen
Es sei nun A ein beliebiger Algorithmus und S die Menge aller g¨ ultigen Eingabeparameter, die im Allgemeinen aus einer Menge von r -Tupeln besteht. Mit diesem Algorithmus wird eine Funktion Op[y ← A(x)] : r0 → assoziiert. Die Zahl Op[y ← A(x)] (oft auch k¨ urzer Op[A] geschrieben) gibt die Anzahl der Grundoperationen an, die n¨ otig sind, um mit Hilfe des Algorithmus A den Ausgabewert y zum Eingabewert x ∈ S zu berechnen. Die Gr¨ oße des Eingabewerts x sei dabei durch das r -Tupel (n1 , . . . , nr ) ∈ r0 gegeben. Zu diesen so genannten Grundoperationen z¨ ahlen beispielsweise die Addition oder Multiplikation in einfacher Genauigkeit, Spr¨ unge oder die Zuweisung von Konstanten. Die Bestimmung der genauen Anzahl solcher Operationen stellt sich meist als schwierige Aufgabe heraus und das Ergebnis darf auch nicht u ¨berbewertet werden, da der Begriff Grundoperation“ selbst ” wenig exakt definiert ist. Oft sind Algorithmen so komplex, dass man sich vorerst darauf beschr¨anken muss, die Anzahl der Operationen in komplizierteren Strukturen zu bestimmen. Bei Algorithmen in endlichen K¨ orpern z¨ ahlt man etwa h¨ aufig nur die Anzahl der Grundoperationen in diesen K¨ orpern. Dies ist sinnvoll, weil je nach Anwendung die Darstellung der endlichen K¨orper im Rechner sehr verschieden ist und deshalb die Grundoperationen auch sehr unterschiedlichen Aufwand erfordern. Im Fall von endlichen K¨orpern wird darauf noch in einem gesonderten Kapitel eingegangen. Um deutlich zu machen, welche Operationen wirklich gez¨ ahlt werden, wird in diesem Fall die Funktion Op mit einem entsprechenden Index versehen, also etwa OpGF(q) [y ← A(x)] . Geht man von einer festen Implementierung des endlichen K¨ orpers GF(q) aus, so kann man f¨ ur die aufw¨ andigste Grundoperation in GF(q) die Anzahl der daf¨ ur n¨ otigen echten“ Grund” operationen bestimmen und mit OpGF(q) [y ← A(x)] multiplizieren, um so eine grobe Absch¨ atzung f¨ ur Op[y ← A(x)] zu erhalten. Im Abschnitt u ¨ber die Arithmetik in grundlegenden algebraischen Strukturen wird z.B. die Addition beliebig großer positiver ganzer Zahlen untersucht und ein Algorithmus mit dem Namen SumPosInt angegeben, der zwei solche ganze Zahlen I und J addiert. Die genaue Untersuchung dieses Algorithmus zeigt, dass dort eine Schleife (max(m − 1, n − 1) + 1) -mal durchlaufen wird, in der jeweils eine feste Zahl von Kurzzahloperationen auszuf¨ uhren ist. Dabei seien m und n die so genannten β -L¨ angen von I bzw. J , also Maßzahlen f¨ ur die Gr¨ oße der Eingangsdaten. Da diese Kurzzahloperationen je nach Rechner und Programmiersprache sehr verschiedene Laufzeiten ben¨ otigen, interessiert man sich nur f¨ ur die re¨ lative Anderung der Laufzeit, wenn man etwa die Gr¨ oße der Eingangsdaten verdoppelt und schreibt
N
N
Op[I + J ← SumPosInt(I, J)](m, n) max(m, n)
N
2.1 Algorithmen und ihre Komplexit¨ at
9
Op ist kodominant mit max(m, n) ). In der Computeralgebra wird meist die ungenauere Groß-O“-Notation verwendet, hier etwa ” Op[I + J ← SumPosInt(I, J)](m, n) = O(max(m, n)) (in Worten: Op wird von max(m, n) dominiert oder Op ist von der Komplexit¨at oder Ordnung max(m, n) etc.). Genauer:
N → R eine Funktion . Dann ist O(f (n)) := {g : N → R ; ∃c ∈ R+ , N ∈ N : |g(n)| ≤ c · |f (n)|∀n ≥ N } Ω(f (n)) := {g : N → R ; ∃d ∈ R+ , N ∈ N : |g(n)| ≥ d · |f (n)|∀n ≥ N }
2.1.1 Definition:
Es sei f :
Θ(f (n)) := O(f (n)) ∩ Ω(f (n)) O (f (n)) := {g : N → R ; ∀ > 0 ∃N () ∈ N : |g(n)| ≤ · |f (n)|∀n ≥ N ()} Statt g(n) ∈ O(f (n)) ist eher die Schreibweise g(n) = O(f (n)) gebr¨auchlich. Dies ist zwar weit verbreitet, aber irref¨ uhrend, denn im Gegensatz zum u ¨blichen =“ ist es hier nicht sinnvoll die Seiten zu vertauschen! ” Die Konvention bei dieser Schreibweise ist, dass die rechte Seite nie mehr Information liefert als die linke. Beachtet man dies, so kann sogar ganz gut mit O rechnen ( c =const.): f (n) = O(f (n)) , c · O(f (n)) = O(f (n)), O(f (n)) ± O(f (n)) = O(f (n)) , O(O(f (n))) = O(f (n)), O(f (n))O(g(n)) = O(f (n)g(n)) , O(f (n)g(n)) = f (n)O(g(n)). Die O-Schreibweise ist nur transitiv, wenn man die Gleichungen von links nach rechts liest d.h. aus g(n) = O(f (n)) und h(n) = O(f (n)) folgt nicht g(n) = h(n) (Man nehme etwa f (n) = n3 , g(n) = n und h(n) = n2 ). Dagegen folgt aus den letzten beiden Gleichungen obiger Tabelle sehr wohl O(f (n))O(g(n)) = f (n)O(g(n)) . Entsprechend ist auch bei den anderen Symbolen statt des ∈“ das =“ ” ” gebr¨auchlich (und die gleiche Vorsicht angebracht), also z.B. n! = Ω(2n ) . Oft findet sich in den uhrten Mengen eine Schreibweise mit eben eingef¨ = 0 f¨ u r g(n) = O (f (n)) . Dies ist vielleicht dem Limes, etwa lim fg(n) (n) n→∞ leichter zu merken, allerdings nur richtig, wenn f (n) nur endlich viele Nullstellen hat und wir diese aus der Grenzwertbetrachtung ausnehmen! Bei O(f (n)) muss dieser Grenzwert nicht existieren, sondern der Quoti g(n) ent f (n) ist (unter den eben genannten Einschr¨ ankungen) f¨ ur ausreichend große n durch eine Konstante nach oben beschr¨ ankt (bei Ω nach unten und bei Θ nach beiden Seiten).
Die O-Notation geht zur¨ uck auf Paul Bachmann [Bch] Eine allgemeinere Definition von O mit x ∈
Ausdr¨ ucke der Gestalt
1 1−x
R
und mit x → x0 f¨ ur x0 ∈
R
ist z.B. f¨ ur
= 1+x+O(x2 ) gebr¨ auchlich, wird hier aber nicht weiter betrachtet.
10
2 Grundlagen
Wegen des etwas ungl¨ ucklichen =“ in g(n) = O(f (n)) findet sich auch ” die Schreibweise g(n) f (n) . Die so definierte Relation ist eine reflexive ∗ Quasiordnung . Jede reflexive Quasiordnung Q induziert verm¨ oge aRb : ¨ ⇐⇒ aQb ∧ bQa eine Aquivalenzrelation R: f (n) g(n) : ⇐⇒ f (n) = Θ(g(n)) ⇐⇒ (f (n) g(n) ∧ g(n) f (n)). Ist f (n) g(n) , so nennt man f und g kodominant. Manchmal findet man hierf¨ ur auch die Schreibweise f (n)Θg(n) . Entsprechend zu schreibt man f¨ ur g(n) = O (f (n)) auch g(n) ≺ f (n) . Dies ist eine nicht reflexive Quasiordnung.◦ Kann man noch genauere Aussagen u ¨ber den Quotienten machen, so verwendet man g(n) =1 f (n) ∼ g(n) : ⇐⇒ lim n→∞ f (n) (mit den oben genannten Einschr¨ ankungen dieser Schreibweise). Die zwei Funktionen f und g nennt man in diesem Fall asymptotisch gleich. Auch ¨ ∼ ist eine Aquivalenzrelation und wie mit den bisher eingef¨ uhrten Relationen und ≺ vertr¨ aglich, d.h. ist f (n) ∼ f (n) oder f (n) f (n) und ≺ f (n) ≺ g(n) so ist auch f (n) g(n) .
Oft findet man auch Aussagen der Gestalt g(n) = h(n) + ur O(f (n)) . F¨ h(n)+O(f (n)) h(n) g(n) ausreichend großes n heißt das f (n) = ≤ f (n) + c ⇐⇒ f (n) |g(n)| ≤ |h(n)| + c|f (n)| . Der Fehler den man macht, wenn man g(n) mit Hilfe von h(n) berechnet, ist also h¨ ochstens ein konstantes Vielfaches von |f (n)| . Mit dieser Schreibweise hat man also eine genauere Aussage als mit einem puren g(n) = O(f (n)) , u ussige Details werden in den O-Term ¨berfl¨ geschoben. √ 1 2.1.2 Beispiel: Wegen n n = n n = exp( nnn ) = 1 + nnn + O ( nnn )2 gilt 2 √ (n n)2 n n n n n , = n n + O n( n − 1) = n +O n n n denn nO
n n 2 n
= O(n)O
n n 2 n
=O
(n n)2 n
.
2.1.3 Beispiel: Mit den aufgef¨ uhrten Rechenregeln kann man jetzt z.B. das Produkt zweier Ausdr¨ ucke mit Teilen in O-Notation berechnen: √ n n + γ + O( n1 ) · n + O( n) = √ √ √ n n n + nγ + nO( n1 ) + γO( n) + n nO( n) + O( n1 )O( n) = √ √ √ n n n + nγ + O(n)O( n1 ) + O( n) + O(n n)O( n) + O( n1 · n) = ∗ ◦
d.h. eine reflexive und transitive bin¨ are Relation Vorsicht: und = zusammen ist nicht gleichbedeutend mit ≺ wie bei ≤ !
2.1 Algorithmen und ihre Komplexit¨ at
11
√ √ √ n n n + nγ + O(1) + O( n) + O(n n n) + O( nn ) = √ n n n + nγ + O( n n n) √ √ √ √ √ n n n n) denn es gilt 1 = O( n n n), √ n = O( n n√n), O( n ) = O( √ und √ deshalb O(1) = O(O( n n n)) = O( n n n) und O( n) = √ O(O( n n n)) =√O( n n n) , √ weshalb sich die O-Terme der vorletzten Zeile zu 4O( n n n) = O( n n n) zusammenfassen lassen. V¨ollig analog bedeutet g(n) = h(n) + O (f (n)) , dass man g(n) durch h(n) approximieren kann und dass der Fehler den man dabei macht relativ zu |f (n)| f¨ ur steigendes n beliebig klein wird. Insbesondere ist g(n) = f (n) + O (f (n)) gleichbedeutend mit dem eben eingef¨ uhrten g(n) ∼ f (n) .
2.1.4 Beispiel: Mit der Relation lassen sich die Rechenregeln f¨ ur die O-Notation etwas verdeutlichen. So lautet etwa O(f (n)) + O(f (n)) = O(f (n)) umgeschrieben g(n), h(n) f (n) ⇒ g(n) + h(n) f (n) . Fehlinterpretationen, wie etwa die von Knuth [Kn1] erw¨ ahnte O(f (n)) − O(f (n)) = 0 , werden so vermieden (richtig: O(f (n)) − O(f (n)) = O(f (n)) ). 2.1.5 Beispiel: Ist p(x) ∈ R[x] ein Polynom koeffizienten LK(p) , so gilt
0 p(n) lim = LK(p) n→∞ nk ∞
vom Grad d mit dem Leitf¨ ur k > d f¨ ur k = d f¨ ur k < d
und damit p(n) nd bzw. p(n) ∼ LK(p) · nd . Damit gilt f¨ ur zwei Polynome p(x), q(x) ∈ R[x] : p(n) ≺ q(n) ⇐⇒ deg p(n) < deg q(n) p(n) q(n) ⇐⇒ deg p(n) ≤ deg q(n) p(n) q(n) ⇐⇒ deg p(n) = deg q(n) p(n) ∼ q(n) ⇐⇒ deg p(n) = deg q(n)˜und˜| LK(p)| = | LK(q)|. Die Funktion Op des Algorithmus A h¨angt nicht nur von der Eingabe x ab, sondern auch von den auf einem Rechner bzw. Prozessor zur Verf¨ ugung stehenden Grundoperationen. Sind nun B1 und B2 zwei verschiedene Mengen von Operationen, so geht man davon aus, dass jede Operation aus B1 durch eine endliche Anzahl von Operationen aus B2 nachgebildet werden kann und umgekehrt. So kann etwa eine Division durch eine Reihe von Subtraktionen realisiert werden. Also ist Op |B1 Op |B2 und ¨ man beschr¨ankt sich auf die dazugeh¨ orige Aquivalenzklasse. Je nach Ordnung seiner Zeitfunktion heißt ein Algorithmus logarithmisch, polynomial oder exponentiell. Es gilt log n ≺ n ≺ n log n ≺ n2 ≺ 2n .
12
2 Grundlagen
Das folgende Beispiel zeigt, dass die zeitliche Komplexit¨ at eines Algorithmus zwar sehr wichtig ist, aber nat¨ urlich zur vollst¨ andigen Beurteilung nicht ausreicht. 2.1.6 Beispiel: Gegeben seien 5 Algorithmen A1 , A2 , . . . , A5 verschiedener Komplexit¨ at f¨ ur das gleiche Problem. Unter der Annahme, dass 1 eine Grundoperation des Rechners 1000 s ben¨ otigt, ist jeweils das (bei einem angenommenen Vorfaktor 1) gr¨ oßte zu bearbeitende n in ei¨ ner gewissen Zeit angegeben. Außerdem ist der Effekt beim Ubergang zu einem 10-mal schnelleren Rechner angegeben. Die letzten 2 Spalten zeigen schließlich, dass ein vermeintlich schnellerer Algorithmus wegen großer Vorfaktoren durchaus langsamer sein kann. Alg.
Op
A1 A2
n n log(n)
A3 A4 A5
n2 n3 2n
Max. n in 1s 1min Rechenzeit 1000 60000 140 4893 31 10 9
244 39 15
¨ And. von n bei 10 mal schnell. Rech. ·10 fast ·10 ( n groß) ·3.16 ·2.15 +3.3
Op =
optimal f¨ ur
1000n 100n log(n)
n > 1024 59 ≤ n ≤ 1024
10n2 n3 2n
10 ≤ n ≤ 59 — 2≤n≤9
Ein Beispiel f¨ ur solch einen Effekt ist etwa die Multiplikation zweier n -ziffriger Zahlen. W¨ ahrend der Standardalgorithmus (=Schulmethode) von quadratischer Ordnung (genauer n2 ) ist, gibt es einen verbesserten Algorithmus FFT mit Op[c = a · b ← FFT(a, b)](n, n) n log n log log n . Da allerdings Op[FFT](n, n) ≈ 20n log n log log n gilt, ist dieser Algorithmus nur in spezialisierten CA-Paketen implementiert, da er erst ab einem sehr großen n (dem so genannten Schwellenwert, englisch trade-off point“ oder break even point“) wirklich besser als der ” ” Standardalgorithmus ist.
2.2 Kanonische Normalformen Arbeitet man mit algebraischen Objekten am Rechner, so m¨ ochte man diese meist in ¨aquivalente“ aber einfachere“ Gestalt umformen. Dabei kann ” ” ¨ man f¨ ur ein und dieselbe Klasse von Objekten sowohl verschiedene Aquivalenzklassen, als auch verschiedene Vorstellungen von einfach“ realisieren: ” ¨ 2.2.1 Beispiel: W¨ ahlt man als Aquivalenzrelation die Gleichheit im K¨ orper Q(x) der rationalen Funktionen in x u ¨ber den rationalen Zah2 −1 len, so sind xx+1 und x − 1 zwei a ¨quivalente Objekte, von denen man das zweite wahrscheinlich als das einfachere betrachten w¨ urde.
2.2 Kanonische Normalformen
13
Die einfachere Gestalt ist leicht mittels des ggT berechenbar. Fasst man die beiden Funktionen dagegen als Abbildungen von Q nach Q auf, so sind sie nicht ¨aquivalent ( x = −1 !). Die Maple-”Designer“ haben sich deshalb entschlossen, solche Ausdr¨ ucke nicht automatisch zu vereinfachen. Man muss den Befehl normal verwenden, um in Q(x) zu vereinfachen. Man sollte dabei wissen, was man will, 2 −1 denn die Vereinfachung von xx+1 zu x − 1 erfolgt ohne Hinweis auf den ver¨anderten Definitionsbereich in x = −1 . 2.2.2 Beispiel: Der im vorhergehenden Beispiel angesprochene Befehl 100 normal formt auch x x−1−1 um zu x99 + x98 + . . . + x + 1 , was von der Menge der Terme oder der Berechnung von Nullstellen her sicher keine Vereinfachung ist. 2.2.3 Beispiel: Noch schwieriger wird die Situation bei transzendenten 1 Funktionen. So ist etwa in csc2 x − cot x · csc x = 1+cos x die rechte Seite von Struktur und Anzahl der Terme her deutlich einfacher als die linke Seite. Wenn dieser Ausdruck integriert werden soll, stellt sich heraus, dass die linke Seite vorzuziehen ist. Welche Gestalt auch immer man im vorhergehenden Beispiel f¨ ur einfacher h¨alt, man verlangt auf jeden Fall von einem Computeralgebra-System, dass es die Gleichheit der beiden Ausdr¨ ucke erkennt und so etwa in der Lage ist zu erkennen, dass (csc2 x − cot x · csc x) · (1 + cos x) − 1 verschwindet. ¨ Diese Uberlegungen f¨ uhren im folgenden auf die Definition so genannter kanonischer Simplifikatoren. Dazu sei T eine Klasse (linguistischer) Objek¨ te und ∼ eine auf T definierte Aquivalenzrelation. 2.2.4 Beispiel: (x+1)2 und x2 +2x+1 sind zwar linguistisch verschiedene Objekte, aber a¨quivalent in dem Sinne, dass sie gleiche Polynome in R[x] darstellen. (T, ∼) = (R[x], =) .
2.2.5 Beispiel: In Beispiel 2.2.1 haben wir etwa (T, ∼) = (Q(x), =) be2 −1 trachtet und xx+1 und x − 1 als ¨ aquivalente Objekte erkannt.
2.2.6 Beispiel: x6 − 1 und x − 1 sind zwar f¨ ur keinen K¨ orper K gleich in K[x] , f¨ ur K = GF(2) stellen sie aber die gleiche Abbildung f : K → K dar, d.h. sie stellen ¨ aquivalente Objekte in als Abb. (T, ∼) = (GF(2)[x], = ) dar. 2.2.7 Definition: Eine Abbildung S : T → T heißt kanonischer Simplifikator, wenn gilt: (S1) (S2)
S(t) ∼ t s ∼ t ⇒ S(s) = S(t)
f¨ ur alle t ∈ T f¨ ur alle s, t ∈ T
S(t) heißt kanonische Normalform von t ∈ T .
14
2 Grundlagen
2.2.8 Beispiel: ab mit a ∈ Z , b ∈ N und ggT(a, b) = 1 ist eine kanonische Normalform f¨ ur rationale Zahlen. Sie ist mittels des ggT und der Signumfunktion auf Z einfach berechenbar. 2.2.9 Beispiel: Es sei G die kommutative Halbgruppe mit G = a, b, c, f, s ; as = c2 s , bs = cs , s = f Mit Hilfe von Gr¨ obner-Basen kann man zeigen, dass die drei Substitutionsregeln s → f , cf → bf , b2 f → af zusammen (in beliebiger Reihenfolge, auch mehrmals angewandt) einen kanonischen Simplifikator f¨ ur (G, =) darstellen. Wegen S(a5 bc3 f 2 s3 ) = S(a5 b2 c2 s5 ) = a7 f 5 sind die Elemente a5 bc3 f 2 s3 und a5 b2 c2 s5 aus G gleich mit kanonischer Normalform a7 f 5 . Leider ist es nicht immer m¨ oglich, einen kanonischen Simplifikator f¨ ur (T, ∼) zu finden: 2.2.10 Beispiel: Caviness [Cav], Richardson [Ric] und Matiyasevich [Mat] bewiesen (1968-1970), dass f¨ ur die Klasse T , die im folgenden n¨ aher ¨ erl¨autert wird, zusammen mit der Aquivalenzrelation ∼ (= Gleichheit als Abbildung) kein kanonischer Simplifikator existiert. T ist dabei die Klasse von Ausdr¨ ucken, die sich bilden lassen aus (i) Q ∪ {π , n(2)} (iii) + , · , ◦ (ii) x (iv) sin , exp , abs . Der sehr m¨ achtige Integrations-Algorithmus von Risch beruht auf der Existenz eines kanonischen Simplifikators f¨ ur eine ganz ¨ ahnliche Klasse. Vergleich mit dem von Caviness, Richardson und Matiyasevich untersuchten Fall zeigt, dass die Nicht-Existenz eines kanonischen Simplifikators in ihrem Fall wohl an den Konstanten π und n(2) liegt. Viele CA-Systeme vereinfachen (außer bei rationalen Zahlen) nicht automatisch auf kanonische Normalform und u ¨berlassen es (etwa bei rationalen Funktionen, vgl. Beispiele zum Maple-normal-Befehl) dem Benutzer, diese explizit aufzurufen. In vielen F¨ allen gibt es nat¨ urlich auch keine kanonische Normalform, wie das vorhergehende Beispiel zeigt. In diesen F¨ allen kann man viele (nichtkanonische) Umformungen ausf¨ uhren oder bei einigen Systemen sogar eigene Substitutionsregeln einf¨ uhren. Das ist zwar sehr benutzerfreundlich, aber nat¨ urlich auch gef¨ ahrlich: es ist ein keineswegs triviales Problem, einem Satz von Substitutionsregeln wie etwa in Beispiel 2.2.9 anzusehen, ob jede Kette von Substitutionen an einem beliebigen Ausdruck nach endlich vielen Schritten terminiert, und ob das Ergebnis eine kanonische Normalform ist.
2.3 Umformungssysteme
15
Reduce bricht einfach bei einer voreingestellten Rekursionstiefe ab, um in solchen F¨ allen nicht in eine Endlosschleife zu geraten. Bei nichtkanonischen Vereinfachungen kann es nat¨ urlich auch passieren, dass man eine riesige Formel als Ergebnis von Umformungen erh¨ alt und das Programm nicht merkt“, dass der Ausdruck verschwindet. ”
2.3 Umformungssysteme 2.3.1 Definition: Ein Umformungssystem u ¨ber T ist ein Paar (T, −→) aus einer nichtleeren Menge T und einer Relation −→ ⊂ T × T . F¨ ur s , t ∈ T mit (s, t) ∈ −→ nennt man s die Pr¨amisse und t die Konklusion der Regel −→ und schreibt auch suggestiver s −→ t . Gibt es Elemente s1 , s2 , . . . , sn−1 ∈ T mit s −→ s1 −→ s2 −→ . . . −→ sn−1 −→ t , so schreibt man s −→n t und sagt: t entsteht in n Schritten aus s . Schreibt man die Identit¨ at als −→0 , so ist der reflexive und transi∗ tive Abschluss −→ von −→ also wie folgt definiert:
N
s −→∗ t :⇐⇒ ∃n ∈ 0 mit s −→n t . Ist −→ strikt antisymmetrisch (d.h. −→ ∩ ←− = ∅ , wobei ←− die zu −→ inverse Relation sei), so heißt diese Relation auch Reduktionsrelation bzw. (T, −→) ein Reduktionssystem. Der strikt antisymmetrische Anteil einer beliebigen Relation −→ ist −→s := −→ \ ←− . Es ist −→ = −→s genau dann, wenn −→ strikt antisymmetrisch ist. Die Relation −→ heißt noethersch, wenn es keine unendliche Kette s1 −→s s2 −→s . . . mit Elementen si ∈ T , i ∈ gibt. Ist U ⊆ T und gibt es zu u ∈ U kein s ∈ U mit u −→s s , so heißt u irreduzibel in U bzgl. −→ oder in Normalform in U oder auch −→-maximal in U . Man schreibt auch sU , um zu betonen, dass s in Normalform in U ist. Ist U = T , so l¨ asst man jeweils den Hinweis auf U weg. Gibt es zu Elementen s , t ∈ T ein u ∈ T mit s −→∗ u und t −→∗ u , so sagt man: s und t haben einen gemeinsamen Nachfolger und schreibt: s ↓ t . Schreibt man die zu −→∗ inverse Relation mit ←−∗ , so heißt das s ↓ t :⇐⇒ ∃u ∈ T : s −→∗ u ←−∗ t ¨ Der reflexive und transitive Abschluss ←→∗ von ←→ ist eine Aquivalenzrelation und wird auch mit ∼ bezeichnet werden. Ist umge¨ kehrt ∼ eine beliebige Aquivalenzrelation und −→ eine Relation ∗ mit ←→ =∼ , so heißt −→ eine zu ∼ geh¨orige Relation.
N
16
2 Grundlagen
2.3.2 Beispiel: Es sei A = {a1 , . . . , an } eine endliche nichtleere Menge (Alphabet, ai =Buchstaben). Eine endliche Folge von Buchstaben aus A heißt Wort u orter u ¨ber A , A∗ sei die Menge aller W¨ ¨ber A (incl. dem leeren Wort). Auf A∗ werden f¨ ur feste Vi , Wi ∈ A∗ , 1 ≤ i ≤ m die folgenden Relationen erkl¨ art: −→ := {(V Vi W , V Wi W ) ; V , W ∈ A∗ } i
Dann ist T := A∗ mit −→ := ∪m ¨ber i=1 −→ ein Umformungssystem u i ∗ A . Solche Teilwort-Ersetzungssysteme heißen Semi-Thuesysteme. 2.3.3 Satz: Die Relation −→ auf T ist genau dann noethersch, wenn jede nichtleere Teilmenge U ⊆ T ein irreduzibles Element besitzt. Beweis: ⇐ “ G¨abe es eine unendliche Kette r1 −→s r2 −→s . . . , so h¨ atte die Menge ” U := {ri ; i ∈ } kein irreduzibles Element. ⇒ “ Angenommen, die Menge U besitzt kein irreduzibles Element. Dann ” ist f¨ ur jedes u ∈ U die durch Ru := {s ∈ U ; u −→s s} definierte Menge nichtleer. Das Auswahlaxiom garantiert nun, dass man sich zu jedem r ∈ U aus der Vereinigung der Mengen Ru (u ∈ U ) jeweils ein f (r) ausw¨ahlen kann, so dass r −→s f (r) gilt:
U→ Ru u∈U f: r → f (r) so dass r −→s f (r)
N
ur i = 1, 2, . . . reIst r1 ∈ U beliebig, so wird durch ri+1 := f (ri ) f¨ kursiv eine unendliche Kette r1 −→s r2 −→s . . . definiert. Dies ist ein Widerspruch zur Voraussetzung. U besitzt also doch ein irreduzibles Element. Es sei nun (T, −→) ein Reduktionssystem mit noetherscher Relation −→ . Gibt es eine berechenbare Funktion (=Algorithmus) S : T → T , die jedem t ∈ T ein irreduzibles s = S(t) mit t −→∗ s zuordnet, so erf¨ ullt dieses S sicher den ersten Punkt (S1) aus der Definition eines kanonischen Simplifikators. Es gilt sogar sch¨ arfer t −→∗ S(t) f¨ ur alle t ∈ T . Nach (S2) muss ein kanonischer Simplifikator zus¨ atzlich noch die Eigenschaft haben, dass zwei verschiedene Elemente s , t ∈ T dem gleichen irreduziblen Element zugeordnet werden. Um dies zu testen, m¨ usste man allerdings in der Regel unendlich viele Elemente s und t aus T durchtesten, was nicht machbar ist. Die eben beschriebene Funktion S : T → T heißt Normalform-Algorithmus f¨ ur −→ .
Es sei M eine Menge und M ⊆ P(M ) \ ∅ . Dann gibt es eine Abbildung (Auswahlfunktion)
ϕ : M → M mit ϕ(X) ∈ X f¨ ur alle X ∈ M .
2.3 Umformungssysteme
17
Die folgenden S¨ atze schr¨ anken zwar die Anzahl der Tests f¨ ur den Punkt (S2) ein, hinterlassen aber leider i.Allg. immer noch unendlich viele Tests. Zuerst aber einige n¨ otige Definitionen: 2.3.4 Definition: Es sei (T, −→) ein Reduktionssystem. Die Relation −→ hat die Church-Rosser-Eigenschaft, wenn gilt s ←→∗ t ⇒ s ↓ t
∀s, t ∈ T
.
−→ heißt konfluent, wenn gilt: s ←−∗ u −→∗ t ⇒ s ↓ t
∀s, t, u ∈ T
.
−→ heißt lokal konfluent, wenn gilt: s ←− u −→ t ⇒ s ↓ t
∀s, t, u ∈ T
.
2.3.5 Satz: Der Normal-Form-Algorithmus S ist genau dann ein kanonischer Simplifikator f¨ ur ←→∗ =∼ , wenn die noethersche Reduktionsrelation −→ die Church-Rosser-Eigenschaft besitzt. Beweis: ⇒ “ Nach (S2) gilt f¨ ur alle s, t ∈ T mit s ←→∗ t ⇐⇒ s ∼ t , dass S(s) = ” S(t) ist. Damit ist u := S(s) = S(t) ein gemeinsamer Nachfolger f¨ ur s und t . Es gilt also s ↓ t . ⇐ “ Sind s, t ∈ T mit s ←→∗ t , so haben s und t nach der Church” Rosser-Eigenschaft einen gemeinsamen Nachfolger u ∈ T , es gilt also s −→∗ u ←−∗ t . Mit Hilfe des Normal-Form Algorithmus S folgt dann S(s) ←−∗ s −→∗ S(u) ←−∗ t −→∗ S(t) Dies heißt
S(s) ←→∗ S(u)˜˜und˜˜S(u) ←→∗ S(t)
Nach Church-Rosser haben S(s) und S(u) also einen gemeinsamen Nachfolger in T . Da beide Elemente aber schon in Normalform sind, folgt S(s) = S(u) . Analog folgt aus S(u) ←→∗ S(t) auch S(u) = S(t) und damit zusammen S(s) = S(t) . 2.3.6 Satz: Die noethersche Reduktionsrelation −→ hat genau dann die Church-Rosser Eigenschaft, wenn sie konfluent ist. Beweis: ⇒ “ Gilt f¨ ur s, t, u ∈ T : s ←−∗ u −→∗ t , so gilt nach Definition von ←→∗ ” auch s ←→∗ t und damit nach Church-Rosser s ↓ t ; −→ ist also konfluent.
18
”
2 Grundlagen
⇐ “ s ←→∗ t heißt nach Definition, dass es ein n ∈ Elemente s1 , s2 , . . . , sn−1 ∈ T mit
N0
und zugeh¨ orige
s s1 s2 . . . sn−1 t gibt ( stehe dabei f¨ ur ←− oder −→ ). Daf¨ ur schreibt man auch ¨ kurz ←→n ; die Aquivalenzrelation ←→∗ ist in diesem Sinne die Vereinigung aller ←→n mit n ∈ 0 . Der Beweis wird nun durch Induktion nach diesem n gef¨ uhrt: 0 (IA) s ←→ t ⇐⇒ s = t ⇒ s ↓ t (IS) s ←→n+1 t ⇐⇒ ∃u ∈ T mit s −→ u ←→n t∨s ←− u ←→n t . In jedem Fall gibt es nach Induktionsvoraussetzung einen gemeinsamen Nachfolger v ∈ T f¨ ur u und t : u −→∗ v ←−∗ t . Im ersten Fall folgt aus s −→ u sofort s −→∗ v ←−∗ t , also s ↓ t . F¨ ur s ←− u −→∗ v folgt aus der Konfluenz von −→ die Existenz eines gemeinsamen Nachfolgers w ∈ T von s und v : ∗ s −→∗ w ←−∗ v ←− t
N
s.o.
Damit ist w auch als gemeinsamer Nachfolger von s und t erkannt, also s ↓ t gezeigt. Bevor nun der Satz von Newman bewiesen werden kann, muss erst etwas zu dem dort verwendeten Beweisverfahren gesagt werden. Wegen der Analogie zur (transfiniten) Induktion spricht man auch von noetherscher Induktion: 2.3.7 Satz: (Prinzip der noetherschen Induktion) Es sei (T, −→) ein Umformungssystem mit noetherschem −→ und A(t) eine f¨ ur jedes Element t ∈ T sinnvolle Aussage. Wenn f¨ ur jedes t ∈ T aus der hypothetisch vorausgesetzten Wahrheit der Aussage A(s) f¨ ur alle s ∈ T mit t −→s s die Wahrheit der Aussage A(t) folgt, so ist die Aussage A(t) f¨ ur alle t ∈ T wahr. Beweis: Angenommen, die Menge U := {t ∈ T ; A(t) ist falsch } ist nichtleer. Nach Satz 2.3.3 besitzt U ein irreduzibles Element u . Damit ist die Menge R := {s ∈ U ; u −→s s} leer, die Aussage A(s) also trivialerweise wahr f¨ ur alle s ∈ R und damit nach Voraussetzung auch A(u) wahr. Dies steht im Widerspruch zur Definition von U . 2.3.8 Satz: (Newman 1942) Die noethersche Reduktionsrelation −→ ist genau dann konfluent, wenn sie lokal konfluent ist. Beweis: ⇒ “ es seien s, t, u ∈ T mit s ←− u −→ t . Das heißt auch s ←−∗ u −→∗ t ” und damit wegen der Konfluenz: s ↓ t .
2.3 Umformungssysteme
”
19
⇐ “ Es sei u ∈ T beliebig aber fest gew¨ ahlt. Es wird gezeigt, dass es zu beliebigen s, t ∈ T mit s ←−∗ u −→∗ t einen gemeinsamen Nachfolger w ∈ T gibt, also s −→∗ w ←−∗ t . Dies geschieht mittels der in Satz 2.3.7 begr¨ undeten noetherschen Induktion: (IA) Induktionsanfang in diesem Sinne sind u = s bzw. u = t . In beiden F¨ allen folgt sofort s ↓ t . (IS) Ist u = s, t , so gibt es s1 , t1 ∈ T \ {u} mit s ←−∗ s1 ←− u −→ t1 −→∗ t Mit dem Diagramm auf der n¨ achsten Seite folgt nun (i) Die Existenz von v ∈ T folgt aus s1 ←− u −→ t1 und der lokalen Konfluenz von −→ . (ii) Die Existenz von v liefert die Induktionsvoraussetzung, denn u −→s s1 und s ←−∗ s1 −→∗ v .
(iii) Die Existenz von w folgt aus der Induktionsvoraussetzung, denn u −→s t1 und v ←−∗ t1 −→∗ t . Damit ist insgesamt gezeigt: Folgerung: Es sei (T, −→) ein Reduktionssystem mit noetherschem −→ und einem Normal-Form Algorithmus S . S ist genau dann ein kanonischer Simplifikator f¨ ur ←→∗ =∼ , wenn −→ lokal konfluent ist. 2.3.9 Beispiel: (Fortsetzung von 2.2.9) M¨ochte man die Behauptung nachpr¨ ufen, dass die drei angegebenen Substitutionsregeln einen kanonischen Simplifikator bilden, so muss man nach nach den soeben bewiesenen S¨ atzen zeigen, dass die Umformung noethersch und lokal konfluent ist.
20
2 Grundlagen
Jedes Element der Halbgruppe l¨ asst sich wegen der Kommutativit¨ at in der Form sn1 f n2 cn3 bn4 an5 mit ni ∈ 0 f¨ ur i = 1, .., 5 schreiben. Betrachtet man nun die Wirkung der drei Substitutionen auf den Exponentenvektor (n1 , n2 , n3 , n4 , n5 ) , so sieht man, dass der Ge5 samtgrad n := i=1 ni bei den ersten beiden Substitutionen gleich bleibt, bei der dritten um eins f¨ allt. Sortiert man die Exponentenvektoren lexikographisch (mehr dazu im Abschnitt u ur Polynome), so sieht man, dass ¨ber Ordnungsrelationen f¨ jede Substitution zu einem lexikographisch kleineren Vektor f¨ uhrt. Dies zeigt, dass die aus diesen drei Substitutionen bestehende Umformungsrelation strikt antisymmetrisch ist. Da sich der Gesamtgrad n nur endlich oft absenken l¨ asst, ist eine unendliche Reduktionskette nur m¨ oglich, wenn es f¨ ur einen festen Grad n eine unendliche Reduktionskette gibt. Daran k¨onnen dann nur die beiden ersten Substitutionen beteiligt sein, weil nur diese den Grad unver¨ andert lassen. Diese beiden Substitutionen lassen sich aber offensichtlich nur endlich oft anwenden, weil dann kein s und kein c mehr in dem zu reduzierenden Gruppenelement enthalten sind. Die Relation ist also wirklich noethersch. Die Pr¨ ufung der lokalen Konfluenz gestaltet sich da schon deutlich schwieriger. Bei jedem Element der (unendlich großen) Halbgruppe m¨ usste dazu gepr¨ uft werden, ob sich zwei verschiedene Substitutionen anwenden lassen, und ob die so resultierenden Elemente wirklich einen gemeinsamen Nachfolger haben, z.B.:
N
s→f
cf →bf
a5 bc3 f 3 s2 ←− a5 bc3 f 2 s3 −→ a5 b2 c2 f 2 s3 und somit wegen a5 b2 c2 f 2 s3 −→∗ a7 f 5 ←−∗ a5 bc3 f 3 s2 das gew¨ unschte a5 b2 c2 f 2 s3 ↓ a5 bc3 f 3 s2 . Algorithmen wie der Gr¨ obnerbasen-Algorithmus von B. Buchberger [Buc] oder der Knuth-Bendix-Algorithmus [KBe] sind in einigen F¨allen erfolgreich, weil sie diese Untersuchung von unendlich vielen Elementen einschr¨ anken auf endlich viele spezielle Kandidaten. Untersucht werden dabei die kleinstm¨ oglichen“ Elemente, auf die ” sich zwei verschiedene Reduktionen anwenden lassen, im vorliegenden Beispiel etwa cb2 f . Wendet man die beiden Substitutionen auf dieses Element an, so entsteht ein sog. kritisches Paar das einen gemeinsamen Nachfolger haben muss: cf →bf
b3 f ←− cb2 f
b2 f →af
−→ acf .
Es gilt acf −→∗ abf ←−∗ b3 f , d.h. die beiden Elemente des kritischen Paares (b3 f, acf ) haben den gemeinsamen Nachfolger abf .
2.4 Ideale
21
F¨ ur die im vorliegenden Beispiel betrachteten drei Substitutionen gibt es nur drei solche kritische Paare zu betrachten. Nat¨ urlich ist es beweisbed¨ urftig, dass die Untersuchung dieser drei Paare auch gen¨ ugt.
2.4 Ideale Sowohl f¨ ur die in der Computeralgebra wesentlichen S¨ atze von Hensel und den Chinesischen Restsatz, als auch f¨ ur die Theorie der Gr¨ obner-Basen, sind Ideale der wesentliche algebraische Baustein. Hier werden nur kurz und ohne Beweis einige Grundlagen zu Idealen zusammengefasst. Dabei gelte als Generalvoraussetzung: Ab jetzt seien alle Ringe immer kommutative Ringe mit einem Einselement 1 = 0 . Weiterhin bezeichne R∗ wie u ¨blich die Menge der multiplikativ invertierbaren Elemente von R . Mit der Multiplikation bildet diese Menge die so genannte Einheitengruppe von R . Eine nichtleere Teilmenge I von R heißt Ideal, wenn f¨ ur alle i, j ∈ I und alle r, s ∈ R gilt: r · i + s · j ∈ I . Es ist (I, +) eine Untergruppe von (R, +) bzw. (I, +, ·) ein Unterring (f¨ ur I = R allerdings ein Ring ohne 1 ) von (R, +.·) . Sind i1 , i2 , . . . Elemente von I , so ist auch jede endliche Summe der Gestalt i= rn in mit rn ∈ R (nur endlich viele rn = 0) in dem Ideal I . L¨ asst sich umgekehrt jedes Element i ∈ I auf diese Weise darstellen, so heißt das System (i1 , i2 , . . .) ein Erzeugendensystem oder eine Basis des Ideals. Man schreibt I = i1 , i2 , . . . . Im folgenden werden haupts¨ achlich so genannte endlich erzeugte Ideale behandelt, also solche, die eine endliche Basis (i1 , i2 , . . . , in ) besitzen. Ein von einem Element erzeugtes Ideal heißt Hauptideal. Von solchen Basen wird oft gefordert, dass sie minimal sind, d.h. dass kein Element der Basis weggelassen werden kann, ohne dass sie aufh¨ ort eine Basis von I zu sein. Beieiner minimalen Basis ist es nicht m¨ oglich, ein Basiselement als Summe rn in der anderen Basiselemente darzustellen. 2.4.1 Beispiel: Es sei I = x ⊂ K[x] das von x erzeugte Hauptideal in dem Polynomring K[x] u orper K . Offensichtlich ist (x) ¨ber einem K¨ eine minimale Basis dieses Ideals. Die Basis (x, x2 ) erzeugt ebenfalls I , ist aber nicht minimal, da x2 ein Vielfaches von x ist und deshalb ohne Schaden weggelassen werden kann. Dagegen ist (x2 +x, x2 ) eine minimale Basis von I . Um dies einzusehen, muss man erst mal zeigen, dass x2 + x, x2 = x ist:
22
2 Grundlagen
f (x) ∈ x ⇐⇒ ∃h(x) ∈ K[x] : f (x) = x · h(x) = = (x2 + x) · h(x) − x2 · h(x) ∈ x2 + x, x2 g(x) ∈ x2 + x, x2 ⇐⇒ ∃h1 (x), h2 (x) ∈ K[x] : g(x) = = (x2 + x) · h1 (x) + x · h2 (x) = = x · (x · h1 (x) + h1 (x) + h2 (x)) ∈ x Da keines der beiden beteiligten Polynome aus (x2 + x, x2 ) alleine ganz I erzeugt, ist diese Basis sogar minimal. Dieses Beispiel zeigt, dass eine minimale Idealbasis nicht die gleichen sch¨onen Eigenschaften hat wie eine Vektorraumbasis (lineare Unabh¨ angigkeit, Dimension). Ist jedes Ideal von R endlich erzeugt, so heißt R noethersch. Nullteilerfreie Ringe heißen Integrit¨atsringe (auch Integrit¨ atsbereich). Integrit¨ atsringe mit 1 , in denen jedes Ideal Hauptideal ist, heißen Hauptidealringe. Ein Integrit¨atsring R heißt euklidischer Ring, wenn es eine Abbildung δ : R \ {0} → 0 gibt, so dass es zu je zwei Elementen a, b ∈ R mit b = 0 Elemente q, r ∈ R gibt mit a = qb + r und r = 0 oder δ(r) < δ(b) ist (Division mit Rest). Nun sei R nullteilerfrei. Ein Ringelement q ∈ R \ {R∗ ∪ {0}} heißt irreduzibel, wenn eine Zerlegung q = r · s im Ring nur f¨ ur r ∈ R∗ oder ∗ ∗ s ∈ R m¨oglich ist. Ein Element p ∈ R \ {R ∪ {0}} heißt prim oder Primelement, wenn f¨ ur r, s ∈ R aus p | r · s stets p | r oder p | s folgt. Ist p ein Primelement mit einer Zerlegung p = r · s in R , so folgt aus der Definition p | r oder p | s . Im ersten Fall gibt es dann ein r ∈ R mit r = p · r , also mit p = p · r · s ⇐⇒ p(1 − r · s) = 0 . Wegen der Nullteilerfreiheit von R heißt das 1 = r · s , d.h. s ist eine Einheit. Entsprechend folgt im zweiten Fall, dass r eine Einheit ist. Dies zeigt, dass jedes Primelement p irreduzibel ist. Ein Integrit¨atsring heißt faktorieller Ring (auch ZPE-Ring oder gaußscher Ring genannt), wenn jede von Null verschiedenen Nichteinheit ein Produkt irreduzibler Elemente ist und wenn diese Zerlegung sogar bis auf die Reihenfolge der Faktoren und Multiplikation mit Einheiten eindeutig ist. Jeder euklidische Ring ist ein Hauptidealring, jeder Hauptidealring ist faktoriell. In faktoriellen Ringen sind irreduzible Elemente auch prim . Hauptidealringe sind insbesondere noethersch. Ein Ring ist genau dann noethersch, wenn jede aufsteigende Kette von Idealen
N
I1 I2 . . . in R endlich ist. Der hilbertsche Basissatz besagt, dass mit R auch jeder Polynomring R[x1 , x2 , . . . , xn ] u ¨ber R noethersch ist.
Dies erkl¨ art die Abk¨ urzung ZPE: Zerlegung in Primelemente ist Eindeutig.
2.4 Ideale
23
Ein Ideal I R heißt Primideal, wenn f¨ ur alle r1 , r2 ∈ R mit r1 · r2 ∈ I stets r1 ∈ I oder r2 ∈ I gilt. Das Hauptideal p ist genau dann ein Primideal, wenn p ein Primelement ist. Ein Ideal I R heißt maximal, wenn wenn f¨ ur alle Ideale J von R aus I ⊆ J folgt I = J oder J = R . Jedes maximale Ideal ist prim. Die Umkehrung davon gilt aber nur in Hauptidealringen. In der Computeralgebra ist man insbesondere an Polynomringen interessiert: R[x] ist genau dann ein euklidischer Ring oder ein Hauptidealring, wenn R ein K¨ orper ist. Die Eigenschaft faktoriell u agt ¨bertr¨ sich nach einem Satz von Gauß von R auf R[x] . Weiterhin ist R[x] genau dann ein Integrit¨ atsbereich, wenn bereits R diese Eigenschaft hat. Ein Element a eines Integrit¨ atsringes R teilt ein b ∈ R , i.Z. a | b , wenn es ein c ∈ R mit b = ac gibt. Ein Element d ∈ R heißt gemeinsamer Teiler von a1 , . . . , an ∈ R , wenn d die Elemente a1 , . . . , an in R teilt. Das Element d ∈ R heißt ein gr¨oßter gemeinsamer Teiler von a1 , . . . , an ∈ R , wenn d ein gemeinsamer Teiler dieser Elemente ist und wenn f¨ ur jeden anderen gemeinsamen Teiler d von a1 , . . . , an gilt d | d . Die Standardmethode zur Berechnung eines gr¨ oßten gemeinsamen Teilers in einem euklidischen Ring R ist der euklidische Algorithmus, also fortgesetzte Division mit Rest bis die Division aufgeht. Sind a, b ∈ R \ {0} mit δ(b) < δ(a) so setze a1 = a , a2 = b und berechne a1 a2
= = .. .
q1 q2
· ·
a2 a3
+ +
a3 a4
mit mit
δ(a3 ) δ(a4 )
< δ(a2 ) < δ(a3 )
ar−1 = qr−1 · ar + ar+1 mit δ(ar+1 ) < δ(ar ) ar = qr · ar+1 ⇒ ggT(a, b) = ar+1 . Dabei sei ai = 0 f¨ ur i = 1, . . . , r + 1 . uber hinwegt¨ auschen, Die Schreibweise ggT(a, b) = ar+1 sollte nicht dar¨ dass ein ggT nur bis auf Multiplikation mit Einheiten bestimmt ist, also etwa in Z : ggT(10, 15) = ±5 . Aus diesem Grunde findet man auch oft die Schreibweisen 5 ∈ ggT(10, 15) und ggT(10, 15) = {−5, 5} . In Ringen, in denen es mehr Einheiten gibt, ist diese Menge entsprechend gr¨ oßer. In faktoriellen, nicht euklidischen Ringen (z.B in Z[x] ) gibt es zwar immer einen ggT , er kann aber nicht mehr (oder nur auf Umwegen“) ” mit dem euklidischen Algorithmus berechnet werden. In diesem Fall kann man sich die Primfaktorisierungen der beteiligten Ringelemente berechnen. Die minimalen Potenzen dieser Primelemente ergeben ausmultipliziert einen ggT . Das ist die u ur den ggT ¨bliche Methode, die man in der Schule f¨ ganzer Zahlen lernt - da ist sie allerdings fehl am Platze, denn die ganzen Zahlen bilden einen euklidischen Ring und man k¨ onnte den sehr viel besseren euklidischen Algorithmus nutzen.
24
2 Grundlagen
In einem Hauptidealring R gibt es nach einem Satz von B´ezout zu Elementen a1 , . . . , am ∈ R mit ggT(a1 , . . . , am ) = d Elemente r1 , . . . , rm ∈ R mit r1 a1 + r2 a2 + . . . + rm am = d . Im Fall m = 2 in euklidischen Ringen berechnet man diese Elemente ri ∈ R mit Hilfe der sog. erweiterten euklidischen Algorithmus. Man schreibt den Divisionsschritt ai = qi ai+1 + ai+2 in Matrixgestalt ai ai+1 qr 1 qi 1 q1 1 · ... · . = und k¨ urzt ab A := 1 0 1 0 1 0 ai+1 ai+2 Damit folgt a b
=
a1 a2
=A
ar+1 0
=A
ggT(a, b) 0
⇐⇒
ggT(a, b) 0
= A−1
a b
Die erste Zeile davon liefert die gew¨ unschte Darstellung des ggT . ¨ Diese Uberlegung l¨ asst sich direkt in einen Algorithmus umsetzen. Wegen −1 q 1 0 1 = 1 0 1 −q kann man A−1 einfach schrittweise als Produkt dieser Inversen berechnen. Die Multiplikation von links mit solch einer Matrix bewirkt c1 c2 d2 d1 0 1 c1 c2 =: . = 1 −q d1 d2 c1 − qd1 c2 − qd2 d1 d2 Man startet mit c1 = 1 , c2 = 0 , d1 = 0 , d2 = 1 , also der Einheitsmatrix, und wendet auf diese dann obige Regel an. Multipliziert man die gleichen Matrizen von links an den Vektor aus den beiden Elementen a und b , so endet der Algorithmus bei dem Vekotr aus ggT(a, b) und 0 . Gr¨ oßter Gemeinsamer Teiler, erweiterte Version procedure Gcdex (a, b, s, t) A ← a, B ← b c1 ← 1; c2 ← 0; d1 ← 0; d2 ← 1 while B = 0 do q ← quo(A, B); r ← rem(A, B) u1 ← c1 − q · d1 ; u2 ← c2 − q · d2 A ← B; c1 ← d1 ; c2 ← d2 B ← r; d1 ← u1 ; d2 ← u2 end do s ← c1 ; t ← c2 Return (A) end
# # # # # # # #
Eingabe: a, b ∈ R (euklidischer Ring) s, t Namen f¨ ur die zu berechnenden Kofaktoren. Ausgabe: ggT(a, b) und s und t mit sa + tb = ggT(a, b) A = qB + r sei die Division mit Rest in R . Bezeichnung q = quo(A, B) und r = rem(A, B)
Ist R = K[x] mit einem K¨ orper K , so ist dies nach dem oben Gesagten ein euklidischer Ring und damit auch Hauptidealring.
2.4 Ideale
25
Sind u1 , u2 , . . . , uk ∈ R mit einem gr¨ oßten gemeinsamen Teiler d , so gibt es nach B´ezout Elemente w1 , w2 , . . . , wk ∈ R mit w1 u1 + w2 u2 + . . . + wk uk = d .
(2.1)
In Ideal-Schreibweise heißt das u1 , u2 , . . . , uk = d Eine L¨osung w1 , w2 , . . . , wk von (2.1) kann man etwa durch iterierte Anwendung des erweiterten euklidischen Algorithmus berechnen. F¨ ur einige Anwendungen ist man an L¨ osungen w1 , w2 , . . . , wk ∈ K[x] von (2.1) von m¨oglichst kleinem Grad interessiert. Was man dabei erreichen kann, zeigt der folgende 2.4.2 Satz: Es seien u1 , u2 , . . . , uk ∈ K[x] mit d := ggT(u1 , . . . , uk ) , v := kgV(u1 , . . . , uk ) ◦ und deg v > deg d . Dann gibt es w1 , . . . , wk ∈ K[x] mit w1 u1 + w2 u2 + . . . + wk uk = d und deg wi < deg v − deg ui f¨ ur i = 1, . . . , k . Beweis: Es sei w1 , w2 , . . . , wk ∈ K[x] irgendeine L¨ osung von (2.1). Dann gibt es f¨ ur i = 1, . . . , k Polynome qi , ri ∈ K[x] mit deg ri < deg v oder ri = 0 und wi ui = qi v + ri . Da ui nach Voraussetzung v teilt, ist ui auch ein Teiler von ri . Es gibt also zu jedem ri ein wi ∈ K[x] mit ri = wi ui . Einsetzen in (2.1) zeigt: k k v· qi + wi ui = d . (2.2) i=1
Ist
i=1
k
i=1 qi = 0 , so gilt deg v ·
deg
k
wi ui
≥ deg v . Wegen q i i=1
k
k = deg ri < deg v und deg d < deg v
i=1
i=1
kann das nicht sein, es folgt also Behauptung. 2.4.3 Beispiel: In
Z13 [x]
k
i=1 qi
= 0 und somit aus (2.2) die
seien
u1 := x5 + 8x4 + x + 8 , u3 := x4 + 9x2 + 8 , u2 := x5 + 5x4 + x + 5 , u4 := x4 + 6x2 + 5 .. ◦
ur i = 1, . . . , k und ui | v f¨ ur i = v ist kgV von u1 , . . . , uk wenn gilt: ui | v f¨
1, . . . , k ⇒ v | v
26
2 Grundlagen
Iterative Anwendung des erweiterten euklidischen Algorithmus (also Berechnung von ggT(u1 , u2 ) , dann ggT(ggT(u1 , u2 ), u3 ) usw. und u 1 u2 kgV(u1 , u2 ) = ggT(u , kgV(u1 , u2 , u3 ) = kgV(kgV(u1 , u2 ), u3 ) 1 ,u2 ) usw.) f¨ uhrt auf die L¨ osung d = ggT(u1 , u2 , u3 , u4 ) = 1 v = kgV(u1 , u2 , u3 , u4 ) = x6 + x4 + x2 + 1 und w1 = 5x2 + 3 , w2 = 8x2 + 10 , w3 = 11x2 + 4 , w4 = 5 . Nach Satz 2.4.2 gibt es eine L¨ osung w1 , . . . , w4 mit deg w1 < 6−5 = 1 , deg w2 < 6 − 5 = 1 , deg w3 < 6 − 4 = 2 , deg w4 < 6 − 4 = 2 . Die im Beweis des Satzes verwendete Division mit Rest f¨ uhrt auf die L¨osung kleineren Grades w1 = 11 , w2 = 2 , w3 = 1 , w4 = 5 . Da man nach dem Satz von der Existenz einer L¨ osung w1 , . . . , wk mit entsprechenden Maximalgraden weiß, kann man nat¨ urlich auch f¨ ur diese Polynome einen Ansatz mit unbestimmten Koeffizienten machen und in (2.1) einsetzen. Koeffizientenvergleich mit der rechten Seite f¨ uhrt dann auf ein l¨ osbares lineares Gleichungssystem. Im vorliegenden Fall f¨ uhrt der Ansatz wi (x) =
deg v−deg ui −1
wi,j · xj
j=0
auf das lineare Gleichungssystem ⎛
8 ⎜1 ⎜ ⎜0 ⎜ ⎜0 ⎝ 8 1
5 1 0 0 5 1
8 0 9 0 1 0
0 8 0 9 0 1
5 0 6 0 1 0
⎞ ⎛ ⎞ ⎛ ⎞ w10 0 1 5 ⎟ ⎜ w20 ⎟ ⎜ 0 ⎟ ⎟ ⎜ ⎟ ⎜ ⎟ 0 ⎟ ⎜ w30 ⎟ ⎜ 0 ⎟ ⎟·⎜ ⎟=⎜ ⎟ 6 ⎟ ⎜ w31 ⎟ ⎜ 0 ⎟ ⎠ ⎝ ⎠ ⎝ ⎠ 0 0 w40 0 1 w41
Dies hat die eindeutige L¨ osung w10 = 11, w20 = 2, w30 = 1, w31 = 0, w40 = 5, w41 = 0 . Die Transponierte der bei diesem Ansatz auftretende Koeffizienten-Matrix ist eine Verallgemeinerung der so genannten Sylvester-Matrix, die im Abschnitt u uhrt wird. ¨ber Resultanten eingef¨ Ist t ∈ K[x] ein beliebiges Polynom und w1 , . . . , wk ∈ K[x] eine L¨ osung von (2.1) mit der laut Satz 2.4.2 m¨ oglichen Gradbeschr¨ ankung deg wi < deg v − deg ui , so gilt nat¨ urlich auch tw1 u1 + tw2 u2 + . . . + twk uk = td .
(2.3)
2.4 Ideale
27
F¨ ur diese L¨osung wird aber i.Allg. nicht mehr deg twi < deg v − deg ui gelten. Ist deg(td) < deg v , so l¨ asst sich dies aber analog zum Beweis von Satz 2.4.2 durch Division mit Rest twi ui = qi v + ri mit deg ri < deg v oder ri = 0 reparieren. Es gilt also Folgerung: Zu u1 , . . . , uk , d, v ∈ K[x] wie in 2.4.2 und t ∈ K[x] mit deg(td) < deg v gibt es w1 , . . . , wk ∈ K[x] mit w1 u1 + w2 u2 + . . . + wk uk = td ur i = 1, . . . k . und deg wi < deg v − deg ui f¨ 2.4.4 Beispiel: u1 , . . . , u4 ∈ Z13 [x] und damit auch d und v seien wie in 2.4.3 gegeben. Weiterhin sei t = 2x4 + 2x2 + 4 ∈ Z13 [x] . Wegen deg d = 0 und deg v = 6 ist also die Voraussetzung deg(td) < deg v erf¨ ullt. Aus der L¨ osung tw1 = 9x4 + 9x2 + 5 tw3 = 2x4 + 2x2 + 4
tw2 = 4x4 + 4x2 + 8 tw4 = 10x4 + 10x2 + 7
(mit den L¨ osungen w1 , . . . , w4 aus 2.4.3) ergibt sich durch Division mit Rest (twi ui = qi v + ri ) und anschließende Division (wi = urii ) die L¨osung w1 = 5 , w2 = 8 , w3 = 5 , w4 = 8 w1 u1 + w2 u2 + w3 u3 + w4 u4 = t
mit
und deg wi < deg v − deg ui f¨ ur i = 1, . . . , 4 . Bekanntlich ist die Menge der Restklassen R/I mit den Verkn¨ upfungen (r1 + I) +· (r2 + I) = (r1 +· r2 ) + I selbst wieder ein Ring, der so genannte Restklassenring oder Faktorring von R modulo I . Primideale sind genau die Ideale, f¨ ur die der Restklassenring R/I ein Integrit¨ atsring ist. Maximale Ideale sind genau die Ideale, f¨ ur die der Restklassenring R/I ein K¨ orper ist. Ist R noethersch, so ist auch R/I f¨ ur jedes Ideal I von R noethersch. Sind R und S zwei Ringe und ϕ : R → S ein Ringhomomorphismus, so ist Kern(ϕ) ein von dem ganzen Ring verschiedenes Ideal in R und es gilt R/Kern(ϕ) ∼ = ϕ(R) Der zugeh¨orige Isomorphismus ist ψ mit ψ(r + Kern(ϕ)) = ϕ(r) . 2.4.5 Beispiel: Der Ring Z ist euklidisch (und damit automatisch Hauptidealring, noethersch und faktoriell). Außerdem bilden die ganzen Zahlen einen Integrit¨ atsbereich.
28
2 Grundlagen
Nach dem eben Gesagten vererben sich nur die Eigenschaften faktoriell, noethersch und die Nullteilerfreiheit auf den Polynomring Z[x] . Wegen Z[x]/2, x ∼ = Z2 ist das von 2 und x in Z[x] erzeugte Ideal maximal. Wegen Z[x]/x ∼ = Z ist das von x erzeugte Ideal prim. Das Ideal x 2, x ist also ein Beispiel f¨ ur ein Primideal, das nicht maximal ist. Nun sei R0 ein faktorieller Ring (kommutativ mit 1 wie immer). Damit ist auch der Ring der Polynome u ¨ber R0 , R0 [x1 , . . . , xn , x] , ein faktorieller Ring. Im Folgenden werden multivariate Polynome stets als Polynome in einer Variablen, der Hauptvariablen x , u ¨ber dem Ring R := R0 [x1 , . . . , xn ] betrachtet. Wenn nichts anderes angegeben ist, beziehen sich die Begriffe Leitkoeffizient oder Leitterm jeweils auf den Polynomring R[x] (vgl. den Abschnitt u ¨ber Polynome). Zwei Polynome f (x) , f˜(x) ∈ R[x] heißen ¨ahnlich, in Zeichen f ∼ f˜ , wenn Elemente a, b aus R \ {0} existieren, so dass a · f (x) = b · f˜(x) ist. ¨ Die Elemente a und b heißen zugeh¨ orige Ahnlichkeitskoeffizienten. Jedes f (x) ∈ R[x] l¨ asst sich in seinen Inhalt ( ggT der Koeffizienten, in Zeichen Inh(f ) ) und den verbleibenden primitiven Anteil pA(f ) := f / Inh(f ) zerlegen. Der Inhalt und somit auch der primitive Anteil eines Polynoms ist wie der ggT nur bis auf Einheiten bestimmt. Elemente a und b eines Integrit¨atsringes heißen assoziiert, wenn es eine Einheit e ∈ R mit a = e · b gibt. Da das u ur ¨ ahnliche Polynome vergeben ¨bliche Symbol ∼ hier bereits f¨ ist, wird hier a b f¨ ur assoziierte Elemente geschrieben. Assoziierte Elemente in R[x] sind ¨ ahnlich, die Umkehrung ist i.Allg. falsch. Das Polynom f heißt primitiv, wenn Inh(f ) eine Einheit in R ist. 2.4.6 Hilfssatz: ideal.
Ist P ⊆ R ein Primideal, so ist P [x] ⊆ R[x] ein Prim-
Beweis: F¨ ur jedes Ideal I von R ist trivialerweise I[x] ein Ideal von R[x] . Es bleibt also nur dass P [x] wirklich prim ist. Sind f (x) = m n zu zeigen, i j f x , g(x) = g x ∈ R[x] Polynome mit f · g ∈ P [x] , aber i=0 i j=0 j f, g ∈ P [x] , so gibt es Koeffizienten von f und g , die nicht in P sind. Sind k und die kleinsten Indizes von Koeffizienten mit dieser Eigenschaft, so ist der Koeffizient von xk+ in f · g gleich (f0 gk+ + f1 gk+−1 + . . . fk−1 g+1 ) + fk g + (fk+1 g−1 + . . . fk+ g0 ). Die Klammerausdr¨ ucke liegen in P , der Ausdruck fk g nicht. Somit ist der Koeffizient von xk+ in f · g nicht in P , also f · g ∈ P [x] . 2.4.7 Hilfssatz: Sind f und g zwei von Null verschiedene primitive Polynome aus R[x] , so ist auch das Produkt f · g primitiv.
2.4 Ideale
29
Beweis: Nimmt man das Gegenteil der Behauptung an, so ist Inh(f · g) keine Einheit und somit eindeutig in Primelemente zerlegbar (R ist faktoriell vorausgesetzt). Ist p eines dieser Primelemente, so sind alle Koeffizienten von f · g Vielfache dieses p , liegen also in dem von p erzeugten Ideal p von R , d.h. f · g ∈ p[x] . Da nach dem vorhergehenden Hilfssatz p[x] ein Primideal von R[x] ist, folgt f ∈ p[x] oder g ∈ p[x] , was ein Widerspruch zur Primitivit¨ at von f und g ist. 2.4.8 Satz: (Lemma von Gauß) Es seien f und g von Null verschiedene Polynome aus R[x] . Dann gilt Inh(f · g) Inh(f ) · Inh(g) . (2.4) Beweis: Es gilt f · g = pA(f ) · Inh(f ) · pA(g) · Inh(g) . Da f¨ ur r ∈ R und f ∈ R[x] gilt Inh(rf ) r Inh(f ) , f¨ uhrt beidseitige Berechnung des Inhalts auf Inh(f · g) Inh(f ) · Inh(g) · Inh(pA(f ) pA(g)) . Da mit pA(f ) und pA(g) nach dem vorhergehenden Hilfssatz auch das Produkt primitiv ist, folgt Inh(pA(f ) pA(g)) ∈ R∗ und somit die Behauptung. Sind f und g ¨ahnlich, so gibt es a, b ∈ R \ {0} mit af = bg . Es folgt a · Inh(f ) Inh(af ) = Inh(bg) b · Inh(g) . Da andererseits auch a · pA(f ) Inh(f ) = b · pA(g) Inh(g) gilt, folgt pA(f ) pA(g) , oder in Worten: Die primitiven Anteile ¨ahnlicher Polynome sind assoziiert. 2.4.9 Aufgaben:
Es seien R ein kommutativer Ring mit 1 und I und J endlich erzeugte Ideale von R , etwa I = f1 , . . . , fr und J = g1 , . . . , gs . Man definiert I + J := {f + g | f ∈ I, g ∈ J} , I · J := f · g | f ∈ I, g ∈ J , √ I := {f | ∃ m ∈ : f m ∈ I} . I ∩ J := {f | f ∈ I ∧ f ∈ J} ,
N
Zeigen Sie: √ a) I + J , I · J , I ∩ J und I sind Ideale von R . b) I + J ist das kleinste Ideal von R , das I und J enth¨ alt. Es gilt I + J = f1 , . . . , fr , g1 , . . . , gs . c)
I · J = fi gj | 1 ≤ i ≤ r, 1 ≤ j ≤ s .
30
2 Grundlagen
d)
e) f)
Es sei R = R[x] der Ring der formalen Polynome in x u ¨ber R . F¨ ur h(x) ∈ R[x] bezeichne hI das Produktideal von h und f1 , . . . , fr in R . Dann gilt: I ∩ J = xI + (1 − x)J ∩ R . √ √ √ I ∩J = I ∩ J . IJ ⊆ I ∩ J (es gibt F¨ alle mit ).
2.5 Resultanten 2.5.1 Definition: Ring mit 1, n m Es seien R ein kommutativer f (x) = i=0 fi xi und g(x) = i=0 gi xi ∈ R[x] mit fm = 0 = gn . Die Sylvester-Matrix M (f, g) dieser beiden Polynome ist ⎛ ⎞ fm fm−1 fm−2
···
fm fm−1 fm−2 ⎜ ⎜ .. ⎜ . ⎜ ⎜ .. ⎜ . ⎜ ⎜ ⎜ ⎜ gn gn−1 · · · g0 ⎜ M (f, g) = ⎜ gn gn−1 · · · ⎜ .. ⎜ . ⎜ ⎜ .. ⎜ . ⎜ ⎜ ⎜ ⎜ ⎝
f1 ···
f0 f1
f0 ..
. ..
fm fm−1 fm−2
···
. f1
g0 ..
. ..
..
. ..
. ..
. ..
. gn
⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ f0 ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠
. gn−1 · · · g0
( ∈ R(m+n)×(m+n) ). Die Determinante dieser Matrix heißt die Resultante von f und g , in Zeichen res(f, g) := det(M ) . Aus den Rechenregeln f¨ ur Determinanten folgt sofort res(f , g) = (−1)mn res(g , f ) , res(af , g) = an res(f , g) (a ∈ R). F¨ ur m = 0 , d.h. f = a ∈ R gilt insbesondere res(a, g) = an F¨ ur den n¨achsten Satz werden die folgenden Polynome eingef¨ uhrt: pm (x) :=
m i=1
(x − αi ) =
m
(m) i
pi
x .
i=0
ater die Rolle von Wurzeln Die αi sind dabei neue Unbestimmte, die sp¨ (m) aus einem Erweiterungsk¨ orper u ¨bernehmen sollen. Die Koeffizienten pi in der ausmultiplizierten Form sind bis auf die Vorzeichen die bekannten elementarsymmetrischen Funktionen in den αi .
2.5 Resultanten
31
Wegen pm−1 (x) :=
m−1
(x − αi ) =
m−1
i=1
(m−1) i
pi
x
i=0
gilt pm (x) =
m
(m) i
x = (x − αm )pm−1 (x) =
pi
i=0 (m−1)
= −αm p0 (m) pi (m) p0
= =
+
m−1
(m−1)
pi−1
i=1 (m−1) (m−1) pi−1 − αm pi (m−1) , p(m) −αm p0 m =
(m−1)
− αm pi
(m−1)
xi + pm−1 xm ⇒
1≤i≤m−1 (m−1)
pm−1 = 1
2.5.2 Satz: Es sei R ein Integrit¨atsring. Mit den oben eingef¨ uhrten Bezeichnungen gilt dann: res(pm (x) , g(x)) = g(αm ) · res(pm−1 (x) , g(x)) Beweis: Man betrachtet die Sylvester-Matrix M1 := M (pm , g) . In dieser m+n−i Matrix addiert man nun f¨ ur i = 1, . . . , m + n − 1 das αm -fache der i . Spalte zur letzten Spalte. Damit bekommt die letzte Spalte die Gestalt m+1 i=1
t
m+n m+n−i αm gn+1−i
,... ,
i=1
n−1 αm
=
(m)
m+n−i αm pm+n−i ,
i=n
n+1
m+n (m)
m+n−i αm pm+1−i , . . . ,
m+n−i αm gm+n−i
=
i=m m
(m) i αm pi
,...,
0 αm
i=0
m i=0
(m) i αm pi
,
m−1 αm
n
i αm gi
,...
i=0
0 , αm
t
n
t i αm gi
i=0
n−1 0 m−1 0 = αm pm (αm ) , . . . , αm pm (αm ) , αm g(αm ) , . . . , αm g(αm )
Wegen pm (αm ) = 0 kann man also den Faktor g(αm ) aus der letzten Spalte herausziehen und erh¨ alt: res(pm (x) , g(x)) = g(αm ) · det(M2 )
(2.5)
wobei M2 die Matrix ist, deren erste m+n−1 Spalten identisch mit denen von M1 sind mit der neuen letzten Spalte m−1 m−2 0 t (0 , . . . , 0, αm , αm , . . . , αm ) . n
32
2 Grundlagen
Nun kann man man beide Seiten von (2.5) als Polynome in αm auffas(m) von pm (x) sind linear in αm : sen: Die Koeffizienten pi (m)
pm
(m) pm−2
(m)
= 1
pm−1 =
= α1 α2 + α1 α3 + . . . + αm−1 αm
(m) p0
···
=
−(α1 + α2 + . . . + αm ) (−1)m α1 α2 · · · αm
Dies betrifft die ersten n Zeilen von M1 . In den weiteren m Zeilen kommt αm nicht vor. Damit sieht man degαm (res(pm (x) , g(x)) ≤ n . Auf der rechten Seite von (2.5) ist aber bereits degαm (g(αm )) = n woraus folgt, dass det(M2 ) die Variable αm gar nicht enth¨ alt (F¨ ur diesen Schluss braucht man die Nullteilerfreiheit von R ). Das heißt det(M2 ) = det(M2 )|αm =0 . Damit wird die letzte Spalte von M2 zu dem Einheitsvektor (0 , . . . , 0 , 1)t und man kann außerdem die Koeffizienten von pm (x) entsprechend der Vor¨ uberlegung durch die Koeffizienten von pm−1 (x) wie folgt ersetzen: (m)
p0
(m)
−→ 0 , pi
(m−1)
−→ pi−1
(m−1)
f¨ ur 0 < i < m , p(m) m = pm−1 = 1
Damit zeigt Entwicklung von der Determinante nach der letzten Spalte zusammen mit (2.5) die Behauptung. m 2.5.3 Satz: Es sei f (x) = fm i=1 (x − αi ) ∈ R[α1 , . . . , αm ][x] (fm = 0) mit einem Integrit¨atsring R und g(x) vom Grad n . Dann gilt: n res(f (x) , g(x)) = fm
m
g(αi ) .
i=1
Beweis: Der Beweis wird durch Induktion nach m gef¨ uhrt: F¨ ur m = 0 ist f (x) = f0 ∈ R und damit nach Vorbemerkung res(f , g) = f0n = f0n
0
g(αi )
i=1
Es sei also m > 0 . Dann ist nach Vorbemerkung und Satz 2.5.2 res(f , g) = res(fm
m
n (x − αi ) , g) = fm res(
i=1 n g(αm ) res( = fm
m
2.5.2 (x − αi ) , g) =
i=1 m−1
Ind.-vor. (x − αi ) , g) =
i=1 n g(αm ) = fm
m−1 i=1
n g(αi ) = fm
m i=1
g(αi )
2.5 Resultanten
2.5.4 Satz: gilt:
33
Es seien R nullteilerfrei und f (x) , g(x) ∈ R[x] \ {0} . Dann res(f (x), g(x)) = 0 ⇐⇒ deg(ggT(f (x) , g(x))) > 0 .
Der ggT , der i.Allg. in R[x] nicht existiert, ist dabei ein Element aus K[x] , wobei K der Quotientenk¨orper von R sei. Beweis: Sind f oder g von Null verschiedene Konstanten aus R , so ist res(f, g) eine Potenz dieser Konstanten, also insbesondere von Null verschieden, und deg(ggT(f, g)) = 0 , der Satz also erf¨ ullt. Es sei also deg(f ) ≥ deg(g) > 0 . Nun sei p1 (x) , p2 (x) , . . . , pk (x) die Kette von Polynomen, die man erh¨ alt, wenn man den ggT von f =: p1 und g =: p2 mit dem euklidischen Algorithmus berechnet, also p1 (x) = q1 (x) p2 (x) + p3 (x) .. . pk−2 (x) = qk−2 (x) pk−1 (x) + pk (x) pk−1 (x) = qk−1 (x) pk (x) + pk+1 (x)
deg p3 < deg p2 deg pk < deg pk−1 pk+1 = 0
und damit pk = ggT(f , g) . Weiterhin sei ni := deg(pi ) , 1 ≤ i ≤ k und LK(p(x)) bezeichne den Leitkoeffizienten des Polynoms p(x) . Im Zerf¨ allungsk¨orper L von pi+1 u ¨ber K seien α1 , . . . , αni+1 die Wurzeln von pi+1 . Dann gilt: 2.5.3 res(pi , pi+1 ) = (−1)ni ni+1 res(pi+1 , qi pi+1 + pi+2 ) = ⎡ ⎤ ni+1 ⎣qi (αj ) pi+1 (αj ) +pi+2 (αj )⎦ = (−1)ni ni+1 LK(pi+1 )ni j=1 =0
ni+1
= (−1)ni ni+1 LK(pi+1 )ni −ni+2 LK(pi+1 )ni+2
2.5.3 pi+2 (αj ) =
j=1
= (−1)
ni ni+1
ni −ni+2
LK(pi+1 )
res(pi+1 , pi+2 )
Rekursive Anwendung dieser Formel auf res(p1 , p2 ) zeigt: res(p1 , p2 ) = (−1)n1 n2 LK(p2 )n1 −n3 res(p2 , p3 ) = = (−1)n1 n2 LK(p2 )n1 −n3 (−1)n2 n3 LK(p3 )n2 −n4 res(p3 , p4 ) = .. . k−2 (−1)ni ni+1 LK(pi+1 )ni −ni+2 res(pk−1 , pk ) =
i=1
=0
34
2 Grundlagen
Ist also nk = deg(pk ) = deg(ggT(f , g)) = 0 , so ist res(pk−1 , pk ) = LK(pk )nk−1 = 0 und damit liest man an obiger Gleichung ab: res(p1 , p2 ) = res(f , g) = 0 . Ist dagegen deg(ggT(f, g)) > 0 , so wendet man obige Umformung nochmals an und liest aus k−1 res(p1 , p2 ) = (−1)ni ni+1 LK(pi+1 )ni −ni+2 res(pk , pk+1 ) i=1
wegen pk+1 = 0 ab, dass auch res(p1 , p2 ) = res(f , g) = 0 ist. 2.5.5 Aufgaben:
1.) F¨ ur die gegebenen Polynome f und g berechne man jeweils res(f, g) : g(x) = 2x5 + x2 + 2 ∈ 3 [x] , a) f (x) = x3 + x + 1 , 4 3 b) f (x) = x + x + 1 , g(x) = x4 + x2 + x + 1 ∈ 2 [x] . m n 2.) Es seien R := K[x1 , . . . , xr−1 ] , f (xr ) = i=0 fi xir , g(xr ) = i=0 gi xir ∈ R[xr ] mit fm = 0 = gn und α1 , . . . , αr−1 Elemente eines Erweiterungsk¨ orpers L von K . F¨ ur h ∈ R[xr ] sei h := h(α1 , . . . , αr−1 , xr ) .
Z
Z
a) Zeigen Sie, dass i.Allg. resxr (f , g) = resxr (f, g) ist. Wann gilt hier sicher die Gleichheit ? b) Jetzt seien fm = 0 = gn . Zeigen Sie: f und g haben genau dann die gemeinsame Wurzel (α1 , . . . , αr ) mit αr ∈ K , wenn resxr (f, g) = 0 ist. 3.) Mit Hilfe von Aufgabe 2 berechne man alle gemeinsamen komplexen Nullstellen der Polynome f (x, y) = x(y 2 − x)2 + y 5 4
3
2
g(x, y) = y + y − x
und
aus
Q[x, y].
Q
Q[α] ∼=
4.) Es sei α algebraisch u mit dem Minimalpolynom a(y) , ¨ber [y]/a(y) . F¨ ur ein Polynom b(y) mit deg b < deg a sei
Q
p(x) := resy (x − b(y), a(y)) . a) Man zeige, dass das Minimalpolynom von ler von p(xm ) ist. b) Man berechne das Minimalpolynom von
"
m
"
b(α) u ¨ber
√ 9+4 2 u ¨ber
Q
ein Tei-
Q.
2.6 Partialbruchzerlegungen z(x) Es sei F ein K¨ orper und f (x) = n(x) ∈ F (x) eine rationale Funktion mit z(x) , n(x) ∈ F [x] und deg z < deg n . Gegeben sei eine Zerlegung k n(x) = i=1 ni (x) des Nenners in paarweise teilerfremde (nicht notwendig irreduzible) Polynome n1 , . . . , nk ∈ F [x] .
2.6 Partialbruchzerlegungen
35
k Es sei n2 := i=2 ni . Wegen ggT(n1 , n2 ) = 1 und kgV(n1 , n2 ) = n gibt es nach Satz 2.4.2 Polynome w1 , w2 ∈ F [x] mit w2 n1 + w1 n2 = z
und
deg w2 < deg n − deg n1 = deg n2 , deg w1 < deg n − deg n2 = deg n1 .
(2.6)
Setzt man w2 und w1 als Polynome mit unbekannten Koeffizienten vom jeweiligen Grad in (2.6) ein, so erh¨ alt man ein lineares Gleichungssystem, dessen Koeffizientenmatrix gerade die im vorhergehenden Kapitel eingef¨ uhrte Sylvestermatrix (bzw. deren Transponierte) von n1 und n2 ist. Da n1 und n2 teilerfremd sind, ist nach Satz 2.5.4 die Determinante dieser Matrix ( = resx (n1 , n2 ) ) von Null verschieden, d.h. die L¨ osung w1 , w2 mit der genannten Gradbeschr¨ ankung ist sogar eindeutig. Dies f¨ uhrt auf die ebenfalls eindeutige Zerlegung f=
z w2 w1 w n1 + w1 n2 = + . = 2 n n1 n2 n2 n1
(2.7)
Falls die Polynome z und n am Anfang teilerfremd waren, sind w2 und n2 wieder teilerfremd, denn g¨ abe es einen gemeinsamen Teiler, so w¨ are der auch Teiler von w2 n1 + w1 n2 und von n1 n2 , also auch von z und n . w2 n2
erf¨ ullt sinngem¨ aß die anf¨ anglich an nz gestellten Anfork derungen. Mit der vorliegenden Faktorisierung n2 = i=2 ni des Nenners kann man also (2.7) weiter zerlegen und erh¨alt die zu der gegebenen Fakk i torisierung von n eindeutige Partialbruchzerlegung f (x) = i=1 w ni mit deg wi < deg ni f¨ ur i = 1, 2, . . . , k . Diese Zerlegung angt auch nicht von k vi h¨ der verwendeten Reihenfolge ab, denn w¨ are eine andere Zerlegung i=1 ni mit deg vi < deg ni , so zeigt Multiplikation mit dem Hauptnenner und Einsetzen der Wurzeln eines festen ni aus einem Erweiterungsk¨ orper, dass jeweils vi = wi ist. Somit ist gezeigt: k 2.6.1 Satz: Zu jedem n(x) = i=1 ni (x) ∈ F [x] mit paarweise teilerfremden Faktoren ni (x) ∈ F [x] und jedem z(x) ∈ F [x] mit deg z < deg n gibt es eindeutig bestimmte wi (x) ∈ F [x] mit deg wi < deg ni (i = 1, . . . , k) und Der Bruch
wi (x) z(x) = . k n (x) i=1 i ni (x) k
i=1
origen PartialMan kann also von der zu der Faktorisierung n = ni geh¨ z(x) bruchzerlegung der rationalen Funktion f (x) = n(x) ∈ F (x) sprechen. 2.6.2 Beispiel: Es sei f (x) =
x8
+
5x7
+
4x6
x3 − 3x + 1 ∈ Q(x) . − 3x4 − 15x3 − 14x2 − 10x − 8
36
2 Grundlagen
¨ Z¨ahler und Nenner sind bereits optimal durchgek¨ urzt. Uber den komplexen Zahlen lautet die Faktorisierung des Nennerpolynoms √ √ n(x) = (x + 1)(x + 4)(x − 2)(x + 2)(x − i)2 (x + i)2 . Die zu dieser Faktorisierung geh¨ orige eindeutige Partialbruchzerlegung von f (x) gem¨ aß Satz 2.6.1 lautet 1 1 1 1 1 11 2√ √ + f (x) = − 2 + + − 4 x + 1 238 x + 4 252 63 x− 2 1 2√ 1 (97 + 14i)x − (37 + 148i) 11 √ + 2 − + + 252 63 (x − i)2 x + 2 1224 1 (−97 + 14i)x + (37 − 148i) . − 1224 (x + i)2 F¨ ur die reelle Partialbruchzerlegung geht man von der vollst¨ andigen reellen Faktorisierung √ √ n(x) = (x + 1)(x + 4)(x − 2)(x + 2)(x2 + 1)2 aus. Diese f¨ uhrt auf die zugeh¨ orige eindeutige Partialbruchzerlegung 1 1 1 1 1 11 2√ √ + f (x) = − 2 + + − 4 x + 1 238 x + 4 252 63 x− 2 1 2√ 11 1 97x3 − 65x2 + 199x + 37 √ + . 2 + + 252 63 (x2 + 1)2 x + 2 612 Eine exakte reelle oder komplexe Faktorisierung des Nennerpolynoms ist i.Allg. nicht zu bekommen, eine rationale Zerlegung dagegen sehr wohl (siehe dazu das Kapitel zur Polynomfaktorisierung). Die rationale Faktorisierung des obigen Nennerpolynoms lautet n(x) = (x + 1)(x + 4)(x2 − 2)(x2 + 1)2 Dies f¨ uhrt auf die rationale Partialbruchzerlegung 1 1 1 1 1 11x − 16 + + + 4 x + 1 238 x + 4 126 x2 − 2 1 97x3 − 65x2 + 199x + 37 + . 612 (x2 + 1)2
f (x) = −
F¨ ur die Summation oder Integration rationaler Funktionen braucht man keine vollst¨ andige rationale Partialbruchzerlegung, sondern so genannte quadratfreie oder shiftfreie Zerlegungen (siehe die entsprechenden Kapitel). Die quadratfreie rationale Zerlegung des obigen Nennerpolynoms ist etwa
2.6 Partialbruchzerlegungen
37
n(x) = [(x + 1)(x + 4)(x2 − 2)]1 · [x2 + 1]2 = [x4 + 5x3 + 2x2 − 10x − 8] · [x2 + 1]2 (keines der Polynome in den eckigen Klammern enth¨ alt einen mehrfachen Faktor in Q[x] ), woraus man die quadratfreie Partialbruchzerlegung f (x) = −
1 97x3 + 420x2 − 126x − 908 1 97x3 − 65x2 + 199x + 37 + 612 x4 + 5x3 + 2x2 − 10x − 8 612 (x2 + 1)2
erh¨alt. F¨ ur die shiftfreie Zerlegung muss man die gegebene rationale Funktion u.U. geeignet erweitern, hier mit (x + 2)(x + 3) . Die erweiterte Darstellung ist f (x) =
[(x2
x5 + 5x4 + 3x3 − 14x2 − 13x + 6 − 2)(x2 + 1)2 ] · [(x + 1)(x + 2)(x + 3)(x + 4)]
(In den eckigen Klammern sind alle Shifts eines Teilers des Nenners zusammengefasst, verschiedene eckige Klammern enthalten keine Shifts voneinander und sind nat¨ urlich teilerfremd.) Dies f¨ uhrt auf die shiftfreie Partialbruchzerlegung 1 117x5 − 111x4 + 87x3 + 9x2 − 268x − 118 − 476 x6 − 3x2 − 2 3 (39x + 158)(x + 2)(x + 3) − . 476 (x2 + 5x + 4)(x + 2)(x + 3)
f (x) =
k unglichen NenDa die gegebene Faktorisierung n(x) = i=1 ni (x) des urspr¨ nerpolynoms nicht notwendig vollst¨ andig war, lassen sich m¨ oglicherweise einige ni noch weiter zerlegen in vi ni (x) = ni,j (x) (vi ∈ )
N
j=1
mit (nicht notwendig teilerfremden) Faktoren ni,j (x) ∈ F [x] (j = 1, . . . , vi ) . Diese Faktorisierung kann man nutzen, um die bisherige Zerlegung k wi (x) i=1
ni (x)
weiter in Partialbr¨ uche aufzuspalten. Ziel ist es dabei insbesondere, die Grade der beteiligten Z¨ ahlerpolynome noch etwas kleiner zu bekommen. Dies geschieht durch fortgesetzte Division mit Rest: (Z0 ) (Z1 )
wi = qi,0 · ni,vi + ri,0 mit deg ri,0 < deg ni,vi qi,0 = qi,1 · ni,vi −1 + ri,1 mit deg ri,1 < deg ni,vi −1 .. .. . .
38
2 Grundlagen
(Zvi −2 )
qi,vi −3 = qi,vi −2 · ni,2 + ri,vi −2 mit deg ri,vi −2 < deg ni,2
Einsetzen von (Z1 ) in (Z0 ) zeigt wi = qi,1 · ni,vi · ni,vi −1 + ri,1 · ni,vi + ri,0 . Einsetzen von (Z2 ) f¨ uhrt jetzt auf wi = qi,2
2
ni,vi −j +
j=0
2
ri,
=0
−1
ni,vi −j .
j=0
alt man also Durch fortgesetztes Einsetzen bis zu (Zvi −2 ) erh¨ wi = qi,vi −2
v i −2
v i −2
ni,vi −j +
j=0
=0
ri,
−1
ni,vi −j .
j=0
Mit dieser Zerlegung des Z¨ ahlers folgt v i −2 ri, qi,vi −2 wi = + . vi − ni ni,1 j=1 ni,j =0
vi −2 vi ist ni,vi −j < deg n Wegen deg wi = deg qi,vi −2 j=0 j=1 i,j deg qi,vi −2 < deg ni,1 ; aus (Z1 )−(Zvi −2 ) ist bereits bekannt, dass deg ri, < deg ni,vi − (f¨ ur = 0, . . . , vi − 2 ). ur = Benennt man um in wi,1 := qi,vi −2 und wi, := ri,vi − f¨ 2, . . . , vi , so ist gezeigt, dass es zu viwi n Polynome wi, mit deg wi, <
j=1
deg ni, gibt, so dass
w vi i j=1
ni,j
=
vi =1
i,j
wi, . j=1 ni,j
Wegen der Eindeutigkeit der qi,j und ri,j in (Z0 ) − (Zvi −2 ) ist diese Zerlegung zu der gegebenen Faktorisierung von ni eindeutig. In Kombination mit dem vorhergehenden Satz ist damit gezeigt: k 2.6.3 Satz: Zu jedem n(x) = i=1 ni (x) ∈ F [x] mit paarweise teilervi fremden Faktoren ni (x) = j=1 ni,j (x) ∈ F [x], mit vi ∈ und ni,j (x) ∈ F [x] und jedem z(x) ∈ F [x] mit deg z < deg n gibt es eindeutig bestimmte Polynome wi, (x) ∈ F [x] mit deg wi, < deg ni, und vi k wi, z(x) = . v k i i=1 =1 ni,j (x) ni,j
N
i=1 j=1
j=1
Zur Unterscheidung von der im vorhergehenden Satz betrachte ten Partialbruchzerlegung zu n = ni spricht man hier von der vollst¨andigen Partialbruchzerlegung zur Faktorisierung n = ni,j .
2.7 Einige Schranken
39
Bei der u ¨blichen Partialbruchzerlegung u ¨ber C sind die ni,j Linearfaktoren und die ni Produkte gleicher Linearfaktoren gem¨ aß ihrer Vielfachheit in n , also ni = (fi )vi mit fi = ni,1 = . . . = ni,vi . Die Zerlegung eines i Summanden w ni der Partialbruchzerlegung ist dann also i wi wi, vi = fi fi
v
mit deg wi, < deg fi = 1 also wi, ∈ C .
=1
Bei Zerlegungen u ¨ber R kommen noch quadratische Faktoren entsprechend ihrer Vielfachheit hinzu. Bei einer Faktorisierung des Nennerpolynoms u onnen die irreduziblen Teiler dagegen beliebig großen Grad ¨ber Q k¨ haben. Etwas anders ist die Situation bei der erw¨ ahnten shiftfreien Partialbruchzerlegung. Dort hat man Nenner der Gestalt f (x − i) mit einem Polynom f (eben f und all seine in n enthaltenen Shifts). 2.6.4 Beispiel: (Fortsetzung von Beispiel 2.6.2) In der komplexen PBZ von f (x) kam etwa der folgende Summand vor: 1 (97 + 14i)x − (37 + 148i) 1224 (x − i)2 Einfache Division des Z¨ ahlers mit Rest durch x − i f¨ uhrt auf die vollst¨andige Zerlegung 1 97 + 14i 1 1+i . · − 1224 x−i 24 (x − i)2 In der shiftfreien Partialbruchzerlegung von f kam der Summand 39x3 + 353x2 + 1024x + 948 (x + 1)(x + 2)(x + 3)(x + 4) vor. Die vollst¨ andige Zerlegung dazu ist ( n1,1 = x + 4 , . . . ) 39 119 238 238 + + + . x+4 (x + 3)(x + 4) (x + 2)(x + 3)(x + 4) (x + 1)(x + 2)(x + 3)(x + 4)
2.7 Einige Schranken Es sei A = (ars )1≤r,s≤n ∈ Cn×n eine positiv definite hermitesche Matrix, t ur alle x ∈ Cn \ {0} . d.h. es gelte A = A und h(x) := xt · A · x > 0 f¨ Aus der Definition folgt insbesondere, dass die Diagonalelemente arr f¨ ur 1 ≤ r ≤ n von A positive reelle Zahlen sind.
40
2 Grundlagen
Nun betrachtet man die Diagonalmatrix D mit den Eintr¨ agen
√1 a11
,
und C := D · A · D = . Die Matrix C be..., schreibt die hermitesche Form h bez¨ uglich einer anderen Basis (Transformationsmatrix D ), ist also auch wieder hermitesch. Sind λ1 , . . . , λn die reellen positiven Eigenwerte von C , so gilt nach der Ungleichung zwischen dem arithmetischen und dem geometrischen Mittel n n λ1 + . . . + λn Spur(C) λ1 · . . . · λn ≤ ⇐⇒ det(C) ≤ . n n √1 ann
( √aarrrsass )1≤r,s≤n
t
Wegen det(C) = det(Dt · A · D) = det(D)2 · det(A) = (a11 · . . . · ann )−1 · det(A) und Spur(C) = n folgt also det(A) ≤ a11 · . . . · ann . Das Gleichheitszeichen in der Ungleichung zwischen dem arithmetischen und dem geometrischen Mittel wird genau dann angenommen, wenn λ1 = . . . = λn ist. Dies ist genau dann der Fall, wenn C skalar, d.h. ein Vielfaches der Einheitsmatrix ist. Dies ist wiederum genau dann der Fall, wenn A diagonal ist. Damit ist der folgende Satz bewiesen. 2.7.1 Satz: Es sei A = (ars )1≤r,s≤n ∈ tesche Matrix. Dann gilt
Cn×n
eine positiv definite hermi-
det(A) ≤ a11 · . . . · ann , wobei das Gleichheitszeichen genau dann angenommen wird, wenn A eine Diagonalmatrix ist. 2.7.2 Satz: (Ungleichung von Hadamard) Es sei A = (ars )1≤r,s≤n eine nichtsingul¨are komplexe (n × n) -Matrix. Dann gilt 2
|det(A)| ≤
n n
|akr |2
r=1 k=1
wobei das Gleichheitszeichen genau dann angenommen wird, wenn die Spalten von A orthogonal (bzgl. dem kanonischen Skalarprodukt auf Cn ) sind. Beweis: Es sei B = At · A = (brs )1≤r,s≤n die so genannte Grammatrix der t t t t tt Matrix A . Wegen B = At · A = A · A = At · A = At · A = B ist B hermitesch. Wegen xt · B · x = xt · At · A · x = |Ax|2 ist B positiv definit. Mit dem vorhergehenden Satz folgt also | det(A)|2 = det(At ) det(A) = det(B) ≤
n r=1
brr =
n n
|akr |2 .
r=1 k=1
Gleichheit liegt vor, wenn B diagonal ist, d.h. wenn die Spalten von A orthogonal sind.
2.7 Einige Schranken
41
Die folgenden Schranken betreffen Wurzeln von Polynomen und werden bei deren Isolation und bei der Faktorisierung von Polynomen ben¨ otigt. 2.7.3 Satz: (Ungleichung von Cauchy) Es seien n ≥ 1, pn ∈ C \ {0}, n p(x) = i=0 pi xi ∈ C[x] und x1 ∈ C eine Wurzel von p(x) . Dann gilt max{|p0 |, . . . , |pn−1 |} |x1 | < 1 + . |pn | Beweis: Ist |x1 | eine Wurzel von p(x) mit |x1 | ≤ 1 , so ist der Satz trivialerweise richtig. Es seien also ab jetzt |x1 | > 1 und m := max{|p0 |, . . . , |pn−1 |} . Wegen − . . . − p1 x1 − p0 p(x1 ) = 0 ⇐⇒ pn xn1 = −pn−1 xn−1 1 folgt
+ . . . + p1 x1 + p0 | ≤ |pn ||x1 |n = |pn−1 xn−1 1 ≤ |pn−1 ||x1 |n−1 + . . . + |p1 ||x1 | + |p0 | ≤ ≤ m |x1 |n−1 + . . . + |x1 | + 1 = |x1 |n − 1 |x1 |n <m· =m· |x1 | − 1 |x1 | − 1
und damit
m m ⇐⇒ |x1 | < 1 + . |x1 | − 1 |pn | n n Betrachtet man das Polynom xn · p( x1 ) = i=0 pi xn−i = i=0 pn−i xi mit der Wurzel x11 , so liefert der vorhergehende Satz die folgende untere Schranke. n Folgerung: Es seien n ≥ 1 , p0 ∈ C \ {0} , p(x) = i=0 pi xi ∈ C[x] und x1 ∈ C eine Wurzel von p(x) . Dann gilt |pn | <
|x1 | > 2.7.4 Hilfssatz:
|p0 | . |p0 | + max{|p1 |, . . . , |pn |}
Es seien p(x) =
n i=0
pi xi ∈ C[x] , c ∈ C . Dann gilt
(x − c)p(x)2 = (cx − 1)p(x)2 ∗ Beweis: Setzt man p−1 = pn+1 = 0 , so ist (x − c)p(x) =
n+1
(pi−1 − cpi )xi , (cx − 1)p(x) =
i=0
∗
r-Norm des Koeffizientenvektors xr :=
n+1
(cpi−1 − pi )xi
i=0
n i=1
|xi |r
r1
, x∞ := max1≤i≤n |xi | .
42
2 Grundlagen
und damit 2
(x − c)p(x)2 =
n+1
(pi−1 − cpi )(pi−1 − cpi ) =
i=0
=
n+1
pi−1 pi−1 +
i=0
=
pi p i +
i=0
=
(cpi )(cpi ) −
i=0
n+1
n+1
n+1
n+1
n+1
cpi−1 pi + cpi−1 pi =
cpi−1 pi + cpi−1 pi =
i=0
(cpi−1 )(cpi−1 ) −
i=0
n+1 i=0
2
(cpi−1 − pi )(cpi−1 − pi ) = (cx − 1)p(x)2
i=0
2.7.5 Satz: (Ungleichung von Landau) Es seien n ≥ 1 , pn ∈ C \ {0} , n p(x) = i=0 pi xi ∈ C[x] und x1 , . . . , xn ∈ C alle Wurzeln von p(x) . Dann gilt n |pn | max{1, |xj |} ≤ p(x)2 . j=1
Beweis: Der Einfachheit halber seien die Wurzeln x1 , . . . , xn ∈ C von p(x) gerade so sortiert, dass |x1 |, . . . , |xk | > 1 und |xk+1 |, . . . , |xn | ≤ 1 n k sind. Damit ist |pn | j=1 max{1, |xj |} = |pn | j=1 |xj | . Nun betrachtet man das Polynom q(x) := pn
k j=1
(xj x−1)
n
(x−xj ) = (xk x−1)·pn
k−1
(xj x−1)
j=1
j=k+1
n
(x−xj ).
j=k+1
Anwendung des Hilfssatzes zeigt nun # # # # k−1 n # # # q(x)2 = #(x − xk ) · pn (xj x − 1) (x − xj )# # = # # j=1 j=k+1 2 # # # # k−1 n # # (xj x − 1) (x − xj )# =# # . #pn # # j=1 j=k 2
Wiederholt man dies jetzt noch k − 1 -mal, so erh¨ alt man # # # # n # # # (x − xj )# q(x)2 = #pn # = p(x)2 . # j=1 # 2
2 k 2 folgt die Behauptung. Mit q(x)2 ≥ | LK(q(x))|2 = |pn | j=1 |xj |
2.7 Einige Schranken
43
2.7.6 Satz: (Ungleichungen von Mignotte) Es seien n ≥ 1 , pn ∈ C \{0} , n m p(x) = i=0 pi xi ∈ C[x] und q(x) = i=0 qi xi ∈ C[x] mit qm = 0 ein Teiler von p(x) . Dann gilt m qm |qj | ≤ ur 0 ≤ j ≤ m bzw. p(x)2 f¨ j pn m qm max{|q0 |, . . . , |qm |} ≤ $ m % p(x)2 und pn 2 qm q(x)1 ≤ 2m p(x)2 pn Beweis: Es seien wieder die Wurzeln x1 , . . . , xn ∈ C von p(x) so sortiert, . . . , |xk | > 1 und |xk+1 |, . . . , |xn | ≤ 1 sind. Wegen q(x) = m dassi |x1 |, m q x = q m i=0 i j=1 (x − xj ) mit {1 , . . . , m } ⊆ {1, . . . , n} gilt qj = (−1)m−j qm
m−j
1≤k(1)<...
i=1
) St¨uck
m m−j
(
xk(i)
k |.|≤
i=1
k m |qm | ⇒ |qj | ≤ |xi |. j i=1
|xi |
Mit der Ungleichung von Landau folgt nun k m qm m qm · |pn | · p(x)2 , |qj | ≤ |xi | ≤ j pn j pn i=1
woraus man auch die zweite Ungleichung sofort ablesen kann. Aufsummieren u ¨ber j zeigt schließlich qm q(x)1 ≤ 2m · p(x)2 . pn Die angegebenen Schranken sind nicht mehr deutlich zu verbessern. Um dies einzusehen, werden wir zeigen, dass es Polynome p(x) gibt, die nur die Koeffizienten 0 und ±1 und deshalb auch eine sehr kleine 2-Norm m haben, die aber Teiler der Form q(x)m= (x − 1) mit Koeffizienten qj mit m |qj | = j und der großen 1-Norm 2 besitzen. Da q(x) = (x − 1)m ein Teiler von p(x) sein soll, muss dieses Polynom die m -fache Nullstelle 1 besitzen, es muss also gelten: n i (m−1) pi = 0 f¨ ur 0 ≤ t ≤ m − 1. (1) = 0 ⇐⇒ p(1) = p (1) = . . . = p t i=0 Die Frage ist nun, ob das u osbar ist und wie ¨berhaupt mit pi ∈ {−1, 0, 1} l¨ groß daf¨ ur der Grad n von p(x) zu w¨ ahlen ist.
44
2 Grundlagen
Dazu betrachtet man die Menge P aller Polynome vom Grad ≤ n mit Koeffizienten 0 oder 1 und die Abbildung f mit ⎧ P → m 0 ⎪ ⎨ n n n n i f: i i i ⎪ ri , ri , . . . , ri ri x → ⎩ 0 1 m−1 i=0 i=0 i=0 i=0
N
Es ist |P | = 2n+1 . Wegen n n n+1 i i ≤ (n + 1)t+1 ri ≤ = t + 1 t t i=0 i=0 m(m+1)
ist |f (P )| ≤ (n + 1)1+2+...+m = (n + 1) 2 , d.h. es gibt ein n mit |P | > |f (P )| . F¨ ur solch ein n gibt es zwei Polynome aus P mit dem gleichen Bild unter der Abbildung f . Die Differenz p(x) dieser beiden Polynome hat Koeffizienten pi ∈ {−1, 0, 1} und wird von f auf den NullVektor abgebildet, ist also das gesuchte Vielfache von (x − 1)m . 2.7.7 Beispiel: Die Polynome p1 (x) = x6 − x5 − x4 + x2 + x − 1 und p2 (x) = x8 − x7 − x5 + x3 + x − 1 wurden wie soeben beschrieben √ bestimmt. Beide haben die relativ kleine 2-Norm 6 und besitzen den Teiler q(x) = (x − 1)3 mit der großen 1-Norm 23 = 8 .
3 Rechnen mit homomorphen Bildern
3.1 Grundlegende Ideen Zur L¨osung algebraischer Probleme empfiehlt es sich oft, das Problem homomorph in andere algebraische Strukturen abzubilden, in denen sie deutlich einfacher zu l¨ osen sind und das Ergebnis dann in die urspr¨ ungliche Struktur zur¨ uck zu transformieren:
Dabei ist oft der Preis f¨ ur die einfachere L¨ osung in Bj , dass man f¨ ur die R¨ ucktransformation nach A mehrere L¨osungen in verschiedenen Bj braucht. H¨aufig ist die Struktur A ein Ring R (wieder kommutativ mit 1) und die Struktur Bj der Restklassenring R/Ij von R nach einem Ideal Ij . F¨ ur ein r ∈ R sei r := r + I ∈ R/I . Es sei V ⊂ R ein Vertretersystem f¨ ur R/I , d.h. V enthalte von jeder Nebenklasse r ∈ R/I genau ein Element. v : R → V sei die zugeh¨ orige kanonische Abbildung, die jedem r ∈ R seinen zugeh¨ origen Nebenklassenvertreter zuordnet., d.h. r ≡ s mod I ⇒ v(r) = v(s) .
46
3 Rechnen mit homomorphen Bildern
Definiert man nun auf V die Verkn¨ upfungen +v und ·v als r +v s := v(r + s) und r ·v s := v(r · s) f¨ ur r , s ∈ V , so ist
(V , +v , ·v ) ∼ = (R/I , + , ·)
und v ein Ring-Homomorphismus. Sehr oft ist die Wahl f¨ ur das Vertretersystem V sehr naheliegend und nat¨ urlich, wie etwa im Fall Z/m . Dort w¨ ahlt man h¨ aufig V = {0 , 1 , . . . , m − 1} . Die zugeh¨ orige Abbildung v ist dann v(r) = r mod m . Analog rechnet man im Fall endlicher K¨ orper Zp [x]/q(x) mit Vertretern minimalen Grades usw. Ist nun ein Problem in R zu l¨ osen, das Elemente r1 , r2 , . . . , rm ∈ R als Eingabe und Elemente s1 , s2 , . . . , s ∈ R als L¨ osung hat, so ist ein ¨ Ubergang von R nach R/I bzw. V nur dann sinnvoll, wenn der Homomorphismus v : R → V mit dem L¨ osungsverfahren kommutiert, d.h.
Ist das der Fall, so nennt man das Ideal I gl¨ ucklich, sonst ungl¨ ucklich. 3.1.1 Beispiel: Wegen 1 = ggT(x4 + 3x3 + 2x2 + 1 , x2 + 1) mod 3 = ggT(x4 + 3x3 + 2x2 + 1 mod 3 , x2 + 1 mod 3) = x2 + 1 ist 3 ein ungl¨ uckliches Ideal zur Berechnung dieses ggT. Das Ideal 5 dagegen w¨ are in diesem Falle gl¨ ucklich. Bei der Wahl des Ideals I gibt es nun zwei wichtige F¨ alle (im Folgenden wird ist nur von gl¨ ucklichen Idealen die Rede) (i) Ist si = v(si ) f¨ ur i = 1 , . . . , , d.h. liegen die L¨ osungen bereits von sich aus im Vertretersystem V von R/I , so spart man sich die R¨ ucktransformation. So ¨andert sich zum Beispiel beim vorhergehenden Beispiel nichts an der gesamten Rechnung, wenn man statt in Z in Z10 rechnet, da keiner der Koeffizienten beim Rechnen gr¨ oßer als 9 wird. Der Nach¨ teil ist klar: der Ubergang von R zu R/I bringt auch keine Vereinfachung.
3.2 Das Chinesische Restproblem
47
(ii)
Man ist eigentlich an Idealen interessiert, die die Rechnung vereinfachen. Im ggT-Beispiel etwa 2 , denn das beschr¨ ankt alle Koeffizienten auf 0 oder 1 . Dann ergibt sich aber das Problem der R¨ ucktransformation auf die L¨ osung in R . Ein bekanntes Beispiel f¨ ur solch ein Transformations-Verfahren aus der Analysis ist ist die Laplacetransformation zur L¨ osung von Differentialgleichungen. In der Computeralgebra wird dieses Verfahren insbesondere dazu ¨ genutzt um durch Ubergang auf endliche K¨ orper allzugroße Zahlen zu vermeiden und sch¨ one Algorithmen, wie etwa den Berlekamp-Algorithmus zu verwenden, oder um aus multivariaten Polynomen univariate Polynome zu machen. Wesentlich f¨ ur das Gelingen ist nat¨ urlich die Existenz einer effektiven R¨ ucktransformation. Die zwei meist gebrauchten R¨ ucktransformationen sind der Chinesische Restsatz und der Satz von Hensel. Der Chinesische Restsatz kann unter gewissen Umst¨ anden aus L¨ osungen in R/I1 , . . . , R/In eine L¨ osung in R/I1 ∩ . . . ∩ In berechnen. Man wird die Ideale also in diesem Falle so w¨ ahlen, dass I1 , . . . , In von der zweiten beschriebenen Sorte sind und I1 ∩ . . . ∩ In von der ersten Sorte. Im vorhergehenden Beispiel k¨ onnte man etwa den ggT in Z2 und in Z5 berechnen und damit den ggT in Z10 , der ja dem in Z gleich ist, bestimmen. Eine andere, oft effektivere Methode bietet der Satz von Hensel. Nach diesem Satz kann man eine L¨ osung modulo einem Ideal I t hochziehen“ ” oder liften“ zu einer L¨ osung modulo I t+1 oder, in einer verbesserten qua” dratischen Version sogar direkt auf I 2t . Man wird also bei einem I der zweiten Sorte starten und versuchen, so lange zu liften, bis man ein I k der ersten Sorte hat.
3.2 Das Chinesische Restproblem 3.2.1 Definition: Eine Menge {I1 , . . . , In } von Idealen in R heißt paarweise erzeugend, wenn Ij + Ik = R
∀j = k
ist. Eine unmittelbare Konsequenz dieser Definition ist, dass es f¨ ur (k) k) Elemente nj ∈ Ij und zwei solche Ideale Ij und Ik (j = (j)
(k)
nk ∈ Ik gibt mit nj
(j)
+ nk = 1 .
3.2.2 Beispiel: {3 , 5 , 14} ist paarweise erzeugend in Z , denn 3 , 5 und 14 sind paarweise teilerfremd, d.h. man kann jeweils mit dem erweiterten euklidischen Algorithmus geeignete Kombinationen berechnen, etwa: 2 · 3 − 5 = 1 = ggT(3, 5)
d.h.
48
3 Rechnen mit homomorphen Bildern (2)
6 ∈ I1 : = 3
und
(1) n2
= −5 ∈ I2 : = 5
usw.
n1 =
3.2.3 Satz: Es sei {I1 , . . . , In } eine Menge paarweise erzeugender Ideale von R und * n R → j=1 R/Ij Φ: u → (u + I1 , u + I2 , . . . , u + In ). Dann ist Φ ein Epimorphismus und Kern Φ = I1 ∩ . . . ∩ In . Beweis: Es ist klar, dass Φ ein Homomorphismus ist und dass Kern Φ die angegebene Gestalt hat. Es bleibt also noch zu zeigen, dass Φ surjektiv ist, d.h. dass f¨ ur beliebige u1 , u2 , . . . , un ∈ R ein u ∈ R existiert mit Φ(u) = (u1 + I1 , u2 + I2 , . . . , un + In ) ⇐⇒ ur j = 1 , . . . , n u ≡ uj mod Ij f¨ Dieses System von Kongruenzen heißt Chinesisches Restproblem (CRP). Es wird auf zwei verschiedene konstruktive Arten gel¨ ost, die beide als Algorithmus Anwendung finden. Wegen des engen Zusammenhangs zur Polynominterpolation nach Lagrange und Newton spricht man auch vonder Lagrangesche und Newtonsche L¨osung. (i) Lagrangesche L¨ osung F¨ ur k = 1 , . . . , n seien Lk :=
n
(k)
nj
∈R
j=1 j=k
(k)
mit den nj
∈ R wie oben definiert. Dann ist insbesondere Lk ≡ (k)
(j)
ur j = k und wegen nj = 1 − nk 0 mod Ij f¨ oder zusammen Lk ≡ δj,k mod Ij . Damit ist u :=
n
gilt Lk ≡ 1 mod Ik
ui Li
i=1
eine L¨osung des CRP. (ii) Newtonsche L¨ osung Ausgehend von der L¨ osung u(1) = u1 von u ≡ u1 mod I1 wird f¨ ur k = 3 , . . . , n + 1 rekursiv eine L¨ osung u(k−1) f¨ ur u ≡ uj mod Ij
j = 1,..., k − 1
konstruiert, u = u(n) ist dann eine L¨ osung des CRP.
3.2 Das Chinesische Restproblem (k)
Wieder werden die die nj
49
von vorhin verwendet. Es ist
u(k) = u(k−1) + (uk − u(k−1) )
k−1
(k)
nj
j=1
denn f¨ ur j = 1 , 2 , . . . , k − 1 folgt aus
k−1 =1
(k)
n
≡ 0 mod Ij dass
u(k) ≡ u(k−1) ≡ uj mod Ij f¨ ur j = 1 , . . . , k − 1. Außerdem gilt wegen
k−1 j=1
(k)
nj
=
k−1
j=1 (1
(j)
− nk ) ≡ 1 mod Ik , dass
u(k) ≡ u(k−1) + (uk − u(k−1) ) ≡ uk mod Ik 3.2.4 Beispiel: Wir wollen die Kongruenzen u ≡ 2 mod 3 , u ≡ 3 mod 5 , u ≡ 10 mod 14 (2)
(1)
l¨osen. Bereits im letzten Beispiel war n1 = 6 und n2 = −5 berechnet worden. (3) (1) (3) (2) Analog erh¨ alt man: n1 = 15 , n3 = −14 , n2 = 15 , n3 = −14 und damit (1) (1) L1 = n2 n3 = (−5) · (−14) = 70 (2) (2)
L2 = n1 n3 = 6 · (−14) = −84 (3) (3)
L3 = n1 n2 = 15 · 15 = 225 ⇒ u ≡ 2·70−3·84+10·225 mod(3·5·14) ≡ 2138 mod 210 ≡ 38 mod 210 mit der Lagrange-L¨ osung, oder u(1) = 2 u(2) = 2 + (3 − 2) · 6 = 8 u(3) = 8 + (10 − 8) · 15 · 15 = 458 ≡ 38 mod 210 mit der Newton-L¨ osung. 3.2.5 Beispiel: In
Q[x]
soll gel¨ ost werden:
u(x) ≡ x + 1 mod x2 + 1 , u(x) ≡ 2x − 1 mod 2x3 + 3 4 2 Wegen (x2 + 1)(− 13 x −
6 13 x
+
4 13 )
2 + (2x3 + 3)( 13 x+
(2)
4 2 4 2 6 4 x − 13 x − 13 x+ 13 ) n1 = (x2 + 1)(− 13
(1)
2 3 n2 = (2x3 + 3)( 13 x+ 13 )
3 13 )
= 1 gilt
50
3 Rechnen mit homomorphen Bildern (1)
(2)
L1 = n2 , L2 = n1
und damit
(1)
(2)
u(x) = n2 (x + 1) + n1 (2x − 1) mod(x2 + 1)(2x3 + 3) 1 = (2x4 + 16x3 + 29x + 11) mod(2x5 + 2x3 + 3x2 + 3) 13 3.2.6 Beispiel: In
Q[x, y]
soll gel¨ ost werden:
u(x, y) ≡ 17x2 + 6x + 4 mod y − 3 , u(x, y) ≡ −8x2 + 26x − 1 mod y + 2 (2)
(1)
Wegen − 51 (y −3)+ 15 (y +2) = 1 gilt n1 = − 15 (y −3) , n2 = 15 (y +2) und damit (diesmal mit Newton): u(1) = u1 = 17x2 + 6x + 4 (2)
u(2) = u(1) + (u2 − u(1) ) · n1
= 5x2 y + 2x2 − 4xy + 18x + y + 1 ≡ u mod(y − 3)(y + 2) ≡ u mod(y 2 − y − 6) Das letzte Beispiel zeigt eine beliebte Methode, multivariate Probleme auf univariate zur¨ uckzuf¨ uhren (hier mod(y − 3) und mod(y + 2) und dadurch ohne y rechnen, dann mit Chinesischem Restsatz r¨ ucktransformieren). Meistens wird wie im letzten Beispiel die Newtonsche Methode bevorzugt, weil man leicht noch weitere Kongruenzen hinzuf¨ ugen kann, ohne gleich die ganze Rechnung nochmal machen zu m¨ ussen. Besonders einfach wird die L¨ osung des CRP in euklidischen Ringen, denn jeder euklidische Ring ist ein Hauptidealring und somit ist die Voraussetzung des Satzes paarweise erzeugend“ f¨ ur {I1 , . . . , In } besonders ” leicht nachzupr¨ ufen: Ist jeweils Ij = mj , so ist die angegebene Menge genau dann paarweise erzeugend, wenn die erzeugenden Elemente paarweise teilerfremd sind, d.h. wenn f¨ ur alle j = k gilt ggT(mj , mk ) = 1 . (k)
Weiterhin lassen sich die nj
besonders leicht berechnen, denn mit dem (k)
erweiterten euklidischen Algorithmus erh¨ alt man sj (j)
(k)
(k)
(k)
∈ R mit sj mj +
sk mk = 1 und somit nj = sj ·mj . Dieser Zusammenhang wurde bereits in den vorhergehenden Beispielen ausgenutzt. Es sei K ein K¨ orper und R = K[x] der zugeh¨ orige (euklidische) Polynomring. Da die linearen Polynome mj (x) := x − dj ∈ K[x] f¨ ur dj = dk , j = k paarweise teilerfremd sind, ist {m1 , . . . , mn } paarweise erzeugend in R , das CRP u(x) ≡ uj mod mj (x) also f¨ ur beliebige uj ∈ K , j = 1 , . . . , n l¨ osbar. Da aber u(x) ≡ u(dj ) mod(x − dj ) ist, heißt das, dass in diesem Fall das CRP identisch ist mit dem Interpolationsproblem u(dj ) = uj f¨ ur j = 1 , . . . , n . Die im Beweis angegebenen Lagrangesche und Newtonsche L¨ osungsmethoden liefern in diesem Fall genau das Interpolationspolynom nach Lagrange bzw. nach Newton.
3.3 Der Satz von Hensel
51
3.3 Der Satz von Hensel 3.3.1 Satz: (Taylor f¨ ur kommutative Ringe mit 1) Es seien f ∈ R[x1 , . . . , xr ] , r ≥ 1 und y1 , . . . , yr neue Unbestimmte. Dann gilt f (x1 + y1 , . . . , xr + yr ) = f (x1 , . . . , xr ) +
r ∂f (x1 , . . . , xr ) · yj + F ∂xj j=1
mit F ∈ R[x1 , . . . , xr ][y1 , . . . , yr ] und F ≡ 0 mody1 , . . . , yr 2 ist. Dabei sei y1 , . . . , yr 2 das Quadrat des von y1 , . . . , yr in R[x1 , . . . , xr ][y1 , . . . , yr ] erzeugten Ideals. Die Ableitungen im Satz sind formal zu verstehen, d.h. man definiert f¨ ur einen Term ∂ n n −1 (xn1 · . . . · xj j · . . . · xnr r ) := nj · (xn1 1 · . . . · xj j · . . . · xnr r ) ∂xj 1 und erweitert diese Definition auf R[x1 , . . . , xr ] durch lineare Fortsetzung. Wegen der Linearit¨ at der partiellen Ableitung reicht es, wenn man den Satz f¨ ur einen einzelnen Term einsieht. Nach dem binomischen Satz gilt n1 −1 nr −1 r 1 (x1 +y1 )n1 ·. . .·(xr +yr )nr = (xn y1 +y12 ·p1 )·. . .·(xn yr +yr2 ·pr ) r +nr xr 1 +n1 x1
mit Polynomen p1 , . . . , pr ∈ R[x1 , . . . , xr ][y1 , . . . , yr ] . Multipliziert man dies aus, so erh¨ alt man ⎞ ⎛ r n −1 (xn1 1 · . . . · xnr r ) + ⎝ nj · (xn1 1 · . . . · xj j · . . . · xnr r )yj ⎠ + j=1
⎛
⎞ r r r r ⎜ 2 ⎟ n −1 (x + y )n + nj nk yj yk xj j xnk k −1 (x + y )n ⎠ · + ⎝pj yj j=1
=1 =j
k=1 k=j
=1 =j,k
was die Behauptung zeigt. 3.3.2 Satz: (Hensel, 1908) Es seien I ein endlich erzeugtes Ideal in R , f1 , . . . , fn ∈ R[x1 , . . . , xr ] , r ≥ 1 und a1 , . . . , ar ∈ R mit fi (a1 , . . . , ar ) ≡ 0 mod I , 1 ≤ i ≤ n. Weiterhin sei U die Jakobi-Matrix von f1 , . . . , fn in a1 , . . . , ar : ∂fi U = (uij ) 1≤i≤n = (a1 , . . . , ar ) ∈ Rn×r 1≤j≤r 1≤i≤n ∂xj 1≤j≤r
52
3 Rechnen mit homomorphen Bildern
Dann gilt: Besitzt U eine Rechtsinverse W ∈ Rr×n modulo I , (t) (t) dann gibt es f¨ ur jedes t ∈ Elemente a1 , . . . , ar ∈ R , so dass
N
(t)
t f¨ ur 1 ≤ i ≤ n fi (a1 , . . . , a(t) r ) ≡ 0 mod I (t)
ur j = 1 , . . . , r gilt. und aj ≡ aj mod I f¨ Beweis: (Induktion nach t ): (1)
(IA) F¨ ur t = 1 nehme man aj (t) fi (a1
(t) ar )
:= aj f¨ ur 1 ≤ j ≤ r . (t)
,..., ≡ 0 mod I f¨ ur 1 ≤ i ≤ n und aj ≡ aj mod I f¨ ur 1 ≤ j ≤ r . (IS) t → t + 1 Da I endlich erzeugt ist, ist I t endlich erzeugt und man kann schreiben I t = q1 , . . . , qm mit q1 , . . . , qm ∈ R und m ∈ . Nach dem ersten Teil der Induktionsvoraussetzung gibt es vik ∈ R mit
(IV)
t
N
(t)
fi (a1 , . . . , a(t) r )=
m
vik qk .
k=1 (t+1)
(t)
Nun macht man den Ansatz aj = aj + Bj f¨ ur 1 ≤ j ≤ r . Die Bj ∈ I t sollen geeignet bestimmt werden. Dazu schreibt man mit Hilfe des Erzeugendensystems q1 , . . . , qm von I t Bj =
m
bjk qk , bjk ∈ R , 1 ≤ j ≤ r , 1 ≤ k ≤ m.
k=1
Dann ist (t+1)
Taylor
(t)
, . . . , a(t+1) ) = fi (a1 + B1 , . . . , a(t) r r + Br ) ≡ r ∂fi (t) (t) 2 (a1 , . . . , a(t) ≡fi (a1 , . . . , a(t) r )+ r ) · Bj modB1 , . . . , Br ∂x j j=1 fi (a1
(t+1)
⇒fi (a1
(t)
, . . . , a(t+1) ) ≡ fi (a1 , . . . , a(t) r r )+
r
(t)
uij Bj mod I t+1
j=1 (t)
(t)
(t)
∂fi mit uij := ∂x (a1 , . . . , ar ) . (Wegen B1 , . . . , Br ∈ I t gilt das j ur das so genannte sogar mod I 2t , doch das braucht man hier nicht. F¨ quadratische Liften nutzt man diesen Sachverhalt allerdings aus. Die im Beweis verwendete Variante nennt man lineares Hensel-Lifting) Setzt man nun die Darstellungen der fi und der Bj mittels des Erzeugendensystems von I t ein, so erh¨ alt man: m m r (t+1) (t) (t+1) , . . . , ar )≡ vik qk + uij bjk qk mod I t+1 ≡ fi (a1 k=1
j=1
k=1
3.3 Der Satz von Hensel
0 mod I t+1 ≡
m
⎛ ⎝vik +
r
⎞ uij bjk ⎠ qk mod I t+1 (t)
⇐⇒
j=1
k=1
vik +
r
53
(t)
uij bjk ≡ 0 mod I f¨ ur 1 ≤ k ≤ m und 1 ≤ i ≤ n.
j=1 (t)
(t)
Wegen aj ≡ aj mod I gilt auch uij ≡ uij mod I und damit vik +
r
uij bjk ≡ 0 mod I .
j=1
F¨ ur ein festes k ist dies ein lineares Gleichungssystem der Gestalt ⎞ ⎞ ⎛ ⎛ v1k b1k ⎝ ... ⎠ + U · ⎝ ... ⎠ ≡ 0 mod I vnk brk Da es nach Voraussetzung eine r×n -Matrix W u ¨ber R mit U ·W ≡ En mod I gibt, hat dieses Gleichungssystem immer eine L¨ osung, z.B. ⎛ ⎞ ⎞ ⎛ b1k v1k ⎝ ... ⎠ = −W · ⎝ ... ⎠ . brk vnk Die Tatsache, dass diese L¨ osung nicht unbedingt die Beste f¨ ur unsere Zwecke unter den vielen existierenden L¨ osungen ist, macht dabei bei einigen Anwendungen des Satzes Probleme. (t)
Aus der Induktionsvoraussetzung aj (t+1)
satz aj
≡ aj mod I und unserem An-
(t)
= aj + Bj mit Bj ∈ I t folgt außerdem der zweite Teil (t+1)
der Behauptung aj
≡ aj mod I .
Wie bereits im vorhergehenden Beweis erw¨ ahnt, gilt die dort modulo I verwendete Kongruenz (t+1)
fi (a1
(t)
, . . . , a(t+1) ) ≡ fi (a1 , . . . , a(t) r )+ r
r
t+1
(t)
uij Bj
j=1
sogar modulo I 2t oder nach Einsetzen (t+1)
fi (a1
, . . . , a(t+1) )≡ r
m k=1
⎛ ⎝vik +
r
⎞ uij bjk ⎠ qk mod I 2t (t)
j=1
f¨ ur i = 1 , . . . , n . Da die qk nach Voraussetzung das Ideal I t erzeugen, ist dieser Ausdruck ≡ 0 mod I 2t , falls
54
3 Rechnen mit homomorphen Bildern
vik +
r
(t)
uij bjk ≡ 0 mod I t
j=1
f¨ ur k = 1 , . . . , m und i = 1 , . . . , n ist. (t)
W¨ahrend im vorhergehenden Beweis an dieser Stelle uij ≡ uij mod I (t)
ausgenutzt wurde, br¨ auchte man hier uij ≡ uij mod I t , was aber i.Allg. (t) nicht der Fall sein wird. Es sei also U (t) := uij . Mit dieser Bezeichnung kann man f¨ ur festes k das obige lineare Gleichungssystem in der folgenden Form schreiben: ⎛ ⎞ ⎛ ⎞ v1k b1k ⎝ ... ⎠ + U (t) ⎝ ... ⎠ ≡ 0 mod I t vnk brk M¨ochte man also quadratisch liften, d.h. von I t gleich zu I 2t u ¨bergehen, so reicht es analog zum vorhergehenden Beweis zu zeigen, dass es eine Matrix W (t) mit U (t) W (t) ≡ En mod I t gibt, denn dann ist ⎛ ⎞ ⎞ ⎛ v1k b1k ⎝ ... ⎠ = −W (t) ⎝ ... ⎠ vnk brk eine L¨osung des gegebenen linearen Gleichungssystems. (t)
Da die uij ≡ uij mod I sind, gilt auch U (t) ≡ U mod I . Da es nach Voraussetzung eine Matrix W mit U · W ≡ En mod I gibt, gilt also auch U (t) · W ≡ U · W ≡ En mod I oder ausmultipliziert r
(t)
wkj uji − δik ≡ 0 mod I
.
j=1
r (t) Setzt man Fik (X1 , . . . , Xr ) := j=1 uji Xj − δik f¨ ur i , k = 1 , . . . , n , so heißt das Fik (Ak1 , . . . , Akr ) ≡ 0 mod I f¨ ur Akj = wkj . F¨ ur ein festes k ist das genau die Voraussetzung des Satzes von Hensel mit Fik statt fi und Akj statt aj . Da die Jakobi-Matrix der Fik ( k fest) gerade U (t) ist, und diese Ma(t) trix mod I invertierbar ist, gibt es Ringelemente wjk mit (t)
(t)
(t)
Fik (w1k , . . . , wrk ) ≡ 0 mod I t und wjk ≡ wjk mod I und damit die (t) gew¨ unschte Matrix W (t) = wjk . Quadratisches Liften ist also wirklich m¨ oglich, der Nachteil ist der jetzt erh¨ohte Rechenaufwand f¨ ur das simultane Mitliften der Matrix W (t) !
3.3 Der Satz von Hensel
Z
55
Es seien f1 , . . . , fn ∈ [x1 , . . . , xr ] . Man ist an gemeinein samen ganzzahligen Nullstellen dieser Polynome interessiert. Da Hauptidealring ist, gibt es zu jedem Ideal I ⊆ ein q ∈ 0 mit , so I = q . Man w¨ ahlt ein kleines q aus und sucht a1 , . . . , ar ∈ dass fi (a1 , . . . , ar ) ≡ 0 mod q
3.3.3 Aufgaben:
Z Z
N
Z
(t)
(t)
ist. Mit dem Satz von Hensel berechnet man a1 , . . . , ar ∈
(t)
fi a1 , . . . , ar(t)
Z , so dass
≡ 0 mod q t
Z
gilt. Ist b1 , . . . , br ∈ eine der gesuchten ganzzahligen L¨ osungen, also urlich auch f¨ ur alle t ∈ : fi (b1 , . . . , br ) = 0 , so gilt nat¨
N
fi (b1 , . . . , br ) ≡ 0 mod q t t
Benutzt man zur Rechnung modulo q t Vertreter zwischen − q2
und
t
q 2
, so ist die Berechnung von fi (b1 , . . . , br ) modulo q t f¨ ur ausreichend großes t identisch mit der ganzzahligen Berechnung. Damit besteht die (t) (t) osungen b1 , . . . , br Hoffnung, unter den a1 , . . . , ar die ganzzahligen L¨ zu finden. Das folgende Zahlenbeispiel zeigt, dass dieses Verfahren im Fall solcher diophantischer Gleichungen wegen der vielen Lift-M¨ oglichkeiten nicht brauchbar ist. In einem sp¨ ateren Kapitel wird gezeigt, dass man dagegen bei Polynomen eine eindeutige Lift-Strategie hat. Es seien r = 2 , n = 1 und f = f1 = x1 x2 − x22 − 10 . a) b) c)
W¨ ahlen Sie q = 2 und berechnen Sie alle Tupel (a1 , a2 ) mit f (a1 , a2 ) ≡ 0 mod 2 . Welche der L¨ osungen aus a) lassen sich mit Hilfe des Satzes von Hensel liften ? Liften Sie eine der L¨ osungen aus b) mehrfach und testen Sie jeweils, ob es sich um eine ganzzahlige L¨ osung handelt. Wiederholen Sie den Vorgang mit anderen Rechtsinversen.
Das Bild zeigt zum Vergleich den Graphen von f = 0 im 2 (eine Hyperbel) und all seine Punkte mit ganzzahligen Koordinaten.
R
4 Grundlegende algebraische Strukturen
4.1 Ganze Zahlen 4.1.1 Darstellung Grundlage eines jeden Computeralgebra-Programms ist eine schnelle Arithmetik mit ganzen Zahlen von m¨ oglichst unbegrenzter, d.h nur durch die Speichergr¨oße des Computers begrenzter, L¨ ange (= long integer). Das folgende Beispiel zeigt, dass diese f¨ ur exakte algebraische Umformungen unverzichtbar sind: 4.1.1.1 Beispiel: Rechnet man mit Funktionen aus Q(x) , so stellt man diese u ¨blicherweise als Quotienten von Polynomen aus Z[x] dar. In der gebr¨auchlichen kanonischen Normalform sind Z¨ ahler und Nenner optimal durchgek¨ urzt, was man durch Berechnung eines gr¨ oßten gemeinsamen Teilers erreicht. Da Z[x] nicht euklidisch ist, rechnet man bei Anwendung des euklidischen Algorithmus automatisch in dem euklidischen Ring Q[x] : Sind f1 (x) = 3 x6 + 5 x4 − 4 x2 − 9 x + 4 und f2 (x) = 2 x5 − x4 − 1 , so ergibt sich die polynomiale Restfolge (s. dazu den gesonderten Abschnitt zum gr¨ oßten gemeinsamen Teiler von Polynomen) 23 4 15 19 x − 4 x2 − x+ 4 2 4 32 3 44 2 68 4 f4 (x) = x + x − x− 23 23 23 23 4887 2 6037 963 f5 (x) = x − x+ 256 256 256 29989120 2360576 x− f6 (x) = 23882769 2653641 11817361280583 f7 (x) = − 3513075462400 f3 (x) =
Obwohl der gr¨ oßte Koeffizient in den Eingabe-Polynomen 9 war, ist der Z¨ ahler von f7 (schon gek¨ urzt) 14-stellig! Man muss also schon bei sehr kleinen Polynomen damit rechnen, bei der Berech¨ nung des ggT die normale Arithmetik zum Uberlauf zu bringen.
58
4 Grundlegende algebraische Strukturen
Modifiziert man den euklidischen Algorithmus so, dass er statt mit der Division mit Rest in Q[x] mit der so genannten Pseudodivision in Z[x] arbeitet (vgl. extra Paragraph dazu), so vermeidet man zwar die ggT-Berechnungen bei den Koeffizienten, die Datenexplosion nimmt aber noch schlimmere Ausmaße an. f3 (x) = 23 x4 − 16 x2 − 30 x + 19 f4 (x) = 736 x3 + 1012 x2 − 1564 x − 92 f5 (x) = 41363568 x2 − 51097168 x + 8150832 f6 (x) = 1136503306119086080 x − 805132723304595456 f7 (x) = −9414343951556634943772866137828716489736192 f7 ist eine 43 -stellige Zahl ! Zur Vermeidung dieser Datenexplosion beim ggT ganzzahliger Polynome rechnet man mit so genannten Subresultanten-Ketten oder mit modularen Verfahren. Solche Methoden verbesseren zwar die Situation, ersparen aber nicht die Langzahlarithmetik. Da man nicht von vornherein weiß, wie groß Zahlen im Laufe einer Rechnung werden, kann man ihnen auch nicht einen festen Speicherplatz reservieren, ohne Gefahr zu laufen, dass dieser Platz in den meisten F¨ allen nicht ausgenutzt wird und damit zu einem großen Teil vergeudet ist. Jede Zahl sollte also genau den Platz zugewiesen bekommen, den sie braucht. Dazu ist eine dynamische Speicherverwaltung n¨ otig. Ist die L¨ange eines Computerwortes (=Grundeinheit, die der Prozessor auf einmal verarbeiten kann, bei den meisten heutigen Computern 32), so kann ein bin¨ ar arbeitender Computer u ¨blicherweise mit seinen in Hardware implementierten Grundoperationen mit ganzen Zahlen i mit −2−1 ≤ i ≤ 2−1 − 1 umgehen. 4.1.1.2 Beispiel: Ist etwa = 3 und arbeitet der Rechner mit dem so genannten Zweier-Komplement mit Offset 1, so sieht die interne Darstellung wie folgt aus: Die positiven Zahlen von 0 bis 2−1 − 1 werden in ihrer Bin¨ ardarstellung geschrieben. F¨ ur 0 < n < 2−1 − 1 wird die Zahl −n − 1 dann durch das bitweise Komplement der Bin¨ardarstellung der Zahl n dargestellt: n 0 1 2 3
bin¨ ar 000 001 010 011
−n − 1 −1 −2 −3 −4
Komplement 111 110 101 100
In dieser Darstellung sind die Addition und Subtraktion besonders einfach: 1 + 2 = 001 + 010 = 011 = 3 oder z.B. 2 − 3 = 2 + (−3) = 010 + 101 = 111 = −1 .
4.1 Ganze Zahlen
59
Liegt eine Zahl I ∈ Z außerhalb des so darstellbaren Bereichs, so kann sie nicht in einem Computerwort gespeichert werden und auch nicht direkt mit den implementierten Operationen verarbeitet werden. Um dem Computer die Arithmetik mit solch großen Zahlen beizubringen, stellt man diese in der Form I =s·
n−1
ij β j
j=0
dar. Dabei sei 1 < β ≤ 2−1 frei gew¨ ahlt, s := sign(I) und 0 ≤ ij < β f¨ ur j = 0, . . . , n − 1 und in−1 = 0 . Diese Darstellung ist eindeutig. are eine symmetrische Da in dieser Darstellung jeweils alle ij ≥ 0 sind, w¨ Darstellung wie beim Zweier-Komplement mit Offset 1 Platzverschwendung, da negative Zahlen nicht gebraucht werden. In diesem Fall k¨ onnte man auch alle Zahlen von 0 bis 2 − 1 in ihrer normalen Bin¨ ardarstellung speichern, muss dann aber aufpassen, dass in den Algorithmen nicht doch negative Zahlen gebraucht werden. Da die ij kleiner als β , also insbesondere kleiner als 2−1 sind, lassen sie sich in je einem Computerwort speichern. Zur Speicherung von I gibt es verschiedene Datenmodelle. Zwei in der Praxis verwendete Konzepte sind so genannte verkettete Listen und dynamische Arrays. Der Inhalt der Variablen I ist in beiden F¨ allen f¨ ur den Rechner ein Querverweis (Pointer oder Zeiger), wo im Speicher die Information beginnt. — Bei der verketteten Liste steht an dieser Stelle dann z.B. die ganze Zahl s · i0 . Im n¨achsten Computerwort steht ein Zeiger auf den Speicherplatz mit der Zahl i1 usw. Die Liste endet mit dem Eintrag in−1 und einem darauf folgenden Listenende-Zeichen (nil-pointer). Die Zahl ij zusammen mit dem folgenden Zeiger heißt Knoten. Damit sieht I intern so aus: I −→ s · i0
−→ i1
−→ i2
−→ . . . −→ in−1
Ende
Auf diese Art und Weise l¨ asst sich eine ganze Zahl beliebiger Gr¨ oße dynamisch im Speicher aufbauen. Lisp, Pascal oder C erlauben den Aufbau solcher Strukturen auf recht einfache Weise. Der Nachteil ist, dass durch die Speicherung der Pointer der Speicherverbrauch um einiges gr¨oßer ist, als das f¨ ur die Speicherung der puren Daten si0 , i1 , . . . , in−1 n¨otig w¨are. Außerdem kostet es Zeit, sich die im Speicher des Rechners verstreuten Einzelteile mit Hilfe der Pointer zusammenzusuchen. — Die eben beschriebenen Nachteile verketteter Listen werden von dynamischen Arrays vermieden. Dort speichert man an erster Stelle etwa s · n , d.h. das Vorzeichen und die L¨ ange des folgenden Feldes in Computerw¨ortern. Dann kommen hintereinander i0 , i1 , . . . , in−1 in den Speicher. Weil sie direkt hintereinander kommen, sind keine Zeiger n¨ otig.
60
4 Grundlegende algebraische Strukturen
Auch ein spezielles Ende-Zeichen ist nicht n¨ otig, weil man ja weiß, wie lang das Feld ist. In dieser Darstellung hat I die Gestalt I −→ sn
i0
i1
· · · in−1
Der Nachteil dieser Darstellung ist, dass sie eine ausgekl¨ ugelte Verwaltung des Speichers erfordert, denn es muss erst einmal ein Speicherplatz gefunden werden, der die Unterbringung eines so großes Feldes erlaubt. Von diesen Darstellungen gibt es nat¨ urlich viele Varianten. So ist es etwa denkbar, das Vorzeichen nicht nur am Anfang einer Liste zu speichern, sondern alle Eintr¨age i0 , . . . , in−1 mit dem gleichen Vorzeichen zu versehen. Das hat Vor- und Nachteile f¨ ur die Grundrechenarten, die hier nicht im einzelnen diskutiert werden sollen, da es keinen Einfluss auf die Komplexit¨ at der betrachteten Algorithmen hat. Auch bei verketteten Listen k¨ onnte man sich wie bei dynamischen Arrays die Listenl¨ange n am Anfang merken. Dies ist zwar nicht unbedingt n¨otig, spart einem aber etwa bei einigen Prozeduren, erst die ganze Liste nach dem Listenende zu durchsuchen (siehe z.B. die im Folgenden beschriebene Routine zum Vergleich positiver ganzer Zahlen). Es wurde auch vorgeschlagen (siehe etwa [HSA]), statt des vorgestellten Datentyps der einfach verketteten Liste mit einem Listenende-Zeichen so genannte zirkul¨ar verkettete Listen betrachten, bei denen vom Listenende wieder auf den Anfang der Liste verwiesen wird. Die meisten Lisp-basierten Systeme verwenden die verketteten Listen, Maple dagegen benutzt die dynamischen Arrays◦ . In jedem Fall ist die β-L¨ange * 1 f¨ ur I = 0 Lβ (I) := ur I = 0 logβ (|I|)! f¨ f¨ ur I ∈ Z ein gutes Maß f¨ ur die Gr¨ oße des Speicherbedarfs der long integer I bei der Darstellung im β-System: die verkettete Liste ben¨ otigt n = Lβ (I) Knoten, also 2Lβ (I) Computerw¨ orter, das dynamische Array Lβ (I) + 1 Computerw¨orter. Wegen logβ (x) = logγ (x)/ logγ (β) ist Lβ (I) Lγ (I) . Deshalb l¨ asst man bei Lβ (I) auch den Index β weg und kann, unabh¨ angig von der Zahldarstellung sagen, dass der Speicherbedarf f¨ ur I kodominant zu L(I) ist. Um nicht immer zwischen den beiden Speichermethoden unterscheiden zu m¨ ussen, wird im Folgenden I im β-System einfach als n + 1 -Tupel (s , i0 , . . . , in−1 )β mit in−1 = 0 dargestellt (Die Null wird (0, 0)β geschrieben; in manchen Algorithmen wird intern auch in−1 = 0 zugelassen). ◦
Bis Version 8 nur eigene Arithmetik, seit Version 9 verwendet Maple f¨ ur die Langzahl-
arithmetik großer Zahlen das Paket GMP
4.1 Ganze Zahlen
61
4.1.2 Addition und Subtraktion Mit der aufgelisteten Prozedur ComPosInt lassen sich nun einfach zwei positive long integers I und J vergleichen. Betrachtung der Routine zeigt, dass f¨ ur zwei Zahlen der gleichen β-L¨ ange n schlimmstenfalls n − 1 Tests auf Gleichheit durchgef¨ uhrt werden m¨ ussen. Weiterhin muss das Signum einer Differenz berechnet werden (jeweils in Kurzzahlarithmetik) oder n Tests auf Gleichheit durchgef¨ uhrt werden. Vergleich positiver ganzer Zahlen procedure ComPosInt(I, J) if m = n then Return ( sign(n − m) ) else k ←n−1 while ik = jk and k ≥ 0 do k ←k−1 end do if k = −1 then Return (0) else Return ( sign(ik − jk ) ) end if end if end
# # # # # # # # #
Eingabe: I = (s , i0 , . . . , in−1 )β , J = (t , j0 , . . . , jm−1 )β Ausgabe: sign(|I| − |J|) Return =Ausgabe und Abbruch ←= Zuweisung end do =Ende einer do -Schleife end if =Ende einer if -Schleife
Sind dagegen die β-L¨ angen der beiden Zahlen verschieden, so ist nur ein Signum in Kurzzahlarithmetik zu berechnen. Hat man die β-L¨ angen nicht bereits am Anfang der Listen gespeichert, so muss man mindestens die k¨ urzere der beiden nach dem Listenende durchsuchen. Zusammen kann man also sagen, dass der Vergleich zweier ganzer Zahlen I und J der L¨angen n bzw. m von der Ordnung O(min(m, n)) ist, genauer: Op[sign(|I| − |J|) ← ComPosInt(I, J)](Lβ (I), Lβ (J)) min(Lβ (I), Lβ (J)) . Genauso leicht l¨ asst sich die Summe zweier positiver Zahlen realisieren. Man muss allerdings bedenken, dass beim komponentenweisen Summieren Zahlen der Gr¨oße ≤ 2β − 1 entstehen (s. Zeile i + j + carry). Da man diese Summen ja noch mit der vorhandenen Kurzzahlarithmetik berechnen m¨ochte, muss man bei symmetrischer Darstellung 2β−1 ≤ 2−1 − 1 ⇐⇒ β ≤ 2−2 w¨ ahlen, sonst 2β − 1 ≤ 2 − 1 ⇐⇒ β ≤ 2−1 .◦ ◦
Moderne Mikroprozessoren verf¨ ugen u ¨ ber ein eigenes Carry-Flag. Nutzt man dieses aus,
so kann man bei dem gr¨ oßeren β bleiben, muss dann aber den hier gezeigten Algorithmus entsprechend ab¨ andern.
62
4 Grundlegende algebraische Strukturen
Summe positiver ganzer Zahlen procedure SumPosInt(I, J) carry ← 0 temp 2 ← max(m − 1, n − 1) for from 0 to temp 2 do temp 1 ← i + j + carry if temp 1 < β then k ← temp 1 carry ← 0 else k ← temp 1 −β carry ← 1 end if end do if carry > 0 then Return ((1, k0 , . . . , ktemp , 1))
# # # # # #
Eingabe: I = (s , i0 , . . . , in−1 )β , J = (t , j0 , . . . , jm−1 )β Ausgabe: |I| + |J| = (1, k0 , . . . , k )β i mit > n − 1 bzw. j mit > m − 1 seien = 0 gesetzt!
2
else Return ((1, k0 , . . . , ktemp )) 2 end if end
Da (max(m − 1, n − 1) + 1) -mal die Schleife mit einer jeweils festen Anzahl von Kurzzahloperationen wie etwa i + j + carry durchlaufen wird, ist diese Prozedur von der Ordnung O(max(m, n)) , oder genauer: Op[|I| + |J| ← SumPosInt(I, J)](Lβ (I), Lβ (J)) max(Lβ (I), Lβ (J)) . Sind nun I und J zwei beliebige ⎧ ⎨ sign(I) · (|I| + |J|) I + J = sign(I) · (|I| − |J|) ⎩ sign(J) · (|J| − |I|)
long integers, so gilt offensichtlich: falls sign(I) = sign(J) falls sign(I) = sign(J) und |I| > |J| falls sign(I) = sign(J) und |I| ≤ |J|
Damit gen¨ ugt es zusammen mit den beiden bereits besprochenen Algorithmen, wenn man die Differenz zweier positiver long integers I und J mit I ≥ J bilden kann. Da die Schleife mit einer jeweils festen Anzahl von Kurzzahloperationen wie i − j + carry genau (max(m − 1, n − 1) + 1)-mal durchlaufen wird, gilt auch f¨ ur diese Prozedur: Op[|I| − |J| ← DifPosInt(I, J)](Lβ (I), Lβ (J)) max(Lβ (I), Lβ (J)) . Offensichtlich gilt also sowohl f¨ ur die Summe, als auch f¨ ur die Differenz zweier long integers mit diesen Algorithmen: Op[I ± J ← Sum/Dif(I, J)](Lβ (I), Lβ (J)) max(Lβ (I), Lβ (J)) .
4.1 Ganze Zahlen
63
Differenz positiver ganzer Zahlen procedure DifPosInt(I, J) carry ← 0 for from 0 to n − 1 do temp ← i − j + carry if temp ≥ 0 then k ← temp; carry ← 0 else k ← temp +β ; carry ← −1 end if end do ←n−1 while k = 0 and ≥ 0 do ←−1 end do if = −1 then Return ((0, 0)) else Return ((1, k0 , . . . , k )) end if end
# # # # # # #
Eingabe: I = (s , i0 , . . . , in−1 )β , J = (t , j0 , . . . , jm−1 )β I≥J. Ausgabe: |I| − |J| = (u, k0 , . . . , k )β j mit > m − 1 seien wieder = 0 gesetzt!
Differenz ganzer Zahlen procedure Dif(I, J) t ← −t Return (Sum(I, J) ) end
# Eingabe: I = (s , i0 , . . . , in )β , # J = (t , j0 , . . . , jm )β # Ausgabe: I − J = (u, k0 , . . . , k )β
Summe ganzer Zahlen procedure Sum(I, J) # Eingabe: I = (s , i0 , . . . , in−1 )β , # J = (t , j0 , . . . , jm−1 )β if s = t then # Ausgabe: I + J = (u, k0 , . . . , k )β (u, k0 , . . . , k ) ← SumPosInt(I, J) u←s else if ComPosInt(I, J) = 1 then (u, k0 , . . . , k ) ← DifPosInt(I, J) u←s else (u, k0 , . . . , k ) ← DifPosInt(J, I) u←t·u end if end if Return ( (u, k0 , . . . , k ) ) end
64
4 Grundlegende algebraische Strukturen
Dies ist ist jeweils der schlechteste Fall. Ist bei SumPosInt und Dif¨ PosInt der Ubertrag carry= 0 und > m − 1 , so ist in der jeweiligen -Schleife nichts zu tun. Meist wird man also mit min(Lβ (I), Lβ (J)) Durchl¨aufen auskommen. 4.1.3 Multiplikation n−1 m−1 Das Produkt der long integers I = s · k=0 ik β k und J = t · =0 j β ist m+n−2 I ·J =s·t· ik j β h h=0
k+=h
Dies ist aber noch nicht die gew¨ unschte Darstellung im β-System, denn die Koeffizienten in der inneren Klammer k¨ onnen nat¨ urlich sehr viel gr¨ oßer als β − 1 werden. Man muss also m¨ oglichst fr¨ uhzeitig mod β rechnen und sich ¨ die Ubertr¨ age merken. Dies f¨ uhrt auf den folgenden Algorithmus Prod 1 . Die innere Schleife mit der Berechnung von ih · j + kh+ + carry, dem ganzzahligen Quotienten und Rest wird m · n -mal durchlaufen. Damit gilt f¨ ur die Multiplikation nach der Schulmethode: Op[I · J ← Prod1 (I, J)](Lβ (I), Lβ (J)) Lβ (I) · Lβ (J) . Produkt ganzer Zahlen (Schulmethode) procedure Prod 1 (I, J ) u←s·t for from 0 to m + n − 1 do k ← 0 end do for from 0 to n − 1 do carry ← 0 for h from 0 to m − 1 do temp ← i · jh + kh+ + carry kh+ ← Rest(temp, β) carry ← Quo(temp, β) end do k+m ← carry end do if kn+m−1 = 0 then Return ( (u, k0 , . . . , kn+m−2 ) ) else Return ( (u, k0 , . . . , kn+m−1 ) ) end if end
# # # # # # # # #
Eingabe: I = (s , i0 , . . . , in−1 )β , J = (t , j0 , . . . , jm−1 )β Ausgabe: I · J = (u, k0 , . . . , k )β Rest = Rest bei ganzzahliger Division Quo = Quotient bei ganzzahliger Division jeweils in Kurzzahlarithmetik
4.1 Ganze Zahlen
65
Der gezeigte Algorithmus unterscheidet sich etwas von der u ¨blichen Handmethode: es werden nicht erst alle Produkte ausgerechnet und dann addiert, sondern es wird jedes Produkt auf die schon berechnete Zwischen¨ summe aufaddiert und gleich der Ubertrag abgespalten. Dadurch werden die Zahlen nicht allzu groß. Trotzdem muss man die Zahlbasis β kleiner w¨ ahlen, als in den bisherigen Algorithmen: Es gilt ih · j + kh+ ≤ (β − 1)2 + (β − 1) = β(β − 1) . Damit ist das erste berechnete carry ≤ β−1 , das n¨ achste ih ·j +kh+ + carry ¨ also ≤ β(β − 1) + (β − 1) = β 2 − 1 . Der Ubertrag carry ist damit immer kleiner als β , der Ausdruck ih · j + kh+ + carry immer kleiner als β 2 . M¨ ochte man das alles noch mit der existierenden Kurzzahlarithmetik erledigen, so −1 muss bei der symmetrischen Darstellung β 2 − 1 ≤ 2−1 − 1 ⇐⇒ β ≤ 2[ 2 ] bzw. sonst β 2 − 1 ≤ 2 − 1 ⇐⇒ β ≤ 2[ 2 ] gew¨ ahlt werden. Bei einem 16 bit Computer w¨ aren etwa je nach zugrundeliegender Zahldarstellung β = 27 = 128 oder β = 28 = 256 geeignete Zahlbasen, bei einem 32 bit Rechner β = 215 = 32.768 oder β = 216 = 65.536 .
Maple-Worksheet
zur Zahldarstellung
66
4 Grundlegende algebraische Strukturen
M¨ochte man die l¨ astigen und aufw¨ andigen Umrechnungen zwischen dem β-System und dem Dezimalsystem vermeiden, so kann man etwa bei einem 32 bit Rechner die n¨ achstkleinere 10-er Potenz β = 10.000 w¨ ahlen. Diese Zahlbasis wird in Maple auch verwendet. Erst ab einer voreingestellten Schranke und ab Version 9 wird dann f¨ ur die Langzahlarithmetik GMP verwendet, das teilweise in Assembler geschrieben ist und Wortl¨ ange und Carry-Flag voll ausnutzt, daf¨ ur aber jeweils zwischen der internen Darstellung und der zur Basis 10 umrechnen muss. Ein ¨ahnlicher Ansatz wird auch im Perl-Package Math::BigInt verwendet. Dort wird je nach Rechner zur Basis 105 oder 107 gerechnet. Es gilt n−1 n−1 βn − 1 |I| = s · ij β j ≤ (β − 1) · β j = (β − 1) = βn − 1 β − 1 j=0 j=0 und deshalb ist die Anzahl der Dezimalstellen von I maximal n log10 (β)! . Beschr¨ankt man sich bei den Exponenten auf so genannte ’short unsigned integers’ (bei 32 bit Rechnern ≤ 216 − 1 = 65.535 ), so kann man mit der Zahlbasis 10.000 immerhin schon Zahlen bis zu 216 · log10 (10.000) = 218 = 262.140 Dezimalstellen darstellen. Bei 64 bit Rechnern k¨ onnte man die Zahlbasis 109 verwenden und kommt dann auf 38.654.705.655 Dezimalstellen. In Maple wird die Listenl¨ ange im 32 bit Fall in einem Teil eines 32 bit Computerwortes gespeichert. In diesem Wort werden 8 bit f¨ ur die ’garbage collection’ verwendet, 1 bit f¨ ur den Status der Vereinfachung und 6 bit f¨ ur eine Identifikationsnummer. Es verbleiben also 17 bit f¨ ur die Listenl¨ ange, womit sich dann sogar 524.280 Dezimalstellen erreichen lassen. Bei 64 bit Rechnern ist die Aufteilung in Maple wie folgt: 16 bit ’garbage collection’, 1 bit Status der Vereinfachung, 6 bit f¨ ur die Identifikationsnummer. 9 bit werden frei gelassen und es verbleiben 32 bit f¨ ur die Listenl¨ange, d.h. man hat die bereits oben berechneten 38.654.705.655 Dezimalstellen zur Verf¨ ugung. Diese Schranke ist bei den meisten Rechnern rein theoretisch, denn die Darstellung einer so großen Zahl erfordert weit mehr RAM-Speicherplatz, als in heute u ¨blichen Computern vorhanden ist. Selbst, wenn man so viel Speicher h¨atte, ließe sich mit so großen Objekten nicht mehr in vern¨ unftiger Zeit rechnen. Der asymptotische Aufwand f¨ ur die Langzahlmultiplikation l¨ asst sich mit einer so genannten Teile und Herrsche“-Strategie deutlich herabset” zen. Die Grundidee dieser Strategie, die nicht nur bei der Multiplikation Anwendung findet, ist es, ein Problem der Gr¨ oße n so in Teilst¨ ucke der n Gr¨oße m aufzuteilen, dass die Gesamtkomplexit¨ at geringer wird.
4.1 Ganze Zahlen
67
Die Anwendung auf die Multiplikation wurde erstmals in einem Artikel von Karatsuba und Ofman beschrieben [KOf]∗ . Es seien I und J zwei ganze Zahlen der β-L¨ ange n . Der Einfachheit halber setzt man zun¨ achst voraus, dass n eine Zweierpotenz ist und teilt I und J wie folgt in je zwei gleichgroße β-Teile auf n
n
I =a·β2 +b ,
J =c·β2 +d .
Dabei seien a , b , c und d ganze Zahlen der β-L¨ ange n2 . Dann l¨asst sich das Produkt in der folgenden Form schreiben n
I · J = acβ n + [ac + bd + (a − b)(d − c)]β 2 + bd . Die in dieser Formel auftretenden Zahlen der β-L¨ ange n2 werden nun ihrerseits nach der gleichen Methode in Zahlen der β-L¨ angen n4 zerlegt, ihre Produkte nach der entsprechenden Formel berechnet. Das wird solange rekursiv fortgesetzt bis man beim Produkt ganzer Zahlen in Kurzzahlarithmetik angelangt ist. Ergibt sich bei den Differenzen a − b und d − c bzw. bei der Summe n ¨ der Koeffizienten von β 2 kein Uberlauf (zur β-L¨ ange n2 + 1 bzw. n + 1 ), so sind zu dieser Berechnung von I · J die folgenden Rechnungen n¨ otig: n (i) 3 Produkte von long integers der β-L¨ angen 2 nach der entsprechenden Formel ( ac und bd m¨ ussen ja nur jeweils einmal berechnet werden), (ii) 2 Produkte mit Potenzen von β , (iii) — 2 Differenzen von Zahlen der β-L¨ ange n2 ( a − b und c − d ), n — 2 Summen von Zahlen der β-L¨ ange n (beim Koeffizient von β 2 ). — 2 Summen von Zahlen der β-L¨ ange 2n (beim Zusammenfassen der n Vielfachen von β n , β 2 und β 0 = 1 ). Der Aufwand f¨ ur die obigen Einzelschritte ist: (i) 3 · Op[Prod2 ]( n2 ) . (ii) Eine Multiplikation einer Zahl I = (s , i0 , . . . , in−1 )β mit einer Potenz β von β bedeutet eine einfache Verschiebung der Liste zu β · I = (s , 0 , . . . , 0 , i0 , . . . , in−1 )β .
Dies l¨asst sich bei der Listendarstellung durch das Verbiegen“ eines ” Pointers und Einf¨ ugen der entsprechenden Zellen bewerkstelligen. ∗
Frau Dr. Ekatherina A. Karatsuba, Tochter von A. A. Karatsuba, machte mich freundlicher-
weise darauf aufmerksam, dass ihr Vater den hier beschriebenen Algorithmus als 23-j¨ ahriger Student bei A. N. Kolmogorov alleine (ohne Zutun des Coautors Y. Ofman) entdeckt habe. Da im Folgenden vorerst das Produkt zweier Zahlen der gleichen L¨ ange betrachtet wird, wird jeweils abgek¨ urzt Op[Prod2 ](n) f¨ ur Op[I · J ← Prod2 (I, J)](n, n) .
68
4 Grundlegende algebraische Strukturen
Selbst, wenn man die Liste komplett im Speicher verschieben w¨ urde, w¨are der Aufwand daf¨ ur schlimmstenfalls proportional zur Listenl¨ ange, also etwa c · n mit einer Konstanten c ∈ R+ . (iii) Wegen Op[Sum](n, m) max(n, m) gilt Op[Sum](n, n) n . Damit gibt es eine Konstante k ∈ R+ , so dass der Aufwand f¨ ur die genannten Einzelschritte h¨ ochstens 2 · k · n2 , 2 · k · n bzw. 2 · k · 2n ist. ¨ An dieser Uberlegung andert sich auch nichts, wenn etwa bei der Berech¨ nung von a − b oder d − c Zahlen der β-L¨ ange n2 + 1 entstehen. Zerlegt n n man diese Zahlen analog zu oben in a−b = a1 β 2 +b1 und c−d = a2 β 2 +b2 n mit Lβ (a1 ) = Lβ (a2 ) = 1 und Lβ (b1 ) = Lβ (b2 ) = 2 so sieht man, dass bei der Berechnung des Produkts n
(a − b) · (c − d) = a1 a2 β n + (a1 a2 + b1 b2 + (a1 − b1 )(b2 − a2 )) β 2 + b1 b2 nach der Karatsuba-Formel nur ein Produkt zweier Zahlen der β-L¨ ange n2 berechnet werden muss, n¨ amlich b1 b2 . Der Aufwand f¨ ur alle anderen Produkte wird von dem Aufwand f¨ ur dieses Produkt dominiert, denn es ist jeweils mindestens eine Zahl der βL¨ ange 1 beteiligt. Somit gilt nach Vor¨ uberlegung f¨ ur die Anzahl der Operationen des Karatsuba-Algorithmus schlimmstenfalls die Rekursion * k1 f¨ ur n = 1 Op[Prod2 ](n) = 3 Op[Prod2 ]( n2 ) + k2 n f¨ ur n > 1 Dabei ist k1 der Aufwand f¨ ur die Berechnung des Produkts zweier Zahlen I und J der β-L¨ ange 1 mit Prod1 und der Faktor k2 = 7k +2c ∈ R+ ergibt sich aus obiger Diskussion zu (ii) und (iii). Da man bei anderen Teile und Herrsche“-Strategien ¨ ahnliche Rekursi” onsformel erh¨alt, werden diese im folgenden Satz gleich etwas allgemeiner untersucht:
N
4.1.3.1 Satz: Es seien k1 , k2 ∈ R+ , , m , r ∈ und n = mr . Erf¨ ullt eine Funktion T : → R+ die Rekursion * f¨ ur n = 1 k1 T (n) = n · T(m ) + k2 n f¨ ur n > 1,
N
so gilt:
T (n)
n n logm n nlogm
f¨ ur < m f¨ ur = m f¨ ur > m
.
Beweis: Wie man leicht mit Induktion nach r ∈ N nachweist, l¨ ost
4.1 Ganze Zahlen
T (mr ) = r k1 + k2 m
r−1
69
i mr−1−i
i=0
die Rekursion. Mit Hilfe der geometrischen Summenformel folgt
r r r ( m ) −1 r f¨ ur = m T (m ) = k1 + k2 m m −1 r r f¨ ur = m k1 + k2 m r Nun muss man drei F¨ alle unterscheiden: = m : Wegen r = logm n kann man T (n) = n(k1 + k2 logm n) schreiben, woraus man sofort T (n) n logm n abliest. r r r ( m ) −1 r groß ) m = k + k → k2 m− gilt < m : Wegen T (m r 1 2 m m −1 m
r groß
n groß
m m bzw. T (n) → n·k2 m− , d.h. T (n) ist T (mr ) → k2 mr m− kodominant zu n . > m : In diesem Fall kann man die Funktion T in die Gestalt k2 m k1 − k1 m + k2 m −n T (n) = logm n −m −m
bringen. Wegen logm n = nlogm und logm > 1 ist diese Summe kodominant zu nlogm . Ist nun n keine ganzzahlige Potenz von m , kann man trotzdem Teile ” und Herrsche“-Strategien wie den Algorithmus von Karatsuba anwenden, indem man jeweils zum n¨ achsten Vielfachen von m auff¨ ullt“ bevor man in ” m St¨ ucke teilt. Im Fall der Langzahlmultiplikation k¨ onnte das z.B. so aussehen, dass man Zahlen der β-L¨ ange 51 durch Erg¨ anzen f¨ uhrender Nullen auf die L¨ ange 52 bringt und dann in zwei Bl¨ ocke der Gr¨ oße 26 teilt usw: 51/52 → 26 → 13/14 → 7/8 → 4 → 2 → 1
.
Alternativ k¨onnte man auch gleich im ersten Schritt auf die n¨ achste ganzzahlige Potenz von m auff¨ ullen, hier etwa auf 64. Geht man von der Monotonie der Funktion T aus, so gibt es ein r ∈ , so dass gilt mr < n < mr+1 und damit auch T (mr ) ≤ T (n) ≤ T (mr+1 ) . Im Fall < m wurde z.B. f¨ ur n = mr bereits gezeigt, dass T (n) n gilt. Es gibt also Konstanten c1 , c2 ∈ R+ mit c1 mr ≤ T (mr ) ≤ c2 mr und damit auch mit c1 mr+1 ≤ T (mr+1 ) ≤ c2 mr+1 . Damit gilt
N
c1 · n < c1 mr ≤ T (mr ) ≤ T (n) ≤ T (mr+1 ) ≤ c2 mr+1 < (c2 m) · n m also insbesondere T (n) n auch wenn n keine ganzzahlige Potenz von m ist.
70
4 Grundlegende algebraische Strukturen
In den anderen F¨ allen ( ≥ m ) kann man genauso argumentieren. Die hergeleiteten Formeln f¨ ur die Ordnung der Funktion T gelten also sogar f¨ ur beliebiges n ∈ (n ≥ m) !
N
Folgerung: Im Fall der Langzahlmultiplikation nach Karatsuba ist m = 2 und = 3 . Damit liest man aus dem Satz ab: Op[Prod2 ](n) nlog2 3 n1.58496...
.
n
n
Folgerung: Rechnet man das Produkt von I = a·β 2 +b und J = c·β 2 +d ( a , b , c , d wie oben) nach der u ¨blichen Methode aus, also n
I · J = acβ n + (ad + bc)β 2 + bd , so ben¨otigt man 4 Produkte von Zahlen der β-L¨ ange n2 und einige Operationen mit linearem Zeitaufwand. Damit ist = 4 und m = 2 , was zeigt, dass f¨ ur die rekursive Variante der u ur ¨blichen Multiplikation wie die f¨ Schulmethode gilt Op[I · J ← Prod(I, J)](n, n) n2 . Folgerung: Hat man es nicht wie in den beiden vorhergehenden Folgerungen mit zwei etwa gleich großen Zahlen I und J zu tun, sondern mit deutlich verschieden großen Zahlen ( β-L¨ angen n und m ), so zerhackt man die gr¨oßere der beiden in Teile, die so groß sind wie die kleinere der Zahlen. Dann multipliziert man mit diesen Teilen und setzt zum Ergebnis zusammen. Der gesamte Vorgang wird von den Multiplikationen dominiert, so dass insgesamt gilt Op[Prod](m, n)
max(m, n) · Op[Prod] (min(m, n)) . min(m, n)
Im Fall der Schulmethode Prod1 f¨ uhrt dies auf die bereits bekannte Aufwandsabsch¨ atzung Op[Prod1 ](m, n) m · n , bei Karatsuba auf Op[Prod2 ](m, n) max(m, n)·min(m, n)α−1 mit α = log2 3 . Da die gleiche Formel mit α = 2 die Schulmethode beschreibt, kann man in Zukunft f¨ ur das Produkt von long integers Op[Prod](m, n) max(m, n) · min(m, n)α−1 schreiben und die beiden besprochenen Methoden durch Einsetzen von α = 2 oder α = log2 3 beschreiben. Als Programm sieht der Algorithmus von Karatsuba etwa wie in der Prozedur Prod2 beschrieben aus (ohne das geschilderte Zerhacken verschieden großer Zahlen I und J ). Nach 4.1.3.1 und einer der Folgerungen dazu gilt also Op[I · J ← Prod2 (I, J)] max(Lβ (I), Lβ (J)) · min(Lβ (I), Lβ (J))log2 3−1 . Die Prozedur Shift beschreibt die Multiplikation mit einer Potenz von β :
4.1 Ganze Zahlen
71
Produkt ganzer Zahlen (Karatsuba) procedure Prod2 (I, J) # Eingabe: I = (s , i0 , . . . , in−1 )β , # J = (t , j0 , . . . , jm−1 )β if s = 0 or t = 0 then # Ausgabe: I · J Return ((0, 0)) # end if # i mit > n − 1 bzw. j mit if m = 1 and n = 1 then # > m − 1 seien = 0 gesetzt! Return (Prod1 (I, J)) end if n ← 12 max(m, n) · 2 if n − 1 < n2 then a ← (0, 0) else a ← (s, in /2 , . . . , in −1 ) end if b ← (s, i0 , . . . , in /2−1 ) if m − 1 < n2 then c ← (0, 0) else c ← (t, jn /2 , . . . , jn −1 ) end if d ← (t, j0 , . . . , jn /2−1 ) temp 1 ← Prod2 (Dif(a, b), Dif(d, c)) temp 2 ← Prod2 (a, c) ; temp 3 ← Prod2 (b, d) temp 1 ← Sum(temp2 , Sum(temp3 , temp1 )) temp 1 ← Shift(temp1 , n2 ) ; temp 2 ← Shift(temp2 , n ) Return (Sum(temp2 , Sum(temp1 , temp3 ))) end
Produkt mit einer Potenz der Zahlbasis procedure Shift(I, m) if s = 0 then Return ((0, 0)) else Return ((s, 0, . . . , 0, i0 , . . . , in−1 )) end if m end
# Eingabe: I = (s , i0 , . . . , in−1 )β , # m∈ # Ausgabe: I · β m
N
F¨ ur diese Verschiebung gilt Op[I · β m ← Shift(I, m)] Lβ (I). Folgerung: H¨atte man nicht wie Karatsuba m = 2 , sondern etwa m = 4 gew¨ahlt (d.h. die Zahlen der β-L¨ ange n in 4 gleiche Teile aufgespalten), so w¨ are f¨ ur > 4 der Aufwand Op(n) nlog4 .
72
4 Grundlegende algebraische Strukturen
Wegen log4 < log2 3 ⇐⇒ ≤ 8 hieße das, dass man einen asymptotisch besseren Algorithmus als den von Karatsuba erhielte, wenn es gel¨ ange das Produkt der zwei Zahlen der β-L¨ ange n durch h¨ ochstens 8 Produkte von Zahlen der β-L¨ ange n4 und einigen Additionen und Verschiebungen auszudr¨ ucken. Dies ist in der Tat m¨ oglich und gelingt auch f¨ ur noch feinere St¨ uckelungen der Zahlen I und J . Der Karatsuba-Algorithmus ist damit nur der erste von einer Folge von Algorithmen mit dem Aufwand Op[Prodr+1 ](n) nlogr+1 (2r+1) , r = 1, 2, . . . Wegen logr+1 (2r + 1) < 1 + logr+1 2 → 1 f¨ ur r → ∞ gibt es also zu jedem ε > 0 einen Algorithmus f¨ ur die Langzahlmultiplikation mit einem Aufwand, der von n1+ε dominiert wird. Wegen der großen Vorfaktoren sind diese Algorithmen aber nur von theoretischem Interesse. A. L. Toom [Too] formulierte einen ¨ ahnlichen √ Algorithmus mit dem beachtlichen asymptotischen Aufwand O(n1+3.5/ log2 n ) . 4.1.3.2 Beispiel: Um absch¨ atzen zu k¨ onnen, ab welcher Zahlengr¨ oße n sich der Karatsuba-Algorithmus lohnt, wird der Aufwand f¨ ur die beiden Algorithmen Prod1 und Prod2 etwas genauer untersucht. ange n , dass F¨ ur Prod1 ergibt sich bei zwei Zahlen gleicher β-L¨ die Hauptschleife n2 -mal durchlaufen wird und jedesmal ein Produkt, eine Division mit Rest und 2 Summen ausgef¨ uhrt werden. Nachdem Produkt und Division etwa gleich schnell berechnet werden k¨onnen, meist aber deutlich langsamer als die Addition sind, kann man etwa Op[Prod1 ](b) = n2 (2k + 2p) vermerken, wobei k , wie bereits zuvor, ein Maß f¨ ur die Addition, p f¨ ur die Multiplikation, ist. Ein realistisches Verh¨ altnis w¨ are etwa p ≈ 2k . Im Beweis von 4.1.3.1 findet man f¨ ur Karatsuba mit > m die Formel Op[Prod2 ](n) = nlog2 3 (k1 + 2k2 ) − 2k2 n ange 1 angewandt). mit k1 = 2(k + p) ( Prod1 auf β-L¨ Gilt nun etwa k = c = 1 , so ergibt sich f¨ ur β = 215 die folgende Tabelle, die zeigt, dass sich, je nach den sehr vom Rechner abh¨ angigen Werten der Konstanten, der Karatsuba-Algorithmus erst ab sehr großen Zahlenwerten lohnt. Man wird deshalb in aller Regel große Zahlen nur soweit nach Karatsuba zerlegen, bis die einzelnen Bruchst¨ ucke kleiner als dieser Zahlenwert sind und diese Bruchst¨ ucke dann nach der Standardmethode ausmultiplizieren.
4.1 Ganze Zahlen
73
In der Prozedur Prod2 wird man also die erste Zeile ersetzen durch if m ≤ S and n ≤ S mit einer geeigneten Schranke S . p= Op[Prod2 ](n)=
1 1.5 2.0 2.5
22nlog2 3 − 18n 23nlog2 3 − 18n 24nlog2 3 − 18n 25nlog2 3 − 18n
Op[Prod1 ](n)=
4n2 5n2 6n2 7n2
Op[Prod2 ](n)
n= 50 31 21 15
Dezimalstellen
226 140 95 68
Die nebenstehende Skizze zeigt den Verlauf der Schulmethode (Prod1 ), des Karatsuba-Algorithmus (Prod2 ), und des kombinierten Karatsuba-Algorithmus mit n0 = 4 und jeweils k = c = 1 und p = 2 . Man sieht sieht hier den bereits oben angegebenen trade off point“ in der ” N¨ahe von 21 und den Vorteil der Kombination beider Methoden. Im kombinierten Fall hat man es mit der Rekursion * 2(k + p)n2 f¨ u r n ≤ n0 T (n) = 3 · T ( n2 ) + k2 · n f¨ ur n > n0 zu tun. Asymptotisch liefert das zwar immer noch einen Algorithmus mit O(nlog2 3 ) , aber der entsprechende Vorfaktor l¨ asst sich durch eine g¨ unstige Wahl von n0 noch deutlich beeinflussen. Ein asymptotisch sehr schneller Algorithmus (O(n log n log log n)) zur Langzahlmultiplikation beruht auf der schnellen Fourier-Transformation (kurz FFT, [ScS]). Diese wird hier nicht besprochen, da der trade off point“ ” nochmals deutlich h¨ oher als bei Karatsuba liegt. Das hochspezialisierte Paket GMP bietet FFT nur u ¨ber den Schalter ‘--enable-fft’ an und im Hilfetext dazu liest man: ‘By default multiplications are done using Karatsuba and 3-way Toom-Cook algorithms, but a Fermat FFT can be enabled, for use on large to very large operands. Currently the FFT is recommended only for knowledgeable users who check the algorithm thresholds for their CPU.’ ¨ Ahnlich wie beim Algorithmus von Karatsuba zur Langzahlmultiplikation f¨ uhrt ein Teile und Herrsche“– Verfahren bei der ” Matrixmultiplikation zu einer verbesserten zeitlichen Komplexit¨ at. Die Idee dazu stammt von V. Strassen [Str] : a12 , B = b11 b12 ∈ Rn×n 11 Es seien R ein Ring, A = a a21 a22 b21 b22 n × n-Matrizen ( n Zweierpotenz) mit den n2 × n2 -Untermatrizen aij und bij (1 ≤ i, j ≤ 2) .
4.1.3.3 Aufgaben:
74
4 Grundlegende algebraische Strukturen
c11 c12 := A · B sei das entsprechend in Untermatrizen aufgec21 c22 teilte Produkt der beiden gegebenen Matrizen. a) Man gebe eine Rekursionsformel f¨ ur OpR [Standard](n) an, wenn ur das Produkt nach der Standardmethode cij = ai1 b1j + ai2 b2j f¨ (1 ≤ i, j ≤ 2) berechnet wird. b) Man gebe eine Rekursionsformel f¨ ur OpR [Strassen](n) an, wenn die Eintr¨ age von C wie folgt berechnet werden: 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 , c11 = m1 + m2 − m4 + m6 , c12 = m4 + m5 , c21 = m6 + m7 , c22 = m2 − m3 + m5 − m7 . C=
c)
Man l¨ ose allgemein die Rekursion
* T (n) =
R
d)
e)
a bT
n 2
n 2
+c
2
f¨ ur n = 1 f¨ ur n > 1
N
f¨ ur a ∈ + , b, c ∈ . Man bestimme die Komplexit¨ at der in c) gegebenen Funktion T und vergleiche damit den Standardalgorithmus zur MatrixMultiplikation mit dem Strassen-Algorithmus. F¨ ur a = 1.2 bestimme man den break even point“ des Strassen– ” Algorithmus, d.h. das n , ab dem der Strassen–Algorithmus schneller als die Standardmethode ist.
4.1.4 Division In einem euklidischen Ring R verf¨ ugt man bekanntlich u ¨ber eine Gradfunktion δ : R\{0} → , so dass zu beliebigen a, b ∈ R\{0} Elemente q, r ∈ R mit a = bq + r und r = 0 oder δ(r) < δ(b) existieren. In Z nimmt man meist f¨ ur die Gradfunktion δ(r) = |r| ( δ(r) = |r|n mit jedem beliebigen, aber festen n ∈ N geht auch). Die Elemente q und r sind i.Allg. nicht eindeutig festgelegt, wie etwa das Beispiel 5 = 2 · 2 + 1 = 2 · 3 − 1 zeigt. F¨ ur I, J ∈ Z , J = 0 schreibt man
N
I = ZQuo(I, J) ·J + ZRest(I, J) Ganzzahliger Quotient
Ganzzahliger Rest
mit 0 ≤ ZRest(I, J) < |J| f¨ ur I ≥ 0 , −|J| < ZRest(I, J) ≤ 0 f¨ ur I < 0 . Durch die Vorzeichenwahl sind ZQuo(I, J) und ZRest(I, J) eindeutig. Die Rechner-Methode zur Langzahldivision ¨ ahnelt sehr der Methode beim Rechnen per Hand. Die einzige Schwierigkeit ist die Raterei“ beim ziffern” weisen Aufbau des Quotienten. Diese muss noch algorithmisch formuliert werden.
4.1 Ganze Zahlen
75
Die Zahlen I und J seien wieder in der Form I = (s , i0 , . . . , in−1 )β und J = (t , j0 , . . . , jm−1 )β gegeben, weiterhin sei Q := ZQuo(I, J) = (u , q0 , . . . , q−1 )β . Der Einfachheit halber betrachtet man vorerst nur positives I und J . Da der Quotient einer Zahl der β-L¨ ange 2 durch eine der L¨ ange 1 (double precision/single precision integer) u u¨blicherweise bereits zur Verf¨ gung steht, nimmt man als Tipp f¨ ur die Leitziffer q := q−1 des Quotienten Q die Zahl , + in−1 β + in−2 q ∗ := . jm−1 Ist diese gr¨oßer als β − 1 , so-erg¨ anzt uhren. man den Dividenden mit einer f¨ in−1 ∗ den Null, nimmt also q := jm−1 . Sorgt man vor der eigentlichen Division durch geeignetes Erweitern des Quotienten daf¨ ur, dass die Leitziffer jm−1 des Divisors J gr¨ oßer als die H¨alfte der Zahlbasis β ist, jm−1 ≥ " β2 # , so kann man zeigen, dass dieser Tipp q ∗ h¨ ochstens um 2 gr¨ oßer ist, als der wahre Wert q , also q ∈ {q ∗ , q ∗ − 1 , q ∗ − 2} . Hat man das richtige q durch Probieren aus q ∗ bestimmt, so berechnet man I = I − q · J · β n−m = (s , i0 , . . . , in−2 )β ( in−2 k¨onnte hier ausnahmsweise entgegen der fr¨ uher getroffenen Vereinbarung verschwinden, vgl. 2. Schritt im folgenden Beispiel). Als Tipp f¨ ur die n¨achste Ziffer q := q−2 nimmt man nun , + in−2 β + in−3 ∗ q := min ,β − 1 . jm−1 ochstens um 2 gr¨ oßer als der wahre Wert q . So Auch dieses q ∗ ist h¨ verf¨ahrt man rekursiv weiter. Bevor bewiesen wird, dass das alles wirklich so geht, ein einf¨ uhrendes Beispiel zu diesem so genannten Pope-Stein Divisions-Algorithmus [PSt]: 4.1.4.1 Beispiel: Es seien β = 10 , I = 4561238 und J = 222 . Durch Erweitern mit d = 3 erh¨ alt man 13683714 und 666 , also wie gefordert 6 ≥ " β2 # = 5 . Damit ist q ∗ = " 13 6 # = 2 , was wegen 1368 − 2 · 666 = 36 > 0 richtig ist (w¨ are q ∗ zu groß gewesen, so h¨atte man hier ein negatives Ergebnis bekommen); es ist also q = 2 usw.: 13683714 : 666 =20. . . 1332 q∗ = 2 0363 0000 q∗ = 0 3637
76
4 Grundlegende algebraische Strukturen
Bis dahin verl¨ auft die Rechnung also genauso wie gewohnt. Jetzt ergibt sich allerdings wegen q ∗ = " 36 atzung, 6 # = 6 eine falsche Sch¨ denn 3637 − 6 · 666 = −359 < 0 , d.h. q ∗ ist zu groß. Wegen −359 + 666 = 307 > 0 sieht man aber, dass q = q ∗ − 1 = 5 zum Ziel f¨ uhrt. Der Rest der Rechnung verl¨ auft wieder wie gewohnt und man erh¨alt 13683714 : 666 = 20546 Rest 78 bzw. 4561238 : 222 = 20546 Rest 78 3 = 26 . Nun zur Begr¨ undung der einzelnen Rechenschritte des Pope-Stein-Algorithmus ( I , J , Q bzw. q und q ∗ wie oben definiert): 4.1.4.2 Satz:
Mit den eingef¨ uhrten Bezeichnungen gilt . - . β ) ⇒ β2 ≤ jm−1 <β, a) d := jm−1 +1 , dJ = (t, j0 , . . . , jm−1
b) q ∗ ≥ q , c) jm−1 ≥ " β2 # ⇒ q ∗ ≤ q + 2 . Beweis: a) •
d≤ m−2
ji β i=0 ⇒ jm−1
β jm−1 + 1 i
<β
m−1
⇐⇒ jm−1 d ≤ β − d ⇒d·
m−2
i
ji β < dβ
m−1
⎫ ⎪ ⎪ ⎪ ⎬ ⎪ ⎪ ⎪ ⎭
⇒
i=0
¨ = jm−1 d + Ubertrag < (β − d) + d = β • ∃r : 0 ≤ r ≤ jm−1 und β = d(jm−1 + 1) + r . Es gilt : jm−1 + 1 rjm−1 jm−1 β ⇐⇒ (d(jm−1 + 1) + r) = jm−1 d + = 2 2jm−1 2jm−1 2jm−1 β 2jm−1 rjm−1 jm−1 d = = − jm−1 + 1 2 2jm−1 β β 1 (jm−1 − 1) − rjm−1 = + 2 jm−1 + 1 2 - . ≥ jm−1 d sicher dann gr¨ oßer oder gleich als β2 , Es ist also jm−1 wenn (jm−1 − 1) β2 − rjm−1 ≥ 0 ist. uhrt auf Einsetzen von β = d(jm−1 + 1) + r f¨ 1 d 2 (jm−1 − 1) + r(jm−1 − 1) − rjm−1 ≥ 0 ⇐⇒ 2 2 2 djm−1 − rjm−1 − d − r ≥ 0 ⇐⇒ " 2 r + r + 4d(d + r) r jm−1 ≥ = +1 2d d Probleme k¨ onnte es nur geben f¨ ur jm−1 < dr + 1 . Wegen r ≤ jm−1 1 geht das nur, wenn jm−1 (1 − d ) < 1 ist, d.h. wenn d = 1 oder jm−1 = 1 ist.
4.1 Ganze Zahlen
77
Im ersten Fall folgt r = jm−1 und β = (jm−1 +1)+jm−1 = 2jm−1 + - . β 1 , d.h. jm−1 ist eh schon 2 , weshalb d = 1 in Ordnung ist. Im - . zweiten Fall folgt r = 1 , also β = 2d + 1 und somit d = β2 . Damit ist jm−1 ≥ " β2 # auch in diesem Fall gesichert. b) F¨ ur diesen Punkt kann man sich zur Vermeidung von Trivialf¨ allen auf den Fall n = 2m 3+ 1 und J ≤ I < βJ , also jm−1 > im beschr¨ anken. Dann ist q = JI . Wegen q ≤ β − 1 ist die Aussage sicher f¨ ur q ∗ = β − 1 richtig. . m−1 m−1 +1 − , so folgt q ∗ ≥ im β+i Ist q ∗ < β − 1 , d.h. q ∗ := im β+i jm−1 jm−1 ∗ 1 ⇐⇒ q · jm−1 ≥ im β + im−1 + 1 − jm−1 . Damit folgt
I − q ∗ J ≤ I − q ∗ jm−1 β m−1 ≤ ≤ im β m + . . . + i1 β + i0 − (im β + im−1 + 1 − jm−1 )β m−1 ≤ ≤ im−2 β m−2 + . . . + i1 β + i0 −β m−1 +jm−1 β m−1 <
<β m−1
<0
< jm−1 β m−1 ≤ jm−1 β m−1 + . . . + j1 β + j0 = J also zusammen I − q ∗ J < J ⇐⇒ I − (q ∗ + 1)J < 0 . W¨ are q > q ∗ , so w¨are also widerspr¨ uchlicherweise I − qJ < 0 . c) Ist J = β m−1 , so ist q = q ∗ , die Aussage also richtig. Man. kann also im β+im−1 m−1 ∗ im Folgenden J = β folgt voraussetzen. Aus q = jm−1 im β m + im−1 β m−1 + . . . + i1 β + i0 im β m + im−1 β m−1 ≤ = jm−1 β m−1 jm−1 β m−1 I I = ≤ denn jm−1 β m−1 J − β m−1
q∗ ≤
J − β m−1 = (jm−1 − 1)β m−1 + jm−2 β m−2 + . . . + j1 β + j0 = = jm−1 β m−1 + (jm−2 β m−2 + . . . + j1 β + j0 − β m−1 ) < <0
< jm−1 β
m−1
2 3 Angenommen, q ∗ ≥ q + 3 ⇐⇒ 3 ≤ q ∗ − q . Mit q = JI ⇒ q > und der eben bewiesenen Absch¨ atzung f¨ ur q ∗ folgt also: J I I I 3≤ − − 1 +1= + 1 = J − β m−1 J J J − β m−1 I β m−1 = + 1 ⇐⇒ J J − β m−1
I J
−1
78
4 Grundlegende algebraische Strukturen
2≤
I β m−1 I I J − β m−1 ⇐⇒ ⇐⇒ ≥2 ≥2 m−1 m−1 J J −β J β J
J β m−1
−1 =
= 2(jm−1 + jm−2 β −1 + . . . + j0 β 1−m − 1) ≥ 2(jm−1 − 1) 2 3 Damit gilt auch q = JI ≥ 2(jm−1 − 1) . Nach Voraussetzung ist q ≤ q ∗ − 3 und damit q ≤ β − 4 . Mit der obigen Absch¨ ur q heißt - a.tzung f¨ β das β − 4 ≥ 2(jm−1 − 1) ⇐⇒ β ≥ 2jm−1 + 2 ⇐⇒ 2 ≥ jm−1 + 1 ⇐⇒ - . - . jm−1 < β2 Damit ist gezeigt, dass aus q ∗ ≥ q + 3 folgt: jm−1 < β2 .
Dies ist ¨aquivalent zur Behauptung. Ganzzahlige Division mit Rest procedure Div(I, J) if n ≥ m then d←
-
# Eingabe: I = (s , i0 , . . . , in−1 )β , # J = (t , j0 , . . . , jm−1 )β # Ausgabe: ZQuo(I, J) , ZRest(I, J)
.
β jm−1 +1
I ← Prod1 (I, sd) ; J ← Prod1 (J, td) if
- i
n−1 β+in−2 jm−1
.
> β − 1 then n ← n + 1 end if
for from 0 to n − m do
q ∗ ← min β − 1,
- i
β+in−−2 n−1− jm−1
.
temp ← Dif (1, in−m−1− , . . . , in−1− ), Prod1 (J , q ∗ ) while sign(temp) = −1 do q ∗ ← q ∗ − 1 ; temp ← Sum(temp, J ) end do qn−m− ← q ∗ I ← (1, i0 , . . . , in−m−2− , temp0 , . . . , tempm−1 ) end do u ← st if qn−m = 0 then if n = m then ZQuo(I, J) ← (0, 0) else ZQuo(I, J) ← (u, q0 , . . . , qn−m−1 ) end if else ZQuo(I, J) ← (u, q0 , . . . , qn−m ) end if ZRest(I, J) ← sI /d else ZQuo(I, J) ← (0, 0) ZRest(I, J) ← I end if end
4.1 Ganze Zahlen
79
Es gibt sogar Untersuchungen [CMu], dass man in ca. 67% der F¨ alle mit q ∗ , in ca. 32% mit q ∗ − 1 und in nur 1% mit q ∗ − 2 den richtigen Wert hat. Die Komplexit¨ at des Pope-Stein-Algorithmus (Prozedur Div) wird bestimmt von den Langzahloperationen Prod1 und Dif. Es gilt im Einzelnen: Op[I Op[J Op[J Op[temp Op[temp
← ← ← ← ←
Prod1 (I, sd)](n, 1) Prod1 (J, td)](m, 1) Prod1 (J , q ∗ )](m, 1)) Dif((1, in−m−1− , . . . , in−1− ), J )](m + 1, ≤ m + 1) Sum(temp, J )(≤ m, m)
n m m m+1 m
Der Aufwand in der -Schleife ist kodominant zu m + 1 , denn die while -Schleife wird nach Satz 4.1.4.2 h¨ ochstens 2 mal aufgerufen. Da die -Schleife (n − m + 1)-mal durchlaufen wird, ist sie insgesamt kodominant zu (n − m + 1) · (m + 1) . Da die Schritte vor und nach dieser Schleife von geringerer Komplexit¨ at sind, ist das bereits der Aufwand f¨ ur den gesamten Algorithmus. Es gilt also: Op[(ZQuo(I, J), ZRest(I, J)) ← Div(I, J)] Lβ (J) · (Lβ (I) − Lβ (J)). Sind I, J ∈
N , so gilt wegen
0 ≤ ZRest(I, J) < J auch
logβ (ZQuo(I, J) · J) ≤ logβ (I) < logβ ((ZQuo(I, J) + 1) · J) ⇐⇒ logβ (ZQuo(I, J)) ≤ logβ (I) − logβ (J) < logβ (ZQuo(I, J) + 1) . Da f¨ ur a, b ∈ R+ gilt a − b! − 1 ≤ a! − b! ≤ a − b! heißt das Lβ (ZQuo(I, J)) − 1 ≤ Lβ (I) − Lβ (J) ≤ Lβ (ZQuo(I, J) + 1) , also Lβ (I) − Lβ (J) Lβ (ZQuo(I, J)) . Damit kann man auch schreiben Op[(ZQuo(I, J), ZRest(I, J)) ← Div(I, J)] Lβ (J) · Lβ (ZQuo(I, J)) Der Aufwand f¨ ur die Division ist also kodominant zu dem Aufwand f¨ ur die Berechnung von ZQuo(I, J) · J mit der Prozedur Prod1 und damit genauso groß wie der f¨ ur die Probe, d.h. die Berechnung von ZQuo(I, J) · J + ZRest(I, J) . T. Jebelean [Je1] gab 1997 einen Divisions-Algorithmus an, der asymptotisch die gleiche Komplexit¨ at wie der Karatsuba-Algorithmus hat (ca. Faktor 2 zu Karatsuba). Der Algorithmus kombiniert eine Idee von W. Krandick [KrJ] zur Berechnung des oberen Teils des Quotienten mit der Karatsuba-Multiplikation. Maple setzt diesen Algorithmus im neuesten Release ab Zahlen mit mindestens 50 W¨ ortern (d.h. bei 32 bit 200 Dezimalstellen) ein. Darunter ist der hier gezeigte Algorithmus schneller.
80
4 Grundlegende algebraische Strukturen
4.1.5 Gr¨ oßter gemeinsamer Teiler Die Standardmethode zur Berechnung eines gr¨ oßten gemeinsamen Teilers in dem euklidischen Ring R = Z ist der euklidische Algorithmus, also fortgesetzte Division mit Rest bis die Division aufgeht. Die Analyse des euklidischen Algorithmus gestaltet sich sehr schwierig, da es nicht leicht ist, die Anzahl der Divisionsschritte abzusch¨ atzen und sich außerdem von Schritt zu Schritt die β-L¨ angen der beteiligten ganzen Zahlen ¨andern. D. E. Knuth [Kn2] widmet der Analyse des euklidischen Algorithmus in seinem Seminumerical Algorithms“ fast 20 Seiten und schließt dann mit ” der Bemerkung: In view of the historical importance of Euclid’s method, it seems fair to state that a determination of the asymptotic behavior . . . is the most important problem in the analysis of algorithms which is still unsolved. Eine obere Schranke f¨ ur die Anzahl der Divisionsschritte in Z gibt der folgende Satz von Lam´e (1845) der aussagt, dass man am meisten Schritte braucht, wenn a und b zwei aufeinander folgende Fibonacci-Zahlen sind. Zur Erinnerung: die Fibonacci-Zahlen Fi sind definiert durch die (so genannte Kaninchen-)Rekursion: F0 = 0 , F1 = 1 , Fn+2 = Fn+1 + Fn f¨ ur n ≥ 0 und besitzen die explizite Darstellung √ n √ n 1+ 5 1 1− 5 Fn = √ − 2 2 5
N
4.1.5.1 Satz: (Lam´e) Es seien r, a, b ∈ , a > b und die Berechnung von ggT(a, b) ben¨otige genau r Divisionsschritte. Das kleinstm¨ogliche a mit dieser Eigenschaft ist Fr+2 , das zugeh¨orige b ist Fr+1 . Beweis: Berechnet man den ggT von a1 = a und a2 = b wie im Abschnitt u ur ¨ber Ideale gezeigt, aber mit der Zusatzbedingung ai ≥ 0 f¨ i = 1, 2, . . . , ar+1 (fortgesetzte Anwendung der Prozedur Div), so erh¨ alt man eine eindeutige, monoton fallende Folge positiver ganzer Zahlen a1 , . . . , ar , ar+1 = ggT(a, b) und eine dazugeh¨ orige, ebenfalls eindeutig bestimmte Folge von ganzen, positiven Quotienten q1 , q2 , . . . , qr . Knuth f¨ uhrte f¨ ur die endliche Zahlenfolge (q1 , . . . , qr , ar+1 ) den Begriff der euklidischen Darstellung ein, denn es sind nicht nur die Zahlen q1 , . . . , qr , ar+1 durch a1 und a2 eindeutig festgelegt, sondern es sind nat¨ urlich auch anders herum die Zahlen a1 und a2 durch diese Folge eindeutig festgelegt. Es besteht also ein eineindeutiger Zusammenhang zwischen dem Zahlenpaar (a, b) und der zugeh¨ origen euklidischen Darstellung.
4.1 Ganze Zahlen
81
Substituiert man, von der letzten Gleichung beginnend, das jeweilige ai in die vorhergehende Gleichung des euklidischen Algorithmus, so erh¨ alt man f¨ ur a1 die Darstellung a1 = (q1 q2 · . . . · qr + c)ar+1 , wobei c eine Summe von kleineren Produkten der qi ist. An dieser Darstellung liest man ab, dass a = a1 f¨ ur gegebenes r minimal ist, wenn die qi und der ggT ar+1 minimal sind, d.h. wenn die euklidischen Darstellung die 1-Folge ist. Die letzten beiden Schritte des euklidischen Algorithmus w¨ aren somit 1 = 1 · 1 und 2 = 1 · 1 + 1 . Das ist so nicht ganz richtig, denn der Rest soll ja kleiner als der Teiler sein, d.h. aus diesen zwei Schritten wird der eine Schritt 2 = 1 · 2 + 0 . Die fr¨ uheren Divisionsschritte bleiben davon unber¨ uhrt, d.h. sie sind 3 = 1 · 2 + 1 , 5 = 1 · 3 + 2 usw., d.h. die richtige euklidischen Darstellung ist (1, . . . , 1, 2, 1) . Die zugeh¨orige Folge der ai ist ar+1 = 1 , ar = 2 , ar−1 = ar + ar+1 = 3 , ar−2 = ar−1 + ar = 4 , also gerade die Folge der Fibonacci-Zahlen mit F2 = ar+1 , F3 = ar , F4 = ar−1 ,. . . , Fr+1 = a2 , Fr+2 = a1 . Der euklidische Algorithmus durchl¨ auft dann die Fibonacci-Rekursion r¨ uckw¨ arts, also Fr+2 = 1 · Fr+1 + Fr Fr+1 = 1 · Fr + Fr−1 .. . F4 F3
= 1 · F3 + = 2 · F2
F2
und ggT(Fr+2 , Fr+1 ) = F2 = 1 . Mit Hilfe des Satzes von Lam´e kann man absch¨atzen, wieviele Divisionsschritte h¨ ochstens f¨ ur den euklidischen Algorithmus n¨otig sind:
N
4.1.5.2 Satz: Es seien a, b, N ∈ 0 mit 0 ≤ a, b < N . Dann sind zur Berechnung von ggT(a, b) nach dem angegebenen Algorithmus h¨ochstens 4 5 √ logφ ( 5N ) − 2 Divisionsschritte n¨otig ( φ :=
√ 1+ 5 2
ist der goldene Schnitt).
Beweis: Es seien a = Fr , b = Fr+1 mit Fr+1 < N ≤ Fr+2 . Der erste Schritt bei Euklid lautet dann: Fr = 0 · Fr+1 + Fr , vertauscht also nur die beiden Fibonacci-Zahlen. Ab da sind es dann noch r − 1 Schritte bis zum ggT = 1 und dies ist nach Lam´e die maximale Anzahl an Schritten f¨ ur den vorgegebenen Bereich von a und b . Wegen √ r+1 √ r+1 1+ 5 1− 5 1 Fr+1 = √ − 2 2 5 =:φ
=:ψ
82
4 Grundlegende algebraische Strukturen
folgt aus Fr+1 < N ≤ Fr+2 : φr+1 − ψ r+1 <
√
5N ≤ φr+2 − ψ r+2
(4.1)
Ist r ungerade, so ist ψ r+1 > 0 und damit φr+1 − ψ r+1√< φr+1 und φ < φr+2 − ψ r+2 . Bestimmt man also r so, dass φr+1 < 5N ≤ φr+2 , so ist erst recht Gleichung (4.1) richtig. Damit erh¨ alt man √ r + 1 < logφ 5N ≤ r + 2 4 5 4 5 √ √ ⇒ r + 2 ≤ logφ ( 5N ) ≤ r + 2 ⇒ r = logφ ( 5N ) − 2 . r+2
Ist r gerade, so ist √−1 < ψ r+1 < 0 < ψ r+2 < 1 . Bestimmt man also r so, dass φr+1 + 1 < 5N ≤ φr+2 − 1 , so ist erst recht Gleichung (4.1) richtig. Damit erh¨ alt man √ φr+1 < 5N − 1 ≤ φr+2 − 2 √ ⇐⇒ r + 1 < logφ ( 5N − 1) ≤ logφ (φr+2 − 2) . Damit folgt 4 5 √ r + 2 ≤ logφ ( 5N − 1) ≤ r + 2 4 5 4 5 √ √ ⇐⇒ r = logφ ( 5N − 1) − 2 < logφ ( 5N ) − 2 die Behauptung gilt also auch in diesem Fall. Gr¨ oßter Gemeinsamer Teiler ganzer Zahlen, Grundversion procedure Gcd (I, J) a ← |I| b ← |J| while b = 0 do Div (a, b) a←b b ← ZRest(a, b) end do Return (a) end
# Eingabe: I = (s , i0 , . . . , in−1 )β , # J = (t , j0 , . . . , jm−1 )β # Ausgabe: ggT(I, J)
√ √ n(N ) + n( 5) Wegen logφ ( 5N ) = ≈ 2.078 n(N ) + 1.6723 heißt das, n φ dass man mit h¨ ochstens r = 2.078 n(N ) + 1.6723! − 2 Divisionsschritten zu rechnen hat. D. E. Knuth [Kn2] gibt f¨ ur die mittlere Zahl der Divisionsschritten an: 12 n(2) n(N ) + 0.06 ≈ 0.8428 n(N ) + 0.06 . π2
4.1 Ganze Zahlen
83
Der Koeffizient von n(N ) beruht dabei auf recht tiefliegenden Untersuchungen, die Konstante 0.06 wurde durch viele ggT -Berechnungen empirisch ermittelt. Sowohl die Maximalzahl, als auch die mittlere erwartete Zahl der Divisionsschritte sind also kodominant zur β-L¨ ange n von N . Nach dem Abschnitt u ur den ¨ber die Langzahldivision ist der Aufwand f¨ i -ten Divisionsschritt ai = qi ai+1 + ai+2 kodominant zu Lβ (ai+1 )Lβ (qi ). Damit gibt es ein c ∈ R+ , so dass gilt: Op[gcd(I, J) ← Gcd(I, J)] ≤ c
r
Lβ (ai+1 )Lβ (qi ) .
i=1
ur Sind 0 < a2 = J < a1 = I mit Lβ (I) = n und Lβ (J) = m , so gilt f¨ i = 2, . . . , r : Lβ (ai ) ≤ m . R¨ uckw¨artssubstitution im euklidischen Algorithmus zeigt r I = ggT(I, J) · qi + kleinere Terme i=1 r
Lβ (qi ) ≤ Lβ (I) − Lβ (ggT(I, J)) + r + 1
i=1
Dies zeigt zusammen mit r = O(n) und k = Lβ (ggT(I, J)) Op[ggT(I, J) ← Gcd(I, J)](n, m, k) m · (n − k + 1). Eine Verbesserung des Standard-Algorithmus wurde von D. H. Lehmer vorgeschlagen [Leh]. Die Prozedur wird dabei so abge¨ andert, dass jeweils nicht eine volle Langzahldivision durchgef¨ uhrt wird, sondern Kurzzahldivisionen der signifikantesten Ziffern im β-System. Den Schl¨ ussel dazu liefert 4.1.5.3 Satz: Es seien (a1 , a2 ) , (a1 , a2 ) und (a1 , a2 ) Paare nat¨ urlicher Zahlen mit a1 a1 a1 < < a2 a2 a2 und euklidischen Darstellungen (q1 , . . . , qr , ar+1 ), (q1 , . . . , qr , ar +1 ) und (q1 , . . . , qr , ar +1 ) .
N
Gibt es ein k ∈ mit q1 = q1 ,. . . , qk = qk , so gilt q1 = q1 = q1 ,. . . , qk = qk = qk . Beweis: Der erste Divisionsschritt bei der ggT-Berechnung von a1 und a2 lautet a1 = q1 a2 + a3 , bei a1 und a2 a1 = q1 a2 + a3 ⇐⇒
a1 a = q1 + 3 a2 a2
84
4 Grundlegende algebraische Strukturen
und entsprechend bei a1 und a2 a1 = q1 a2 + a3 ⇐⇒
a1 a3 a3 = q + = q + . 1 1 a2 a2 a2
Damit folgt a1 a1 a1 a3 a1 a3 a3 a1 a3 < < ⇐⇒ q + < < q + ⇐⇒ < − q < 1 1 1 a2 a2 a2 a2 a2 a2 a2 a2 a2 Wegen 0 ≤ a3 < a2 und 0 ≤ a3 < a2 folgt + , a1 a1 = q1 = q1 = q1 0< − q1 < 1 ⇐⇒ a2 a2 und damit q1 +
a3 a1 a3 a3 a3 a3 a3 a2 a2 a2 < = q + < q + ⇒ < < ⇐⇒ < < 1 1 a2 a2 a2 a2 a2 a2 a2 a3 a3 a3
Die Zahlenpaare (a2 , a3 ) , (a2 , a3 ) und (a2 , a3 ) , haben die euklidischen Darstellungen (q2 , . . . , qr , ar +1 ) , (q2 , . . . , qr , ar+1 ) und (q2 , . . . , qr , ar +1 ) mit q2 = q2 ,. . . , qk = qk . Zusammen mit der bewiesenen Absch¨ atzung a a2 a2 2 < < hat man also sinngem¨ a ß die gleiche Situation wie am Anfang a a3 a 3
3
und kann induktiv weiterschließen q2 = q2 = q2 ,. . . , qk = qk = qk .
4.1.5.4 Beispiel: Es seien I = F26 = 121393 und J = F25 = 75025 . Im Beweis des Satzes von Lam´e ist bereits gezeigt worden, dass diese beiden aufeinander folgenden Fibonacci-Zahlen teilerfremd sind und die euklidische Darstellung (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1) haben. Weiß man nicht, dass es sich um Fibonacci-Zahlen handelt, und betrachtet sie etwa als große ganze Zahlen zur Basis β = 1000 , so sind die Leitziffern 121 und 75 und man kann etwa a1 = 121 , a2 = 75 + 1 , a1 = 121 + 1 , a2 = 75 w¨ ahlen. Die Paare (a1 , a2 ) , (a1 , a2 ) und (a1 , a2 ) erf¨ ullen somit die vorausgesetzte Ungleichung von Satz 4.1.5.3. In Kurzzahlarithmetik ergibt sich als euklidische Darstellung von (a1 , a2 ) die Folge (1, 1, 1, 2, 4, 1, 2, 1) und als euklidische Darstellung von (a1 , a2 ) die Folge (1, 1, 1, 1, 2, 9, 1) . Es ist also k = 3 und die euklidische Darstellung von (a1 , a2 ) lautet nach dem vorhergehenden Satz (1, 1, 1, . . .) . Mit Hilfe von Satz 4.1.5.3 kann man nun zur ggT-Berechnung von a1 und a2 so vorgehen, dass man geeignete Zahlenpaare (a1 , a2 ) und (a1 , a2 ) bestimmt (etwa wie im vorhergehenden Beispiel aus den Leitziffern von I und J im β-System) und an diesen die ggT-Berechnung solange in Kurzzahlarithmetik durchf¨ uhrt, wie die Folge der qk und der qk u ¨bereinstimmen.
4.1 Ganze Zahlen
85
Obwohl man dann nat¨ urlich die Folge a3 , . . . , ak nicht kennt, kann man mit Hilfe der bereits im Abschnitt u ¨ber Ideale verwendeten Beziehung ai ai+1 qi 1 = 1 0 ai+1 ai+2 aus der Folge (q1 , . . . , qk ) die Elemente ak+1 und ak+2 berechnen : 0 1 ak 0 1 0 1 ak−1 ak+1 = = = ... = 1 −qk 1 −qk 1 −qk−1 ak+2 ak+1 ak 1 0 1 a1 · . = 1 −qj a2 j=k
4.1.5.5 Beispiel: (Fortsetzung von 4.1.5.4) Nachdem von der euklidischen Darstellung von (a1 , a2 ) der Teil (1, 1, 1, . . .) bekannt ist, folgt
a4 a5
3 1 a1 0 1 121393 = = 1 −qj 1 −1 75025 a2 j=1 −1 2 121393 28657 = = 2 −3 75025 17711 =
3 0
Wegen ggT(ak+1 , ak+2 ) = ggT(a1 , a2 ) muss man jetzt nur noch den ggT der kleineren Zahlen ak+1 und ak+2 berechnen. Dabei kann man auch nochmals die Lehmersche Idee verwenden und erneut mit den Leitziffern rechnen, solange das geht. 4.1.5.6 Beispiel: (Fortsetzung von 4.1.5.4) Zu dem berechneten Paar (a4 , a5 ) = (28657, 17711) w¨ ahlt man die Ziffernpaare (29, 17) und (28, 18) mit den euklidischen Darstellungen (1, 1, 2, 2, 2, 1) und (1, 1, 1, 4, 2) , d.h. jetzt ist k = 2 und man bekommt 2 a6 0 1 a4 10946 = = usw. 1 −1 6765 a7 a5 Damit rechnet man soweit m¨ oglich mit kleineren Zahlen, muss jetzt allerdings jeweils zwei ggT-Berechnungen parallel machen. 1 0 1 , als Sowohl beim Berechnen des Matrizenproduktes j=k 1 −qj 1 auch beim Multiplizieren dieser Matrix mit dem Vektor a a2 entstehen wieder große Zahlen, die man also je nach Gr¨oße mit einem schnellen Multiplikationsalgorithmus verarbeitet.
Vorsicht! Das Produktzeichen ist hier nicht kommutativ zu verstehen, sondern muss genau
in der Reihenfolge j = k . . . 1 ausgewertet werden.
86
4 Grundlegende algebraische Strukturen
D. E. Knuth [Kn2] gibt f¨ ur den Aufwand einer solchen verbesserte Version O(n log5 n log log n) an, A. Sch¨ onhage [Sc¨ o] verbesserte die Potenz ¨ beim Logarithmus sp¨ ater noch auf 2 . Einen Uberblick dieser Verbesserungen bietet T. Jebelean [Je2]. Ganzzahliger ggT nach Lehmer procedure Gcd # Eing.: I = (s , i0 , . . . , in−1 )β , Lehmer (I, J, N ) 0 # J = (t , j0 , . . . , jm−1 )β A← 1 0 1 # N =Schranke f¨ ur die β a1 ← max(|I|, |J|); a1 ← in−1 ; a1 ← a1 + 1 # L¨ ange von J unterhalb a2 ← min(|I|, |J|); a2 ← jm−1 ; a2 ← a2 + 1 # der Gcd verwendet werden soll if m ≤ N then Return Gcd(a1, a2) end if# # Ausg.: ggT(I, J) if n = m then a1 ← a1 · β n−m ; a1 ← a1 · β n−m end if Div(a1 , a2 ); q ← ZQuo(a1 , a2 ); r ← ZRest(a1 , a2 ) Div(a1 , a2 ); q ← ZQuo(a1 , a2 ); r ← ZRest(a1 , a2 ) if (q = q or r = 0 or r = 0) then Div(a1 , a2 ); a1 ← a2 ; a2 ← ZRest(a1 , a2 ) if a2 = 0 then Return a1 else GcdLehmer (a1 , a2 , N ) end if end if while (q = q and r = 0 and r = 0) do 1 A← 0 1 −q · A a1 ← a2 ; a2 ← r ; a1 ← a2 ; a2 ← r Div(a1 , a2 ); q ← ZQuo(a1 , a2 ); r ← ZRest(a1 , a2 ) Div(a1 , a2 ); q ← ZQuo(a1 , a2 ); r ← ZRest(a1 , a2 ) end do 1 temp← A · a a2 GcdLehmer (temp[1], temp[2], N ) end
4.1.5.7 Beispiel: (Fortsetzung von 4.1.5.4) Mit den Voreinstellungen N = 1 und β = 1000 sieht die in den letzten Beispielen bereits in Teilen ausgef¨ uhrte Berechnung eines ggT der 25. und 26. Fibonacci-Zahl so aus (statt der Ganzzahldivision von I und J werden jeweils a1 durch a2 und a1 durch a2 geteilt): Aufruf GcdLehmer mit I = 121393 , J = 75025 : 1 a1 = 121, a2 = 76, a1 = 122, a2 = 75, q = 1, q = 1, A = 0 1 −1 1 −1 a1 = 76, a2 = 45, a1 = 75, a2 = 47, q = 1, q = 1, A = −1 2 −1 2 a1 = 45, a2 = 31, a1 = 47, a2 = 28, q = 1, q = 1, A = 2 −3
4.1 Ganze Zahlen
87
Aufruf GcdLehmer mit I = 28657 , J = 17711 : 0 1 1 −1 1 −1 a1 = 18, a2 = 10, a1 = 17, a2 = 12, q = 1, q = 1, A = −1 2
a1 = 28, a2 = 18, a1 = 29, a2 = 17, q = 1, q = 1, A =
Aufruf GcdLehmer mit I = 10946 , J = 6765 : a1 = 10, a2 = 7, a1 = 11, a2 = 6, q = 1, q = 1, A =
0 1 1 −1
Aufruf GcdLehmer mit I = 6765 , J = 4181 : a1 = 6, a2 = 5, a1 = 7, a2 = 4, q = 1, q = 1, A =
0 1 1 −1
Aufruf GcdLehmer mit I = 4181 , J = 2584 : Aufruf GcdLehmer mit I = 2584 , J = 1597 : Aufruf GcdLehmer mit I = 1597 , J = 987 : Ausgabe: ggT = 1 . 4.1.5.8 Aufgaben: 1.) Mit Pope-Stein und β = 10 berechne man 9992 : 59 . 2.) Berlekamps Version des erweiterten euklidischen Algorithmus: Es seien a, b ∈ und o.B.d.A. b > 0 . Setze r−2 = a, r−1 = b, p−2 = 0, q−2 = 1, p−1 = 1 , q−1 = 0 . Berechne ak , rk , pk , qk gem¨ aß den Regeln:
Z
rk−2 = ak rk−1 + rk
mit
0 ≤ rk < rk−1 ,
pk = ak pk−1 + pk−2 , qk = ak qk−1 + qk−2 . a) Man zeige: — Es gibt ein n ∈ 0 mit rn−1 = 0 = rn . — F¨ ur dieses n gilt: pn rn−1 = a , qn rn−1 = b und bpn−1 − aqn−1 = (−1)n rn−1 . oßter gemeinsamer Teiler von a und b . — rn−1 ist ein gr¨ mit b) F¨ ur a = 3485 und b = 92 berechne man Zahlen c, d ∈
N
Z
ac + bd = ggT(a, b) . c) Ist 92 in Inverse.
Z3485
invertierbar ? Man berechne gegebenenfalls die
88
4 Grundlegende algebraische Strukturen
4.2 Rationale Zahlen ¨ Ublicherweise wird eine rationale Zahl ab (a, b ∈ Z , b = 0) als Paar (a, b) aus zwei long integers dargestellt. Ist ggT(a, b) = 1 und b > 0 , so ist dies eine kanonische Normalform f¨ ur ab , die mittels des gr¨ oßten gemeinsamen Teilers und der Signumfunktion leicht berechenbar ist. Die Umrechnung in diese kanonische Normalform ist eine der wenigen Vereinfachungen, die in den meisten Computeralgebra-Systemen automatisch ausgef¨ uhrt wird. Es sei deshalb immer ggT(a, b) = 1 und b > 0 vorausgesetzt. Mit Hilfe der bekannten Langzahlarithmetik ist die Arithmetik f¨ ur rationale Zahlen damit eigentlich klar, wegen des h¨ aufigen K¨ urzens durch gr¨ oßte gemeinsame Teiler allerdings recht aufw¨ andig. Deshalb sollte man versuchen, rationale Arithmetik so lange zu vermeiden, wie sie unter vern¨ unftigem Aufwand vermeidbar ist. Wenn man schon rationale Zahlen verwenden muss, so tut man dies mit m¨ oglichst kleinen Daten. Statt z.B. bei der Addition von Br¨ uchen naiv zu rechnen a c ad + bc + = b d bd und dann durch g := ggT(ad + bc, bd) zu k¨ urzen, ist oft das folgende Verfahren g¨ unstiger. Berechne g1 := ggT(b, d) , b := gb1 und d := gd1 und damit a c ad + cb + = b d b d g1 So werden die Zahlen kleiner gehalten. Da das Ergebnis jetzt i.Allg. (n¨amlich f¨ ur g = g1 ) noch nicht optimal durchgek¨ urzt ist, muss man allerdings nochmals einen ggT berechnen. Dabei hilft die Tatsache, dass g2 := ggT(ad + cb , b d g1 ) = ggT(ad + cb , g1 ) ist, denn b und d enthalten sicher keine Teiler von ad +cb . Insbesondere ist hier nichts mehr zu tun, wenn g1 = 1 war. Die gleiche Methode l¨ asst sich genauso auf andere Quotientenk¨ orper u ¨bertragen und bringt dort je nach der zugrundeliegenden Arithmetik sogar noch gr¨oßere Beschleunigung als im vorliegenden Fall. Analog lohnt es sich beim Produkt a c a c · = · b d d b erst die Br¨ uche
a d
und
c b
zu k¨ urzen und nicht erst das Ergebnis
ac bd
.
4.3 Algebraische Zahlen und Funktionen
89
4.2.1 Beispiel: Mit der u ¨blichen Methode gerechnet, ist 11 77 220 + 1155 1375 55 + = = = . 15 20 300 300 12 Dazu musste ggT(1375, 300) berechnet werden und als gr¨ oßtes Produkt 77 · 15 . Mit der verbesserten Methode sieht die Rechnung wie folgt aus: 11 · 20 11 77 5 + 77 · + = 20 15 15 20 5 · 5 ·5
15 5
=
275 55 44 + 231 = 5 5 = . 12 · 5 12 12 · 5
Hierzu musste ggT(20, 15) und ggT(275, 5) berechnet werden. Das gr¨oßte zu berechnende Produkt war 77 · 3 .
4.3 Algebraische Zahlen und Funktionen 4.3.1 Grundlagen und Probleme Im Folgenden seien K und L jeweils K¨ orper. 4.3.1.1 Definition: Eine K¨orpererweiterung L : K (d.h K ⊆ L ist mit den f¨ ur L gegebenen Verkn¨ upfungen auch ein K¨ orper) heißt algebraisch, wenn jedes a ∈ L algebraisch u ¨ber K ist, d.h. wenn es zu jedem a ∈ L ein f ∈ K[x] \ {0} mit f (a) = 0 gibt. 4.3.1.2 Definition: Ist L : K eine K¨ orpererweiterung und A ⊆ L , so ist K(A) (lies: K adjungiert A ) der kleinste Unterk¨ orper von L , der K und A enth¨ alt. F¨ ur ein einzelnes Element a ∈ L schreibt man statt K({a}) meist k¨ urzer K(a) . Da K(a) selbst wieder ein K¨ orper, also bez¨ uglich Addition nund Multii plikation abgeschlossen ist, muss jedes Element der Gestalt i=1 ki a mit ki ∈ K auch in K(a) liegen, d.h. es gilt K[a] := {f (a) ; f ∈ K[x]} ⊆ K(a) . Ist a algebraisch u orper, d.h. es ¨ber K , so ist K[a] bereits selbst ein K¨ gilt K(a) = K[a] . 4.3.1.3 Definition: Das Element a heißt primitives Element der K¨ orpererweiterung K(a) : K und L heißt einfach, falls es ein a ∈ L mit L = K(a) gibt. Bei mehrfachen K¨ orpererweiterungen schreibt man statt (K(a1 ))(a2 ) kurz K(a1 , a2 ) usw., bzw. im algebraischen Fall statt (K[a1 ])[a2 ] kurz K[a1 , a2 ] . Unter den Polynomen aus K[x] , die a als Nullstelle besitzen, gibt es ein eindeutig bestimmtes, normiertes Polynom kleinsten Grades. Dieses heißt das Minimalpolynom von a , in Zeichen ma (x) . Das Minimalpolynom teilt jedes andere Polynom aus K[x] , das a als Nullstelle besitzt.
90
4 Grundlegende algebraische Strukturen
n i i Wegen ma (a) = 0 , kann man bei i=1 ki a ∈ K[a] alle Potenzen a mit i ≥ deg(ma ) durch Summen kleinerer Potenzen von a ersetzen, d.h. es gilt sogar K[a] := {f (a) ; f ∈ K[x] , deg f < deg ma } . Ist L : K eine K¨ orpererweiterung, so ist L wegen der m¨ achtigen K¨ orperaxiome insbesondere ein K-Vektorraum. Die Dimension dieses Vektorraumes spielt im Folgenden eine wichtige Rolle: 4.3.1.4 Definition: Es sei L : K eine K¨orpererweiterung. Die Vektorraum-Dimension von L u ¨ber K heißt auch der Grad der K¨orpererweiterung, in Zeichen [L : K] := dimK (L) . Der Grad [L : K] ist genau dann endlich, wenn es endlich viele u ¨ber K ur ein algebraische Elemente a1 , . . . am ∈ L gibt mit L = K[a1 , . . . am ] . F¨ u ¨ber K algebraisches a gilt K[a] ∼ = K[x]/ma (x) und deshalb [L : K] := deg ma (x) . Ist M ein Zwischenk¨ orper der K¨ orpererweiterung L : K , also Oberk¨ orper von K und Unterk¨ orper von L , so gilt der Gradsatz [L : K] = [L : M ] [M : K] . Ist [L : K] endlich, so sind [L : M ] und [M : K] Teiler von [L : K] . 4.3.1.5 Beispiel: In der Computeralgebra interessante algebraische K¨ orpererweiterungen sind etwa √ √ (i) Q( 2) , denn α = 2 ist eine Wurzel von x2 − 2 . Da dieses Polynom normiert und irreduzibel ist, gilt sogar m√2 (x) = x2 − 2 . Weiterhin ist √ √ √ Q( 2) = Q[ 2] ∼ = Q[x]/x2 − 2 , Q[ 2] : Q = 2 √ √ Q( 2) = {a + b 2; a, b ∈ Q} . √ √ (ii) Q(x, 3 x − 1) = Q(x)( 3 x − 1) ist eine algebraische Erweiterung von K = Q(x)√, dem so genannten K¨ orper der rationalen Funktionen, denn 3 x − 1 ist eine Wurzel des Minimalpolynoms y 3 − x + 1 ∈ K[y] . Weiterhin gilt √ √ K( 3 x − 1) = K[ 3 x − 1] ∼ = K[y]/y 3 − x + 1 also
" √ √ K( 3 x − 1) = {a + b 3 x − 1 + c 3 (x − 1)2 ; a, b, c ∈ K} .
4.3 Algebraische Zahlen und Funktionen
(iii)
91
Q[x]/x5 + x + 1 ist zwar eine algebraische K¨orpererweiterung von Q ( x5 + x + 1 ist irreduzibel u ¨ber Q ), eine Wurzel
α von x5 + x + 1 l¨ asst sich aber nicht mit Hilfe von Radikalen schreiben (ein Radikal ist √eine Wurzel eines reinen Polynoms xn − a ∈ K[x] , also etwa n a ). Man kann also α nicht genauer spezifizieren, sondern rechnet in
Q(α) = {a + bα + cα2 + dα3 + eα4 ; a, b, c, d, e ∈ Q} mit der zus¨ atzlichen, durch das Minimalpolynom gegebenen, Regel α5 = −α − 1 . Rechnet man in einer einfachen algebraischen K¨ orpererweiterung K[γ] , so ist klarerweise a0 + a1 γ + . . . + ar γ r mit a0 , . . . , ar ∈ K eine kanonische Darstellung, falls [K[γ] : K] = r+1 ist und die Koeffizienten a0 , . . . , ar ∈ K ihrerseits in einer kanonischen Normalform in K vorliegen. Mit diesen Ausdr¨ ucken rechnet man wie mit Polynomen. Ergeben sich dabei Potenzen von γ mit Exponenten gr¨ oßer als r , so wird, wie in den Beispielen gezeigt, nach einer durch das Minimalpolynom mγ (z) gegebenen Regel reduziert. Adjungiert man dagegen mehrere algebraische Zahlen an K , so ist es ein keineswegs triviales Problem, eine kanonische Darstellung f¨ ur die Elemente dieses K¨orpers zu finden. Mittels des folgenden Satzes u ¨ber das primitive Element k¨ onnte man aber versuchen, in diesen F¨ allen zu einer einfachen algebraischen Erweiterung u ¨berzugehen: 4.3.1.6 Satz: Jede endliche Erweiterung eines endlichen K¨orpers oder eines K¨orpers der Charakteristik 0 ist einfach, d.h. zu Elementen a1 , . . . , an ∈ L ( L : K endliche Erweiterung) gibt es ein a ∈ L mit K(a1 , . . . , an ) = K(a) . Der Beweis dieses Satzes im vorerst interessanten Fall char K = 0 ist konstruktiv (siehe etwa [Me2]): Sind a und b algebraisch u ¨ber K , so gibt es ein y ∈ K , so dass c := ay + b primitives Element von K(a, b) ist, also K(a, b) = K(c) . Man berechnet den gr¨ oßten gemeinsamen Teiler von ma (z) und mb (c−yz) in K(a, b)[z] . Das Element c ist genau dann primitiv, wenn dieser ggT gleich z − a ist. W¨ahrend dies in den meisten Algebra-B¨ uchern durch mehr oder weniger geschicktes Ausprobieren festgestellt wird, sind wir mit Hilfe von Satz 2.5.4 in der Lage, c mittels Resultanten zu berechnen. Es gilt n¨ amlich: ma (z) mb (c − yz) =1 , z−a z−a ma (z) mb (c − yz) = 0 ⇐⇒ resz , z−a z−a
ggT(ma (z), mb (c − yz)) = z − a ⇐⇒ ggT
92
4 Grundlegende algebraische Strukturen
√ √ 4.3.1.7 Beispiel: Es seien K = Q , a = 3 2 und b = 2 , also ma (z) = z 3 − 2 und mb (z) = z 2 − 2 . Dann ist ma (z) z 3 − a3 = = z 2 + az + a2 z−a z−a mb (z) = z 2 − b2 ⇒ mb (c − yz) = (c − yz)2 − b2 ⇒ * a ay + b ± b mb (c−yz) = 0 ⇐⇒ c−yz = ±b ⇐⇒ z = = ay+2b ⇒ y y mb (c−yz) = y 2 (z −a)(z − ⇒ resz
ay + 2b mb (c − yz) )⇒ = y 2 z −y(ay +2b) y z−a
ma (z) mb (c − yz) , z−a z−a
1 a a2 2 = = y −y(ay + 2b) 0 0 y2 −y(ay + 2b) = y 2 (3a2 y 2 + 6aby + 4b2 )
Die einzige rationale Wurzel∗ dieses Polynoms ist y = 0 , d.h. jedes y ∈ Q \ {0} liefert ein√ primitives Element c = ay + b . Mit y = 1 √ erh¨alt man etwa c = 3 2 + 2 . Ist ein primitives Element c = ay + b gefunden, so betrachtet man die Polynome ma (z) und mb (x − yz) ∈ K[x, z] . Diese besitzen die gemeinsame Wurzel (x, z) = (c, a) . Nach Satz 2.5.3 gilt dann h(x) := resz (ma (z), mb (x − yz)) =
r
mb (x − yai )
i=1
wobei a = a1 , a2 , . . . , ar die (paarweise verschiedenen) Wurzeln von ma sind. Ist der Grad von mb gleich s , so ist h(x) ein normiertes Polynom vom Grad r · s aus K[x] mit der Wurzel c . Aus dem Gradsatz folgt [K(c) : K] = [K(a, b) : K] = K[(a, b) : K(a)] · [K(a) : K] . =r
Deshalb ist genau dann [K(c) : K] = r · s , wenn [K(a, b) : K(a)] = [K(b) : K] = s ist, d.h. wenn mb auch u ¨ber K(a) irreduzibel ist. In diesem Fall ist h(x) also das Minimalpolynom mc (x) von c u ¨ber K .
∗
Diese Information ist i. Allg. kaum zu bekommen, aber auch gar nicht n¨ otig. Es reicht, wenn
man einen Wert angibt, f¨ ur den die Resultante von 0 verschieden ist!
4.3 Algebraische Zahlen und Funktionen
93
Sind r und s teilerfremd, so liest man aus * [K(a, b) : K(a)] · r r · s ≥ [K(c) : K] = [K(a, b) : K(b)] · s ab, dass r und s den Grad [K(c) : K] teilen und damit [K(c) : K] = rs gilt. In diesem Fall spart man sich also den Test, ob mb auch u ¨ber K(a) irreduzibel ist. 4.3.1.8 Beispiel: (Fortsetzung von 4.3.1.7) ma (z) = z 3 − 2 mb (x − yz) = (x − yz)2 − 2 = y 2 z 2 − 2xyz + x2 − 2 ⇒ h(x) = resz (ma (z), mb (x − yz)) = = x6 − 6x4 − 4x3 + 12x2 − 24x − 4 Da deg ma und deg mb teilerfremd sind, ist √ das√nach Vorbemerkung bereits das Minimalpolynom von c = 3 2 + 2 u ¨ber Q . M¨ochte man noch a und b durch das primitive Element c ausdr¨ ucken, so kann man nochmals ggT(ma (z), mb (c−yz)) = z−a ausn¨ utzen. Berechnet man n¨amlich den ggT mit dem nun bekannten c und der (durch mc (x)) bekannten Arithmetik in K[c] , so erh¨ alt man durch Vergleich mit der bekannten rechten Seite a als Polynom in c . Das Element b erh¨ alt man dann aus b = c − ay . Dies ist zwar recht leicht gesagt, durch die aufw¨ andige Arithmetik in K[c] aber m¨ uhsam zu berechnen. Im vorliegenden Beispiel ergibt sich etwa a=−
12 5 9 4 16 3 78 2 76 182 c − c + c + c − c+ , b=c−a 155 310 31 155 155 155
Zum Abschluss ein noch abschreckenderes Beispiel zu primitiven Elementen [NZe]: 4.3.1.9 Beispiel: Es seien a und b zwei verschiedene Wurzeln von p(x) = x4 + 2x3 + 5 . Dann ist ein primitives Element d ∈ Q(a, b) Wurzel eines Polynoms vom Grad 12 mit gr¨ oßtem Koeffizienten fast 2·105 . (Je nach primitivem Element ergibt sich z.B. z 12 + 18z 11 + 132z 10 + 504z 9 + 991z 8 + 372z 7 − 3028z 6 − 6720z 5 + 11435z 4 + 91650z 3 + 185400z 2 + 194400z + 164525 ) Noch h¨asslicher wird es, wenn man die Elemente a und b durch d ausdr¨ ucken m¨ ochte: die Koeffizienten werden dann bis zu 14-stellig. Die Berechnung von d und a(d) bzw. b(d) geschieht dabei (wie in den vorhergehenden Beispiel gezeigt) mit Resultanten und wird hier nicht ausgef¨ uhrt. Da x4 + 2x3 + 5 u ¨ber Q(a, b)[x] noch nicht in Linearfaktoren zerf¨ allt, es gilt x4 + 2x3 + 5 = (x − a)(x − b)(x2 + (2 + a + b)x + 2a + a2 + 2b + ab + b2 ),
94
4 Grundlegende algebraische Strukturen
m¨ochte man vielleicht noch eine dritte Wurzel c (=Wurzel des noch verbleibenden quadratischen Faktors) adjungieren, d.h. in dem Zerf¨allungsk¨ orper Q(a, b, c) von p(x) rechnen. Das Minimalpolynom eines primitiven Elements e von Q(a, b, c) ist vom Grad 24 und enth¨ alt bereits u ¨ber 200-stellige Koeffizienten! Die Beispiele zeigen, warum die meisten existierenden CA-Systeme auf eine Berechnung primitiver Elemente verzichten; der anf¨ anglich so sch¨ on anmutende Satz u achlich von ¨ber das primitive Element ist leider haupts¨ theoretischem Interesse. F¨ ur die kanonische Darstellung algebraischer Zahlen oder Funktionen gibt es im wesentlichen drei Schwierigkeitsstufen zu unterscheiden, die teilweise in den Beispielen schon anklangen: √ √ (1) Einfache, nichtverschachtelte Radikale, etwa 3 2 oder x − 1 . " "√ √ √ 3 3 (2) Zus¨atzlich zu (1) verschachtelte Radikale wie 2− 3, x− x. (3) Zus¨atzlich zu (2) algebraische Ausdr¨ ucke, die sich nicht durch Radikale darstellen lassen, etwa 2 − 13 α mit dem α aus Beispiel 4.3.1.5(iii). Diese drei Punkte werden in den n¨ achsten Abschnitten einzeln diskutiert. 4.3.2 Nichtverschachtelte Radikale
N
Es seien K ein K¨ orper, a1 , . . . , ar ∈ K, n1 , . . . , nr ∈ , ζ1 , . . . , ζr ∈ K (algebraischer Abschluss von K ) mit ζini = ai f¨ ur i = 1, . . . , r . Betrachtet wird die algebraische K¨ orpererweiterung von K mit den nichtverschachtelten Radikalen ζ1 , . . . , ζr auf L := K(ζ1 , . . . , ζr ) . Ist [L : K] = n1 · . . . · nr , so bilden die Elemente ur i = 1, . . . , r ζ11 · ζ22 · · · ζrr mit 0 ≤ i ≤ ni − 1 f¨ eine Basis des K -Vektorraumes L . Jedes Element aus L l¨ asst sich also eindeutig als K -Linearkombination dieser Elemente darstellen, womit bis auf die Reihenfolge der Summanden eine kanonische Darstellung f¨ ur die Elemente von L gefunden w¨ are (dabei sei vorausgesetzt, dass die Koeffizienten in kanonischer Normalform f¨ ur K vorliegen). Die Eindeutigkeit der Reihenfolge bekommt man etwa durch lexikographisches Sortieren der Exponentenvektoren (1 , . . . , r ) . Siehe dazu den Abschnitt u ur multivariate Polynome. ¨ber zul¨assige Ordnungsrelationen f¨ 4.3.2.1 Beispiel: √ √ √ √ (i) Mit Hilfe des primitiven Elements 2 + 3 von Q( 2, 3) erh¨alt man die kanonische Darstellung √ √ √ √ √ √ a + b( 2 + 3) + c( 2 + 3)2 + d( 2 + 3)3 von Elementen dieses K¨ orpers (a, b, c, d ∈ Q) .
4.3 Algebraische Zahlen und Funktionen
95
√ √ Wegen [Q( 2, 3) : Q] = 4 geht’s aber auch einfacher in der oben angesprochenen Gestalt √ √ √ √ a 2 3 + b 2 + c 3 + d √ √ √ √ ( ζ1 = 2, ζ2 = 3 , lexikographisch sortiert: 2 3 entspricht dem Exponentenvektor (1 , 2 ) = (1, 1) , kommt also zuerst, usw.). √ √ (ii) F¨ ur verschiedene Primzahlen p , q gilt [Q( p, 3 q) : Q] = 6 (vgl. Bemerkung vor Beispiel 4.3.1.8). Eine kanonische Darstel√ √ lung f¨ ur Elemente aus Q( p, 3 q) ist also etwa √ √ √ √ √ 2 √ √ 2 a+b p+c3q+d p3q+e3q +f p3q √ √ mit a, b, c, d, e, f ∈ Q ( ζ1 = 3 q, ζ2 = p invers lexikographisch sortiert). Diese Darstellung ist der mit Hilfe des primi√ √ tiven Elements p · 3 q sehr a¨hnlich, denn √ √ 2 √ √ 3 √ √ 4 √ √ 5 √ √ a + b p 3 q + c ( p 3 q) + d ( p 3 q) + e ( p 3 q) + f ( p 3 q) √ √ √ 2 √ √ √ 2 √ =a + b p 3 q + c p 3 q + d pq p + e p2 q 3 q + f p2 q p 3 q mit a = a, b = d, c p = e, d pq = b, e p2 q = c, f p2 q = f . √ (iii) Die u ¨bliche Radikalschreibweise n a ist nicht nur nicht eindeutig, allen sogar falsch. W¨ ahrend man √ sondern in manchen F¨ mit 2 noch eindeutig die positive Wurzel des Polynoms √ z 2 − 2 meint, ist bei 4 −5 erst einmal nicht klar, welche der vier√komplexen Wurzeln von z 4 + 5 man meint. Solange man Q( 4 −5) als {a + bw + cw2 + dw3 ; a, b, c, d ∈ Q} mit w4 = −5 darstellt, spielt es auch keine Rolle, welche der Wurzeln man mit w meint. √ Schreibt man dagegen mit der gleichen Absicht 4 −4 und rechnet in {a + bv + cv 2 + dv 3 ; a, b, c, d ∈ Q} mit v 4 = −4, so ist dies v¨ olliger Unsinn: in dieser Struktur gibt es nichttriviale Nullteiler, es gilt z.B. (v 2 + 2v + 2)(v 2 − 2v + 2) = 0 . Das liegt daran, dass das zugrundeliegende Polynom z 4 +4 (im Gegensatz zu z 4 + 5 ) u ¨ber Q reduzibel ist. Es ist z 4 + 4 = (z 2 + 2z + 2)(z 2 − 2z + 2)
√ und damit Q[z]/z 4 + 4 kein K¨orper ! Der Ausdruck 4 −5 ist √ also ein g¨ ultiges Radikal, w¨ ahrend die Schreibweise 4 −4 nicht sinnvoll ist !
96
4 Grundlegende algebraische Strukturen
Die Entscheidung, ob wirklich [L : K] = n1 · . . . · nr ist, kann mit einem Satz von A.Schinzel [Sch] getroffen werden, der seinerseits auf Arbeiten von Mordell [Mor], Siegel [Sie] und Kneser [Kne] beruht. Najid-Zejli [NZe] hat einen Algorithmus entwickelt, der die Voraussetzungen dieses Satzes im Fall K = Q und a1 , . . . , ar ∈ Z nachpr¨ uft und f¨ ur [L : K] < n1 · . . . · nr die Abh¨ angigkeiten der Radikale ζ1 , . . . , ζr untereinander berechnet. Damit kann man dann durch Ausnutzung dieser Abh¨angigkeiten einige Radikale durch andere ausdr¨ ucken und L in der Form L = K(ζ1 , . . . , ζs ) mit s < r schreiben, so dass [L : K] = n1 · . . . · ns ist und man wieder eine kanonische Darstellung hat. Der Satz wird hier nur ohne Beweis zitiert und der Algorithmus an Beispielen erl¨ autert. 4.3.2.2 Satz: (Schinzel [Sch]) Es sei L eine Erweiterung des K¨orpers K um einfache Radikale ζi (ζini = ai ∈ K ∗ f¨ ur i = 1, . . . , r) mit char K ni , Ip := {i ; p|ni } und xi ∈ 0 . Dann ist [L : K] = n1 · . . . · nr genau dann, wenn die beiden folgenden Bedingungen erf¨ ullt sind: 2.) Gilt 1.) F¨ ur jede Primzahl p mit axi i = γ p f¨ ur ein γ ∈ K axi i = −4γ 4 f¨ ur ein γ ∈ K,
N
i∈Ip
i∈I2
und ni · xi ≡ 0 mod 4 ∀ i ∈ I2 , so folgt xi ≡ 0 mod 4 f¨ ur alle i ∈ I2 .
ist xi ≡ 0 mod p ∀ i ∈ Ip .
4.3.2.3 Beispiel: (i) Der Algorithmus wird hier u√ r r = 2 , a1 = 2 , a2 = 3 , n1 = √ f¨ 2 , n2 = 2 , also L = ( 2, 3) durchgespielt. In diesem Fall ist I2 = {1, 2} und Ip = ∅ f¨ ur alle ungeraden Primzahlen p . Punkt 2 des Satzes ist hier nicht m¨ oglich, da alle ai positiv sind. Man kann sich also auf Punkt 1 konzentrieren. Dazu werden die ai in paarweise teilerfremde Faktoren q1 , . . . , q zerlegt. Damit kann man schreiben
Q
ai = q1si1 · . . . · qsi mit si,j ∈
N0 und 1 ≤ i ≤ r , 1 ≤ j ≤ .
Im Beispiel sind q1 = 2 , q2 = 3 , s11 = 1 , s12 = 0 , s21 = 0 , s22 = 1 oder 2 = 21 · 30 3 = 20 · 31 Die Bedingung i∈Ip axi i = γ p heißt dann xi si xi si1 q1
i∈Ip
p
· . . . · q
i∈Ip
p
=γ∈
Z
4.3 Algebraische Zahlen und Funktionen
97
Da die qj teilerfremd sind, heißt das qjp ∈ Z 1
oder
xi sij ≡ 0 mod p
i∈Ip
f¨ ur j = 1, . . . , . Den ersten Fall kann man umgehen, indem 1
man qj durch qjp ersetzt und die zugeh¨ origen Potenzen sij durch p · sij ersetzt. Die verbleibende 2. Bedingung ist ein lineares Gleichungssystem u ¨ber Zp bestehend aus Gleichungen mit |Ip | Unbekannten xi . Dieses Gleichungssystem ist mit dem Gauß-Algorithmus l¨ osbar. Hier ist die Gestalt des Sys1 0 ≡ 0 mod 2 und f¨ ur die tems einfach, n¨ amlich ( x1 , x2 ) · 0 1 L¨osung gilt auch√x1 ,√x2 ≡ 0 mod 2 . Damit ist nach dem Satz von Schinzel [Q( 2, 3) : Q] = n1 n2 = 4 . (ii) Nun seien r = 2 , a1 = 2 , a2 = 8 , n1 = 2 , n2 = 2 , d.h. √ √ L = Q( 2, 8) . Dann sind I2 = {1, 2} und Ip = ∅ f¨ ur p = 2 , q1 = 2 , s11 = 1 , s21= 3 . Das Gleichungssystem hat damit 1 ≡ 0 mod 2 mit der nichttrivialen die Gestalt: ( x1 , x2 ) 3 die beiden adjungierten Wurzeln L¨osung (x1 , x2 ) = (1, 1) , d.h. sind als abh¨ angig erkannt. In i∈Ip axi i = γ p eingesetzt, liefert √ √ √ ·81 = γ 2 oder 4 = 16 = 2· 8 . √ Damit diese√L¨ osung 16 = 21√ ist 8 als √42 = 2 2 entlarvt, es gilt also L = Q( 2) = √ {a + b 2 ; a, b ∈ Q} . (iii) Punkt √2 des Satzes von Schinzel ist speziell f¨ ur Beispiele des Typs 4 −4 gemacht: dort ist a1 = −4 , n1 = 4 also I2 = {1} und Ip = ∅ f¨ ur p = 2 also l¨ ost x1 = 1 die Gleichung ax1 1 = 4 −4γ mit γ = 1 und es gilt √ n1 · x1 = 4 ≡ 0 mod 4 . Wegen ¨ x1 = 1 ≡ 0 mod 4 ist damit 4 −4 als Ubelt¨ ater entlarvt ! Weiß man also nach Anwendung des Algorithmus von Najid-Zejli, dass [L : K] = n1 · . . . · nr ist, so ist eine kanonische Normalform leicht berechenbar, indem man zuerst alle Potenzen ζii so reduziert, dass 0 ≤ i ≤ ni − 1 ist. Die meisten Systeme tun das (allerdings ohne die Abh¨ angigkeit der Radikale ζi untersucht zu haben) automatisch. Maple schreibt etwa je nach √ √ √ 4 Version das unzul¨ assige 4 −4 durch teilweises Radizieren um in −1 · 2 √ oder nach Aufruf von radsimp (bei 4 −1 nimmt Maple den Hauptwert) auf 1 + i und gibt keinerlei Warnung von sich. Diese Wurzel 1 + i ist eine der Wurzeln des Faktors z 2 − 2z + 2 von z 4 + 4 . √ 1 und − 3 − 2 zu erkenUm etwa die Gleichheit der Ausdr¨ ucke √3−2 nen, muss man zus¨ atzlich noch den Nenner rational machen. Das geschieht bei den meisten CA-Systemen bereits nicht mehr automatisch, manche bieten spezielle Befehle dazu an. Im vorliegenden √ Beispiel geschieht dies durch Erweitern mit dem konjugierten Element 3 + 2 .
98
4 Grundlegende algebraische Strukturen
Sind z(x), n(x) ∈ K[x] und a algebraisch u ochte man all¨ber K , so m¨ gemein einen geeigneten Multiplikator m ∈ K[a] finden, so dass Erweitern z(a) mit m den Nenner des Bruches n(a) frei von a macht. Dazu berechnet man in K[x] einen gr¨ oßten gemeinsamen Teiler d von ma (x) und n(x) . Da ma (x) definitionsgem¨ aß irreduzibel u ¨ber K ist, ist dieser in (K[x])∗ = K ∗ . Mit Hilfe des erweiterten euklidischen Algorithmus erh¨alt man zwei Polynome p1 (x), p2 (x) ∈ K[x] mit p1 (x) · n(x) + p2 (x) · ma (x) = d Einsetzen von a in diese Gleichung liefert p1 (a) · n(a) = d ∈ K ∗ also ist m := p1 (a) ein geeigneter Faktor. √ √ √ 4.3.2.4 √ Beispiel: √ Es seien K = Q( 2, 3) , a = 5 , z(x) = 1 , n(x) = 2 + 3 + x , d.h. der Nenner von z(a) 1 √ √ =√ n(a) 2+ 3+ 5 √ soll von 5 befreit werden. Wegen ma (x) = x2 − 5 und √ √ √ √ √ √ (x2 − 5) + (x + 2 + 3)(−x + 2 + 3) = 2 2 3 √ √ √ √ √ ist m = −x + 2 + 3 |x=√5 = 2 + 3 − 5 und damit √ √ 2+ 3− 5 √ √ . 2 2 3 √ √ Dieses Verfahren k¨ onnte man jetzt rekursiv mit 2 und 3 fortsetzen. Im√vorliegenden Fall ist klar, dass eine einmalige Erweite√ √ rung mit 6 = 2 3 zum Ziel f¨ uhrt. Eine kanonische f¨ ur den gegebenen Ausdruck in dem √ √ Darstellung √ K¨orper Q( 2, 3, 5) w¨ are also etwa √
1 √ √ = 2+ 3+ 5
√
1√ √ √ 1√ 1√ 2 3 5+ 2+ 3. 12 4 6 √ √ √ √ Analog erh¨ alt man etwa f¨ ur ( 2+ 3+ 5+ 7)−1 die schon recht aufw¨andige kanonische Normalform −
62 √ √ √ 2 3 5− 215 22 √ √ √ 3 5 7− − 215 √ √ √ √ in Q[ 2, 3, 5, 7] .
10 √ √ √ 34 √ √ √ 37 √ 2 3 7− 2 5 7+ 2− 43 215 43 29 √ 133 √ 27 √ 3− 5+ 7 43 215 43
4.3 Algebraische Zahlen und Funktionen
99
Analog zum Algorithmus von Najid-Zejli f¨ ur unverschachtelte Radikale u ¨ber Q , gibt es den Algorithmus von Caviness und Fateman [CFa], der unverschachtelte Radikale u ¨ber Q(x1 , . . . , xn ) betrachtet. Die Hauptschwierigkeit dieses Algorithmus liegt in dem schrittweisen Aufbau des K¨orperturms. Hat man bereits die Radikalerweiterung √ Q(x1 , . . . , xn )[α1 , . . . , αj−1 ] und m¨ochte man die Wurzel αj = d b adjungieren, so muss man y d − b u orper faktorisieren und modulo ¨ber diesem K¨ einem irreduziblen Faktor von y d − b rechnen um Mehrdeutigkeiten zu vermeiden. Dieser Schritt ist sehr schwierig und dominiert auch die Rechenzeit. Ist der K¨orperturm erst einmal aufgebaut, so kann man darin wie bereits geschildert mit kanonischen Normalformen rechnen. Diese Vorgehensweise ist allerdings nur solange sinnvoll, wie man wirklich mit Elementen des jeweiligen K¨orpers rechnet. Fasst man etwa pl¨ otzlich ein Element einer algebraischen Erweiterung von Q(x) als Abbildung auf und setzt f¨ ur x Werte ein, so f¨ uhrt dies zwangsl¨ aufig zu Fehlern: √ Soll u uhrt werden, so muss man sich ¨ber Q(x) die Wurzel x2 eingef¨ f¨ ur einen der zwei irreduziblen Faktoren von y 2 − x2 = (y − x)(y + x) in √ 2 Q(x)[y] entscheiden. Fasst man Q(x, x ) auf als Q(x)[y]√/y − x , so ist √ x2 = x , rechnet man dagegen in Q(x)[y]/y + x , so ist x2 = −x . Eine √ asst sich so nicht verwirklichen ! Zuweisungen wie x2 = |x| l¨ 4.3.3 Verschachtelte Radikale Ist die Situation bei nichtverschachtelten Radikalen schon schwierig, so wird es nur noch schlimmer, wenn man auch verschachtelte Ausdr¨ ucke zul¨ asst. Viele der bekannten Systeme erkennen etwa nicht die Identit¨ at 6 6 √ √ 1√ 3 5 + 2 6 + 5 − 2 6 = 1. 6 Maple V.2 machte sogar einen groben Fehler, es schrieb n¨ amlich um in 6 6 √ √ 1√ 3 5+2 6+i 2 6−5 , 6 was numerisch ausgewertet ca. 0, 86 ist. Damit wurde der beliebte“ Fehler ” " √ 1 = 1 = (−1)(−1) = i · i = −1 gemacht (ab Maple Version V.3 wird es richtig gemacht) ! Andere u ¨berraschende Vereinfachungen von verschachtelten zu unverschachtelten Radikalen, wie etwa 7 7 6 " x+1 x−1 2 x+ x −1= + oder 2 2
100
4 Grundlegende algebraische Strukturen
87 3
5
32 − 5
7 5
27 = 5
7 5
1 + 25
7 5
3 − 25
7 5
9 . 25
werden nach wie vor nicht erkannt. Es lassen sich noch viele schwierig in den Griff zu bekommende Identit¨aten angeben. Zur Bearbeitung solcher Ausdr¨ ucke gibt es bisher nur wenige und unbefriedigende Algorithmen. Im wesentlichen werden sie deshalb genauso behandelt, wie die im n¨ achsten Kapitel behandelten algebraischen Ausdr¨ ucke,"die nur durch ein sie definierendes Polynom gegeben sind. So √ √ wird 9 + 4 √2 entweder durch das Polynom p1 (x) = x2 −(9+4 2) ∈ √ etwa Q( 2)[x] u¨ber Q( 2) oder durch p2 (x) = x4 −18x2 +49 u¨ber Q gegeben. 4.3.4 Allgemeine algebraische Ausdr¨ ucke Nach den vorhergehenden Kapiteln ist im Prinzip klar, wie mit algebraischen Zahlen oder Funktionen umzugehen ist. Es bleibt die erhebliche technische und mathematische Schwierigkeit, sich f¨ ur jede Rechnung mit algebraischen Elementen α1 , α2 , α3 , . . . etwa u orperturm Q , ¨ber Q einen K¨ Q(α1 ) , Q(α1 , α2 ) , . . . aufzubauen. M¨ochte man mit kanonischen Vertretern f¨ ur die algebraischen Ausdr¨ ucke rechnen, so muss man die Elemente α1 , α2 , . . . jeweils durch irreduzible Polynome u orper beschreiben: ¨ber dem gerade zugrundeliegenden Grundk¨ p1 (x) irreduzibel u ¨ber p2 (x) irreduzibel u ¨ber p3 (x) irreduzibel u ¨ber
Q Q(α1 ) Q(α1 , α2 )
mit p1 (α1 ) = 0, mit p2 (α2 ) = 0, mit p3 (α3 ) = 0,
usw. Das Faktorisieren in diesen algebraischen Erweiterungen ist bei den bisher bekannten Algorithmen von exponentieller Ordnung. √ 4.3.4.1 Beispiel: Die u ¨ber Q algebraische Zahl α1 := 6 ist gegeben durch das irreduzible Polynom p1 (x) = x2 − 6 . Das verschachtel 2 2 " √ α2 −15 = 6 eine Wurzel des te α2 := 15 − 6 6 ist wegen 6
Polynoms x4 − 30x2 + 9 ∈ Q[x] . Da dieses Polynom u ¨ber Q in (x2 −6x+3)(x2 +6x+3) zerf¨ allt, ist α2 identisch mit einer der Wur√ zeln dieser quadratischen Faktoren, n¨amlich mit der Wurzel 3 − 6 von (x2 − 6x + 3) . √ Dies zeigt α2 ∈ Q[α1 ] . Das Polynom x2 + 6 6 − 15 ∈ Q[α1 ][x] mit der ¨ber Q[α√ 1 ] nicht irreduzibel. Es gilt √ Wurzel α2 ist also √ u x2 + 6 6 − 15 = (x − 3 + 6)(x + 3 − 6) und : 9 6 √ √ √ Q 6, 15 − 6 6 = Q 6 ∼ = Q[x]/x2 − 6 .
4.4 Transzendente Ausdr¨ ucke
101
" √ Die Wurzel α3 := 15 + 6 6 ist u ¨ber Q ebenfalls durch x4 − 2 30x " + 9 bzw. dessen irreduziblen Faktor x2 − 6x + 3 gegeben. Es √ √ 15 + 6 6 = 3+ 6 . Zusammen hat man also Q(α1 , α2 , α3 )√= gilt $√ % Q 6 und α2 + α3 = 6 . Division dieser Gleichung durch 3 f¨ uhrt auf 6 6 √ √ √ 5 − 2 6 + 5 + 2 6 = 2 3. Bei dieser Vorgehensweise kommt es sehr darauf"an, in welcher √ 5−2 6 u Form die Radikale geschrieben waren: So ist etwa ¨ber 4 2 − 10x + 1 gegeben, es gilt Q durch das irreduzible Polynom x " √ atte man also gleich mit diesem Aus[Q( 5 − 2 6) : Q] = 4 . H¨ druck begonnen, um eine kanonische Normalform zu berechnen, so h¨atte man sich in eine gr¨ oßere K¨ orpererweiterungen begeben m¨ ussen, w¨ ahrend oben die ganze Zeit in einer Erweiterung vom Grad 2 von Q gerechnet wurde !
4.4 Transzendente Ausdru ¨ cke 4.4.1 Grundlagen und Probleme W¨ahrend etwa sin(x + y)(sin(x) + x) = sin(x) sin(x + y) + x sin(x + y) noch eine reine Polynomumformung ist, ist eine Umformung wie sin(2x) 2 sin(x + y)(sin(x) + x) = cos(y) x sin(x) + sin (x) + sin(y)
2
+ x cos(x)
nur durch Anwendung von Umformungsregeln wie etwa dem Additionstheorem sin(x + y) = sin(x) cos(y) + sin(y) cos(x) m¨ oglich. Diese werden in vielen CA-Systemen mit Hilfe von sog. rewrite-rules“ ein” gef¨ uhrt, in Reduce etwa in der Form: FOR ALL X,Y LET SIN (X+Y)=SIN (X)COS(Y)+COS (X)SIN (Y); Ausdr¨ ucke der Gestalt sin(x + y) werden damit vom System erkannt und umgeschrieben. Ein Umschreiben von sin(3x) wird aber nicht in Betracht gezogen, da das Programm nicht auf die Idee“ sin(3x) = sin(2x + x) ” kommt. Dies muss gesondert vereinbart werden. Ein zus¨atzliches Einf¨ uhren der Regel sin(x) cos(y) = 12 (sin(x + y) + sin(x − y)) w¨are jetzt aber katastrophal, denn das Programm w¨ urde damit beim ersten Auftauchen eines Ausdrucks der Gestalt sin(x + y) in eine Endlosschleife geraten. W¨ahrend dies in dem vorliegenden Fall einfach zu sehen war, ist es i.Allg. einem Satz von Formeln nicht leicht anzusehen, ob eine fortgesetzte Anwendung dieser Formeln terminiert oder nicht. Erst recht ist es nicht klar, ob dieses Regelwerk einen kanonischen Simplifikator darstellt. Bei der ¨ Entscheidung solcher Fragen treten algebraische Uberlegungen mit Hilfe von Strukturs¨atzen in den Vordergrund, die im folgenden erl¨ autert werden.
102
4 Grundlegende algebraische Strukturen
4.4.1.1 Definition: Es sei L : K eine K¨ orpererweiterung. a ∈ L heißt transzendent u ¨ber K , wenn es nicht algebraisch u ¨ber K ist. Enth¨alt M : K transzendente Elemente u ¨ber K , so heißt M transzendente K¨orpererweiterung. Da K(a) genau dann endlichen Grad u orper hat, wenn ¨ber dem Grundk¨ a algebraisch ist, gilt also im transzendenten Fall [K(a) : K] = ∞ . Es ist K(a) isomorph zu K(x) , in Zeichen K(a) ∼ = K(x) , d.h. in einer einfach transzendenten Erweiterung wird mit a genauso gerechnet, wie in dem K¨ orper der rationalen Funktionen K(x) mit der Unbestimmten x . Die Hauptschwierigkeit liegt ¨ ahnlich wie bei zusammengesetzten algebraischen Ausdr¨ ucken. Wenn man ausgehend von einem Grundk¨ orper stufenweise algebraische K¨ orpererweiterungen aufbaut, muss man darauf achten, ob die Minimalpolynome der neu adjungierten Elemente auch u ¨ber √ √ dem bereits erweiterten K¨ orper noch irreduzibel sind (etwa 8 u ¨ber Q( 2) ). Genauso muss man jetzt beim Adjungieren darauf achten, dass die betrachteten Erweiterungen wirklich transzendent sind. Betrachtet man etwa xex +e−3x , so k¨onnte man hintereinander die transzendenten Erweiterungen Q(x) und Q(x, ex ) bilden. Das u¨ber Q(x) transzendente Element e−3x ist Wurzel des Polynoms (ex )3 · y − 1 ∈ Q(x, ex )[y] , also algebraisch u ¨ber Q(x, ex ) . Man wird also mit xex + e−3x umgehen wie mit der rationalen Funktion xy + y −3 ∈ Q(x, y) . √ Analog sind etwa die Ausdr¨ ucke log( x) oder elog(x)+3x u ¨ber dem K¨orper Q(x, log(x), ex ) nicht transzendent. Die Entscheidung dar¨ uber kann in weniger offensichtlichen F¨ allen jeweils mit dem Struktursatz vonRisch [Ris] getroffen werden, der auch bei der formalen Integration eine entscheidende Rolle spielt. W¨ahrend der urspr¨ ungliche Satz nur“ Logarithmen und Exponential” funktionen behandelt, gibt es inzwischen einige Erweiterungen auf weitere transzendente Funktionen, die hier nicht weiter ausgef¨ uhrt werden. 4.4.2 Der Satz von Risch 4.4.2.1 Definition: Ein K¨ orper D mit char D = 0 und einem un¨ aren d Operator dz heißt Differentialk¨orper, wenn f¨ ur a, b ∈ D gilt d d d d d d (a + b) = a + b und (a · b) = b a + a b . dz dz dz dz dz dz Ist keine Verwechslung m¨ oglich, so wird auch die u ¨bliche Schreibd weise dz a = a benutzt. d Der Differentialunterk¨ orper K := {k ∈ D ; dz k = 0} von D heißt der Konstantenk¨orper von D . Es seien F ein Differentialunterk¨orper von D und f ∈ D . Die Gr¨ oße f bzw. die K¨ orpererweiterung F(f ) heißen einfach elementar, wenn eine der folgenden Bedingungen erf¨ ullt ist:
4.4 Transzendente Ausdr¨ ucke
103
(i) f ist algebraisch u ¨ber F , (ii) Es gibt ein g ∈ F \ {0} mit g = gf (Man schreibt dann auch f = log(g) und sagt: f ist logarithmisch u ¨ber F ), (iii) Es gibt ein g ∈ F mit f = f g (Man schreibt dann auch f = exp(g) und sagt: f ist exponentiell u ¨ber F ). Ist f transzendent u ¨ber F und logarithmisch oder exponentiell und haben F und F(f ) den gleichen Konstantenk¨ orper, so heißt f auch Monom∗ . Eine K¨ orpererweiterung F(f1 , . . . , fr ) heißt elementar, wenn f¨ ur i = 1, . . . , r jeweils fi u ¨ber F(f1 , . . . , fi−1 ) einfach elementar ist. Sie heißt elementar transzendent, wenn jeweils fi u ¨ber F(f1 , . . . , fi−1 ) transzendent und exponentiell oder logarithmisch ist. d Aus der Definition von dz leitet man nun leicht die bekannten Rechenred n n−1 · f f¨ ur n ∈ Z und die Quotientenregel ab. Mit Hilfe geln dz (f ) = n · f dieser Regeln folgt, dass der Konstantenk¨ orper immer die rationalen Zahlen umfasst. Im Fall D = Q(z) gilt etwa K = Q . Weiterhin folgen aus obiger Definition auch die Funktionalgleichungen f¨ ur den Logarithmus und die Exponentialfunktion. Man beachte dabei, dass die Definition von log und exp durch ihre Differentialgleichungen, diese Funktionen im u ur die ¨blichen Sinne nur bis auf Konstanten festlegt, was f¨ Anwendung bei der formalen Integration auch v¨ ollig ausreichend ist. Auch bei anderen Funktionen wird die additive Konstante ignoriert, aus f = g folgt so jeweils f = g . Folgerung: Es seien F ein Differentialunterk¨ orper des Differentialk¨ orpers D und g1 , g2 , g ∈ F . Dann gilt (i) log(g1 ) + log(g2 ) = log(g1 · g2 ) . ur n ∈ Z . (ii) log(g n ) = n · log(g) f¨ (iii) exp(g1 ) · exp(g2 ) = exp(g1 + g2 ) . ur n ∈ Z . (iv) exp(n · g) = exp(g)n f¨ (v) log(exp(g)) = g , exp(log(g)) = g . Beweis: (i) log(g1 g2 ) =
(g1 g2 ) g1 g2
=
g1 g1
g
+ g22 = log(g1 ) + log(g2 ) = (log(g1 ) + log(g2 ))
n n·g n−1 ·g = (ggn) = log(g n ) . gn g1 exp(g1 ) exp(g2 ) + g2 exp(g1 ) exp(g2 )
(ii) (n log(g)) = n log(g) = n gg =
= (iii) Es gilt (exp(g1 ) · exp(g2 )) = (g1 + g2 ) · (exp(g1 ) · exp(g2 )) und deshalb exp(g1 ) · exp(g2 ) = exp(g1 + g2 ) . (iv) Es gilt (exp(g)n ) = n exp(g)n−1 exp(g)g = (ng) (exp(g)n ) und deshalb exp(g)n = exp(ng) . ∗
Nicht zu verwechseln mit dem Monom bei Polynomen d.h.
d dz
sei so definiert, dass
d dz z
= 1 ist.
104
4 Grundlegende algebraische Strukturen
g exp(g) (v) Es ist log(exp(g)) = exp(g) exp(g) = exp(g) = g und exp(log(g1 )) = g2 ⇒ log(exp(log(g1 ))) = log(g1 ) = log(g2 ) ⇒ g1 = g2 . Wenn man Ausdr¨ ucke wie etwa a(z) := log (z exp(z))+exp (exp(z) + log(z)) untersuchen will, wird man sich einen Konstantenk¨ orper K w¨ ahlen (etwa Q oder Q(i) , auf jeden Fall endlich erzeugt u¨ber Q ) und diesen Schritt f¨ ur Schritt erweitern durch Adjunktion von Gr¨ oßen z0 , z1 , . . . , zr . Auf diese Weise erh¨ alt man einen K¨ orperturm der Form
K ⊆ K0 := K(z0 ) ⊆ K1 := K0 (z1 ) = K(z0 , z1 ) =⊆ . . . ⊆ Kr . Dabei sei z0 = z transzendent u osung von z = 1 . Weiter¨ber K und L¨ hin seien Ls := {j ; zj ist logarithmisch u ¨ber Kj−1 , 1 ≤ j ≤ s ≤ r} und Es := {j ; zj ist exponentiell u ¨ber Kj−1 , 1 ≤ j ≤ s ≤ r} und As := {j ; zj ist algebraisch u ¨ber Kj−1 , 1 ≤ j ≤ s ≤ r} und L0 , E0 , A0 := ∅ . F¨ ur i ∈ Er gibt es ein fi ∈ Ki−1 mit zi = zi fi , f¨ ur i ∈ Lr gibt es fi ∈ Ki−1 mit fi = fi zi . Diese fi sind im folgenden Satz gemeint. Alle zi seien exponentiell, logarithmisch oder algebraisch u ¨ber dem jeweiligen Grundk¨orper, d.h. Lr ∪ Er ∪ Ar = {1, 2, . . . , r} wobei Lr und Ar oder Er und Ar einen nichtleeren Schnitt haben k¨ onnen ∗ . 4.4.2.2 Satz: (Struktursatz von Risch) Mit den eingef¨ uhrten Bezeichnungen sei i ∈ Es ∪ Ls . Ist zi algebraisch u ¨ ber Ki−1 , so gilt (a) i ∈ Ei und es gibt k ∈ K und nj ∈ Q mit n j zj + nj fj k = fi + j∈Li−1
j∈Ei−1
(b) i ∈ Li und es gibt k ∈ K , nj ∈ Z und ni ∈ Z \ {0} mit n n fj j zj j k = fini j∈Li−1
j∈Ei−1
Der Beweis dieses Satzes (siehe [Ri3]) w¨ urde wegen seines Umfangs hier den Rahmen sprengen. Er soll aber gleich an dem gegebenen a(z) erprobt werden. 4.4.2.3 Beispiel: a(z) = log(z exp(z)) + exp(exp(z) + log(z)) W¨ahlt man K = Q, so ist K0 = Q(z). Startet man mit z1 = exp(z), so ist z1 wegen z1 = z1 f1 mit f1 = z exponentiell u ¨ber K0 . ∗
Ist j ∈ Es ∩ Ls , so ist Kj = Kj−1 .
4.4 Transzendente Ausdr¨ ucke
105
Ist z1 algebraisch u ¨ber K0 , so gibt es nach Punkt (a) des Satzes ein k ∈ Q mit k = z . Da dies nicht der Fall ist, ist exp(z) als Monom u ¨ber Q(z) erkannt. Um den ersten Ausdruck von a(z) in den Griff zu bekommen, k¨onnte man jetzt etwa z2 = log(zz1 ) betrachten. Dieses z2 ist logarithmisch u ¨ber K1 = Q(z, exp(z)) mit f2 = zz1 . Wegen L1 = ∅ und E1 = {1} betrachtet man nun k = f2n2 · z1n1 ⇐⇒ k = z n2 z1n1 +n2 mit k ∈ Q und n1 , n2 ∈ Z , n2 = 0 . Wegen der Transzendenz von z1 u oglich, z2 also ein Monom u ¨ber Q(z) ist dies nicht m¨ ¨ber K1 , L2 = {2}, E2 = {1} . Damit ist der erste Term von a(z) abgehandelt, man betrachtet jetzt a(z) = z2 + exp(z1 + log(z)) . Jetzt k¨ onnte man z3 = log(z) versuchen. Dieses z3 ist logarithmisch u ¨ber dem schon vorhandenen K2 = Q(z, exp(z), log(z exp(z))) mit f3 = z . Nach dem Satz muss man pr¨ ufen, ob es ein k ∈ Q und n1 , n2 , n3 ∈ Z mit n3 = 0 und k = f3n3 ·f2n2 ·z1n1 ⇐⇒ k = z n3 ·(zz1 )n2 ·z1n1 ⇐⇒ k = z n2 +n3 ·z1n1 +n2 gibt. Davon gibt es z.B. die L¨ osung n1 = −n2 = n3 = 1 und k = 1 . Es gilt also 1 = f3 · f2−1 · z1 ⇐⇒ f3 =
f2 ⇐⇒ z3 = z2 − z z1
Das so gew¨ ahlte z3 ist also nicht transzendent u ¨ber K2 . Da z3 sogar in K2 liegt, muss an dieser Stelle nicht einmal algebraisch erweitert werden. Wegen des berechneten Zusammenhangs schreibt man a(z) um zu a(z) = z2 + exp(z1 + z2 − z) . Nachdem dieser Versuch fehlschlug, probiert man weiter mit dem neuen z3 = exp(z1 + z2 − z) , also f3 = z1 + z2 − z . Dieser Ausdruck ist exponentiell u ¨ber K2 = Q(z, exp(z), log(z exp(z))) . Man betrachtet also die Gleichung k = f3 + n2 z2 + n1 f1 ⇐⇒ k = z1 + z2 (1 + n2 ) + z(n1 − 1) mit k ∈ Q und n1 , n2 ∈ Q . angig Da 1, z, z1 und z2 nach den bisherigen Betrachtungen unabh¨ sind, ist dies nur m¨ oglich, wenn die Koeffizienten dieser Ausdr¨ ucke verschwinden. Da der Koeffizient von z1 aber 1 ist, ist dies nicht m¨oglich.
106
4 Grundlegende algebraische Strukturen
Damit ist z3 u orperturm ist ¨ber K2 transzendent, der fertige K¨ K3 =
Q( z , exp (z) , log (z exp(z)), exp(exp(z) + log(z exp(z)) − z) . z0
f1
f2
z1
z2
f3
z3
In diesem K¨ orper wird a(z) jetzt behandelt als die rationale Funktion a = z2 + z3 ∈ Q(z0 , z1 , z2 , z3 ). Das Hauptproblem bei dieser Rechnung ist jeweils die Entscheidung, ob die betrachtete Gleichung l¨ osbar ist. Das hier gezeigte Vorgehen war nicht algorithmisch und erforderte bereits eine gewisse Fertigkeit beim Umgang mit Logarithmus und Exponentialfunktion. ¨ Die Uberpr¨ ufung der beiden Bedingungen l¨ asst sich wie folgt vereinfachen. Leitet man die erste Bedingung k = fi + n j zj + nj fj j∈Li−1
j∈Ei−1
ab, so ergibt sich wegen k = 0 0 = fi +
nj zj +
j∈Li−1
nj fj .
j∈Ei−1
Dies ist eine lineare Gleichung f¨ ur die nj in Ki−1 . Erweitern mit dem Hauptnenner der nj f¨ uhrt auf 0 = mi fi + mj fj , mj zj + j∈Li−1
j∈Ei−1
mit ganzzahligen mj . Im logarithmischen Fall erh¨ alt man ebenfalls wegen k = 0 0=
fj zj f k nj + nj . = ni i + k fi fj zj j∈Li−1
j∈Ei−1
Durch geeignetes Erweitern dieser Gleichung erh¨ alt man ebenfalls eine relativ leicht zu l¨osende lineare Gleichung f¨ ur ganzzahlige Werte. 4.4.2.4 Beispiel: Im letzten Beispiel war die erste Gleichung k = z gewesen. Ableiten f¨ uhrt auf 0 = 1 , die Gleichung ist also nicht l¨ osbar. Die zweite untersuchte Gleichung war k = f2n2 · z1n1 . Die logarithmische Ableitung davon ist 0 = n2
f2 z 1+z + n1 1 ⇐⇒ 0 = n2 + n1 ⇐⇒ f2 z1 z
4.5 Endliche K¨ orper
0 = n2 + (n1 + n2 )z ⇐⇒ 0 =
0 1 1 1
107
n1 , · n2
was f¨ ur n2 = 0 nicht l¨ osbar ist. Die logarithmische Ableitung der dritten Gleichung k = f3n3 · f2n2 · z1n1 ist f3 f z 1 z1 + zz1 + n2 2 + n1 1 ⇐⇒ 0 = n3 + n2 + n1 ⇐⇒ f3 f2 z1 z zz1 0 = n3 + n2 (1 + z) + n1 z ⇐⇒ 0 = (n2 + n3 ) + z(n1 + n2 ) ⇐⇒ ⎛ ⎞ n1 0 1 1 0 = ⎝ n2 ⎠ , 1 1 0 n3 0 = n3
woraus man etwa die L¨ osung n1 = −n2 = n3 = 1 abliest. Die letzte Gleichung lautete k = f3 + n2 z2 + n1 f1 . Da das betrachtete z3 exponentiell war, betrachtet man davon die Ableitung 0 = f3 + n2 z2 + n1 f1 = z1 + z2 − 1 + n2 z2 + n1 = z1 + zz1 (1 + n2 ) − 1 + n1 ⇐⇒ zz1 0 = zz1 + (1 + z)(1 + n2 ) + (n1 − 1)z = = (1 + n2 ) + z(n1 + n2 ) + zz1 = z1 +
Die ist wegen der Unabh¨ angigkeit von 1 , z und zz1 und dem konstanten Faktor bei zz1 nicht m¨ oglich. Zum Schluss sei nochmals auf den im Abschnitt u ¨ber kanonische Normalformen zitierten Satz von Caviness, Richardson und Matiyasevich hingewiesen: Sobald zu transzendenten Funktionen transzendente Zahlen wie etwa π oder n 2 hinzukommen, gibt es große Probleme, in einigen F¨ allen sogar nachweisbar keinen kanonischen Simplifikator !
4.5 Endliche Ko ¨rper Endliche K¨orper spielen nicht nur eine wesentliche Rolle in der Codierungstheorie oder Kryptographie, sondern bilden auch den mathematischen Hintergrund f¨ ur viele Algorithmen, die vordergr¨ undig gar nichts damit zu tun haben, etwa f¨ ur die Faktorisierung von Polynomen u ¨ber Q (siehe die Abschnitte zur Polynomfaktorisierung und zum Rechnen mit homomorphen Bildern). F¨ ur Interessierte seien die B¨ ucher [LNi], [Jun] oder [Men] empfohlen da die Theorie der endlichen K¨ orper hier bei weitem nicht ersch¨ opfend dargestellt werden kann. F¨ ur einen Schnelleinstieg in die Problematik aus der Sicht der Computeralgebra siehe etwa den Artikel [Le4] von A. K. Lenstra.
108
4 Grundlegende algebraische Strukturen
Hier soll nur kurz auf die Darstellung der K¨ orperelemente und die Grundrechenarten eingegangen werden. F¨ ur eine Primzahlpotenz q = pn l¨ asst sich der (bis auf Isomorpie eindeutig bestimmte) endliche K¨ orper GF(q) etwa als Faktorring Zp [x]/f mit einem u ¨ber Zp irreduziblen (dann ist f maximal und der Faktorring somit ein K¨orper, vgl. den Abschnitt u ¨ber Ideale) Polynom f vom Grad n darstellen. Rechnet man in diesem Ring mit Vertretern kleinsten Grades, so sind die K¨orperelemente Polynome aus Zp [x] vom Grad kleiner als n . Bei dieser Darstellung ist die Addition sehr einfach, die Multiplikation und Exponentiation sind dagegen recht teuer“, da nach jedem Schritt ” mod f reduziert werden muss. Außerdem ist diese Darstellung speicherintensiv, denn jedes K¨ orperelement ist ein Feld der L¨ ange n u ¨ber Zp . Eine andere Darstellung bietet die Tatsache, dass GF(q)∗ = GF(q) \ {0} eine zyklische Gruppe ist. Ein erzeugendes Element α dieser Gruppe heißt primitives Element des K¨ orpers. Damit kann man schreiben GF(q) = {0, 1, α, α2 , . . . , αq−2 } . Die Darstellung der K¨ orperelemente ist damit sehr einfach, man muss nur den ganzzahligen Exponenten speichern. Die Multiplikation wird zur Addition mod(q − 1) der ganzzahligen Exponenten. Dagegen macht jetzt die Addition Probleme: Da es nun keine einfache M¨oglichkeit gibt, eine Summe αm + αn in der Form α? zu bekommen, schreibt man um in αn · (αm−n + 1) und entnimmt einer vorher erstellten Tabelle, welche Potenz von α der Ausdruck in der Klammer ist. Diese Zahl k¨onnte man zwar auch mit Hilfe des diskreten Logarithmus berechnen, der ist aber leider eine der teuersten K¨ orperoperationen u ¨berhaupt und wird deshalb auch zu kryptographischen Zwecken eingesetzt (vgl. etwa [Til]). Den Logarithmus von K¨ orperelementen der Gestalt αk + 1 nennt man auch Jacobi- oder Zech-Logarithmus Z(k) , also αZ(k) = αk + 1 . Statt alle (q − 1)2 Logarithmen von αm + αn zu berechnen oder in einer Tabelle zu speichern, muss man nur“ die q − 2 Zech-Logarithmen ” speichern und rechnet damit αm + αn = αn (αm−n + 1) = αn αZ(m−n) = αn+Z(m−n) mod q−1 . Auch dies ist z.B. bei kryptographischen Anwendungen nicht mehr durchf¨ uhrbar, da q dort sehr groß werden kann. Bei kleinen K¨ orpern ist diese Darstellung aber mit Abstand die schnellste mit dem geringsten Speicherbedarf. Statt die so genannte polynomiale Basis 1, x, . . . , xn−1 von Zp [x]/f u unstigere Basis des Zp ¨ber Zp zu verwenden, versucht man, eine g¨ Vektorraumes GF(q) zu verwenden, die eine einfachere Multiplikation erlaubt.
4.5 Endliche K¨ orper
109
Eine M¨oglichkeit dazu bilden so genannte Normalbasen: Dazu sucht man 2 n−1 u ein α ∈ GF(q), so dass α1 , αp , αp , . . . , αp angig ¨ber Zp linear unabh¨ sind. Solch ein α l¨ asst sich immer finden (siehe etwa [LNi]), man kann nach einem Satz von Lenstra und Schoof [LSc] sogar ein primitives α mit dieser Eigenschaft angeben. Die zugeh¨ orige Basis heißt primitive Normalbasis. Stepanov und Shparlinsky [SSh] gaben einen schnellen Algorithmus zum Auffinden primitiver Normalbasen an. Von Massey und Omura [MOm] stammt ein schneller Multiplikationsalgorithmus f¨ ur bzgl. Normalbasen dargestellte K¨ orperelemente. Sind k1 , k2 und k3 Elemente von GF(q) mit k1 · k2 = k3 und sind (ki,0 , . . . , ki,n−1 ) f¨ ur i = 1, . . . , 3 deren Darstellungen bzgl. der Normalbasis, also ki = n−1 pj j=0 ki,j α , so ist die Abbildung ((k1,0 , . . . , k1,n−1 ) , (k2,0 , . . . , k2,n−1 )) → k3,0 eine Bilinearform, l¨ asst sich also durch eine n × n -Matrix B u ¨ber Zp beschreiben: ⎞ ⎛ k2,0 ⎟ ⎜ (k1,0 , k1,1 . . . , k1,n−1 ) · B · ⎝ k ... ⎠ = k3,0 . 2,1
k2,n−1 Da nun aber k1p · k2p = k3p gilt und das Potenzieren mit p in der Normalbasis-Darstellung gerade eine zyklische Verschiebung bedeutet, folgt ⎛k
2,n−1
⎞
⎜ k2,0 ⎟ ⎟ (k1,n−1 , k1,0 . . . , k1,n−2 ) · B · ⎜ ⎝ .. ⎠ = k3,n−1 . k2,n−2 ⎛k ⎞ 2,n−2
⎜ k2,n−1 ⎟ ⎟ (k1,n−2 , k1,n−1 . . . , k1,n−3 ) · B · ⎜ ⎝ .. ⎠ = k3,n−2 . k2,n−3 ⎛
.. . ⎞
k2,1 ⎟ ⎜ (k1,1 , k1,2 . . . , k1,0 ) · B · ⎝ k2,2 ... ⎠ = k3,1 k2,0 Zur Berechnung von k3 werden die Normalbasis-Darstellungen von k1 und von k2 in zwei zyklischen Schieberegistern gespeichert und diese werden nach jedem Zeittakt von links und von rechts an die vorher berechnete Matrix B multipliziert. Um diese Multiplikation effektiv zu gestalten, sollte die Matrix B m¨ oglichst wenige von Null verschiedene Eintr¨ age enthalten. Diese Anzahl C heißt auch die Komplexit¨at des Massey-Omura Multiplizierers. Im f¨ ur die meisten Anwendungen wichtigen Fall p = 2 gilt C ≥ 2n − 1 .
110
4 Grundlegende algebraische Strukturen
In manchen F¨ allen, n¨ amlich bei den so genannten optimalen Normalbasen [MOVW], ist diese Grenze scharf. Falls es diese nicht gibt, so gibt es Untersuchungen zu Normalbasen geringer Komplexit¨at [ABV], die dieser Schranke m¨oglichst nah kommen. Die Komplexit¨ at der Normalbasis gibt nicht nur Auskunft u ¨ber die Anzahl der n¨otigen Operationen, sondern auch u ¨ber den schaltungstechnischen Aufwand bei der festen Verdrahtung eines Multiplizierers. An dem folgenden Beispiel sieht man, dass man außer den beiden zyklischen Schieberegistern der L¨ange n zur Realisierung genau C AND-Schalter f¨ ur die Multiplikation in Z2 und C − 1 XOR-Schalter f¨ ur die Addition ben¨ otigt. ¨ 4.5.1 Beispiel: Uber Z2 gibt es drei irreduzible Polynome vom Grad 4, n¨amlich p1 = x4 +x+1, p2 = x4 +x3 +1 und p3 = x4 +x3 +x2 +x+1. Alle drei erlauben eine Darstellung von GF(16) als Z2 [x]/pi bzgl. der polynomialen Basis {x3 , x2 , x, 1}. Es empfiehlt sich allerdings p1 oder p2 zu nehmen, da in diesen beiden F¨allen α = x jeweils ein primitives Element ist. Nimmt man etwa p2 , so ergibt sich die Umrechnungstabelle auf der n¨achsten Seite zwischen der Darstellung (α3 , α2 , α1 , α0 ) bzgl. der polynomialen Basis, dem diskreten Logarithmus n dieses Elements (al3 so αn = i=0 αi xi ) und dem Zech-Logarithmus. Die Elemente mit einem + davor sind primitive Elemente ( log teilerfremd zu 15 ). Die Vektoren α = 0010 , α2 = 0100 , α4 = 1001 , α8 = 1110 (ohne Kommas und Klammern geschrieben) sind linear unabh¨ angig u ¨ber Z2 . Das Element α erzeugt also eine primitive Normalbasis.
+ + +
+ +
+ + +
0000 0001 0010 0100 1000 1001 1011 1111 0111 1110 0101 1010 1101 0011 0110 1100
Ord
log Zech
1 15 15 5 15 3 5 15 15 5 3 15 5 15 15
−∞ 0 0 −∞ 1 12 2 9 3 4 4 3 5 10 6 8 7 13 8 6 9 2 10 5 11 14 12 1 13 7 14 11
Die erste Spalte der Tabelle kann man etwa mit dem gezeigten Schieberegister berechnen.
Aus der Tabelle liest man z.B. ab 1101 + 0011 = 1110 = α8 1101 · 0011 = (x3 + x2 + 1)(x + 1) = = x4 + x2 + x + 1 = = x3 + x2 + x = 1110 11 12 + α = α11 (α + 1) = α11 αZ(1) = α = α11 · α12 = α23 mod 15 = = α8 = 1110 11 12 · α = α23 mod 15 = α8 = 1110 α
4.5 Endliche K¨ orper
Die zugeh¨orige Massey-Omura Matrix ⎛ 0 1 1 1 ⎜1 0 1 0 ⎝ 1 1 0 0 1 0 0 1
111
B ist ⎞ ⎟ ⎠,
hat also die Komplexit¨ at 9 und ist damit nicht optimal. Die Elemente α2 , α4 , α8 erzeugen ebenfalls primitive Normalbasen der Komplexit¨at 9 . Die Elemente α3 = α3 = 1000 (α3 )2 = α6 = 1111 (α3 )4 = α12 = 0011 (α3 )8 = α9 = 0101 sind linear unabh¨ angig u ¨ber Z2 . Das Element α3 erzeugt also eine (jetzt allerdings nichtprimitive) Normalbasis. Die zugeh¨orige Massey-Omura Matrix B ist ⎞ ⎛ 0 0 1 0 ⎜0 0 1 1⎟ ⎠, ⎝ 1 1 0 0 0 1 0 1 hat also die Komplexit¨ at 7 = 2n − 1 . Die von α3 erzeugte Normalbasis ist damit optimal. Das Gleiche gilt f¨ ur α6 , α9 und α12 . Die i verbleibenden Elemente α mit i = 5, 7, 10, 11, 13, 14, 15 erzeugen jeweils keine Normalbasis.
Zu der von α3 erzeugten optimalen Normalbasis sieht ein Schaltbild etwa wie gezeigt aus. Die Anordnung der AND-Schalter entspricht dabei genau der Position der Einsen in der oben berechneten MasseyOmura Matrix.
112
4 Grundlegende algebraische Strukturen
Je zwei Ausg¨ ange dieser Schalter werden u ¨ber XOR-Schalter aufaddiert. Deren Ausg¨ ange werden wieder solange paarweise aufaddiert, bis nur noch ein Ausgang u ¨brig ist. Es ist klar, dass dieser Vorgang mit etwas mehr Schaltungsaufwand auch sehr gut parallelisierbar ist, so dass in einem Takt ohne zyklische Verschiebungen der gesamte Ergebnisvektor (k3,0 , k3,1 . . . , k3,n−1 ) berechnet wird. F¨ ur den Berlekamp-Algorithmus in großen endlichen K¨ orpern erweist sich die folgende Spurfunktion als n¨ utzlich. 4.5.2 Definition:
N
Es seien p prim, s ∈ und q := ps . Dann heißt * GF(q) → GF(p) SpGF(q) : s−1 α → α + αp + . . . + αp
die (absolute) Spurfunktion von GF(q) . Sind keine Verwechslungen m¨oglich, so schreibt man einfach Sp(α) f¨ ur die Spur von α . Es bleibt noch zu zeigen, dass Sp(α) wirklich ein Element des Primk¨ orpers GF(p) ist. Ist f (x) das Minimalpolynom von α u ¨ber GF(p) vom Grad deg f = d , so ist GF(q)[x]/f (x) ∼ orper von GF(q) = GF(p)(α) ein Unterk¨ und isomorph zu GF(pd ) . Der K¨ orper GF(pd ) ist genau dann Unterk¨ orper von GF(q = ps ) , wenn d ein Teiler von s ist. Da f¨ ur jedes Element d d a ∈ GF(pd ) gilt ap = a , gilt insbesondere auch αp = α . Da aus f (β) = 0 mit Hilfe des Frobenius-Automorphismus f (β p ) = 0 d−1 folgt, sind außer α auch αp , . . . , αp Wurzeln von f (x) . Wenn diese Wurzeln alle verschieden sind, dann sind das aus Gradgr¨ unden bereits alle Wurzeln von f und man kann f in Linearfaktoren zerlegen. r t Dies ist der Fall, denn w¨ are 0 ≤ r < t ≤ d − 1 und αp = αp , so w¨ are d
r
d−r
α = αp = (αp )p
t
d−r
= (αp )p
Nun betrachtet man das Polynom g(x) := r t are dann Annahme αp = αp w¨ g(xp ) =
t−r−1
i
(xp − αp ) =
i=0
t−r−1
i+1
(xp − αp
i=0
d
t−r
= (αp )p
t−r−1 i=0
)=
t−r
= αp
i
(x − αp ) . Wegen der
t−r−1
i
(x − αp )p = g(x)p ,
i=0
d.h. alle Koeffizienten von g(x) l¨ agen in GF(p) . Wegen deg g < deg f widerspr¨ache das der Irreduzibilit¨ at von f . Es gilt also f (x) = (x − α)(x − d−1 αp ) · . . . · (x − αp ) ∈ GF(p)[x] . Wegen ds ∈ folgt
N
s
s
d−1
s
h(x) := f (x) d =(x − α) d (x − αp ) d · . . . · (x − αp d−1
=(x − α)(x − αp ) · . . . · (x − αp pd
·(x − α )(x − α .. .
pd+1
s
)d =
)· 2d−1
) · . . . · (x − αp
)·
4.6 Polynome s−d
·(x − αp
s−d+1
)(x − αp
=(x − α)(x − α ) · . . . · (x − α p
s−1
) · . . . · (x − αp ps−1
113
)=
) ∈ GF(p)[x].
Es ist Sp(α) gleich dem Negativen des Koeffizienten von xs−1 in h(x) , also insbesondere Sp(α) ∈ GF(p) . 4.5.3 Satz: Sp : GF(q) → GF(p) ist eine surjektive Linearform des GF(p)-Vektorraumes GF(q) . Beweis: Sp(α + β) = Sp(α) + Sp(β) f¨ ur alle α , β ∈ GF(q) folgt sofort aus i i i (α + β)p = αp + β p f¨ ur i ∈ . Sp(c · α) = c Sp(α) f¨ ur jedes c ∈ GF(p) pi ur i ∈ . F¨ ur die Surjektivit¨ at dieser linearen Abbildung folgt aus c = c f¨ gen¨ ugt es bereits Kern(Sp) = GF(q) zu zeigen. Es ist α ∈ Kern(Sp) genau dann, wenn α eine Wurzel des Polynoms s−1 i S(x) := i=0 xp ist. Dieses Polynom ist vom Grad ps−1 , kann also nicht alle ps K¨orperelemente aus GF(ps ) als Wurzeln haben. Aus der Linearit¨ at von Sp und dim(Bild(Sp)) = 1 folgt mit der Dimensionsformel, dass dim(Kern(Sp)) = s − 1 ist. Dies heißt, dass die Gleichung S(x) = b f¨ ur jedes b ∈ GF(p) genau ps−1 L¨ osungen x ∈ GF(q) hat und dass die L¨osungen zu allen b ∈ GF(p) eine Partition von GF(q) bilden. Damit kann man in der bekannten Identit¨ at xq − x = (x − a)
N
N
a∈GF(q)
auf der rechten Seite jeweils ps−1 Faktoren zusammenfassen und schreiben: xq − x = (S(x) − b) . (4.2) b∈GF(p)
4.6 Polynome 4.6.1 Zul¨ assige Ordnungsrelationen Polynome bilden eine der wichtigsten Strukturen in jedem Computeralgebra-System. Wie bereits gezeigt, beruht das Rechnen in endlichen K¨ orpern und in algebraischen oder transzendenten K¨orpererweiterungen jeweils zu einem großen Teil auf polynomialen Umformungen. Oft baut man u ¨ber diesen Strukturen nochmals Polynomringe auf, hat es also in zweifacher Hinsicht mit Polynomen zu tun. Elemente des zugeh¨ origen Quotientenk¨ orpers sind Paare von Polynomen usw. Es sei R wie u und ¨blich ein kommutativer Ring mit 1 , r ∈ R := R[x1 , . . . , xr ] . Ein Term ist ein Potenzprodukt xi11 xi22 · . . . · xirr mit i1 , . . . , ir ∈ 0 . Um Schreibarbeit zu sparen, k¨ urzt man ab I := (i1 , . . . , ir ) und schreibt Terme in der Form X I := xi11 xi22 · . . . · xirr .
N
N
114
4 Grundlegende algebraische Strukturen
N
r Die Menge Term(X) := {X I ; I ∈ 0 } aller Terme in X bildet bez¨ uglich der Multiplikation ein abelsches Monoid∗ mit neutralem Element 1 = X 0 = x01 x02 · . . . · x0r . Ein Polynom p aus R = R[X] l¨ asst sich mit Hilfe der Multiindizes Ij schreiben als p(X) = am X Im + am−1 X Im−1 + . . . + a1 X I1
N
N
mit m ∈ , I1 , . . . , Im ∈ r0 und a1 , . . . , am ∈ R . Um diese Schreibweise m¨ oglichst u ¨bersichtlich zu halten, fordert man, dass entsprechende Terme zusammengefasst werden, d.h. dass f¨ ur i = j auch Ii = Ij sei. Weiterhin wird man sich meist (schon aus Platzgr¨ unden) darauf einigen, nur wirklich vorkommende Terme darzustellen, d.h. aj = 0 f¨ ur j = 1, . . . , m . Die Ausdr¨ ucke aj X Ij heißen Monome. F¨ ur die in p(X) auftretenden Terme bzw. Monome seien Term(X; p) := {X Ij ; 1 ≤ j ≤ m} , Mon(X; p) := {aj X Ij ; 1 ≤ j ≤ m} . Zu einer kanonischen Darstellung von R fehlt jetzt nur noch eine eindeutige Festlegung der Reihenfolge der Terme in p(X) . Diese erh¨ alt man, indem man Term(X) eine Ordnung aufpr¨agt und die Terme in p(X) bez¨ uglich dieser Ordnungsrelation sortiert. 4.6.1.1 Definition: Eine lineare Ordnung◦ < auf einem abelschen Monoid M (additiv mit neutralem Element 0 ) heißt zul¨assig, wenn (Z1) 0 < i f¨ ur alle i ∈ M \ {0} und (Z2) i < j ⇒ i + k < j + k f¨ ur alle i, j, k ∈ M . Ist < zul¨ assige Ordnung auf M , so heißt (M, <) ein geordnetes Monoid. Ein bekanntes Beispiel f¨ ur eine geordnetes Monoid ist r0 (additiv mit neutralem Element 0 = (0, . . . , 0) ) mit der lexikographischen Ordnung
N
I
jk und ik+1 = jk+1 , . . . , ir = jr . ∗
Ein Monoid (=Halbgruppe) ist eine Menge mit einer inneren assoziativen Verkn¨ upfung
(manchmal auch Halbgruppe mit 1 ) Term(X) ist unabh¨ angig von R . Wird Term(X) als Teilmenge von R betrachtet, so sind die Einselemente des Monoids und des Ringes identisch. ◦ d.h. irreflexive (a < a) , transitive (a < b, b < c ⇒ a < c) , asymmetrische (a < b ⇒ b < a) und konnexe (a < b ∨ a = b ∨ b < a) Relation < .
4.6 Polynome
115
oder die Diagonalordnungen
N
N
N
Folgerung: F¨ ur eine Termordnung < auf Term(X) gilt: (T1) 1 < X I f¨ ur alle I ∈ r0 \ {0} , (T2) X I < X J ⇒ X I X K < X J X K f¨ ur alle I, J, K ∈ r0 . Sortiert man die Terme in p(X) also noch gem¨ aß einer fest vorgegebenen Termordnung < (etwa X I1 < . . . < X Im ), so liegt eine kanonische Darstellung vor (dabei sei vorausgesetzt, dass es f¨ ur die Elemente von R eine kanonische Normalform gibt und die Koeffizienten am , . . . , a1 von p(X) bereits in dieser Normalform vorliegen). m Ist nun also p(X) = j=1 aj X Ij mit aj ∈ R \ {0} und X Ij < X Ik f¨ ur j < k eine kanonische Darstellung von p(X) ∈ R bez¨ uglich einer Termordnung < , so nennt man LK(p) := am den Leitkoeffizienten von p , LT(p) := X Im den Leitterm von p und LM(p) := LK(p) · LM(p) = am X Im das Leitmonom von p . Speziell f¨ ur das Nullpolynom vereinbart man LK(0) := 0 und LM(0) := 0 . LT(0) ist nicht definiert. Unter dem Grad deg(X I ) eines Terms X I (bzw. Monoms aI X I ) versteht man u ¨blicherweise seinen Gesamtgrad, also die Summe der Komponenten des Exponentenvektors I . Der Grad deg(p(X)) eines Polynoms ist dann das Maximum der Grade in Term(X; p) . Damit kommt man u.U. in die im univariaten Fall unm¨ ogliche Situation, dass der Grad eines Polynoms nichts mit dem Exponenten des Leitterms zu tun hat. Fasst man p(X) ∈ R auf als Element p(xi ) ∈ R [xi ] mit 1 ≤ i ≤ r , so bezeichnet man den u ¨blichen Grad des univariaten Polynoms in xi zur Unterscheidung mit degxi (p) oder degi (p) . Die bekanntesten Termordnungen sind die von den genannten zul¨ assigen Ordnungen auf r0 mittels e induzierten Ordnungen. Da i1 + . . . + ir der Gesamtgrad des Terms X I ist, heißt die Diagonalordnung bei Termen Ordnung nach Gesamtgrad, dann lexikographisch bzw. invers lexikographisch usw. je nach nachgeschalteter Ordnung. Die eingef¨ uhrten Bezeichnungen, wie etwa
N
N
N
genau genommen m¨ ussen diese Ordnungen nicht einmal zul¨ assig sein; es reicht (Z2)
116
4 Grundlegende algebraische Strukturen
Die meisten Computeralgebra-Systeme stellen verschiedene Termordnungen zur Verf¨ ugung. Maple bietet etwa die lexikographische Ordnung unter dem Namen plex an. Dar¨ uber hinaus kann man selber beliebige Termordnungen einf¨ uhren. Leider gibt es in Maple die Bezeichnung tdeg zweimal mit verschiedener Bedeutung. Im sort-Befehl steht das f¨ ur die Ordnung nach Gesamtgrad mit anschließender lexikographischer Ordnung, verwendet man dagegen das K¨ urzel tdeg im termorder-Befehl des Groebner-Pakets, so bedeutet es dort die Ordnung nach Gesamtgrad mit anschließender invers lexikographischer Ordnung. 4.6.1.2 Beispiel: Das Polynom p(X) = p(w, x, y, z) = wx3 y + 2w2 xy + 3y 4 + 4x2 yz hat je nach zugrundeliegender Ordnungsrelation die folgende kanonische Normalform in Z[w, x, y, z] (wenn nichts anderes dabeisteht gelte w > x > y > z ): p(X) p(X) p(X) p(X) p(X)
= = = = =
2w2 xy 2w2 xy wx3 y wx3 y 4x2 yz
+ + + + +
wx3 y wx3 y 2w2 xy 2w2 xy 3y 4
+ + + + +
4x2 yz 3y 4 4x2 yz 3y 4 wx3
+ + + + +
3y 4 4x2 yz 3y 4 4x2 yz 2w2 xy
(rein lexikographisch
Gibt es zu einer zul¨ assigen Ordnung
Nr0
eine regul¨ are Matrix
I
⎞ 1 1 0 A = ⎝1 0 1⎠ 1 0 0 ⎛
ist eine Ordnungsmatrix zur Diagonalordnung
N30 .
⇐⇒ I = (i1 , i2 , i3 )
4.6 Polynome
117
Von V. Weispfenning stammt eine einfache Charakterisierung von Termordnungen. Dazu betrachtet man Ordnungen auf Qr und deren Einschr¨ ankung auf r0 .
N
4.6.1.4 Definition: Es sei G eine additive Gruppe mit neutralem Element 0 . Eine Teilmenge P von G heißt Positivit¨atsbereich von G , wenn gilt (P1) G = −P ∪˙ {0} ∪˙ P (P2) P + P ⊆ P Die durch f 0} ist ein Positivit¨ atsbereich von G . Die Einschr¨ ankung von
r
ai si }
i=1
ein Positivit¨atsbereich von
Qr .
Beweis: Da a1 , . . . , ar linear unabh¨ angig vorausgesetzt sind, ist (0, . . . , 0) r die einzige L¨osung von a s = 0 , was Eigenschaft (P1) zeigt. Eigeni i i=1 schaft (P2) ist sofort klar.
118
4 Grundlegende algebraische Strukturen
N
Da offensichtlich r0 \{(0, . . . , 0)} in P enthalten ist, ist die Einschr¨ ankung r von
N
4.6.1.7 Beispiel: Es seien a := xr− f¨ ur = 1, . . . , r . Diese Elemente sind linear unabh¨ angig im Q-Vektorraum R[x] und nach Definition von
r
P
(j − i ) · xr− ⇐⇒
=1
⇐⇒ LK
r
(j − i ) · x
r−
>0
=1
⇐⇒ ∃k (1 ≤ k ≤ r) mit ik < jk ∧ j1 = i1 , . . . , jk−1 = ik−1 ⇐⇒ I
in kanonischer Darstellung bietet sich analog zur Darstellung von long integers eine (mehrfach) verkettete lineare Liste an. Jeder Knoten dieser Liste k¨ onnte etwa wie folgt aussehen: aj
Ij
Pointer
Der Eintrag aj ist dabei i.Allg. selbst ein Pointer auf ein recht großes Objekt, etwa eine long integer oder eine rationale Zahl, allgemein auf ein Element aus R in kanonischer Normalform.
4.6 Polynome
119
Ij ist ein Pointer auf den zugeh¨ origen Multiindex (der u.U. auch wieder eine verkettete Liste ist) und Pointer ist schließlich ein Querverweis auf den n¨ achsten genauso aussehenden Knoten. Am Anfang einer solchen Liste speichert man in einem Header Informationen wie den Namen des Datentyps oder die Namen der verwendeten Variablen ab. Da in der Polynomdarstellung nur nicht verschwindende Koeffizienten vermerkt wurden, lohnt sich die gezeigte Darstellung besonders bei d¨ unnbesiedelten Polynomen. Aus diesem Grund nennt man diese Darstellung d¨ unn oder englisch sparse. Da das Polynom voll ausmultipliziert dasteht, nennt man diese Darstellung distributiv. Insbesondere bei Verwendung der lexikographischen Ordnungen bietet sich noch eine weitere Darstellungsm¨ oglichkeit an: Gilt etwa xr > xr−1 > . . . > x1 , so bedeutet lexikographisches Sortieren, dass man das Polynom p als Polynom in xr auffasst und nach Potenzen von xr sortiert. Jeder Koeffizient einer xr -Potenz wird seinerseits als Polynom in xr−1 aufgefasst und entsprechend sortiert. Dies f¨ uhrt zur d¨ unn rekursiven Darstellung: k Man schreibt p(X) = p(x1 , . . . , xr ) = pi (x1 , . . . , xr−1 )xeri i=1
mit ek > ek−1 > . . . > e1 , pi = 0 f¨ ur i = 1, . . . , k und stellt dieses Polynom dar als verkettete Liste mit Knoten der Form pi ei Pointer Der Eintrag pi ist dabei ein Querverweis auf die d¨ unn rekursive Darstellung des Polynoms pi (x1 , . . . , xr−1 ) in der Hauptvariablen xr−1 , ei eine nat¨ urliche Zahl. Der anschließende Pointer verweist auf den n¨ achsten Knoten der gleichen Gestalt. Am Anfang einer jeden Liste merkt man sich den zugeh¨origen Variablennamen. In der d¨ unnen Darstellung beanspruchen die Polynome 2x1000 + 1 und 3 2x + 1 den gleichen Speicherplatz, w¨ ahrend man bei der so genannten dichten Darstellung (englisch: dense) im ersten Fall 997 Eintr¨ age mehr als im zweiten speichern muss. Man spart sich allerdings das Abspeichern der Exponenten, wenn man alle, also auch die verschwindenden, Koeffizienten abspeichert. Allgemein ist eine dicht distributive Darstellung von p(X) =
m
aj X Ij
j=1
nur dann m¨oglich, wenn die Menge Term∗ (X; p) := {X I ∈ Term(X), X I ≤ LT(p)} endlich ist (dies ist z.B. bei den Ordnungen nach Gesamtgrad der Fall, bei den lexikographischen Ordnungen i.Allg. nicht). In diesem Fall nummeriert man die Elemente von Term∗ (X; p) der Gr¨ oße nach durch, etwa
120
4 Grundlegende algebraische Strukturen
1 = X E0 < X E1 < . . . < X E = X Im = LT(p), schreibt p(X) um in p(X) =
bj X Ej und speichert b0 , . . . , b als Liste.
j=0
Analog erh¨alt man die dicht rekursive Darstellung aus p(X) = p(x1 , . . . , xr ) =
qi (x1 , . . . , xr−1 )xir
i=0
mit q = 0 , indem man q0 , . . . , q in der dicht rekursiven Form abspeichert. 4.6.2.1 Beispiel: Die d¨ unn distributive Darstellung von p(x, y, z) = x2 yz+ 3 2 2xy z + 3xyz bzgl. der rein lexikographischen Ordnung sieht etwa wie folgt aus (es wird jeweils nach absteigenden Termen sortiert, damit man sofortigen Zugriff auf den Leitterm hat; dies ist f¨ ur einige Algorithmen wesentlich):
Bzgl. der Ordnung nach Gesamtgrad, dann lexikographisch ¨ andert sich diese Darstellung zu
Aus der rekursiven Schreibweise in der lexikographischen Ordnung p(x, y, z) = x2 (y(z)) + x(y 3 (2z) + y(3z 2 )) ergibt sich die d¨ unn rekursive Darstellung (absteigend sortiert):
F¨ ur Beispiele dichter Darstellungen begn¨ ugen wir uns mit q := p 2 xyz = 2y + x + 3z (Gesamtgrad, dann lexikographisch). Die Menge Term∗ (X; q) besteht dann aus den Elementen (0,0,0) (0,0,1) (0,2,0) X < X (0,1,0) < X (1,0,0) < X (0,0,2) < X (0,1,1) < X < X 1=
=y 2
Damit erh¨ alt man die dichte Darstellung (aufsteigend sortiert)
Eine dicht rekursive Darstellung von q bez¨ uglich der rein lexikographischen Ordnung hat schließlich die Gestalt (aufsteigend sortiert)
4.6 Polynome
121
Nat¨ urlich sind auch andere Datenstrukturen als Listen denkbar. So wurden etwa in [Hor] oder in [Kl2] Implementierungen mit Balanced Trees und mit so genannten Hash Tables vorgeschlagen und diskutiert, die m¨ oglicherweise effektiver als einfache lineare Listen sind. Grunds¨atzlich wird ein Polynom (wie bereits oben f¨ ur die Listendarstellung gezeigt) als Menge von Monomen, d.h. Termen (eigentlich nur Exponentenvektoren) und zugeh¨ origen Koeffizienten gespeichert. Dazu gibt es in der Informatik viele bekannte Methoden, etwa die bereits erw¨ ahnten verketteten Listen, ausgeglichene oder AVL-B¨ aume [AVL] und Hash-Tabellen. Grunds¨atzlich muss eine Datenstruktur, die zur Darstellung von Polynomen verwendet werden soll, zun¨ achst einmal die M¨ oglichkeit bieten, das Nullpolynom zu erzeugen und Monome zum bestehenden Polynom hinzu zu addieren. Mit diesen beiden Konstruktionselementen kann jedes gew¨ unschte Polynom in dieser Datenstruktur erzeugt werden. Dar¨ uber hinaus ist es aber auch n¨ otig, das Polynom Monom f¨ ur Monom durchgehen zu k¨ onnen, d.h. es muss ein Iterator vorhanden sein, der es gestattet, nacheinander alle Monome des Polynoms zu betrachten, ohne dass dabei ein Monom zweimal vorkommt. Mit Hilfe dieser Schnittstellenoperationen kann man dann Algorithmen von der Datenstruktur unabh¨ angig formulieren. Viele Algorithmen mit Polynomen sind mit diesen Mitteln aber noch nicht sehr effizient zu formulieren. Man sollte die Sortiertheit der gegebenen Polynome bzgl. der zugrundeliegenden Ordnungsrelation ausnutzen. W¨ahrend man bei einer Liste die Terme in der Reihenfolge speichern kann, die durch die Ordnungsrelation vorgegeben ist, geht die Information u ¨ber die Reihenfolge bei der Verwendung von Hash-Tabellen verloren. Obwohl also relativ schnell klar ist, welche Datenstruktur bei den einfachen Schnittstellenoperationen schneller ist, ist es keineswegs einfach zu sehen, welche Datenstruktur f¨ ur welche Algorithmen am geeignetsten ist. An der TU M¨ unchen wurden im Rahmen eines interdisziplin¨ ares Projekts diese verschiedenen implementiert. Ein kleines System namens Spock (Sparse POlynomial Calculation Kit) wurde dazu erstellt [KRSW]. 4.6.2.2 Beispiel: Die verschiedenen Darstellungen eines Polynoms werden mit einer Spock-Beispielsitzung dokumentiert. Spock arbeitet wie die meisten Computeralgebra-Programme als Interpreter. Nach dem Aufruf spock oder spock meldet sich das Programm mit einem kurzen Begr¨ ußungstext und seinem Prompt oder arbeitet die Befehle in der angegebenen Kommandodatei ab:
122
4 Grundlegende algebraische Strukturen This is Spock - Sparse POlynomial Calculation Kit Calculating primetable .. done Interpreting session-file ../spock_bsp1:
Der Befehl random(a,b,c) erzeugt ein zuf¨ alliges Polynom mit a Termen, b Variablen und einem Grad von h¨ ochstens c in jeder der Variablen. Der Befehl stat(a) gibt n¨ ahere Informationen zur internen Darstellung des Polynoms a aus. Je nachdem, in welchem Modus sich Spock gerade befindet, erh¨ alt man Informationen u ¨ber die Anzahl der Terme, die H¨ ohe und ggf. Struktur des AVL-Baums oder die Auslastung der Hash-Tabelle. Bei B¨aumen wird bis zu einer H¨ ohe von 7 die Struktur des Baumes um 90 Grad gedreht am Bildschirm gezeichnet - sie enth¨ alt neben den Knoten des Baums auch Angaben u ¨ber die Ausgeglichenheit der Unterb¨ aume. Die Hash-Tabellen-Darstellung gibt Informationen u oße ¨ber die Gr¨ der verwendeten Hash-Tabelle, die Anzahl der Terme, das Verh¨ altnis dieser beiden Zahlen, die Anzahl der nichtleeren Tabelleneintr¨age, die durchschnittliche L¨ ange der Listen, die mindestens ein Element enthalten, und schließlich u ¨ber die Anzahl der Elemente der l¨angsten vorkommenden Liste. Die Befehle hash, list bzw. tree schalten zwischen den Datenstrukturen um. > list Switching to list-mode. > setlex Switching to lexicographical order. > a:=random(7,4,6) 7735 x1^6 x2^6 x3 - 4265 x1^6 x3^5 + 2736 x1^4 x2^5 + 3880 x1^3 x2^2 x3^6 x4^6 + 6022 x1^3 x2^2 x3^5 x4^4 + 6528 x1 x2^4 x3^4 x4^3 - 7979 x1 x3^2 x4^6 > stat(a) list: # terms: 7 > hash Switching to hash-mode. Copying Symbols ... done > stat(a) hashtable: size : 11 # terms : 7 load : 0.636364 # used table-entries : 5 average list-length : 1.4 maximum list-length : 2 > tree Switching to tree-mode. Copying Symbols ... done > stat(a) AVL tree: # terms: 7 height : 3 tree structure:
4.6 Polynome
123
[0] 7735 x1^6 x2^6 x3 [0] 4265 x1^6 x3^5 [0] 2736 x1^4 x2^5 [0] 3880 x1^3 x2^2 x3^6 x4^6 [0] 6022 x1^3 x2^2 x3^5 x4^4 [0] 6528 x1 x2^4 x3^4 x4^3 [0] 7979 x1 x3^2 x4^6
In Maple gibt es keinen gesonderten Datentyp f¨ ur Polynome. Dort geh¨ oren Polynome zu den sehr viel allgemeineren Datentypen SUM oder PROD. Der Typ SUM ¨ahnelt dabei der oben vorgestellten Listenform: nach einem Header, in dem die L¨ ange des Ausdrucks, sein Typ und noch einige andere Informationen gespeichert sind, folgen Querverweise auf konstante Vorfaktoren und Ausdr¨ ucke ( SUM = Vorfaktor1 · Ausdruck1 + . . . ), die analog Monomen bei Polynomen in Hash-Tabellen gespeichert werden. Die Ausdr¨ ucke k¨ onnen allerdings nicht nur Terme sein und werden auch nicht von Haus aus sortiert (wenn nicht mit dem sort-Befehl explizit sortiert wird, wird die Reihenfolge der Ausdr¨ ucke durch ihre Adressen im Rechner bestimmt). Da nicht automatisch vereinfacht wird, sind etwa x2 + 2x + 1 und (x + 1)2 nicht nur verschiedene Objekte im Rechner, sondern sogar von den verschiedenen Datentypen SUM und PROD. 4.6.3 Addition und Subtraktion Polynomiale Arithmetik ¨ ahnelt der Arithmetik mit long integers; man er¨ setze dort jeweils β i durch X I . Die Tatsache, dass es keine Ubertr¨ age zu ber¨ ucksichtigen gibt, macht den Umgang mit Polynomen sogar etwas leichter. Daf¨ ur bringt die wegen des bei multivariaten Polynomen deutlich geringeren Speicherbedarfs u unne Darstellung ei¨blicherweise bevorzugte d¨ nige neue Probleme mit sich, da ja vor jedem Rechenschritt die Exponenten erfragt und verglichen werden m¨ ussen. Auch das u.U. n¨ otige Sortieren nach Exponenten kostet zus¨ atzlichen Aufwand, der sich auf die Rechenzeit niederschl¨agt. Die entsprechende Gr¨ oße zur β-L¨ ange einer long integer ist bei der dicht distributiven Darstellung offensichtlich die M¨ achtigkeit t∗p der Men∗ ge Term (X; p) . Bezeichnet man mit m(r, d) die Anzahl der Terme in r Ver¨anderlichen vom Gesamtgrad d , so gilt m(r, 0) = 1 f¨ ur r ≥ 0 und m(0, d) = 0 f¨ ur d ≥ 1 . r Betrachtet man nun den Term xi11 xi22 · . . . · xirr vom Gesamtgrad j=1 ij = i
r−1 d , so ist xi11 xi22 · . . . · xr−1 ein Term in r − 1 Variablen vom Grad d − ir . Das heißt d m(r, d) = m(r − 1, d − n) .
n=0
Einsetzen zeigt, dass m(r, d) =
d+r−1 r−1
die Rekursion l¨ ost.
124
4 Grundlegende algebraische Strukturen
Damit gilt bei dicht distributiver Darstellung und Ordnung nach Gesamtgrad f¨ ur ein Polynom p(x1 , . . . , xr ) vom Gesamtgrad d : d−1 d d+1 d+r d d+r−1 i+r−1 i+r−1 ∗ = . < tp ≤ = r−1 r−1 r−1 r−1 r r i=0 i=0 Im letzten Beispiel war q = 2y 2 + x + 3z , also d = 2 und r = 3 . Damit liefert obige Absch¨ atzung 4 < t∗q ≤ 10 . Der exakte Wert ist 7 . Ist dagegen d = 5 und r = 3 , so liegt t∗p (und damit die Anzahl der abzuspeichernden Koeffizienten) bereits zwischen 35 und 56 , selbst wenn das Polynom nur wenige von Null verschiedene Eintr¨ age hat. Da die dicht distributive Darstellung nicht f¨ ur alle Ordnungsrelationen existiert und im Fall der Ordnung nach Gesamtgrad meist einen ungeheuren Speicheraufwand bedeutet, wird sie f¨ ur Polynome in mehreren Variablen praktisch nicht verwendet (abgesehen von der Schwierigkeit der Nummerierung der Terme). Bei der dicht rekursiven Darstellung sind h¨ ochstens tp
:=
r
(1 + degi p)
i=1
Koeffizienten zu speichern. Dies ist zwar weniger als im dicht distributiven Fall (bei d = 5 und r = 3 etwa zwischen 6 und 18 ), im Fall vieler Variabler oder großer Grade aber immer noch recht viel: Der Term w4 x5 y 6 z 3 br¨auchte so 5 · 6 · 7 · 4 = 840 Speicherpl¨ atze. Im univariaten Fall sind die beiden dichten Speichermethoden identisch und sinnvoll, da die Grundrechenarten mit ihnen leicht zu implementieren und schnell sind. Im multivariaten Fall beschr¨anken wir uns ab jetzt dagegen auf die einzig sinnvollen d¨ unnen Speichermethoden. Zum schnellen effektiven Rechnen mit univariaten Polynomen u ur ein n das klei¨ber Zn f¨ ner als die Wortl¨ ange des Computers ist, verwendet Maple eine dichte Speichermethode (modp1-Routinen). Ein Beispiel dazu findet sich dem nebenstehenden Worksheet.
4.6 Polynome
125
Arbeitet man mit der d¨ unn distributiven oder d¨ unn rekursiven Speichermethode, so muss man nat¨ urlich auch damit rechnen, dass ein Polynom p in r Variablen vom Grad d dicht gef¨ ullt ist, d.h. die je nach Methode maximale Anzahl von Koeffizienten ungleich Null besitzt oder nur knapp darunter bleibt (also t∗p bei d¨ unn distributiver Speicherung und tp bei d¨ unn rekursiver Speicherung). ¨ Ublicherweise geht man aber davon aus, dass die Anzahl tp := |Term(X; p)| deutlich kleiner als diese m¨ ogliche Maximalzahl ist, d.h. man geht von d¨ unn besiedelten Polynomen aus. Insbesondere verwendet man die Zahl tp bei der Beurteilung der Rechenzeit polynomialer Operationen und greift nur f¨ ur die Beurteilung des schlimmsten Falles auf die oben angegebenen Schranken f¨ ur dieses tp zur¨ uck. Summe von Polynomen
t
p procedure PSum(p, q) a X I , # Eingabe: p(X) = =1 tq J lp ← tp ; lq ← tq ; lr ← 1 # q(X) = =1 b X # aus R[X] = R[x1 , . . . , xr ] while lp ≥ 1 and lq ≥ 1 do # in kanonischer, d¨ unn O ← sign(Ilp − Jlq ) # distributiver Darstellung. if O = 0 then # tr clr ← alp ⊕ blq c X K = # Ausgabe: r(X) = =1 if clr = 0 then # = p(X) + q(X) lp ← lp − 1; lq ← lq − 1 # in kanonischer, d¨ unn else # distributiver Darstellung. # Klr ← Ilp lp ← lp − 1; lq ← lq − 1; lr ← lr + 1# sign bezieht sich hier auf die # zugrundeliegende zul¨ assige Ordnung end if # ⊕ bezeichnet die Addition elif O = 1 # im Ring R clr ← alp ; Klr ← Ilp lp ← lp − 1; lr ← lr + 1 else clr ← blq ; Klr ← Jlq lq ← lq − 1; lr ← lr + 1 end if end do if lp ≥ 1 then
Return
lp
=1
a X I +
lp +lr −1 =lp +1
clp +lr − X Klp +lr −
elif lq ≥ 1 then lq lq +lr −1 Klq +lr − J Return b X + c X l +l − q r =lq +1 =1 else Return end if end
lr −1 =1
clr − X Klr −
126
4 Grundlegende algebraische Strukturen
Je nach zugrundeliegender Darstellung kann man nun Routinen f¨ ur die Grundrechenarten angeben. Die Prozedur PSum erledigt die Summation von Polynomen in der d¨ unn distributiven Darstellung. Von den Eingabepolynomen wird erwartet, dass sie sich in kanonischer Normalform bez¨ uglich der fest vereinbarten Termordnung befinden. Die Ausgabe des Ergebnisses erfolgt in kanonischer Normalform. Der Einfachheit halber werden Polynome im Programm in der gewohnten mathematischen Notation geschrieben. Wie in 4.6.1.2 gezeigt, seien sie intern als absteigende Liste der Knoten aus Koeffizienten, Multiindizes und Pointern gespeichert (plus eventuelle Header, die hier nicht angegeben werden). tp I p(X) =
a X
↔ p → atp
Itp
. a1 →atp −1 Itp −1 →. . →
I1
=1
Betrachtung der while-Schleife in der Prozedur zeigt, dass die Hauptarbeit in der Berechnung von sign(Ilp − Jlq ) , d.h. dem Vergleich zweier Vektoren aus r0 bez¨ uglich einer festgelegten zul¨ assigen Ordnungsrelation und in der Berechnung der Koeffizientensumme alp ⊕ blq im Ring R liegt. Die Beurteilung dieser beiden Punkte h¨ angt davon ab, wieviele gemeinsame Terme die beiden zu summierenden Polynome p(X) und q(X) haben. Diese Anzahl wird mit
N
tp∗q := |Term(X; p) ∩ Term(X; q)| bezeichnet (nicht zu verwechseln mit tp·q !) und liegt zwischen 0 und min(tp , tq ) . In jedem Durchlauf der while-Schleife wird einer der Laufindizes lp oder lq um 1 heruntergesetzt. Sind die zwei betrachteten Terme gleich, so werden sogar beide Indizes heruntergesetzt. Damit wird die Schleife h¨ ochstens tp + tq − tp∗q -mal durchlaufen. So oft muss h¨ ochstens das Signum berechnet werden und tp∗q -Mal wird die Koeffizientensumme berechnet. Diese zwei Punkte dominieren die Rechnungen in Kurzzahlarithmetik mit den Laufindizes. Ein Vergleich zweier Multiindizes der L¨ ange r kann recht aufw¨ andig werden, wenn er ganz allgemein gem¨ aß 4.6.1.6 berechnet wird. F¨ ur die vorgestellten g¨angigen Termordnungen sind aber h¨ ochstens r Operationen n¨otig. Der Aufwand f¨ ur die Koeffizientensummen h¨ angt nat¨ urlich sehr von dem zugrundeliegenden Ring R ab. Um diesen Aufwand absch¨ atzen zu k¨ onnen, betrachten wir diejenigen Koeffizienten von p und q , f¨ ur die die Summenbildung am aufw¨ andigsten ist. Die Anzahl der Operationen, die f¨ ur deren Addition n¨otig ist, bezeichnen wir mit A(p, q) . Damit gilt f¨ ur den Gesamtaufwand Op[r(X) ← PSum(p(X), q(X))] (tp + tq − tp∗q ) · r + tp∗q · A(p, q).
4.6 Polynome
127
Bei d¨ unn besiedelten Polynomen wir oft tp∗q klein sein oder sogar verschwinden, so dass die Addition von (tp + tq ) · r dominiert wird. Je dichter p und q belegt sind, desto mehr wird sich tp∗q seinem Maximalwert min(tp , tq ) n¨ ahern. Der Gesamtaufwand in diesem Fall wird also von max(tp , tq )·r+min(tp , tq )·A(p, q) dominiert. Erst f¨ ur eine relativ aufw¨ andige Ringarithmetik und dicht gef¨ ullte Polynome dominieren also die Additionen der Koeffizienten die Rechnung. Sind p und q univariate vollbesetzte Polynome, so ist tp ≈ deg p + 1 , tq ≈ deg q + 1 und damit der Rechenaufwand von PSum von der Ordnung max(deg(p) + 1, deg(q) + 1) + min(deg(p) + 1, deg(q) + 1) · A(p, q) also h¨ aufig etwas aufw¨andiger als die Addition dicht distributiv dargestellter, univariater Polynome, die von der Ordnung min(deg(p) + 1, deg(q) + 1) · A(p, q) ist. Sind tp und tq von der gleichen Gr¨ oßenordnung n , so hat man es bei der Listendarstellung mit O(n) Termvergleichen und O(n) Additionen im Koeffizientenring R zu tun. Da man bei der Darstellung mit AVL-B¨aumen etwas mehr Aufwand betreiben muss, um alle Terme in der richtigen Reihenfolge zu bekommen, ben¨otigt man dort O(n log n) Termvergleiche. Die Anzahl der Additionen ist bei dieser Datenstruktur gleich. Bei der Darstellung mit Hash-Tabellen braucht man wie bei Listen O(n) Termvergleiche und O(n) Additionen, d.h. der Vorteil der eigentlich besseren Datenstrukturen wirkt sich bei der Addition nicht aus. 4.6.4 Multiplikation Noch gr¨oßer als bei der Addition ist der Unterschied der verschiedenen Speichermethoden bei der Multiplikation. Der Einfachheit halber beschr¨ anken wir uns wieder auf die d¨ unn distributive Methode. Es seien also p und q in der d¨ unn distributiven Form dargestellt, etwa p(X) =
tp
ai X
Ii
und q(X) =
i=1
tq
b j X Jj .
j=1
Dann gilt r(X) := p(X) · q(X) =
i,j
ai bj X
Ii +Jj
=
tpq
rk X Kk .
k=1
Die zur Berechnung dieses Produktes ben¨ otigte Zeit h¨ angt stark davon ab, wie schnell die berechneten Zwischenergebnisse (ai bj , Ii + Jj ) f¨ ur 1 ≤ i ≤ tp und 1 ≤ j ≤ tq zusammengefasst und sortiert werden, denn die (rk , Kk ) f¨ ur 1 ≤ k ≤ tpq sollen ja bzgl. der gegebenen Termordnung sortiert sein, also K1 < K2 < . . . < Ktpq . Dazu geht man wie folgt vor:
128
4 Grundlegende algebraische Strukturen
1) Berechne f¨ ur i = 1, . . . , tp die Polynome tq ai bj X Ii +Jj bzw. si (X) = ai X Ii · q(X) = j=1
si = ((ai btq , Ii + Jtq ), . . . , (ai b1 , Ii + J1 )) Die si sind bereits sortiert ((T2) !), deshalb ist hier nichts weiter zu tun. t 2) Sortiere f¨ ur 1 ≤ i ≤ 2p jeweils die Listen s2i−1 und s2i ineinander und fasse dabei gleiche Terme zusammen. Fasse die so berechneten Listen wieder paarweise nach dem gleichen Schema zusammen, bis am Schluss nur noch die eine sortierte Liste ((rtpq , Ktpq ), . . . , (r1 , K1 )) u ¨brig ist. 4.6.4.1 Beispiel: Es seien p(x, y, z) = 3x3 y 2 z 3 + 2x2 y 3 z 3 − xy 2 z 3 und q(x, y, z) = x4 y 3 z 2 − x3 y 2 z 2 + x2 y 3 z 2 (jeweils nach Gesamtgrad, dann lexikographisch sortiert) bzw. p −→ 3 und (3, 2, 3) −→ 2 (2, 3, 3) −→ −1 (1, 2, 3) q −→ 1
(4, 3, 2)
−→ −1
−→ 1
(3, 2, 2)
.
(2, 3, 2)
Dann ist s1 −→ 3
(7, 5, 5)
−→ −3 (6, 4, 5)
−→ 3
(5, 5, 5)
s2 −→ 2
(6, 6, 5)
−→ −2 (5, 5, 5)
−→ 2
(4, 6, 5)
−→ 1
−→ −1 (3, 5, 5)
s3 −→ −1 (5, 5, 5)
(4, 4, 5)
, und .
Im ersten Sortierschritt werden s1 und s2 zusammensortiert zu 3
(7, 5, 5)
−→ 2
(6, 6, 5)
1
(5, 5, 5)
−→ 2
(4, 6, 5)
−→ −3 (6, 4, 5)
−→
.
Dieses Zwischenergebnis wird schließlich mit s3 zum Endergebnis 3
(7, 5, 5)
−→ 2
(6, 6, 5)
−→ −3 (6, 4, 5)
2
(4, 6, 5)
−→ 1
(4, 4, 5)
−→ −1 (3, 5, 5)
−→ bzw.
p · q = 3x7 y 5 z 5 + 2x6 y 6 z 5 − 3x6 y 4 z 5 + 2x4 y 6 z 5 + x4 y 4 z 5 − x3 y 5 z 5 zusammengesetzt. Analyse dieses Multiplikationsalgorithmus: 1) In Schritt 1 werden f¨ ur jedes si (i = 1, . . . , tp ) tq Produkte ai bj von Koeffizienten und ebensoviele Summen von Multiindizes Ii + Jj berechnet. Um diesen Aufwand absch¨ atzen zu k¨ onnen, betrachten wir diejenigen Koeffizienten von p und q , f¨ ur die die Produktbildung am aufw¨andigsten ist. Die Anzahl der Operationen, die f¨ ur deren Multiplikation n¨otig ist, bezeichnen wir mit M(p, q) . Damit ist die Berechnung eines einzelnen si mit dem Aufwand (M(p, q) + r) · tq verbunden, d.h. Schritt 1 insgesamt mit (M(p, q) + r) · tp tq . 2) In Schritt 2 kostet das Zusammenf¨ ugen zweier Listen der L¨ ange L jeweils h¨ochstens 2L − 1 Vergleiche von Multiindizes und h¨ ochstens L Summen von Koeffizienten.
4.6 Polynome
129
t
Im i-ten Schritt werden ≤ 2pi Paare von Listen der L¨ ange ≤ 2i−1 tq ineinander sortiert. Dies erfordert h¨ ochstens tp 1 tp r A(p, q) + r · tp · tq − i A(p, q) · 2i−1 tq + (2 · 2i−1 tq − 1) · r · i = 2 2 2 Operationen. Da insgesamt log2 tp ! Sortierschritte n¨ otig sind, wird Schritt 2 also dominiert von 1 A(p, q) + r · tp · tq · log2 tp !. 2 F¨ ur die Beurteilung Verhaltens kommt es darauf an, wie sich des gesamten M(p, q) + r und 12 A(p, q) + r · log2 tp ! zueinander verhalten. Ist die Multiplikation von Ringelementen im Vergleich zur Addition sehr aufw¨ andig und ist das Polynom p relativ d¨ unn besiedelt, so wird der Aufwand f¨ ur den ersten Schritt den gesamten Algorithmus dominieren. Sind dagegen Multiplikation und Addition im Ring R mit ¨ ahnlichem zeitlichen Aufwand verbunden, so dominiert der zweite Schritt die gesamte Rechenzeit. Hat man es etwa mit zwei dichtbesetzten univariaten Polynomen p und q zu tun, so ist tp ≈ deg p + 1 , tq ≈ deg q + 1 und die Anzahl der Operationen wird damit (bei Annahme des 2. Falls) dominiert von 1 A(p, q)(deg q + 1)(deg p + 1) log2 (deg p + 1)! . 2 Das gleiche Produkt in dichter Darstellung erfordert M(p, q)(deg q + 1)(deg p + 1) . Sind A(p, q) und M(p, q) ungef¨ ahr gleich groß (etwa beim Rechnen in R = Zn ), so ist die Multiplikation von d¨ unn dargestellten Polynomen also um den durch das Ineinandersortieren der Listen bedingten Faktor 1 2 log2 (deg p + 1)! langsamer, als die von dicht dargestellten. Dies zeigt, warum etwa in Maple in diesem Fall bei einigen Algorithmen automatisch zur dichten Darstellung u ¨bergegangen wird (modp1Routinen). Bei dem naheliegenden, aber schlechteren Sortierverfahren, bei dem man die si nicht paarweise sondern hintereinander zusammenfasst, bek¨ame man hier sogar einen Faktor 12 tp bzw. 12 (deg p + 1) . Realisiert man das erl¨ auterte Sortierverfahren f¨ ur die Multiplikation, so k¨onnte man die tp Polynome si (X) (mit je tq Termen) in einem Feld der Gr¨oße tp speichern und diese jeweils (da sie dann nicht mehr ben¨ otigt werden) mit den ineinandersortierten Polynomen u ¨berschreiben. Am Ende st¨ unde dann das Ergebnispolynom als erster und einziger Eintrag. Horowitz schl¨agt in [Hor] eine Verbesserung dieses Verfahrens vor. Dabei wird statt des eben genannten Feldes ein sog. Stack∗ verwendet. ∗
eine Liste, bei der nur an einem Ende eingef¨ ugt und entnommen werden kann.
130
4 Grundlegende algebraische Strukturen
Jedesmal, wenn ein Polynom mit einem anderen zusammengefasst wurde, wird dies als Zusatzinformation gespeichert (dem sog. level, die si haben level 1 . Es werden soweit m¨ oglich nur Polynome gleichen levels zusammengefasst. Dies hat den Vorteil, dass man wirklich nur die Polynome speichert, die man gerade zum Rechnen braucht und nicht immer das ganze Feld wie oben. Von der Komplexit¨ at her unterscheidet sich diese Variante (Horowitz nennt sie Binary-Mult) nicht von der zuerst geschilderten. Ist m = tp , n = tq , so hat man es bei Verwendung der Listendarstellung und dem Algorithmus Binary-Mult mit O(mn log n) Termvergleichen, O(mn log n) Additionen und O(mn) Multiplikationen in R zu tun. 4.6.4.2 Beispiel: Bei der Berechnung des Produkts der beiden univariaten Polynome
Zwischenpolynom s1 =
x6
+
+
x4
+
1
s1 = + + + s2 = −x5 − 4x4 − x3 − 5x2
1 1
und
x6 + 3x5 − 3x4 + 4x3 − 5x2
2
x6 + 3x5 − 3x4 + 4x3 − 5x2 s3 = x4 + 4x3 + x2 + 5x
2 1
x6 + 3x5 − 3x4 + 4x3 − 5x2 s3 = x4 + 4x3 + x2 + 5x s4 = x3 + 4x2 + x + 5
2 1 1
x6 + 3x5 − 3x4 + 4x3 − 5x2 x4 + 5x3 + 5x2 + 6x + 5
2 2
x6 + 3x5 − 2x4 + 9x3 + 6x + 5
3
q := x − x + x + 1 2
mit Binary-Mult sieht der Stack hintereinander wie gezeigt aus. Wegen der besseren Lesbarkeit sind die Polynome in der u ¨blichen Notation geschrieben. Intern liegen Sie als Listen vor.
4x5
x4
level 5x3
p := x3 + 4x2 + x + 5 3
x6
4x5
5x3
Horowitz [Hor] schl¨ agt eine bessere Strategie zur geordneten Abarbeitung der Produktterme vor. Dazu betrachtet man die sog. Exponentenmatrix der beiden zu multiplizierenden Polynome, also die Matrix ⎛ I +J Im−1 + Jn . . . I1 + Jn ⎞ m n ⎜ Im + Jn−1 Im−1 + Jn−1 . . . I1 + Jn−1 ⎟ ⎜ ⎟ .. .. ⎜ ⎟ . E(p, q) := ⎜ Im + Jn−2 . ⎟ ⎜ ⎟ .. ⎝ ⎠ . Im + J1 ... I1 + J1 Alle Zeilen und Spalten der Matrix E := E(p, q) sind bez¨ uglich der zugrundeliegenden zul¨ assigen Ordnung absteigend sortiert (T2). Das gr¨ oßte Element, und damit der Exponent des Leitterms des Produkts, findet sich links oben. Der von Horowitz Sort-Mult genannte Algorithmus besteht nun darin, diese Exponentenmatrix unter Ausnutzung der Sortiertheitsbedingungen so zu durchlaufen, dass die besuchten Monome dabei in der Reihenfolge der verwendeten Ordnungsrelation anfallen.
4.6 Polynome
131
Ist das der Fall, kann das Einf¨ ugen dieser Monome in die Liste des Ergebnispolynoms mit O(1) geschehen und es werden keine weiteren Termvergleiche ben¨otigt. Um den Speicherverbrauch m¨ oglichst gering zu halten, muss dieses Durchlaufen der Exponentenmatrix so geschehen, dass diese nicht vollst¨andig im Speicher aufgebaut werden muss. Trotz der Sortiertheit der Exponentenmatrix l¨ asst sich dieses Durchlaufen in der richtigen Reihenfolge nicht v¨ ollig ohne Termvergleiche bewerkstelligen. Hat man z.B. das Element E1,1 als ersten Term des Produkts festgehalten, so stehen f¨ ur den n¨ achsten Term E1,2 und E2,1 zur Verf¨ ugung. Die Kandidaten muss man sich in einer geeigneten Struktur merken und durch Vergleiche daraus jeweils wieder den gr¨ oßten aussuchen. F¨ ur die technischen Details dieser Variante sei auf [KRSW] verwiesen. Die asymptotische Laufzeit a ¨ndert sich nicht im Vergleich zum vorgestellten Binary-Mult, der Speicherbedarf ist allerdings deutlich geringer und der Algorithmus dadurch auch in der Praxis schneller. Klip liefert in [Kl2] eine andere Variante von Sort-Mult, die dem Namen Gen-Mult. Der Unterschied liegt einzig in der Art und Weise wie die Exponentenmatrix durchlaufen wird. Implementierungsdetails und Verbesserungen einiger Fehler von Klip lese man ebenfalls in [KRSW] nach. Trotz der auch hier theoretisch gleichen asymptotischen Laufzeit wie bei den beiden anderen Algorithmen, erweist sich Gen-Mult als schnellster der Algorithmen f¨ ur Polynome in Listendarstellung. Beim Vergleich mit Spock stellt sich Gen-Mult als ebenso schnell wie die Multiplikation unter Verwendung von AVLB¨aumen, aber langsamer als die Multiplikation mit Hilfe von Hash-Tabellen heraus. Bei Hash-Tabellen kommt man mit O(mn) Additionen, MultipliEmpirischer Vergleich der kationen und Termvergleichen Multiplikationsalgorithmen mit Spock aus! 4.6.4.3 Beispiel: Die Exponentenmatrix der Polynome aus 4.6.4.1 ist ⎛ (7, 5, 5) (6, 6, 5) (5, 5, 5) ⎞ Unter den Exponentenvektoren (1) (2) (4) ⎜ (6, 4, 5) (5, 5, 5) (4, 4, 5) ⎟ ist jeweils vermerkt, an welcher ⎝ (3) ⎠ (4) (6) Stelle dieser Exponent in das (5, 5, 5) (4, 6, 5) (3, 5, 5) (4) (5) (7) Ergebnis kommt.
132
4 Grundlegende algebraische Strukturen
4.6.5 Division und Pseudodivision Bei der Division zweier Polynomen f (x), g(x) ∈ R[x] (g(x) = 0) ( R wie u alle zu unterscheiden: ¨blich kommutativ mit 1 ) sind zwei wichtige F¨ 1) Ist R = K sogar ein K¨ orper, so ist K[x] ein euklidischer Ring, d.h. es existieren eindeutig bestimmte Polynome q(x), r(x) ∈ K[x] mit f (x) = g(x) · q(x) + r(x) und deg r(x) < deg g(x)
(4.3)
In Analogie zu der Bezeichnung bei ganzen Zahlen sei: PQuo(f, g) := q, PRest(f, g) := r . 2) Ist R ein faktorieller Ring, so ist auch R[x] faktoriell aber nur im bereits in 1) betrachteten Fall euklidisch. Ist R kein K¨ orper, so funktioniert die Division (4.3) so nicht, da sie Teilbarkeit der Leitkoeffizienten von f und g durcheinander erfordert. Da man aber (insbesondere f¨ ur ¨ die Berechnung des ggT ) etwas Ahnliches wie (4.3) haben m¨ ochte, behilft man sich in diesem Fall mit der so genannten Pseudodivision. Dazu multipliziert man f (x) mit einer geeigneten Konstanten, so dass dann die n¨otigen Divisionen in R aufgehen. Ist α ∈ R solch ein Faktor, so gibt es dazu eindeutig bestimmte q, r ∈ R[x] mit α · f (x) = g(x) · q(x) + r(x) und deg r(x) < deg g(x) und man schreibt PPQuo(f, g) := PQuo(α · f, g) = q , PPRest(f, g) := PRest(α · f, g) = r . Ist nun f˜ ∼ f und g˜ ∼ g , so existieren a, a ˜, b und ˜b aus R \ {0} mit ˜ ˜ a ˜f = af und b˜ g = bg . Sind weiterhin r = PPRest(f, g) und r˜ = PPRest(f˜, g˜) , so gibt es α, α ˜ ∈ R \ {0} und q, q˜, r, r˜ ∈ R[x] mit deg r < deg q bzw. deg r˜ < deg q˜ und αf = qg + r , α ˜ f˜ = q˜g˜ + r˜ . Multipliziert man von diesen beiden Gleichungen die erste mit ab˜ α und zieht davon das a ˜bα-fache der zweiten Gleichung ab, so ergibt sich g˜(˜ abα˜ q − a˜b˜ αq) = b(a˜ αr − u˜ aα˜ r) . Aus Gradgr¨ unden liest man daraus ab a ˜bα˜ q = a˜b˜ αq , a˜ αr = a ˜α˜ r , oder einfach q˜ ∼ q und r˜ ∼ r . Dies zeigt ; * f˜ ∼ f PPRest(f˜, g˜) ∼ PPRest(f, g) ⇒ . (4.4) g˜ ∼ g PPQuo(f˜, g˜) ∼ PQuo(f, g) Diese Erkenntnis hilft etwa bei der ggT-Berechnung. Man k¨ onnte zwar einfach in den Quotientenk¨ orper K von R ausweichen und in dem euklidischen Ring K[x] rechnen, muss dann allerdings die u ¨blicherweise sehr viel aufw¨ andigere Arithmetik in K in Kauf nehmen.
4.6 Polynome
133
Gerade beim euklidischen Algorithmus, bei dem dieser Divisionsschritt mehrmals wiederholt wird, kann das die Rechenzeit erheblich erh¨ ohen. Da das Rechnen mit allzu großen Ausdr¨ ucken auch die Rechenzeit verl¨angert, wird man versuchen den Faktor α von f (x) so klein wie m¨oglich zu halten und m¨ oglicherweise auch noch aus dem Rest r(x) einen Faktor heraus zu ziehen. Die Berechnung von PQuo(f, g) und PRest(f, g) u orper K ¨ber einem K¨ mit der unten gezeigten Routine PDiv funktioniert im Prinzip genauso wie die bekannte Handmethode. Die Normierung von g vor der Schleife erfordert tg Divisionen in K . Die Schleife wird h¨ ochstens (deg(f )−deg(g)+1)mal durchlaufen. In der Schleife werden ein Quotient und tg Produkte von K¨orperelementen berechnet. Weiterhin wird eine Differenz zweier Polynome mit tg und tf Eintr¨ agen berechnet. Die Differenz der beiden Grade am Schluss spielt genauso wie die Berechnung von k am Anfang bei der Beurteilung keine Rolle (ganze Zahlen in Kurzzahlarithmetik). Polynomdivision procedure PDiv(f, g) f ← f ; k ← deg f − deg g; g ← while k ≥ 0 do ) qk ← LK(f LK(g)
g LK(g)
# Eingabe: f (x), g(x) ∈ K[x] , d¨ unn # distributiv gespeichert # Ausgabe: PQuo(f, g) # PRest(f, g)
f ← f − g LK(f )xk ; k ← deg f − deg g end do PQuo(f, g) ← q =0 qk xk ; PRest(f, g) ← f k
Return(PQuo(f, g), PRest(f, g)) end
Geht man davon aus, dass die Division im K¨ orper genauso viel Aufwand wie die Multiplikation erfordert, so bleibt die Schwierigkeit, dass sich die Gr¨oße der beteiligten K¨ orperelemente in manchen K¨ orpern (etwa in Q ) dauernd a¨ndert. In endlichen K¨ orpern hat man dieses Problem nicht. Es ist also OpK [(PQuo(f, g), PRest(f, g)) ← PDiv(f, g)] (deg(f ) − deg(g)) · tg . Bei dicht besetzten Polynomen erfordert der Algorithmus somit maximal O((deg f − deg g) · deg g) Operationen in K . Erst, wenn man wirklich Grundoperationen z¨ ahlt, wirken sich bei der Division die verschiedenen m¨ oglichen Datenstrukturen aus. Die Schwierigkeit liegt hier neben der sich ¨ andernden Gr¨ oße der Koeffizienten in der Bestimmung des Grades und der Leitkoeffizienten. Bei einem Polynom aus K[x] in Listendarstellung ist dies am einfachsten, denn der Grad ist der Exponent des ersten Listenknotens, der Leitkoeffizient der zugeh¨ orige Exponent. Eine unsortiert abgespeicherte HashTabelle muss man dagegen nach diesen Gr¨ oßen durchsuchen.
134
4 Grundlegende algebraische Strukturen
Deutlich schwieriger wird die Situation bei multivariaten Polynomen. Hier beziehen sich deg und LK jeweils auf eine ausgezeichnete Hauptvariable. Ist dies gerade auch die Hauptvariable einer lexikographisch sortierten Liste, so sind diese Gr¨ oßen wiederum sehr leicht abzulesen. Liegen dagegen eine andere Ordnung oder eine andere Datenstruktur vor, so muss man m¨oglicherweise alle Terme durchsuchen. Dies bewirkt, dass hier die Listendarstellung den anderen Strukturen u ¨berlegen ist. Die folgende Prozedur PggTK[x] berechnet mit Hilfe von PDiv den ggT zweier Polynome aus K[x] . Das funktioniert genauso in jedem anderen euklidischen Ring, man muss nur die geeignete Prozedur f¨ ur die euklidische Division mit Rest in diesem Ring bereitstellen. ggT in K[x] procedure PggTK[x] (f, g) f ← f ; g ← g while g = 0 do PDiv(f , g ); r ← PRest(f , g ) f ← g ; g ← r end do Return(f ) end
# Eingabe: f (x), g(x) ∈ K[x] , # Ausgabe: ggT(f, g)
Berechnet man mit Hilfe von PggTK[x] den ggT zweier Polynome in dichter Darstellung mit der Schulmethode (Schreibweise wie im Beweis von 2.5.4), so erfordert die gesamte ggT-Berechnung O((n1 − n2 )n2 + (n2 − n3 )n3 + . . . + (nk−1 − nk )nk ) Operationen in K . Wegen n1 > n2 > . . . > nk und (n1 − n2 )n2 + (n2 − n3 )n3 + . . . + (nk−1 − nk )nk = n1 n2 + n2 (n3 − n2 ) + . . . + nk−1 (nk − nk−1 ) − n2k gilt also OpK [ggT(f, g) ← PggTK[x] (f, g)] = O(deg(f ) · deg(g)) . Da bei dem Algorithmus PDiv h¨ ochstens (deg(f )−deg(g)+1)-mal durch den Leitkoeffizienten LK(g) von g(x) dividiert wird, ist f¨ ur die Pseudodivision immer α := LK(g)(deg(f )−deg(g)+1) ein geeigneter, wenn auch oft zu großer Faktor. Um nicht einen zu großen Faktor zu verwenden und um davon zu profitieren, dass es ja meist weniger Rechenschritten sein werden, multipliziert man nicht gleich von Anfang das Polynom f mit solch einem Faktor, sondern multipliziert in jedem Divisionsschritt mit LK(g) . Die so berechneten qk m¨ ussen am Ende allerdings mit der jeweils entsprechenden Potenz von LK(g) multipliziert werden. Außer der whileSchleife wie bei PDiv braucht man dazu noch eine zweite Schleife, in der die qk nochmals bei k = 0 startend durchlaufen werden. Da dies bei den vorgestellten Datenstrukturen nur recht uneffizient zu machen ist, sollte man die qk in einer dazu geeigneteren Datenstruktur zwischenlagern.
4.6 Polynome
135
Pseudodivision procedure PPDiv(f, g) # Eingabe: # f ← f ; k ← deg f − deg g # Ausgabe: while k ≥ 0 do # qk = LK(f ) f ← LK(g)f − LK(f )gxk ; k ← deg f − deg g end do temp ← 0 for k from 0 to deg(f ) − deg(g) do if qk = 0 then qk ← qk · LK(g)temp ; temp ← temp +1 end if end do PPQuo(f, g) ← q =0 qk xk ; PPRest(f, g) ← f
f (x), g(x) ∈ R[x] , d¨ unn distributiv gespeichert PPQuo(f, g) , PPRest(f, g)
k
Return(PPQuo(f, g), PPRest(f, g)) end
4.6.5.1 Beispiel: Es seien f (x) = x7 −3x2 +3x+1 und g(x) = 3x3 −4x+2 . Mit normaler Division bzw. Pseudodivision erh¨ alt man PQuo(f, g) = 13 x4 + 49 x2 − 29 x + 16 27 157 5 2 PRest(f, g) = − 43 x + x − 9 27 27 PPQuo(f, g) = 27x4 + 36x2 − 18x + 48 PPRest(f, g) = −387x2 + 471x − 15 Division in Q[x] qk f 4 5 1 2 4 2 3 3 x − 3 x − 3x + 3x + 1 4 2 4 16 3 35 2 9 − 3 x + 9 x − 9 x + 3x + 1 16 3 2 43 2 31 −9 9 x − 9 x + 9 x + 1 16 43 2 157 5 27 − 9 x + 27 x − 27
k 4 2 1 0
Pseudodivision in Z[x] qk f 1 4x5 − 2x4 − 9x2 + 9x + 3 4 −6x4 + 16x3 − 35x2 + 27x + 9 −6 48x3 − 129x2 + 93x + 27 48 −387x2 + 471x − 15
Das qk in der Tabelle zur Pseudodivision ist das in der whileSchleife berechnete, die endg¨ ultigen qk sind die Koeffizienten von PPQuo(f, g) . Der gesamte Multiplikator war somit bei der Pseudodivision 81 statt LK(g)(deg(f )−deg(g)+1) = 243 . Das ist auch noch zu viel, denn offensichtlich h¨ atte 27 auch schon gereicht. 4.6.5.2 Beispiel: Bei Polynomen in mehreren Variablen kommt es bei der Pseudodivision auf die Reihenfolge der Variablen an. Es seien etwa f (x, y) := x2 y + xy 2 + 2xy , g(x, y) := 3xy 2 − y ∈ Z[x, y] Mit x als Hauptvariable (also
Z[x, y] = (Z[y])[x] ) erh¨alt man
9y · f = (3y + 3y x + 6y 3 + y 2 ) · g + (3y 5 + 6y 4 + y 3 ) , 4
4
3
136
4 Grundlegende algebraische Strukturen
mit der Hauptvariablen y x · f = x · g + (3x3 y + 6x2 y + xy) . 4.6.6 Gr¨ oßter gemeinsamer Teiler Wie bereits im vorhergehenden Abschnitt bemerkt, l¨ asst sich der ggT in R[x] i.Allg. nicht mit dem euklidischen Algorithmus berechnen, da dieser nur funktioniert, wenn die Leitkoeffizienten der beteiligten Polynome durcheinander teilbar sind. Man greift deshalb auf die Pseudodivision zur¨ uck und wandelt den euklidischen Algorithmus entsprechend ab. 4.6.6.1 Definition: Es seien f1 , f2 ∈ R[x] \ {0} . Dann bilden die Polynome f1 , f2 , . . . , fk ∈ R[x] eine Polynom-Restfolge (polynomial remainder sequence) oder kurz PRS, wenn gilt: F¨ ur i = 3, . . . , k existieren αi , βi ∈ R \ {0} und qi ∈ R[x] , so dass αi fi−2 = qi · fi−1 + βi fi mit deg fi < deg fi−1 und es existieren αk+1 ∈ R \ {0} und qk+1 ∈ R[x] mit αk+1 fk−1 = qk+1 fk . Eine PRS wird normal genannt, wenn f¨ ur i = 3, . . . , k gilt deg fi−1 − deg fi = 1 . Aus der letzten Pseudodivision der PRS folgt fk |αk+1 fk−1 . Setzt man dies in die vorletzte Gleichung αk fk−2 = qk fk−1 + βk fk ein und erweitert man mit αk+1 , so liest man ab fk |αk+1 αk fk−2 . Setzt man dies fort, so sieht man, dass fk ein Teiler von αk+1 · . . . · α4 f2 und von αk+1 · . . . · α3 f1 ist. Es gibt also Polynome f1 , f2 ∈ R[x] mit fk fk · f = f1 und · (α3 · f2 ) = f2 , αk+1 · . . . · α3 1 αk+1 · . . . · α3 k d.h. αk+1f·...·α ist ein gemeinsamer Teiler von f1 , f2 in K[x] (K = Q(R) 3 Quotientenk¨orper von R ). Der folgende Satz von Gauß liefert dann, dass fk ¨ahnlich zu einem gemeinsame Teiler von f1 und f2 in R[x] ist.
4.6.6.2 Satz: Es sei f = g · h eine Zerlegung von f ∈ R[x] \ {0} in g, h ∈ K[x] . Dann gibt es k1 , k2 ∈ K und r ∈ R so dass k1 · g , k2 · h primitive Polynome in R[x] mit f = r · (k1 · g) · (k2 · h) sind. Beweis: Es sei ng der Hauptnenner aller Koeffizienten von g , nh die entsprechende Gr¨ oße von h . Dann gilt ng · nh · f = ng · nh · g · h = Inh(ng · g ) · Inh(nh · h) · pA(ng · g) · pA(nh · h) . ∈R[x]
∈R[x]
4.6 Polynome
137
Beidseitige Berechnung des Inhalts f¨ uhrt auf ng · nh · Inh(f ) Inh(ng · g) · Inh(nh · h) · Inh(pA(ng · g) · pA(nh · h)) . Nach dem zuvor bewiesenen Lemma von Gauß ist der letzte Faktor eine Einheit in R . Damit liest man ab, dass ng · nh ein Teiler von Inh(ng · g) · Inh(nh · h) in R ist. Damit folgt, dass k1 =
ng nh Inh(ng · g) · Inh(nh · h) , k2 = und r = Inh(ng · g) Inh(nh · h) ng · nh
die gew¨ unschten Eigenschaften haben. Ist c irgendein gemeinsamer Teiler von f1 und f2 , so liest man an der ersten Pseudodivision der PRS α3 f1 = q3 · f2 + β3 f3 ab, dass c ein Teiler von β3 f3 ist. Einsetzen in die weiteren Gleichungen zeigt, dass dieses c auch ein Vielfaches von fk teilt. Der soeben bewiesene Satz von Gauß liefert nun, dass dieses c zu einem Teiler von fk ¨ ahnlich ist. ¨ Zusammen mit (4.4) zeigt das, dass eine Polynom-Restfolge bis auf Ahnlichkeit eindeutig ist und dass ggT(f1 , f2 ) ∼ ggT(f2 , f3 ) ∼ · · · ∼ ggT(fk−1 , fk ) ∼ ggT(fk , 0) und damit
fk ∼ ggT(f1 , f2 ) .
(4.5)
¨ Also l¨asst sich der ggT zweier Polynome bis auf Ahnlichkeit durch die Konstruktion einer Polynom-Restfolge berechnen. ¨ Nachdem bis auf Ahnlichkeit“ gerade bei multivariaten Polynomen ” noch ein sehr vager Begriff ist, gilt es jetzt aus der Klasse der zu fk ¨ ahnlichen Polynome einen ggT herauszufiltern. Dazu startet man mit primitiven Polynomen. Sind f1 und f2 primitive Polynome, so liest man aus ggT(f1 , f2 ) · f1 = f1 und ggT(f1 , f2 ) · f2 = f2 mit Hilfe des Lemmas von Gauß ab, ¨ dass ggT(f1 , f2 ) ebenfalls primitiv ist. Wegen der Ahnlichkeit von fk zu diesem ggT ist pA(fk ) ein gr¨ oßter gemeinsamer Teiler in R[x] . Wegen pA(f1 ) ∼ f1 , pA(f2 ) ∼ f2 und der Primitivit¨ at von ggT(pA(f1 ), pA(f2 )) folgt ggT(pA(f1 ), pA(f2 )) pA(ggT(f1 , f2 )) . Sind die Polynome g1 und g2 nicht primitiv, so kommt bei der Berechnung von ggT(g1 , g2 ) zu pA(ggT(g1 , g2 )) noch ein nichttrivialer Inh(ggT(g1 , g2 )) hinzu. Es sei nun d(x) := ggT(g1 , g2 ) . Ist c ∈ R ein Teiler von Inh(d) , so ist c auch ein Teiler von d(x) ∈ R[x] und somit auch ein Teiler von g1 (x), g2 (x) ∈ R[x] . Wegen c ∈ R folgt dann aber sogar c| Inh(g1 (x)), Inh(g2 (x)) , also auch c| ggT(Inh(g1 (x)), Inh(g2 (x))) . Um einzusehen, dass sogar Inh(ggT(g1 , g2 )) ggT(Inh(g1 ), Inh(g2 )) ist, betrachtet man einen Teiler g ∈ R von Inh(g1 (x)) und Inh(g2 (x)) . Dieser teilt dann auch g1 (x) und g2 (x) und somit auch ggT(g1 , g2 ) . Wegen g ∈ R heißt das g| Inh(ggT(g1 , g2 )) .
138
4 Grundlegende algebraische Strukturen
Somit gilt im allgemeinen Fall ggT(g1 , g2 ) ggT(Inh(g1 ), Inh(g2 )) · ggT(pA(g1 ), pA(g2 )) . Die Polynome g f¨ ur = 1, 2 m¨ ussen also zun¨ achst zerlegt werden in g = Inh(g ) · pA(g ) , wobei zur Berechnung von Inh(g ) wiederum maximal deg g ggTs von (polynomialen) Koeffizienten berechnet werden m¨ ussen. Zur Berechnung des ggT in R0 [X] = R[x] ergibt sich der folgende rekursive Grundalgorithmus: PggTR0 [X] (g1 , g2 ) : (1) Bestimme Hauptvariable x uglich x (2) Berechne Inhalt und primitiven Anteil von g1 und g2 bez¨ c2 ← Inh(g2 ), f2 ← g2 /c2 c1 ← Inh(g1 ), f1 ← g1 /c1 (3) c ← PggTR (c1 , c2 ) (4) Konstruktion einer PRS f1 , f2 , . . . , fk (5) Berechne den primitiven Anteil von fk bez¨ uglich x g ← pA(fk ) (6) g ← c · g Im Punkt (5) wird der primitive Anteil des Polynoms fk berechnet. Es ist anzunehmen, dass pA(fk ) als Teiler von pA(f1 ) und pA(f2 ) h¨ aufig kleinere Koeffizienten als diese besitzt. W¨ahrend der Konstruktion der PRS f1 , . . . , fk wachsen andererseits die Koeffizienten oft so stark an, dass auch der Inhalt von fk ziemlich groß wird, seine Berechnung also sehr aufw¨ andig. Deshalb versucht man Teiler von Inh(fk ) herauszufinden und bereits vor der eigentlichen Inhaltsberechnung zu k¨ urzen. g := pA(fk ) ist ein ggT von f1 und f2 , LK(g ) ein Teiler von LK(f1 ) und LK(f2 ) , also auch von ggT(LK(f1 ), LK(f2 )) =: g¯1 . Wegen Inh(fk ) = LK(fk ) LK(g ) g ¯1 ¯2 := LK(f · fk ∈ R[x] . LK(pA(fk )) ist LK(fk ) · fk ∈ R[x] , also auch g k) Nun muss nur noch der hoffentlich kleinere Inhalt Inh(¯ g2 ) berechnet g ¯2 und herausgek¨ urzt werden. Es ist g = Inh(¯ . Ist deg f k = 0 , also g2 ) LK(fk ) = Inh(fk ) , so kann man g gleich 1 setzen, da 1 ∼ fk in R[x] ist. Im Punkt (1) ist es bei multivariaten Polynomen von Vorteil, die Hauptvariable x nicht willk¨ urlich zu w¨ ahlen, sondern die Termordnung den untersuchten Polynomen anzupassen. Dabei sind diejenigen Variablen h¨ oherwertig zu w¨ahlen, die in beiden Polynomen mit m¨ oglichst kleiner Differenz zwischen h¨ochster und niedrigster auftretender Potenz vorkommen. Kommt z.B. im Extremfall die Variable x in g1 nicht vor, so verwendet man sie als Hauptvariable und muss nur ggT(g1 , Inhx (g2 )) berechnen. Durch diese Ordnung wird die Anzahl der Teilungsschritte in den ersten Rekursionsebenen, bei denen die Koeffizienten aus Polynomringen mit vielen Variablen stammen und relativ viele Terme besitzen, so klein wie m¨ oglich gehalten.
4.6 Polynome
139
Die verschiedenen ggT-Algorithmen unterscheiden sich nur in der Art der PRS-Konstruktion, d.h. durch die αi und βi in jedem Teilungsschritt ur i = 3, . . . , k . αi fi−2 = qi fi−1 + βi fi f¨ Wie bereits gezeigt, ist αi := LK(fi−1 )(deg(fi−2 )−deg(fi−1 )+1) immer m¨ oglich, die von der angegebenen Prozedur PPDiv verwendete Potenz von LK(fi−1 ) ist aber meist kleiner. Maple bietet beide Varianten unter den Namen prem (pseudo-remainder of polynomials mit obigem αi ) und sprem (sparse pseudo-remainder of polynomials mit αi wie bei PPDiv) an. Die beiden extremsten Strategien zur Wahl der βi werden beim euklidischen PRS-Algorithmus und beim primitiven PRS-Algorithmus eingesetzt. Beim euklidischen PRS-Algorithmus ist βi = 1 f¨ ur alle i = 3, . . . , k , d.h. die Koeffizienten der Pseudoreste werden in keinem Schritt gek¨ urzt und schwellen so stark an. Dies hat zur Folge, dass die einzelnen Divisionsschritte mit immer gr¨ oßeren Koeffizienten durchgef¨ uhrt werden m¨ ussen und daher auch immer teurer werden. Beim primitiven PRS-Algorithmus ist βi = Inh(PRest(αi fi−2 , fi−1 )) . Die Koeffizienten der fi sind in R[x] minimal und die Pseudodivision ist so einfach wie in R[x] m¨ oglich, da nur die primitiven Anteile der Vorg¨ angerpolynome weiterverwendet werden. Daf¨ ur nimmt man in jedem Schritt langwierige ggT-Berechnung von (polynomialen) Koeffizienten in Kauf. Basis-ggT procedure PggTR0 [X] (g1 , g2 ) Geeignete Termordnung w¨ ahlen Hauptvariable x w¨ ahlen c1 ← Inh(g1 ); f1 ← g1 /c1 c2 ← Inh(g2 ); f2 ← g2 /c2 c ← PggTR (c1 , c2 ) f3 , . . . , fk ← PRS(f1 , f2 ) if degx fk = 0 then g ← 1 else g¯1 ← PggTR (LK(f1 ), LK(f2 )) g¯2 ← (¯ g1 fk )/ LK(fk ); g ← pA(¯ g2 ) end if g ← c · g Return(g) end
# Eingabe: # # Ausgabe:
g1 , g2 ∈ R0 [x1 , . . . , xn , x] = R0 [X] = R[x] g = ggT(g1 , g2 ) ∈ R[x]
4.6.6.3 Beispiel: (vgl. 4.1.1.1) Es seien f1 (x) = 3 x6 + 5 x4 − 4 x2 − 9 x + 4 und f2 (x) = 2 x5 − x4 − 1 ∈ Z[x] .
140
4 Grundlegende algebraische Strukturen
Die PRS f3 (x) = 23 x4 − 16 x2 − 30 x + 19 f4 (x) = 736 x3 + 1012 x2 − 1564 x − 92 f5 (x) = 41363568 x2 − 51097168 x + 8150832 f6 (x) = 1136503306119086080 x − 805132723304595456 f7 (x) = −9414343951556634943772866137828716489736192 ist mit dem euklidischen PRS-Algorithmus berechnet worden. Diese PRS ist normal. Die Koeffizienten der entsprechenden primitiven PRS sind wesentlich kleiner: f3 = 23 x4 − 16 x2 − 30 x + 19 f4 = 8 x3 + 11 x2 − 17 x − 1 f5 = 4887 x2 − 6037 x + 963 f6 = 117145 x − 82989 f7 = −1 4.6.6.4 Beispiel: Es seien f1 = 6 x9 − 27 x7 + 10 x6 + 2 x5 − 15 x4 + 9 x3 − 9 x2 − 2 x + 7 f2 = 6 x8 − 12 x7 − 3 x6 + 10 x5 − 6 x4 − x2 − x + 2 Der euklidische PRS-Algorithmus liefert die nicht normale PRS f3 = 216 x6 − 432 x5 − 108 x4 + 360 x3 − 216 x2 − 72 x + 108 f4 = 20155392 x3 − 40310784 x2 − 10077696 x + 20155392 f5 = 11882217367861096949190085312512 x2 − − 5941108683930548474595042656256 , der primitive PRS-Algorithmus f3 = 6 x6 − 12 x5 − 3 x4 + 10 x3 − 6 x2 − 2 x + 3 f4 = 2 x3 − 4 x2 − x + 2 f5 = 2 x2 − 1 . 4.6.6.5 Beispiel: Dieses Beispiel demonstriert den Aufwand einer ggT-Berechnung f¨ ur multivariate Polynome. Es wird der ggT zweier Polynome aus Z[x, y, z] mit Hilfe des vorgestellten Grundalgorithmus berechnet. Um den Ablauf transparent zu machen, wurden die Variablenbezeichnungen jeweils mit der Rekursionsebene indiziert.
4.6 Polynome
141
Die Polynom-Restfolgen sind mit dem Subresultanten PRS-Algorithmus konstruiert, der noch besprochen wird. Die Eingangspolynome seien g1 = −z 6 x3 y + z 7 x3 + y 5 z 4 − z 5 y 4 + x3 y 2 z 2 − x3 z 3 y − y 6 + y 5 z+ + z 4 xy − z 5 x − y 2 x + xyz g2 = 2z 4 y 3 x2 − 2z 5 x2 y 2 + z 5 x2 y − z 6 x2 + z 5 y 2 − z 6 y + 2y 3 x2 − − 2x2 y 2 z + x2 yz − x2 z 2 + y 2 z − z 2 y Aufruf → PggTZ[x,y,z] (g1 , g2 ) (1) Hauptvariable: x (1)
(1)
(2) c1 = Inh(g1 ) Es m¨ ussen dazu insgesamt 3 ggT-Berechnungen in durchgef¨ uhrt werden. Die Koeffizienten von g1 (x) sind
Z[z, y]
g13 = −z 6 y + z 7 + y 2 z 2 − z 3 y, g12 = 0, g11 = z 4 y − z 5 − y 2 + yz g10 = y 5 z 4 − z 5 y 4 − y 6 + y 5 z. Der erste dieser 3 ggTs ist trivial: ggT(g13 , g12 ) = g13 . Aufruf → PggTZ[y,z] (g13 , g11 ) (2.1) Hauptvariable : y (2)
(2.2) c1 = Inh(g13 ) . Die Koeffizienten von g13 sind g132 = z 2 , g131 = −z 6 − z 3 , g130 = z 7 Aufruf → PggTZ[z] (g131 , g132 ) (2.2.1) Hauptvariable: z (3)
(3)
(2.2.2) c1 = Inh(g131 ) = 1, c2 = Inh(g132 ) = 1 (3) (3) f1 = −z 6 − z 3 , f2 = z 2 (3) (2.2.3) c = 1 (3)
(2.3.4) Konstruktion einer PRS von f1 (3)
f1
(3)
= −z 6 − z 3 , f2
(3)
und f2 (3)
= z 2 , f3
=0
(2.3.5) g = z 2 (2.3.6) g (3) = z 2 Ausgang ← PggTZ[z] (g131 , g132 ) : ggT(g131 , g132 ) = z 2 (3)
142
4 Grundlegende algebraische Strukturen
Aufruf → PggTZ[z] (g130 , z 2 ) (2.2.1) Hauptvariable: z (3)
(3)
(2.2.2) c1 = Inh(g1 ) = 1, c2 = Inh(g2 ) = 1 (3) (3) f1 = z 7 , f2 = z 2 (2.2.3) c(3) = 1 (3)
(2.3.4) Konstruktion einer PRS von f1 (3)
(3)
= z 7 , f2
f1
(3)
und f2 :
(3)
= z 2 , f3
=0
(2.3.5) g = z 2 (2.3.6) g = z 2 Ausgang ← PggTZ[z] (g130 , z 2 ) : ggT(g130 , z 2 ) = z 2 (3)
(2)
(2)
c1 = Inh(g13 ) = z 2 und f1 = y 2 + (−z 4 − z)y + z 5 Analog Inhalt und primitiver Anteil von g11 : (2) (2) c2 = Inh(g11 ) = 1 und f2 = −y 2 + yz + z 4 y − z 5 (2.3) c(2) = 1 (2)
und f2 :
(2)
= z 4 y − z 5 − y 2 + yz ,
(2.4) Konstruktion einer PRS von f1 (2)
= −z 4 y + z 5 + y 2 − yz , f2
(2)
=0
f1 f3
(2)
(2.5) g = z 4 y − z 5 − y 2 + yz (2.6) g (2) = z 4 y − z 5 − y 2 + yz Ausgang ← PggTZ[y,z] (g13 , g11 ) : ggT(g13 , g11 ) = z 4 y − z 5 − y 2 + yz Aufruf → PggTZ[y,z] (g10 , z 4 y − z 5 − y 2 + yz) (2.1) Hauptvariable: y (2.2) Wiederum wird durch ggT-Berechnungen in Z[z] der Inhalt von der beiden Eingangspolynome aus Z[z, y] bestimmt: (2) (2) (2) c1 = Inh(g1 ) = 1, f1 = y 5 z 4 − z 5 y 4 − y 6 + y 5 z (2)
(2)
(2)
(2)
c2 = Inh(g2 ) = 1, f2 (2.3) c(2) = 1
= z 4 y − z 5 − y 2 + yz (2)
(2.4) Konstruktion einer PRS von f1 (2)
= y5 z4 − z5 y4 − y6 + y5 z ,
(2)
= z 4 y − z 5 − y 2 + yz , f3
f1 f2 (2.5) g¯(2) = 1 , g
(2)
und f2 :
(2)
(2)
= −y 2 + z 4 y + zy − z 5
=0
4.6 Polynome
143
Ausgang ← PggTZ[y,z] (g10 , z 4 y − z 5 − y 2 + yz) : ggT(g10 , z 4 y − z 5 − y 2 + yz) = −y 2 + z 4 y + zy − z 5 Damit ist (1)
(1)
c1 = −y 2 + z 4 y + zy − z 5 , f1 (1)
Analog wird g2
in Inhalt und primitiven Anteil zerlegt:
(1)
(1)
c2 = z 4 y − z 5 + y − z , f2 (1)
= −x3 z 2 + y 4 + x
= 2x2 y 2 + x2 z + yz
(1)
(3) c(1) = ggT(c1 , c2 ) : (1)
(1)
Aufruf → PggTZ[y,z] (c1 , c2 ) (3.1) Hauptvariable: y (2)
(1)
(2)
(3.2) c1 = Inh(c1 ) = 1 , f1 = z 4 y − z 5 − y 2 + yz (2) (1) (2) c2 = Inh(c2 ) = z 4 + 1, f2 = y − z (3.3) c(2) = 1 (2)
(3.4) Konstruktion einer PRS von f1 (2)
f1
(2)
und f2 :
(2)
= z 4 y − z 5 − y 2 + yz , f2
(2)
= y − z , f3
=0
(3.5) g = y − z (3.6) g (2) = y − z (2)
(1)
(1)
(1)
(1)
Ausgang ← PggTZ[y,z] (c1 , c2 ) : ggT(c1 , c2 ) = y − z c(1) = y − z
(1)
(4) Konstruktion einer PRS von f1
(1)
und f2
in
Z[z, y][x] :
(1)
= x3 z 2 − y 4 − x
(1)
= 2x2 y 2 + x2 z + yz 2 = −y 4 2y 2 + z − x z 3 y + 2y 2 + z 2y 2 + z = y 8y 13 + 12y 11 z + 6y 9 z 2 + y 7 z 3 + z 7 y 2 + 4z 4 y 3 + +2z 5 y + 4y 4 z + 4y 2 z 2 + z 3
f1 f2
(1)
f3
(1)
f4
(1)
f5
=0 (1)
(5) K¨ urzen: Es ist degx f4 (1) (3)
= 0 und damit g
(1)
=1
(6) g (1) = c(1) · g =y − z Ausgang ← PggTZ[x,y,z] (g1 , g2 ) : ggT(g1 , g2 ) = y − z
144
4 Grundlegende algebraische Strukturen
4.6.7 Der erweiterte euklidische Algorithmus Ist R[x] ein Hauptidealring, so gibt es nach dem Satz von B´ezoutzu Polynomen g1 , . . . , gm mit ggT(g1 , . . . , gm ) = d ∈ R[x] Elemente r1 , . . . , rm ∈ R[x] mit r1 g1 + . . . + rm gm = d . Ist R[x] zwar nullteilerfrei, aber kein Hauptidealring, so muss man zur Berechnung der ri in den Quotientenk¨orper K = Q(R) von R ausweichen. Den u ¨blichen erweiterten euklidischen Algorithmus (s. Abschnitt u ¨ber Ideale) wandelt man f¨ ur diesen Fall so ab, dass er aus der PRS f1 , . . . , fk ∈ R[x] die ri berechnet: Den Divisionsschritt aus der Definition einer PRS schreibt man dazu um in qi /αi βi /αi fi−1 fi−2 = fi−1 1 0 fi was gleichbedeutend ist mit fi−2 fi−1 0 1 = . fi−1 fi αi /βi −qi /βi Nun seien f¨ ur i = 3, . . . , k Γi :=
0 1 αi /βi −qi /βi
.
Dann folgt durch Induktion f1 f1 ri−1 ti−1 fi−1 . = Γi Γi−1 · · · Γ3 =: f2 fi f2 ri ti Durch das Produkt Γi Γi−1 · · · Γ3 sind Polynome ri , ti ∈ K[x] mit ri f1 + ti f2 = fi gegeben. F¨ ur 3 ≤ i ≤ k gilt mit ni := deg fi , dass deg ri = n2 − ni−1 und deg ti = n1 − ni−1 , denn deg r3 = deg(α3 /β3 ) = 0 und deg t3 = deg(q3 /β3 ) = n1 − n2 und man liest aus obiger Matrixschreibweise ab deg ri+1 = max(deg ri−1 , deg ri + deg qi+1 ) = = max(n2 − ni−2 , n2 − ni−1 + ni−1 − ni ) = n2 − ni da (ni < ni−2 ) deg ti+1 = max(deg ti−1 , deg ti + deg qi+1 ) = max(n1 − ni−2 , n1 − ni ) = = n 1 − ni . Die ri und ti sind Polynome aus K[x] . Also existieren f¨ ur i = 3, . . . , k Elemente di ∈ R \ {0} mit di ri ∈ R[x] und di ti ∈ R[x] .
4.6 Polynome
145
4.6.7.1 Definition: Es sei f1 , . . . fk eine PRS in R[x] mit deg fi = ni . Zwei Polynomfolgen a1 = 1, a2 = 0, a3 , . . . , ak und b1 = 0, b2 = 1, b3 , . . . , bk aus R[x] , heißen erste bzw. zweite Kosequenz zu f1 , . . . , fk , wenn f¨ ur alle i = 3, . . . , k gilt (1) deg ai ≤ n2 − ni−1 und deg bi ≤ n1 − ni−1 , ur ein di ∈ R \ {0} . (2) ai f1 + bi f2 = di fi f¨ Bemerkung: Da in der Gleichung ri f1 + ti f2 = fi die rechte Seite ein Vielfaches von d = ggT(f1 , f2 ) ist und wegen deg(fi ) < deg(f1 ), deg(f2 ) auch deg(fi ) < deg(kgV(f1 , f2 )) gilt, folgt wie bei (2.6), dass ri und ti sogar eindeutig sind, wenn deg ri < n2 − nk und deg ti < n1 − nk sind. Wegen deg ri = n2 − ni−1 < n2 − nk und deg ti = n1 − ni−1 < n1 − nk ist ¨ dies der Fall. Da die PRS bis auf Ahnlichkeit festgelegt ist, sind also auch ¨ die beiden Kosequenzen bis auf Ahnlichkeit eindeutig. 4.6.8 Subresultanten 4.6.8.1 Definition: Es seien f (x) = fm xm + · · · + f0 , g(x) = gn xn + · · · + g0 zwei Polynome aus R[x] mit fm , gn = 0 . Weiterhin sei 0 ≤ j < min(n, m) . Die j-te Subresultante von f und g ist ⎛f f ⎞ ··· ··· f f xn−j−1 f m
⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ sresj (f, g) := det ⎜ gn ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝
m−1
..
1
..
.
0
..
.
fm
fm−1 .. .
gn−1 · · · gn gn−1 .. .
··· ··· .. . gn
··· .. . fm g0 ···
. ···
..
.
f1
f0 .. .
fm−1 · · · fj+1 g0 ..
gn−1 .. .
···
. ···
gn
· · · gj+1
g0 . ..
⎟ ⎟ ⎟ ⎟ .. ⎟ ⎟ . ⎟ f ⎟ xm−j−1 g ⎟ ⎟ xm−j−2 g ⎟ ⎟ . ⎟ .. ⎟ xj+1 g ⎟ ⎟ . ⎠ . .. .
xj+1 f
. g
Dies ist die Determinante einer (n + m − 2j) × (n + m − 2j)-Matrix u ¨ber R[x] . Entwickelt man diese nach der letzten Spalte, so ergibt sich sresj (f, g) =
n−j−1 i=0
ui
·x f + i
m−j−1
vi · xi g =: uj f + vj g
(4.6)
i=0
mit deg uj ≤ n − j − 1 und deg vj ≤ m − j − 1 . alt, wenn Dabei ist ui die Determinante der Untermatrix, die man erh¨ man die letzte Spalte und die n − j − i-te Zeile streicht, multipliziert mit (−1)m−j−i ; vi ist die Determinante der Untermatrix, die entsteht, wenn man die m − j − i-te Zeile des Blocks mit Koeffizienten von g und die letzte Spalte streicht und dann mit (−1)i multipliziert.
146
4 Grundlegende algebraische Strukturen
sresj (f, g) =
n−j−1
ui xi
i=0
=
n+m−j−1 k=0
m
k
i
fi x
+
m−j−1
i=0
vi xi
n
i=0
gi x
=
i=0
ui fk−i + vi gk−i
i
xk ,
i=0
erh¨alt man, wenn man in (4.6) die Polynome f und g ausschreibt und dann multipliziert. Nun sei ck der Koeffizient von xk in sresj (f, g) . Aufgrund der Definition von ui und vi als Unterdeterminanten l¨ asst sich auch jedes ck als Determinante darstellen: ⎛f f ⎞ ··· ··· ··· f f f m
m−1
1
.. .. ⎜ . . ⎜ ⎜ fm fm−1 ⎜ ⎜ .. ⎜ . ⎜ ⎜ ⎜ ck = det ⎜ ⎜ gn gn−1 · · · · · · ⎜ gn gn−1 · · · ⎜ ⎜ .. .. ⎜ . . ⎜ ⎜ gn ⎜ ⎝
0
..
··· ··· .. . fm fm−1 ··· g0 ··· ···
. ···
k−n+j+1
..
f1
f0 .. .
· · · · · · fj+1 g0 ..
gn−1 .. .
··· gn
. ··· ···
⎟ ⎟ fk−j−1 ⎟ ⎟ ⎟ .. ⎟ . ⎟ ⎟ fk ⎟ gk−m+j+1 ⎟ ⎟ gk−m+j+2 ⎟ ⎟ .. ⎟ ⎟ . ⎟ gk−j−1 ⎟ ⎟ .. ⎠ .. .
.
g0 .. .
gn−1 · · · gj+1
. gk
Dabei seien fµ = 0 f¨ ur alle µ > m und µ < 0 und analog gν = 0 f¨ ur alle ν < 0 und ν > n . Ist k > j , so ist die letzte Spalte dieser Matrix identisch mit der n + m − j − k-ten Spalte und deshalb ck = 0 . Dies zeigt degx (sresj (f, g)) ≤ j .
(4.7)
Die ersten n + m − 2j − 1 Spalten der Matrizen, die c0 , . . . , cn+m−j−1 zugrundeliegen, sind jeweils gleich. F¨ ugt man nun zu diesen Spalten f¨ ur k = j, . . . , 0 jeweils die letzte Spalte von ck hinzu, so ergibt sich die folgende (m + n − 2j) × (m + n − j)-Matrix. ⎛
fm fm−1 · · · ⎜ fm fm−1 ⎜ .. ⎜ . ⎜ ⎜ ⎜ ⎜ g g ··· Mj (f, g) := ⎜ ⎜ n n−1 ⎜ gn gn−1 ⎜ .. ⎜ . ⎜ ⎜ ⎝
··· ··· .. .
··· ···
f1 ···
fm fm−1 · · · · · · g1 g0 ··· ··· g1 .. . .. .. . . gn gn−1
f0 f1 f0 .. .. . . ··· g0 .. . ···
⎞
⎟ ⎟ ⎟ ⎟ ⎟ · · · · · · f0 ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ .. ⎟ . ⎟ ⎟ .. .. ⎠ . . · · · g1 g0
4.6 Polynome
147
Es werden n − j Zeilen von Mj (f, g) von den Koeffizienten von f und m − j Zeilen von den Koeffizienten von g besetzt. Damit l¨asst sich sresj (f, g) auch darstellen als (j)
(j−1)
sresj (f, g) = |Mj |xj + |Mj
(0)
|xj−1 + · · · + |Mj | ,
(k)
wobei Mj diejenige Untermatrix von Mj (f, g) ist, die aus den ersten n + m − 2j − 1 und der (n + m − j − k)-ten Spalte besteht. Mj (f, g) ist eine Untermatrix von der M (f, g) , die durch Streichen der letzten j Zeilen des f -Blocks, der letzten j Zeilen des g-Blocks sowie der letzten j Spalten entsteht. Insbesondere ist damit M0 (f, g) gleich der Sylvestermatrix M (f, g) und sres0 (f, g) gleich der Resultanten res(f, g) . 4.6.9 Subresultanten-Ketten Es seien f1 , f2 ∈ R[x] und deg f1 ≥ deg f2 . Dann wird die Folge der sresj (f1 , f2 ) mit 0 ≤ j < deg f2 als Subresultanten-Kette von f1 und f2 bezeichnet. Aus (4.6) folgt, dass sich die Subresultanten-Kette zweier Polynome f1 , f2 ∈ R[x] in dem von f1 und f2 in R[x] erzeugten Ideal befindet. Nun sei f1 , . . . , fk eine PRS mit ni := deg fi f¨ ur i = 1, . . . , k . Wie bereits gezeigt, existieren dazu Kosequenzen a1 , . . . , ak und b1 , . . . , bk aus R[x] und di ∈ R , so dass ai f1 + bi f2 = di fi . Die Folge f1 , f2 , d3 f3 , . . . , dk fk liegt also ebenfalls in dem von f1 und f2 in R[x] erzeugten Ideal. Setzt man in Gleichung (4.6) j = ni−1 − 1 , so werden durch die Sub resultante Polynome u und v mit deg u − ni−1 , ≤ n n −1 n −1 n −1 2 i−1 i−1 i−1 deg vni−1 −1 ≤ n1 − ni−1 gegeben, so dass uni−1 −1 f1 + vni−1 −1 f2 = sresni−1 −1 (f1 , f2 ) . Nach (4.7) ist deg sresni−1 −1 (f1 , f2 ) ≤ ni−1 − 1 . Im Hauptsatz u ¨ber Subresultanten wird gezeigt werden, dass sres (f , f ) ∼ f , also n −1 1 2 i i−1 deg sresni−1 −1 (f1 , f2 ) = ni ist. Also erf¨ ullen uni−1 −1 und vni−1 −1 die Gradbedingungen f¨ ur die Kosequenzen ai und bi und sind deshalb gem¨ aß der Bemerkung nach 4.6.7.1 ¨ ahnlich zu diesen uni−1 −1 ∼ ai , vni−1 −1 ∼ bi ¨ Die Ahnlichkeitskoeffizienten von sresni−1 −1 (f1 , f2 ) und fi werden im Hauptsatz der Subresultanten explizit angegeben. Dazu werden zun¨ achst zwei Hilfss¨atze bewiesen, die die Beziehung zwischen Subresultanten und den Restpolynomen bei Polynomdivision darlegen.
148
4 Grundlegende algebraische Strukturen
4.6.9.1 Hilfssatz:
Es seien f, g, q und r Polynome aus R[x] ,
f = fm xm + · · · + f0 ,
g = gn xn + · · · + g0 ,
r = r x + · · · + r0 und q = qm−n xm−n + · · · + q0 , mit fm , gn , r = 0 und 0 ≤ < n ≤ m , so dass f = qg + r . Dann gilt: sresj (f, g) = (−1)(m−j)(n−j) gnm− sresj (g, r), 0 ≤ j < (4.8) sres (f, g) = (−1)(m−)(n−) gnm− rn−−1 r ur < j < n − 1 sresj (f, g) = 0 f¨ sresn−1 (f, g) = (−1)m−n+1 gnm−n+1 r Beweis: Es ist r = f −qg =
m
(4.9) (4.10) (4.11)
n m−n m k k k = fk − fk x − qk x gk x qi gk−i xk . k
k=0
k=0
k=0
i=0
k=0
ur i > n , qi = 0 f¨ ur Damit gilt f¨ ur jedes rk mit k = 0, . . . , m (gi = 0 f¨ i > m − n) , k rk = fk − qi gk−i . i=0
Betrachtet man also die erste Zeile der zu sresj (f, g) geh¨ origen Matrix, so kann diese durch Subtraktion des qm−n−i -fachen der Zeilen n − j + 1 + i f¨ ur i = 0, . . . , m − n so umgeformt werden, dass fk durch rk ersetzt wird. Aus xn−j−1 f in der letzten Spalte wird xn−j−1 f −
m−n
qm−n−i xm−j−1−i g = xn−j−1 (f − g
i=0
m−n i=0
qm−n−i xm−n−i )
=q
= xn−j−1 r . Analog ist dies f¨ ur die Zeilen k = 2, . . . , n − j , durch Multiplikation vom qm−n−i -fachen der Zeilen n − j + k + i f¨ ur i = 0, . . . , m − n zu erreichen. Also kann die Matrix in folgende Form gebracht werden: ⎛ ⎞ n−j−1 ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ gn ⎜ ⎜ ⎜ ⎜ ⎜ ⎝
r
gn−1 · · · gn gn−1 .. .
r−1 · · · r r−1 .. . ··· ···
··· ···
··· ··· .. . r g0 ···
r0 ···
r0 ..
. r−1 · · · rj+1 g0 ..
..
. ..
. gn
gn−1
. · · · · · · gj+1
x r xn−j−2 r ⎟ ⎟ .. ⎟ . ⎟ ⎟ r ⎟ xm−j−1 g ⎟ m−j−2 x g⎟ ⎟ ⎟ .. ⎟ . ⎟ . ⎠ . . g
4.6 Polynome
149
Die ersten m − Spalten des r-Blocks sind mit 0 besetzt, da rk = 0 f¨ ur alle k > . Diese elementaren Zeilenumformungen ver¨ andern den Wert der Determinante nicht. Vertauscht man noch die m − j Zeilen des g-Blocks mit den n − j Zeilen des r-Blocks so ergibt sich sresj (f, g) = (−1)(m−j)(n−j) · det(Mj ) mit ⎛ ⎞ gn gn−1 · · · gn gn−1 ⎜ ⎜ .. ⎜ . ⎜
Mj
⎜ ⎜ =⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝
r
··· ···
··· ···
g0 ···
g0 ..
..
.
r−1 r
. ..
xm−j−1 g xm−j−2 g ⎟ ⎟ .. ⎟ . ⎟ . ⎟ .. ⎟
. gn gn−1 · · · · · · gj+1 g ··· ··· r0 xn−j−1 r r−1 · · · · · · r0 xn−j−2 r .. .. .. . . . r r−1 · · · rj+1 r
⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎠
Das gn in der letzten g-Zeile steht in der n − j + 1-ten Spalte von rechts, das r der ersten r-Zeile in der n + − 2j-ten Spalte, d.h. das r steht genau dann diagonal unter dem gn , wenn = j ist. Fall 1: n − 1 > j > Dann besteht der r-Block aus mindestens 2 Zeilen, hat also mindestens eine 0 in der Diagonalen: ⎛g g n n−1 · · · · · · .. ⎜ . ⎜ ⎜ gn gn−1 ⎜ Mj = ⎜ 0 ⎜ ⎜ ⎜ ⎝
xm−j−1 g ⎞ .. .. ⎟ . . ⎟ ⎟ · · · gj+1 g ⎟ n−j−1 ⎟ r⎟ r · · · x .. ⎟ .. .. ⎟ . . . ⎠ 0 xr r g0
Man liest ab sresj (f, g) = 0 . Das ist (4.10). Fall 2: j = Dann ist die Matrix M eine obere Dreiecksmatrix: ⎛
⎞ gn · · · · · · g0 xm−−1 g . .. .. ⎜ ⎟ .. . . ⎜ ⎟ ⎜ ⎟ gn · · · · · · g ⎜ ⎟ ⎜ ⎟⇒ r · · · xn−−1 r ⎟ ⎜ ⎜ ⎟ .. .. ⎝ ⎠ . . r sres (f, g) = (−1)(m−)(n−) gnm− rn−−1 r Dies ist gerade (4.9). Mit = n − 1 folgt der Spezialfall (4.11). Die gleiche Matrixgestalt erh¨ alt man bereits f¨ ur j = n − 1 unabh¨ angig von , so dass auch hier (4.11) folgt.
150
4 Grundlegende algebraische Strukturen
Fall 3: j <
Dann ist (m−j)(n−j)
sresj (f, g) = (−1)
D X 0 S
det
= (−1)(m−j)(n−j) · det D · det S wobei D eine obere Dreiecksmatrix mit m − Zeilen und Spalten und gn in der Hauptdiagonalen ist. Dabei ist S die (n + − 2j) × (n + − 2j)-Matrix ⎞ ⎛g ··· ··· ··· g x−j−1 g n
⎜ ⎜ ⎜ ⎜ r S = ⎜ ⎜ ⎜ ⎜ ⎝
0
..
..
.
.. . g
.
⎟ ⎟
⎟ gn · · · · · · gj+1 ⎟ · · · · · · r0 xn−j−1 r ⎟ . ⎟ . .. .. ⎟ .. . . ⎟ ⎠ .. .. .. . . . r · · · rj+1 r
Daraus folgt det S = sresj (g, r) und damit (4.8):
sresj (f, g) = (−1)(m−j)(n−j) gnm− sresj (g, r)
4.6.9.2 Hilfssatz: Es sei f1 , . . . , fk eine Polynom-Restfolge in R[x] mit αi , βi ∈ R \ {0} und qi ∈ R[x] , so dass f¨ ur i = 3, .., k gilt αi fi−2 = qi fi−1 + βi fi . ur i = 1, . . . , k − 1 . Es seien ni = deg fi und δi := ni − ni+1 f¨ Dann gilt f¨ ur i = 3, . . . , k : n
αi i−1
−j
sresj (fi−2 , fi−1 ) =(−1)(ni−2 −j)(ni−1 −j) βi i−1 n
δi−2 +δi−1
LK(fi−1 )
−j
·
sresj (fi−1 , fi ),
f¨ ur 0 ≤ j < ni δ αi i−1
(δi−2 +δi−1 )δi−1
sresni (fi−2 , fi−1 ) =(−1)
δ
LK(fi i−1
−1
(4.12)
δ βi i−1 ·
) LK(fi−1 )δi−2 +δi−1 fi(4.13)
f¨ ur ni < j < ni−1 − 1 (4.14)
sresj (fi−2 , fi−1 ) =0 δi−2 +1
αi sresni−1 −1 (fi−2 , fi−1 ) =(−1)
βi LK(fi−1 )δi−2 +1 fi
(4.15)
Beweis: Aus der Definition der Subresultanten als Determinante folgt mit m := deg f und n := deg g , dass sresj (af, bg) = an−j bm−j sresj (f, g) . Setzt man nun in den Formeln (4.8)–(4.11) f = αi fi−2 , g = fi−1 und r = βi fi ein, so ist LK(r) = βi LK(fi ) und sresj (αi fi−2 , fi−1 ) = n −j αi i−1 sresj (fi−2 , fi−1 ) .
4.6 Polynome
151
Damit ergeben sich die folgenden F¨ alle Fall 1: j = ni−1 − 1 mit (4.11) liefert αi sresni−1 −1 (fi−2 , fi−1 ) = (−1)ni−2 −ni−1 +1 LK(fi−1 )ni−2 −ni−1 +1 βi fi Mit ni−2 − ni−1 = δi−2 folgt (4.15). Fall 2: ni < j < ni−1 − 1 mit (4.10) liefert (4.14) n
sresj (fi−2 , fi−1 ) = αi i−1
−j
sresj (fi−2 , fi−1 ) = 0
Fall 3: j = ni mit (4.9) liefert n
αi i−1
−ni
sresni (fi−2 , fi−1 ) =(−1)(ni−2 −ni )(ni−1 −ni ) βi i−1 n
ni−1 −ni −1
· LK(fi )
−ni
fi
ni−2 −ni
LK(fi−1 )
Mit δi−1 = ni−1 − ni und ni−2 − ni = δi−2 + δi−1 folgt (4.13). Fall 4: 0 ≤ j < ni mit (4.8) liefert n
αi i−1
−j
sresj (fi−2 , fi−1 ) = (−1)(ni−2 −j)(ni−1 −j) LK(fi−1 )ni−2 −ni n
· βi i−1
−j
sresj (fi−1 , fi )
Mit ni−2 − ni = δi−2 + δi−1 ist das (4.12).
4.6.9.3 Satz: (Hauptsatz u ¨ber Subresultanten) Es sei f1 , . . . , fk eine PRS in R[x] . Dann gilt f¨ ur i = 3, . . . , k : f¨ ur 0 ≤ j < nk
sresj (f1 , f2 ) = 0 sresni (f1 , f2 ) ·
i
<
n −n α −1 i
=
=3
i
n −n β −1 i
(4.16)
=
δ−2 +δ−1
LK(f−1 )
=3
· (−1)τi LK(fi )δi−1 −1 fi
sresni−1 −1 (f1 , f2 )
i
<
n −n +1 α −1 i−1
=3
=
(4.17)
f¨ ur ni < j < ni−1 − 1, (4.18)
sresj (f1 , f2 ) = 0
i
n −n +1 β −1 i−1
=
δ−2 +δ−1
LK(f−1 )
=3
· (−1)σi LK(fi−1 )1−δi−1 fi
(4.19)
i wobei gelte τi = =3 (n−2 − ni )(n−1 − ni ) und i σi = =3 (n−2 − ni−1 + 1)(n−1 − ni−1 + 1) . ur alle j < ni−1 : Beweis: Aus (4.12) folgt durch Induktion nach i f¨ n2 −j
sresj (f1 , f2 ) = (−1)(n1 −j)(n2 −j) =
i−1 9
β3 α3
(−1)(n−2 −j)(n−1 −j)
=3
LK(f2 )δ1 +δ2 sresj (f2 , f3 ) = · · · =
β α
n−1 −j
(4.20)
: LK(f−1 )δ−2 +δ−1 sresj (fi−2 , fi−1 )
152
4 Grundlegende algebraische Strukturen
Dies ergibt zusammen mit (4.13), (4.14) und (4.15) f¨ ur sresj (fi−2 , fi−1 ) die Behauptungen (4.17), (4.18) und (4.19), wobei ni ≤ j < ni−1 . ur i = k + 1 Bei (4.16) ist nk > 0 vorausgesetzt. Dann gilt mit (4.20) f¨ sresj (f1 , f2 ) ∼ sresj (fk−1 , fk ) . ur α ∈ R, q ∈ R[x] . Wie im Beweis des Es ist αfk−1 − qfk = 0 f¨ ersten Hilfssatzes kann f¨ ur alle j < nk die zu sresj (fk−1 , fk ) geh¨ orige Matrix durch elementare Zeilenumformungen so ver¨ andert werden, dass in den ersten nk − j Zeilen ausschließlich 0 steht. Damit ist die Determinante dieser Matrix gleich 0 und es gilt sresj (f1 , f2 ) = 0 f¨ ur 0 ≤ j < nk . 4.6.9.4 Beispiel: Es wird die Subresultanten-Kette der Polynome aus 4.6.6.4 angegeben. Dort waren n1 = 9 , n2 = 8 und f1 = 6 x9 − 27 x7 + 10 x6 + 2 x5 − 15 x4 + 9 x3 − 9 x2 − 2 x + 7 , f2 = 6 x8 − 12 x7 − 3 x6 + 10 x5 − 6 x4 − x2 − x + 2 ,
⎛6
Daraus war berechnet worden n3 = 6 , n4 = 3 , n5 = 2 und k = 5 . j = 0 : Da bereits aus 4.6.6.4 deg(ggT(f1 , f2 )) = n5 = 2 bekannt ist, weiß man mit (4.16) sres0 (f1 , f2 ) = 0 . Hat man dieses Wissen nicht, so muss man die Determinante der folgenden Matrix berechnen. ⎞
0 −27 10 2 −15 9 −9 −2 7 0 6 0 −27 10 2 −15 9 −9 −2 ⎜0 0 6 0 −27 10 2 −15 9 −9 ⎜0 0 0 6 0 −27 10 2 −15 9 ⎜0 0 0 0 6 0 −27 10 2 −15 ⎜0 0 0 0 0 6 0 −27 10 2 ⎜ 0 0 0 0 6 0 −27 10 ⎜0 0 ⎜0 0 0 0 0 0 0 6 0 −27 ⎜ 6 −12 −3 10 −6 0 −1 −1 2 ⎜ 0 6 −12 −3 10 −6 0 −1 −1 02 ⎜0 0 6 −12 −3 10 −6 0 −1 −1 ⎜ 0 6 −12 −3 10 −6 0 −1 ⎜0 0 ⎜0 0 0 0 6 −12 −3 10 −6 0 ⎜0 0 0 0 0 6 −12 −3 10 −6 ⎝0 0 0 0 0 0 6 −12 −3 10 0 0 0 0 0 0 0 6 −12 −3 0 0 0 0 0 0 0 0 6 −12
0 7 −2 −9 9 −15 2 10 0 0 2 −1 −1 0 −6 10 −3
0 0 7 −2 −9 9 −15 2 0 0 0 2 −1 −1 0 −6 10
0 0 0 7 −2 −9 9 −15 0 0 0 0 2 −1 −1 0 −6
0 0 0 0 7 −2 − 9 0 0 0 0 0 2 −1 −1 0
0 0 0 0 0 7 −2 −9 0 0 0 0 0 0 2 −1 −1
0 0 0 0 0 0 7 −2 0 0 0 0 0 0 0 2 −1
x7 f1 x6 f1 x5 f1 ⎟ x4 f1 ⎟ x3 f1 ⎟ ⎟ x2 f 1 ⎟ xf1 ⎟ f1 ⎟ x8 f 2 ⎟ x7 f 2 ⎟ ⎟ x6 f 2 ⎟ x5 f 2 ⎟ x4 f 2 ⎟ x3 f 2 ⎟ x2 f 2 ⎠ xf2 f2
⇒ sres0 (f1 , f2 ) = 0 . Wegen sres0 (f1 , f2 ) = res(f1 , f2 ) liefert 2.5.4 daraus nochmal deg(ggT(f1 , f2 )) > 0 . j = 1: ⎛ 6 0 −27 10 2 −15 9 −9 −2 7 0 0 0 0 x6 f 1 ⎞ 6 0 −27 10 2 −15 9 −9 0 6 0 −27 10 2 −15 9 0 0 6 0 −27 10 2 −15 0 0 0 6 0 −27 10 2 0 0 0 0 6 0 −27 10 0 0 0 0 0 6 0 −27 −12 −3 10 −6 0 −1 −1 2 6 −12 −3 10 −6 0 −1 −1 0 6 −12 −3 10 −6 0 −1 0 0 6 −12 −3 10 −6 0 0 0 0 6 −12 −3 10 −6 0 0 0 0 6 −12 −3 10 0 0 0 0 0 0 6 −12 −3 0 0 0 0 0 0 0 6 −12 0
⎜0 ⎜0 ⎜0 ⎜0 ⎜ ⎜0 ⎜6 ⎜0 ⎜0 ⎜ ⎜0 ⎜0 ⎝0
−2 −9 9 −15 2 10 0 2 −1 −1 0 −6 10 −3
7 −2 −9 9 −15 2 0 0 2 −1 −1 0 −6 10
0 7 −2 −9 9 −15 0 0 0 2 −1 −1 0 −6
0 0 7 −2 −9 9 0 0 0 0 2 −1 −1 0
0 0 0 7 −2 −9 0 0 0 0 0 2 −1 −1
x5 f 1 x4 f 1 ⎟ x3 f1 ⎟ x2 f 1 ⎟ ⎟ xf1 ⎟ f1 ⎟ x7 f 2 ⎟ x6 f 2 ⎟ ⎟ x5 f 2 ⎟ x4 f 2 ⎟ x3 f 2 ⎟ x2 f 2 ⎠ xf2 f2
4.6 Polynome
⇒ sres1 (f1 , f2 ) = 0
(klar nach (4.16))
j = 2: ⎛ 6 0 −27 10 2 −15 9 −9 −2 7 0 0 0 −27 10 2 −15 9 −9 −2 7 0 ⎜0 6 ⎜0 0 6 0 −27 10 2 −15 9 −9 −2 7 ⎜0 0 0 6 0 −27 10 2 −15 9 −9 −2 ⎜ ⎜0 0 0 0 6 0 −27 10 2 −15 9 −9 ⎜0 0 0 0 0 6 0 −27 10 2 −15 9 ⎜ ⎜ 6 −12 −3 10 −6 0 −1 −1 2 0 0 0 ⎜ 0 0 ⎜ 0 6 −12 −3 10 −6 0 −1 −1 2 ⎜0 0 6 −12 −3 10 −6 0 −1 −1 2 0 ⎜ ⎜0 0 0 6 −12 −3 10 −6 0 −1 −1 2 ⎜0 0 0 0 6 −12 −3 10 −6 0 −1 −1 ⎝ 0 0
0 0
0 0
0 0
0 0
6 0
153
−12 −3 10 6 −12 −3
−6 10
⎞
x5 f1 x4 f1 ⎟ x3 f1 ⎟ x2 f1 ⎟ ⎟ xf1 ⎟ ⎟ f1 ⎟ x6 f2 ⎟ ⎟ x5 f2 ⎟ 4 x f2 ⎟ ⎟ x3 f2 ⎟ 2 x f2 ⎟ ⎠ 0 −1 xf2 −6 0 f2
⇒ sres2 (f1 , f2 ) = 53747712 x2 − 26873856 Wegen nk = 2 folgt mit (4.17) sres2 (f1 , f2 ) ∼ fk ∼ ggT(f1 , f2 ) = 2x2 − 1 . j = 3 : ⎛ 6 0 −27 10 2 −15 9 −9 −2 7 x4 f1 ⎞ 6 0 −27 10 2 −15 0 6 0 −27 10 2 0 0 6 0 −27 10 0 0 0 6 0 −27 −12 −3 10 −6 0 −1 6 −12 −3 10 −6 0 0 6 −12 −3 10 −6 0 0 6 −12 −3 10 0 0 0 0 6 −12 −3 0 0 0 0 0 6 −12 0
⎜0 ⎜0 ⎜0 ⎜ ⎜6 ⎜0 ⎜0 ⎝0
9 −15 2 10 −1 −1 0 −6 10 −3
−9 9 −15 2 2 −1 −1 0 −6 10
−2 −9 9 −15 0 2 −1 −1 0 −6
x3 f 1 x2 f1 ⎟ xf1 ⎟ f1 ⎟ ⎟ x5 f 2 ⎟ 4 x f2 ⎟ x3 f2 ⎟ x2 f2 ⎠ xf2 f2
⇒ sres3 (f1 , f2 ) = −13436928 x3 +26873856 x2 +6718464 x−13436928 Wegen n4 = 3 folgt mit (4.17) sres3 (f1 , f2 ) ∼ f4 . ⎞ ⎛ j = 4: 6 0 −27 10 2 −15 9 −9 x3 f1 2 0 −27 10 2 −15 9 x f1 ⎟ ⎜0 6 ⎜0 0 6 0 −27 10 2 −15 xf1 ⎟ ⎟ ⎜0 0 0 6 0 −27 10 2 f1 ⎟ ⎜ ⎜ 6 −12 −3 10 −6 0 −1 −1 x4 f2 ⎟ ⎟ ⎜ ⎜ 0 6 −12 −3 10 −6 0 −1 x3 f2 ⎟ 2 ⎟ ⎜0 0 6 −12 −3 10 −6 0 x f 2⎠ ⎝ 0 0
0 0
0 0
6 0
−12 −3 10 6 −12 −3
−6 10
xf2 f2
⇒ sres4 (f1 , f2 ) = 0 Wegen n4 = 3 < 4 < n3 − 1 = 5 folgt mit (4.18) sres4 (f1 , f2 ) = 0 .
154
4 Grundlegende algebraische Strukturen
j = 5:
⎛
6 0 −27 10 2 0 −27 10 ⎜0 6 ⎜0 0 6 0 −27 ⎜ ⎜ 6 −12 −3 10 −6 ⎜ 0 6 −12 −3 10 ⎝ 0 0 6 −12 −3 0 0 0 6 −12
−15 2 10 0 −6 10 −3
⎞
x2 f1 xf1 ⎟ f1 ⎟ ⎟ x3 f2 ⎟ x2 f2 ⎟ ⎠ xf2 f2
⇒ sres5 (f1 , f2 ) = −93312 x3 + 186624 x2 + 46656 x − 93312 Wegen n3 −1 = 5 folgt mit (4.19) sres5 (f1 , f2 ) ∼ f4 ∼ sres3 (f1 , f2 ) . ⎞ ⎛ j = 6: 6 0 −27 10 xf1 0 −27 f1 ⎟ ⎜0 6 ⎜ 6 −12 −3 10 x2 f2 ⎟ ⎠ ⎝ 0 0
⇒
6 0
−12 −3 xf2 6 −12 f2
sres6 (f1 , f2 ) =7776 x6 − 15552 x5 − 3888 x4 + 12960 x3 − −7776 x2 − 2592 x + 3888
Wegen n3 = 6 folgt mit (4.17) sres6 (f1 , f2 ) ∼ f3 . j = 7: 6 0 f1 6 −12 xf2 ⇒ 0 6 f2 sres7 (f1 , f2 ) = 216 x6 − 432 x5 − 108 x4 + 360 x3 − 216 x2 − 72 x + 108
Wegen 7 = n2 −1 folgt mit (4.19) sres7 (f1 , f2 ) ∼ f3 ∼ sres6 (f1 , f2 ) . j = 8 : Aus der Matrix ( f2 ) liest man ab sres8 (f1 , f2 ) = f2 . Wegen 8 = n2 liefert (4.19) sres8 (f1 , f2 ) ∼ f2 . 4.6.10 Subresultanten und PRS Algorithmen Aus dem Hauptsatz u onnen mehrere Algorithmen zur ¨ber Subresultanten k¨ Konstruktion einer PRS f1 , . . . , fk in einem faktoriellen Ring R[x] abgeleitet werden. Grundlegend ist dabei die Beziehung (4.19): ρi sresni−1 −1 (f1 , f2 ) = fi f¨ ur i = 3, . . . , k mit n −n +1 i α −1 i−1 σi δi−1 −1 ρi = (−1) LK(fi−1 ) LK(f−1 )−δ−2 −δ−1 , β =3
σi =
i
(n−2 − ni−1 + 1)(n−1 − ni−1 + 1),
=3
ni := deg fi und δi := ni − ni+1 f¨ ur i = 1, . . . , k .
(4.21)
4.6 Polynome
155
Die ni−1 − 1-te Subresultante ist gem¨ aß ihrer Definition als Determinante einer Matrix u ur ¨ber R[x] in R[x] . Werden also αi und βi f¨ i = 3, . . . , k so bestimmt, dass ρi ∈ R , so ist auch jedes Polynom fi ein Element aus R[x] . Die reduzierte PRS: Ein sehr einfacher Algorithmus PRSCollins stammt von Collins [Co1] und beruht auf dem folgenden Satz. 4.6.10.1 Satz: (Collins, 1967) Es seien f1 , f2 ∈ R[x] . Dann wird durch die Wahl von ur i = 3, . . . , k , αi = LK(fi−1 )δi−2 +1 f¨ ur i = 4, . . . , k β3 = 1 und βi = αi−1 f¨ eine PRS f1 , . . . , fk in R[x] konstruiert, die so genannte reduzierte Polynom-Restfolge. Beweis: Es gen¨ ugt zu zeigen, dass ρi , wie in (4.21) angegeben, f¨ ur i = 3, . . . , k ein Element des Ringes R ist, wenn αi = LK(fi−1 )δi−2 +1 = βi+1 f¨ ur i ≥ 3 und β3 = 1 gew¨ ahlt werden: n −n +1 i α −1 i−1 σi δi−1 −1 ρi = (−1) LK(fi−1 ) LK(f−1 )−δ−2 −δ−1 = β =3
= (−1)σi
i−1
LK(f−1 )(δ−2 +1)(n−1 −ni−1 +1) LK(f−1 )−δ−2 −δ−1 ·
=3
·
i =4
LK(f−2 )−(δ−3 +1)(n−1 −ni−1 +1) = (−1)σi
i−1
LK(f−1 )(δ−1 −1)δ−2
=3
Da δ1 ≥ 0 , δ ≥ 1 f¨ ur = 2, . . . , k − 1 , folgt ρi ∈ R , fi ∈ R[x] . ur i = 2, . . . , k − 1 , so Ist die PRS f1 , . . . , fk normal, d.h. δi = 1 f¨ folgt ρi = ±1 und damit sresni−1 −1 (f1 , f2 ) = ±fi f¨ ur i = 3, . . . , k . 4.6.10.2 Beispiel: Die reduzierte PRS der Startpolynome von 4.1.1.1 ist eine normale Polynom-Restfolge und stimmt sogar f¨ ur i = 3 , i = 5 und i = 6 mit der primitiven PRS u ¨berein. Es gilt: f3 = 23 x4 − 16 x2 − 30 x + 19 f4 = 184 x3 + 253 x2 − 391 x − 23 f5 = 4887 x2 − 6037 x + 963 f6 = 117145 x − 82989 f7 = −494807 Ist die PRS nicht normal, so k¨ onnen die Koeffizienten stark anschwellen (Faktor LK(f−1 )(δ−1 −1)δ−2 ), wie man etwa an 4.6.6.4 sieht:
156
4 Grundlegende algebraische Strukturen
f1 = 6 x9 − 27 x7 + 10 x6 + 2 x5 − 15 x4 + 9 x3 − 9 x2 − 2 x + 7 f2 = 6 x8 − 12 x7 − 3 x6 + 10 x5 − 6 x4 − x2 − x + 2 f3 = 216 x6 − 432 x5 − 108 x4 + 360 x3 − 216 x2 − 72 x + 108 f4 = 559872 x3 − 1119744 x2 − 279936 x + 559872 f5 = 701982420492091392 x2 − 350991210246045696 Der Subresultanten PRS-Algorithmus: Beim Subresultanten PRS-Algorithmus werden die βi so bestimmt, dass ρi = 1 f¨ ur i = 3, . . . , k und damit fi = sresni−1 −1 (f1 , f2 ). ur i ≥ 3 . Bei der Herleitung einer Es gilt jeweils αi = LK(fi−1 )δi−2 +1 f¨ Rekursionsformel f¨ ur die βi ist es hilfreich (4.21) formal auf i = k + 1 zu erweitern, obwohl fk+1 = 0 . F¨ ur i = 3 ergibt sich: α ! 3 ρ3 = (−1)σ3 LK(f2 )δ2 −1 LK(f2 )−δ1 −δ2 = 1 ⇐⇒ β3 = (−1)δ1 +1 , (4.22) β3 f¨ ur i ≥ 4 :
<
i ρi = (−1)σi LK(fi−1 )δi−1 −1 ρi−1 =3
−σi−1
· (−1)
1−δi−2
LK(fi−2 )
α β
= (−1)σi −σi−1 βi−1 LK(fi−2 )1−δi−2
LK(f−1 )
β
δi−2 i−1 α =3
i−1
−δ−2 −δ−1
< i−1 α −n−1 +ni−2 −1 =3
σi − σi−1 = δi−2 + 1 +
=
n−1 −ni−1 +1
β
·
= δ−2 +δ−1
LK(f−1 )
=
mit
[((n−2 − ni−1 + 1)(n−1 − ni−1 + 1)−
=3
−(n−2 − ni−2 + 1)(n−1 − ni−2 + 1))] = = δi−2 + 1 +
i−1
(ni−2 − ni−1 ) [(n−2 + n−1 + 2) − ni−1 − ni−2 ]
=3
Da σi − σi−1 jeweils nur im Exponenten von −1 vorkommt, reicht es, wenn man diese Differenz modulo 2 betrachtet: σi − σi−1 ≡ δi−2 + 1 + (ni−2 − ni−1 )
i−1
(n−2 + n−1 + 1) mod 2 ≡
=3
≡ δi−2 + 1 + δi−2 (n1 − ni−2 + i − 1) mod 2
4.6 Polynome
157
Unter der Voraussetzung ρi−1 = 1 ist ρi genau dann gleich 1 , wenn βi gleich dem folgendem Produkt ist. δi−2 i−1 α δi−2 +1 (n1 −ni−2 +i−1) −1 LK(fi−2 ) (−1) LK(fi−2 ) = βi = (−1) β =3
δi−2 +1
= (−1)
δi−2 LK(fi−2 )ψi−2
.
(4.23)
Dabei sei ψi := (−1)n1 −ni +i−1 LK(fi )−1
i+1 =3
α f¨ ur i = 2, . . . , k. β
(4.24)
F¨ ur die ψi gilt LK(fi−1 ) αi+1 ψi = (−1)δi−1 +1 . ψi−1 LK(fi ) βi+1 Mit (4.23) f¨ ur βi+1 und dem u ur ψi mit i > 3 ¨blichen αi+1 ergibt sich f¨ die folgende Rekursionsformel 1−δ
ψi = LK(fi )δi−1 ψi−1 i−1 .
(4.25)
F¨ ur den Startwert ψ2 zur Berechnung von β4 gilt wegen (4.22) und (4.24) ψ2 = (−1)n1 −n2 +1 LK(f2 )−1
α3 = LK(f2 )δ1 . β3
(4.26)
Die Gleichungen (4.22), (4.23), (4.25) und (4.26) werden in folgendem Satz nochmals zusammengefasst: 4.6.10.3 Satz:
(Brown, 1978)Es seien f1 , f2 ∈ R[x]. Durch die Wahl
ur i = 3, . . . , k + 1, αi = LK(fi−1 )δi−2 +1 f¨ δ
i−2 β3 = (−1)δ1 +1 , βi = (−1)δi−2 +1 LK(fi−2 )ψi−2 , i = 4, . . . , k + 1
1−δ
ur i = 3, . . . , k ψ2 = LK(f2 )δ1 , ψi = LK(fi )δi−1 ψi−1 i−1 f¨ wird die Subresultanten Polynom-Restfolge mit ur i = 3, . . . , k berechnet. sresni−1 −1 (f1 , f2 ) = fi f¨ In der Literatur wird h¨ aufig eine andere Rekursionsformel zur Berechnung der βi f¨ ur die Subresultanten Polynom-Restfolge angef¨ uhrt. Sie stammt von Brown und Traub [BTr] und wird ohne Beweis angegeben: αi = LK(fi−1 )δi−2 +1 f¨ ur i = 3, . . . , k, δ β3 = (−1)δ1 +1 , βi = − LK(fi−2 )ψˆ i−2 f¨ ur i = 4, . . . , k, i
1−δ ψˆ3 = −1 , ψˆi = (− LK(fi−2 ))δi−3 ψˆi−1 i−3 f¨ ur i = 4, . . . , k .
4.6.10.4 Satz: Unter den Voraussetzungen des Satzes von Brown gilt f¨ ur die Hilfsgr¨oßen ψi = LK(sresni (f1 , f2 )) f¨ ur i = 3, . . . , k .
158
4 Grundlegende algebraische Strukturen
Beweis: Gleichung (4.17) besagt f¨ ur i = 3, . . . , k , θi := LK(sresni (f1 , f2 )) : τi
δi−1
θi = (−1) LK(fi )
n −n i β −1 i =3
LK(f−1 )δ−2 +δ−1
αl
i
mit τi = =3 (n−2 − ni )(n−1 − ni ) . Die αi und βi wurden im Satz von Brown so konstruiert, dass ρi = 1 f¨ ur i = 3, . . . , k + 1 ist. Also ist < i = α −n−1 +ni τi δi−1 δ−2 +δ−1 θi = θi ρi+1 = (−1) LK(fi ) · LK(f−1 ) β =3
Wegen σi+1 − τi =
i+1
(n−2 − ni + 1)(n−1 − ni + 1) −
=3
i
(n−2 − ni )(n−1 − ni )
=3
≡ ni−1 − ni + 1 +
i
(n−2 + n−1 − 2ni ) + 1 mod 2
=3
≡ n1 − ni + i − 1 mod 2 heißt das θi = (−1)n1 −ni +i−1 LK(fi )−1
i+1 =3
α β
(4.24) = ψi
Bei der reduzierten PRS nach Collins ist bei einer normalen PRS ρi = ±1 , beim Subresultanten Algorithmus nach Brown ist immer ρi = 1 . Da beide die gleichen αi verwenden, heißt das, dass beim Subresultanten Algorithmus und einer normalen PRS gilt βi = ±αi−1 . 4.6.10.5 Satz: Unter den Voraussetzungen des Satzes von Brown gilt f¨ ur alle i = 3, . . . , k + 1 : βi ∈ R . Beweis: Es ist β3 ∈ R wegen (4.3) . Sei i ≥ 4 . Die Hilfsgr¨ oßen ψi , i = 2, . . . , k , sind Elemente aus R . F¨ ur ψ2 = LK(f2 )δ1 ∈ R ist das klar, da δ1 ≥ 0 . F¨ ur ψi , i ≥ 3 , besagt dies 4.6.10.4. Daraus folgt δ
i−2 ∈ R. βi = (−1)δi−2 +1 LK(fi−2 )ψi−2
4.6 Polynome
159
F¨ ur die Effizienz des Subresultanten PRS-Algorithmus ist dieser Satz von großer Bedeutung. Denn w¨ are βi ein Element des Quotientenk¨ orpers von R , so m¨ ussten zum Durchk¨ urzen von βi wiederum teure ggTBerechnungen in R durchgef¨ uhrt werden. Der Satz von Brown l¨ asst sich in folgenden Algorithmus umsetzen PRSBrown−Sres (f1 , f2 ) : (1) Wiederhole bis f = 0 f¨ ur i = 3, 4, . . . (1.1) f ← PRest(LK(fi−1 )δi−2 +1 fi−2 , fi−1 ) (1.2) Berechne ψi−2 : 1−δ ψ1 ← 1, ψi−2 ← LK(fi−2 )δi−3 ψi−3 i−3 f¨ ur i ≥ 4 (1.3) Berechne die ni−1 − 1-te Subresultante f3 ← (−1)δ1 +1 f , fi ←
(−1)δi−2 +1 δ
i−2 LK(fi−2 )ψi−2
f f¨ ur i ≥ 4
(2) Gib f1 , f2 , . . . (soweit = 0 ) aus. 4.6.10.6 Beispiel: Eine PRS der bereits betrachteten Polynome aus 4.1.1.1 f1 = 3 x6 + 5 x4 − 4 x2 − 9 x + 4 f2 = 2 x5 − x4 − 1, wird mit Hilfe von des Algorithmus PRSBrown−Sres konstruiert. Da es sich um eine normale PRS handelt, stimmen diese Polynome (bis auf das Vorzeichen) mit denen der reduzierten PRS von PRSCollins u ¨berein, f3 , f5 und f6 sind sogar primitiv. f3 = 23 x4 − 16 x2 − 30 x + 19 f4 = 184 x3 + 253 x2 − 391 x − 23 f5 = 4887 x2 − 6037 x + 963 f6 = 117145 x − 82989 f7 = −494807 Berechnet man eine PRS der Polynome aus 4.6.6.4 f1 = 6 x9 − 27 x7 + 10 x6 + 2 x5 − 15 x4 + 9 x3 − 9 x2 − 2 x + 7 f2 = 6 x8 − 12 x7 − 3 x6 + 10 x5 − 6 x4 − x2 − x + 2, mit PRSBrown−Sres , so ergeben sich gegen¨ uber ihrer reduzierten Version deutlich kleinere Koeffizienten f¨ ur f4 und f5 , da die PRS nicht normal ist. f3 = 216 x6 − 432 x5 − 108 x4 + 360 x3 − 216 x2 − 72 x + 108 f4 = −93312 x3 + 186624 x2 + 46656 x − 93312 f5 = 53747712 x2 − 26873856
160
4 Grundlegende algebraische Strukturen
Bemerkung: Soll die gesamte Subresultanten-Kette (sresj (f1 , f2 ))0≤j
N
LK(fi−1 )εi−2 PPRest(fi−2 , fi−1 ) = PRest(LK(fi−1 )δi−2 +1 fi−2 , fi−1 ) , und man kann die entsprechende Zeile der Prozedur PRSBrown−Sres ersetzen durch (1.1) f := LK(fi−1 )εi−2 PPRest(fi−2 , fi−1 ) . Die Verwendung von PPRest mag sinnlos erscheinen, wenn der Pseudorest nach der Division wieder mit dem Faktor LK(fi−1 )εi−2 multipliziert werden muss. Man kann aber zeigen, dass der Aufwand f¨ ur die Berechnung von (1.1) so in jedem Fall kleiner oder h¨ ochstens gleich als die urspr¨ ungliche Methode ist. Weitere Verbesserungen ergeben sich dadurch, dass man unter Umst¨ anden w¨ahrend der Konstruktion einer Subresultanten PRS f1 , . . . , fk ohne großen Aufwand Teiler γi von Inh(fi ) finden kann. Statt der PRS f1 , . . . , fk wird dann die verbesserte Subresultanten Polynom-Restfolge g1 , . . . , gk berechnet, f¨ ur die gilt: γi gi = fi f¨ ur i = 1, . . . , k.
(4.27)
wobei γ1 , γ2 = 1 gesetzt seien. Dazu sind α ˇ i , βˇi so zu w¨ ahlen, dass α ˇ i gi−2 − qˇi gi−1 = βˇi gi . Im folgenden werden mit f1 , . . . , fk jeweils die Polynome der Subresultanten PRS bezeichnet. Die αi , βi und ψi seien wie im Satz von Brown definiert.
4.6 Polynome
161
Angenommen γ g = f f¨ ur alle < i . Dann ist LK(g ) = γ−1 LK(f ) . F¨ ur die Pseudodivision, die in jedem Rekursionsschritt i zur Berechnung von fi , bzw. gi durchgef¨ uhrt wird, gilt mit αi = LK(fi−1 )δi−2 +1 und α ˇi = δi−2 +1 LK(gi−1 ) δ
i−2 γi−1
und somit
+1
γi−2 PRest(α ˇ i gi−2 , gi−1 ) = PRest(αi fi−2 , fi−1 ) −δ −1 −1 βi fi . βˇi gi = γi−1i−2 γi−2
Also ist (4.27) genau dann auch f¨ ur i erf¨ ullt, wenn −δ −1 −1 βi βˇi = γi γi−1i−2 γi−2
bzw., wenn δi−2 βˇ3 = γ3 (−1)δ1 +1 , βˇi = γi (−γi−1 )−δi−2 −1 LK(gi−2 )ψi−2 , i = 4, . . . , k + 1 (4.28) Die ψi werden dabei nicht beeinflusst, also ist nach (4.25) bzw. (4.26) 1−δ
1−δ
ψ2 = LK(f2 )δ1 = LK(g2 )δ1 , ψi = LK(fi )δi−1 ψi−1 i−1 = (γi LK(gi ))δi−1 ψi−1 i−1 .
F¨ ur beliebige Teiler γi von Inh(fi ) ergibt sich der Grundalgorithmus: PRSSres−V1 (f1 , f2 ) : (0) Initialisierung: g1 ← f1 , g2 ← f2 , γ1 ← 1, γ2 ← 1 (1) Wiederhole bis g = 0 f¨ ur i = 3, 4, . . . (1.1) g ← PPRest(gi−2 , gi−1 ) (1.2) Berechne ψi−2 : 1−δ ψ1 ← 1, ψi−2 ← (γi−2 LK(gi−2 ))δi−3 ψi−3 i−3 f¨ ur i ≥ 4 (1.3) Berechne die ni−1 − 1-te Subresultante: f3 ← (−1)δ1 +1 LK(g2 )ε1 g , fi ←
(−γi−1 )δi−2 +1 LK(gi−1 )εi−2 δ
i−2 LK(gi−2 )ψi−2
g
(1.4) Finde Teiler γi : gi ← fi /γi (2) Gib g1 , g2 , . . . (soweit = 0 ) aus. Teiler γi von Inh(fi ) sind gegeben durch γi = γ := ggT(LK(f1 ), LK(f2 )) f¨ ur i = 3, . . . , k, denn aus der Definition der Subresultanten folgt unmittelbar, dass γ als Faktor der Determinante aus der ersten Spalte herausgezogen werden kann und daher den Inhalt jeder Subresultante sresj (f1 , f2 ), 0 ≤ j < n2 , teilt. Insbesondere teilt γ den Inhalt von sresni (f1 , f2 ) und damit auch ψi = LK(sresni (f1 , f2 )) f¨ ur i = 3, . . . , k. Aus (4.28) folgt f¨ ur i ≥ 4 :
162
4 Grundlegende algebraische Strukturen
δi−2 = (−1)δi−2 +1 LK(gi−2 ) βˇi = γ −δi−2 (−1)δi−2 +1 LK(gi−2 )ψi−2
ψi−2 γ
δi−2
(4.29) ur die Rekursion der ψˇi : Sei also ψˇi := ψi /γ . Mit ψˇ2 = LK(g2 )δ1 /γ , gilt f¨ 1−δ ψˇi = (γ LK(gi ))δi−1 (γ ψˇi−1 )1−δi−1 γ −1 = LK(gi )δi−1 ψˇi−1 i−1
(4.30)
Zusammengefasst ergeben (4.29) und (4.30): PRSSres−V2 (f1 , f2 ) : (0) Initialisierung: g1 ← f1 , g2 ← f2 , γ ← ggT(LK(f1 ), LK(f2 )) (1) Wiederhole bis g = 0 f¨ ur i = 3, 4, . . . (1.1) g ← PPRest(gi−2 , gi−1 ) ur i ≥ 4 : (1.2) Berechne ψˇi−2 f¨ 1−δ δ1 −1 ˇ ˇ ψ2 ← LK(g2 ) γ , ψi−2 ← LK(gi−2 )δi−3 ψˇi−3 i−3 (1.3) Berechne gi : g3 ← (−1)δ1 +1 LK(g2 )ε1
(−1)δi−2 +1 LK(gi−1 )εi−2 g g, i ≥ 4 , gi ← δi−2 γ LK(gi−2 )ψˇi−2
(2) Gib g1 , g2 , . . . (soweit = 0 ) aus. Zu Algorithmus PRSSres−V2 ist zu bemerken, dass wegen 4.6.10.4 und der Bemerkung vor (4.29) gilt ψˇi ∈ R f¨ ur i = 3, . . . , k . Das Element ψˇ2 ist nur dann sicher in R , wenn δ1 > 0 oder γ = 1 ist. Der Wert γ = ggT(LK(f1 ), LK(f2 )) wird bereits im Rahmenalgorithmus berechnet, erfordert also keinen zus¨ atzlichen Aufwand. Dieser Algorithmus l¨ asst sich mit dem Algorithmus PRSSres−V1 zu PRSSres−V3 kombinieren. Durch die Reihenfolge der Berechnung spielt sich hier alles in R ab. Nimmt man jedoch Berechnungen im Quotientenk¨ orper K von R in Kauf, so kann man dadurch weitere Teiler γi finden. In der while-Schleife von PRSSres−V3 gilt bei unbekanntem γi δ
+1
LK(gi−1 )εi−2 g = ±γi gi . δ LK(gi−2 )ψˇ i−2
i−2 γi−1
i−2
Division durch g und k¨ urzen der rechten Seite liefert δ
+1
LK(gi−1 )εi−2 γ∗ = i mit ggT(γi∗ , ηi ) = 1 . δ i−2 ηi LK(gi−2 )ψˇi−2
i−2 γi−1
Es ist γi∗ g = ±ηi γi gi . Da γi∗ und ηi teilerfremd sind, ist γi∗ Teiler von Inh(γi gi ) und es kann γi gleich γi∗ gesetzt werden.
4.6 Polynome
163
Analog kann f¨ ur i = 3 der Faktor LK(g2 )ε1 /γ durchgek¨ urzt und der Z¨ ahler dieses Elements aus K als Teiler γ3 gew¨ ahlt werden. Subresultanten PRS procedure PRSSres−V3 g1 ← f1 ; g2 ← f2 γ1 ← 1 ; γ2 ← 1 ; γ ← ggT(LK(f1 ), LK(f2 )) i ← 4 ; g ← PPRest(g1 , g2 ) δ1 ← n1 − n2 ; δ2 ← n2 − n3 ψˇ2 ← LK(g2 )δ1 ; ψˇ2 ← ψˇ2 /γ g ← (−1)δ1 +1 LK(g2 )ε1 g ; g ← g/γ while g = 0 do g ← PPRest(gi−2 , gi−1 ) δi−1 ← ni−1 − ni−2 δ −1 ψˇi ← (γi LK(gi ))δi−1 ; ψˇi ← ψˇi /ψˇ i−1
# # # # # #
Eingabe: Polynome f1 , f2 , Ausgabe: PRS f1 , f2 , f3 , . . . Die εi werden jeweils bei der Berechnung von PPRest mitgeliefert
i−1
g ← (−γi−1 )δi−2 +1 LK(gi−1 )εi−2 g δi−2 g ← g/ LK(gi−2 )ψˇi−2 Finde γi |g ; gi ← g/γi ; i ← i + 1 end do Return(g1 , g2 , . . . , gi−1 ) end
PRSSres−V4 (f1 , f2 ) : (0) Initialisierung: g1 ← f1 , g2 ← f2 , γ1 , γ2 ← 1, γ ← ggT(LK(f1 ), LK(f2 )) (1) Wiederhole bis g = 0 f¨ ur i = 3, 4, . . . (1.1) g ← PPRest(gi−2 , gi−1 ) (1.2) Berechne ψˇi−2 : δi−3 −1 f¨ ur i ≥ ψˇ2 ← LK(g2 )δ1 γ −1 , ψˇi−2 ← (γi−2 LK(gi−2 ))δi−3 /ψˇi−3 5 (1.3) Berechne γi aus (−1)δ1 +1 g2ε1 γ3 mit ggT(γ3 , η3 ) = 1 = γ η3 εi−2 (−γi−1 )δi−2 +1 gi−1 γi = mit ggT(γi , ηi ) = 1 f¨ ur i ≥ 4 δi−2 ˇ ηi LK(gi−2 )ψi−2 (1.4) Berechne Restpolynom gi : gi ← g/ηi (2) Gib g1 , g2 , . . . (soweit = 0 ) aus. 4.6.11.1 Beispiel: Die primitive PRS zu den beiden Startpolynomen f1 = 6 x12 − 21 x10 + 10 x9 − 19 x8 − 17 x7 + 8 x6 − 14 x5 + x4 − − 2 x3 − 3 x2 + 6 x + 2 f2 = 6 x9 − 27 x7 + 10 x6 + 2 x5 − 15 x4 + 9 x3 − 9 x2 − 2 x + 7 lautet:
164
4 Grundlegende algebraische Strukturen
f3 = 6 x8 − 12 x7 − 3 x6 + 10 x5 − 6 x4 − x2 − x + 2 f4 = 6 x6 − 12 x5 − 3 x4 + 10 x3 − 6 x2 − 2 x + 3 f5 = 2 x3 − 4 x2 − x + 2 f6 = 2 x2 − 1. Die folgende Tabelle gibt an, wie groß der Inhalt des i -ten Folgepolynoms der reduzierten PRS, der Subresultanten PRS und der verbesserten Subresultanten Polynom-Restfolgen jeweils ist. i 3 4 5 6
PRSCollins 4
4
2 3 26 36 215 315 249 345
PRSBrown 4
4
2 3 26 36 210 310 216 312
PRSSres−V2 3
3
2 3 25 35 29 39 215 311
PRSSres−V4 22 32 25 35 28 38 215 311
4.6.12 Der erweiterte Subresultanten PRS-Algorithmus Jeder Algorithmus zur Berechnung einer PRS f1 , . . . , fk kann wie bereits gezeigt um die Berechnung der Kosequenzen (ri )1≤i≤k und (ti )1≤i≤k aus K[x] mit ri f1 + ti f2 = fi erweitert werden. Mit den Startwerten r1 = t2 = 1 und r2 = t1 = 0 werden diese in jedem Teilungsschritt i ≥ 3 berechnet durch ri = (αi ri−2 − qi ri−1 )/βi , ti = (αi ti−2 − qi ti−1 )/βi . Wird die Subresultanten PRS berechnet, so sind die Polynome ri , ti sogar Elemente aus R[x] , denn nach (4.6) gilt f¨ ur jede j-te Subresultante sresj (f1 , f2 ) , dass Polynome uj , vj aus R[x] existieren mit uj f1 + vj f2 = sresj (f1 , f2 ). Da beim Subresultanten Algorithmus αi und βi f¨ ur i ≥ 3 so gew¨ ahlt sind, dass fi = sresni−1 −1 (f1 , f2 ) , und Kosequenzen bis auf einen Faktor in K eindeutig sind, gilt ri = uni−1 −1 ∈ R[x] und ti = vni−1 −1 ∈ R[x]. Als Algorithmus zur Berechnung von Kosequenzen in R[x] ergibt sich:
4.6 Polynome
165
PRS EXT(f1 , f2 ) : (0) Initialisierung: r1 ← 1, r2 ← 0, t1 ← 0 und t2 ← 1 (1) Wiederhole bis f = 0 f¨ ur i = 3, 4, . . . (1.1) Berechne Pseudorest und Pseudoquotient: αi = LK(fi−1 )δi−2 +1 f ← PRest(αi fi−2 , fi−1 ) , q = PQuo(αi fi−2 , fi−1 ) (1.2) Berechne ψi−2 : 1−δ ψ1 ← 1, ψi−2 ← LK(fi−2 )δi−3 ψi−3 i−3 (1.3) Berechne die ni−1 − 1-te Subresultante: f3 ← (−1)δ1 +1 f bzw. fi ←
(−1)δi−2 +1 δ
i−2 LK(fi−2 )ψi−2
f f¨ ur i ≥ 4
(1.4) Berechne die Kosequenzen: r3 = (− LK(f2 ))δ1 +1 und t3 = (−1)δ1 q ri = ti =
(−1)δi−2 +1 δ
i−2 LK(fi−2 )ψi−2
(−1)δi−2 +1 δ
i−2 LK(fi−2 )ψi−2
(LK(fi−1 )δi−2 +1 ri−2 − qri−1 ) (LK(fi−1 )δi−2 +1 ti−2 − qti−1 )
(2) Gib die PRS f1 , f2 , . . . (soweit = 0 ), die dazugeh¨ orige erste Kosequenz r1 , r2 , . . . und die zweite Kosequenz t1 , t2 , . . . aus. 4.6.12.1 Beispiel: Zu den beiden Polynomen aus 4.6.6.4 werden die Kosequenzen angegeben. Mit den Startwerten r1 = 1 , t1 = 0 , r2 = 0 und t2 = 1 lauten PRS und Kosequenzen wie folgt: f3 =216 x6 − 432 x5 − 108 x4 + 360 x3 − 216 x2 − 72 x + 108 r3 =36 t3 = − 36 x − 72 f4 = − 93312 x3 + 186624 x2 + 46656 x − 93312 r4 =46656 x2 t4 = − 46656 x3 − 93312 x2 − 46656 f5 =53747712 x2 − 26873856 r5 =80621568 x5 + 53747712 x2 + 26873856 t5 = − 80621568 x6 − 161243136 x5 − 134369280 x3 − − 107495424 x2 − 26873856 x − 107495424
5 Faktorisierung ganzer Zahlen
5.1 Vorbereitungen Zum Thema der Zerlegung ganzer Zahlen in ihre Primteiler ist in den letzten Jahren viel geforscht worden. Grund daf¨ ur ist einerseits die Entwicklung der Computertechnik, durch welche komplexere Methoden u ¨berhaupt erst anwendbar geworden sind. Andererseits wurde das Interesse an diesem Thema zus¨ atzlich angefacht durch die Erfindung eines Public-Key” Kryptosystems“ von Rivest, Shamir und Adleman [RSA], dessen Sicherheit darauf beruht, dass zwei Primzahlen ab einer bestimmten Gr¨ oße zwar einfach miteinander multipliziert, ihr Produkt hinterher aber nur sehr schwer wieder faktorisiert werden kann. Seither sind in der Literatur eine ganze Reihe von Faktorisierungsalgorithmen vorgeschlagen worden, von denen sich aber nur wenige wirklich in der Praxis bew¨ ahrt haben. Im folgenden werden die praktikabelsten Methoden vorgestellt, die auch in den meisten modernen Computeralgebra-Systemen implementiert sind. Eine Funktion zum Faktorisieren ganzer Zahlen muss den verschiedensten Problemstellungen gewachsen sein. Sie muss einerseits kleinere Zahlen m¨oglichst schnell faktorisieren k¨ onnen, damit sie auch als Unterfunktion h¨aufig aufgerufen werden kann. Andererseits soll sie auch große Zahlen mit großen Teilern bew¨ altigen k¨ onnen. Sie st¨ utzt sich daher nicht auf eine einzige Faktorisierungsmethode, sondern durchl¨ auft zun¨ achst Stufen, in denen mit einfacheren Methoden nach kleineren und mittleren Faktoren gesucht wird. Die wirklich anspruchsvollen Algorithmen verwendet sie erst zum Schluß f¨ ur die verbleibenden Faktoren. Bevor man auf die Zahl N einen der komplexeren Algorithmen aus den folgenden Abschnitten anwendet, sollte man zun¨ achst einmal alle kleinen Primteiler aus N eliminieren und u ufen, ob N eine Primzahl oder ¨berpr¨ eine Potenz ist. Das Eliminieren der kleinen Primteiler geschieht im Prinzip mit Probedivisionen. Hierbei m¨ ochte man sich aber nicht lange aufhalten, wenn N gar keine solchen kleinen Teiler besitzt.
168
5 Faktorisierung ganzer Zahlen
Wenn man das Produkt P aller Primzahlen unterhalb einer bestimmten Schranke S ≥ 2 fest im Programmcode speichert, kann man durch die Berechnung von g = ggT(P, N ) schnell feststellen, ob N u ¨berhaupt Teiler < S besitzt. Falls g > 1 ist, wird g durch Probedivisionen faktorisiert. Ist g = 1 , so k¨onnen die Probedivisionen u ¨bersprungen werden. F¨ ur die Probedivisionen empfiehlt sich folgende Methode: Sei d1 = 1 , d2 = 7 , d3 = 11 , d4 = 13 , d5 = 17 , d6 = 19 , d7 = 23 und d8 = 29 . Eine Primzahl p ist entweder 2, 3 oder 5, oder es gilt p ≡ di (mod 30) f¨ ur ein i ∈ 1, 2, . . . , 8 . Man dividiert g also versuchsweise durch 2, 3, 5 und dann durch alle Zahlen der Form 30k + di f¨ ur i = 1, 2, . . . , 8 und k ∈ 0 bis die Schranke S erreicht ist. Es sei π(x) die Anzahl der Primzahlen ≤ x . F¨ ur diese zahlentheoretische Funktion gibt es verschiedene Absch¨ atzungen, etwa die von Legendre (s. [Rie]) x π(x) ≈ mit B = 1.083666 . n x − B
N
W¨ urde man alle Primzahlen bis zur Schranke S durchprobieren, so h¨atte man nach dieser Absch¨ atzung etwa mit nSS Probedivisionen zu rechnen. Mit der eben geschilderten Methode hat man dagegen mit ungef¨ ahr 8 S Divisionen zu rechnen. 30 30 6 nur etwa Nur der Anteil 8 n S der Divisionen (also z.B. bei S = 10 27% ) ist also wirklich n¨ otig. Trotzdem ist diese Methode vorzuziehen, denn sonst m¨ usste man ja alle Primzahlen bis zur Schranke S in einer Tabelle speichern und dauernd auf diese Tabelle zugreifen, was die Rechenzeit erheblich erh¨ohen w¨ urde. Ist g vollst¨ andig zerlegt, so wird N ← N/g gesetzt und die ganze Prozedur mit der Berechnung des ggT (P, N ) und den Probedivisionen wiederholt, bis N keine Teiler < S mehr enth¨ alt. In Maple werden mit dieser Methode in einem ersten Schritt alle Teiler < 1700 eliminiert. Das dabei verwendete Produkt aller Primzahlen zwischen 13 und 1700 hat 718 Dezimalstellen! Als n¨achsten Schritt u uft man, ob N eine Primzahl ist. Ein Com¨berpr¨ puteralgebra-System verwendet daf¨ ur spezielle Primzahltests. Da das Identifizieren von Primzahlen ein ¨ ahnlich komplexes Thema wie das Faktorisieren ganzer Zahlen ist, sei hier lediglich auf die B¨ ucher von Hans Riesel [Rie] und David M. Bressoud [Bre] verwiesen, sowie auf die Artikel von R. G. E. Pinch [Pin] und D. Bernstein [Ber]. Wenn festgestellt wurde, dass N keine Primzahl ist und keine Teiler < S enth¨alt, ist als letztes noch auszuschließen, dass N eine Potenz ist. Vor allem sollte N keine Quadratzahl sein, da sonst die Algorithmen von Morrison und Brillhart oder der von Shanks nicht funktionieren. √ N Man u uft daher jeweils, ob k N f¨ ur k = 2, 3, . . . , " log ¨berpr¨ log S # eine ganze Zahl ist (f¨ ur gr¨ oßeres k w¨ are die Wurzel kleiner als S und damit schon bei der Suche nach Teilern < S aufgefunden worden).
5.2 Pollard-ρ
169
Wenn N nach diesen Schritten immer noch nicht faktorisiert ist, lohnt es sich, einen der anspruchsvolleren Algorithmen zu probieren, die in den nun folgenden Kapiteln vorgestellt werden. Sie sind jeweils so formuliert, dass sie abbrechen, wenn sie einen Teiler d von N gefunden haben. Um die komplette Faktorisierung von N zu erhalten, wendet man die Algorithmen danach rekursiv auf d und N/d an.
5.2 Pollard-ρ 5.2.1 Der Faktorisierungsalgorithmus Im Jahre 1975 ver¨ offentlichte J. M. Pollard [Po2] seine Monte-Carlo-Metho” de“: Man w¨ahlt eine einfach auszuwertende Polynomfunktion f : Z → Z vom Grad n ≥ 2 , z.B. f (x) = xn + c,
c ∈ Z,
sowie einen Anfangswert x0 ∈ ZN . F¨ ur i = 1, 2, 3, . . . erzeugt man eine Folge von xi mit der rekursiven Definition xi = f (xi−1 ) mod N . Nun sei p der gesuchte Teiler von N . Definiert man yi = xi mod p , so k¨onnen die (unbekannten) yi ∈ Zp nur p verschiedene Werte annehmen. Daher muss in ihrer Folge nach einer bestimmten Anzahl von Elementen ein Element auftreten, das schon fr¨ uher vorgekommen ist. Aufgrund ihrer rekursiven Definition verh¨ alt sich die Folge der yi von diesem Moment an periodisch. Es existieren also nat¨ urliche Zahlen k und l , so dass yi = yi+l ist f¨ ur alle i ≥ k . Wenn k und l minimal gew¨ ahlt sind, ist k = k(p) die L¨ ange des aperiodischen Teils der Folge und l = l(p) die L¨ ange der Periode. Wenn yi = yi+l ist, so bedeutet das xi ≡ xi+l mod p und p ist Teiler der Differenz xi − xi+l . Deshalb ist p dann auch Teiler von d = ggT(xi − xi+l , N ) , und d ist nichttrivialer Teiler von N , wenn nicht ungl¨ ucklicherweise xi = xi+l ist. In diesem Fall w¨ urde man den trivialen Teiler d = N erhalten. Berechnet man die Periode naiv, so berechnet man hintereinander die Werte yi und vergleicht jeden neuen mit allen bereits berechneten. F¨ ur großes N ist dies sicher ein unvertretbarer Aufwand, denn es m¨ ussten ja alle Werte in einer Tabelle gespeichert werden, die dann jedesmal durchsucht werden m¨ usste. Deutlich besser geht es mit dem unter dem Namen Floyds Algorithmus“ bekannten Verfahren. ” Man berechnet f¨ ur i = 1, 2, 3 . . . so lange jeweils die Paare (xi , x2i ) , bis ggT(xi −x2i , N ) = 1 auftritt. Dies erfordert pro Iteration drei Funktionsauswertungen von f mod N , um von (xi , x2i ) auf (xi+1 , x2i+2 ) zu kommen, sowie eine ggT-Berechnung. Es sind keine Tabellen n¨ otig.
170
5 Faktorisierung ganzer Zahlen
Bei i = l· kl ! ist erstmals ggT(xi −x2i , N ) = 1 , denn i ≥ k , man befindet sich also bereits im periodischen Teil, und l|i d.h. 2i−i ist ein Viel. faches der Periodenl¨ ange l . Ist k > l , so ist i .. ein echtes Vielfaches der Periode. J. M. Pollard yk = yk+l bezeichnete diese Methode als Monte-Carlo” Methode“ wegen des pseudozuf¨ alligen Charak. .. ters der Folge der yi . Heutzutage ist sie bey1 kannter unter dem Namen Pollard- ρ , der von y 0 der der nebenstehenden Abbildung herr¨ uhrt.
yi = yi+l
Pollard-ρ -Algorithmus procedure PolRho(N ) f (x) ← x2 + a mit a ∈ N \ {0 , −2} W¨ ahle x0 ∈ N x1 ← f (x0 ) mod N i←1 d ← ggT(x1 − x2 , N ) while d = 1 do xi+1 ← f (xi ) mod N x2i+2 ← f (f (x2i ) mod N ) mod N i←i+1 d ← ggT(xi − x2i , N ) end do Return(d) end
Z
Z
# Eingabe: N # Ausgabe: Faktor d von N # (u.U. d = N )
Der Algorithmus bricht nach r Iterationsschritten ab und gibt das Ergebnis d = ggT(xr − x2r , N ) aus, welches p als Teiler enth¨ alt, wenn r ein Vielfaches der Periodenl¨ ange l(p) und r gr¨ oßer oder gleich k(p) , der L¨ange des aperiodischen Teils der Folge xi mod p ist. Erf¨ ullt r diese Bedingung zuf¨allig f¨ ur alle Teiler p von N , so gibt der Algorithmus das triviale Ergebnis d = N aus. In diesem Fall kann der Algorithmus mit einem anderen Polynom f (x) oder einem anderen Anfangswert x0 erfolgreich sein, wie im folgenden Beispiel gezeigt wird. 5.2.1.1 Beispiel: Die Zahl N = 59 · 73 = 4307 soll faktorisiert werden, wobei das Polynom f (x) = x2 + 1 und der Anfangswert x0 = 2 gew¨ahlt wurden. F¨ ur i = 1, 2, 3, . . . sind in der folgenden Tabelle die Werte xi , yi und zi angegeben, definiert durch xi = f (xi−1 ) mod N,
yi = xi mod 59,
zi = xi mod 73 .
Die letzte Spalte enth¨ alt jeweils den Wert von ggT(xi − x2i , N ) . Die Folge der yi wiederholt sich zum ersten Mal bei i = 9 mit y9 = y6 = 16 . Ihre Periode hat die L¨ ange l(59) = 3 , und die L¨ ange des aperiodischen Teils ist k(59) = 6 .
5.2 Pollard-ρ
i 1 2 3 4 5 6 7 8 9 10
yi 5 26 28 18 30 16 21 29 16 21
171
y2i yi − y2i zi z2i zi − z2i xi x2i xi − x2i ggT 26 −21 5 26 −21 5 26 −21 1 18 8 26 36 −10 26 1788 −1762 1 16 12 20 71 −51 677 2553 −1876 1 29 −11 36 26 10 1788 4041 −2253 1 21 9 56 36 20 1151 1496 −345 1 16 0 71 71 0 2553 2553 0 4307 29 −8 5 26 −21 1319 4041 −2722 1 21 8 26 36 −10 4041 1496 2545 1 16 0 20 71 −51 1845 2553 −708 59 29 −8 36 26 10 1496 4041 −2545 1
Dagegen wiederholt sich die Folge der zi zum ersten Mal bei i = 7 mit z7 = z1 = 5 . Daraus folgt l(73) = 6 und k(73) = 1 . F¨ ur beide Teiler von N ist 6 das kleinste Vielfache von l , das ≥ k ist. Somit bricht der Algorithmus bei i = 6 ab und gibt den trivialen Teiler d = N aus. i 1 2 3 4 5 6 7 8 9 10
yi 3 8 4 15 47 25 34 34 34 34
y2i yi − y2i zi z2i zi − z2i xi x2i xi − x2i ggT 8 −5 3 8 −5 3 8 −5 1 15 −7 8 26 −18 8 3968 −3960 1 25 −21 63 31 32 63 615 −552 1 34 −19 26 47 −21 3968 2748 1220 1 34 13 18 31 −13 2938 4046 −1108 1 34 −9 31 47 −16 615 2748 −2133 1 34 0 11 31 −20 3515 4046 −531 59 34 0 47 47 0 2748 2748 0 4307 34 0 18 31 −13 1332 4046 −2714 59 34 0 31 47 −16 4046 2748 1298 59
Die zweite Tabelle enth¨ alt die entsprechenden Werte, wenn man das Polynom f (x) = x2 − 1 w¨ ahlt und den Anfangswert x0 = 2 beibeh¨alt. In diesem Fall hat die Folge der yi die Periodenl¨ ange l(59) = 1 und k(59) = 7 . Die Folge der zi dagegen hat die Periodenl¨ange l(73) = 4 und k(73) = 5 . Daher bricht der Algorithmus bei i = 7 mit dem Ergebnis d = 59 ab. Der Teiler 73 w¨ are zum ersten Mal bei i = 8 in Erscheinung getreten. Da Multiplikationen modulo N wesentlich weniger zeitaufw¨ andig als ggTBerechnungen sind, lohnt es sich, die Differenzen xi − x2i in den Werten Qi = (xi − x2i )Qi−1 mod N =
i
(xj − x2j ) mod N
j=1
zu sammeln und nur alle n Iterationen den ggT(Qn·i , N ) zu berechnen. Dadurch erh¨ oht sich allerdings die Wahrscheinlichkeit, ein triviales Ergebnis zu erhalten, weil sich in dem Produkt Qn·i leicht mehrere Teiler von N ansammeln k¨onnen, die sich dann zu N multiplizieren.
172
5 Faktorisierung ganzer Zahlen
Speichert man aber anfangs das erste Wertepaar (x1 , x2 ) und nach jeder erfolglosen Berechnung von ggT(Qn·i , N ) = 1 das n¨ achste Wertepaar (xn·i+1 , x2n·i+2 ) , so kann man im Falle des trivialen Ergebnisses ggT(Qn·i , N ) = N noch einmal bei dem zuletzt gespeicherten Wertepaar beginnen und bei diesem neuen Durchgang den ggT f¨ ur jeden einzelnen Iterationsschritt berechnen. 5.2.1.2 Beispiel: (Fortsetzung von 5.2.1.1) Berechnet man den ggT nach jedem 5. Iterationsschritt, so erh¨ alt man bei der Wahl des zweiten Polynoms f (x) = x2 −1 das Produkt Q5 =
5
(xj − x2j ) mod N = 4191
und
ggT(Q5 , N ) = 1.
j=1
Man speichert das n¨ achste Wertepaar (x6 , x12 ) und sammelt weiter bis Q10 =
10
(xj − x2j ) mod N = 0
und
ggT(Q10 , N ) = N.
j=1
Den nichttrivialen Teiler d = ggT(x7 − x14 , N ) = 59 findet man, indem man noch einmal zu dem Paar (x6 , x12 ) zur¨ uckgeht und dieses Mal den ggT f¨ ur jedes i berechnet. Der Nachteil bei Floyds Algorithmus ist, dass die xi im Verlauf des Algorithmus doppelt berechnet werden. Richard P. Brent hat in [Brn] eine alternative Strategie vorgeschlagen, bei der diese doppelten Berechnungen vermieden werden: Man h¨alt jeweils das letzte xi fest, f¨ ur welches i = 2k eine Potenz von 2 ist, und u uft dann alle Differenzen x2k −xj mit 3 ·2k−1 < j ≤ 2k+1 . ¨berpr¨ Danach h¨alt man x2k+1 fest usw. Bei dieser Methode berechnet man also nacheinander folgende Werte: x1 , x2 , x1 − x2 , x3 , x4 x2 − x4 , x5 , x6 , x7 x4 − x7 , x8 , x4 − x8 , x9 , x10 , x11 , x12 , x13 , x8 − x13 , x14 , x8 − x14 , x15 , x8 − x15 , x16 , x8 − x16 , x17 , x18 , . . . , x25 , x16 − x25 , x26 , x16 − x26 , x27 , x16 − x27 , usw. Bei dieser Strategie wird der Teiler von N nach wesentlich weniger Auswertungen von f gefunden als mit Floyds Algorithmus.
5.2 Pollard-ρ
173
5.2.1.3 Beispiel: (Fortsetzung von 5.2.1.1) W¨ahlt man das erste Polynom, so treten wegen y6 = y12 und z6 = z12 beide Teiler von N erstmalig in der Differenz x6 −x12 auf. Um dahin zu gelangen, sind 18 Auswertung von xi = f (xi−1 ) mod N n¨otig. ¨ Brents Methode findet die Periode beim Uberpr¨ ufen der Differenz x8 − x14 , die man bereits nach 14 Auswertungen von f erh¨ alt. Bei der Wahl des zweiten Polynoms ist der Unterschied noch deutlicher: Floyds Algorithmus findet den Teiler 59 in der Differenz x7 − x14 , d.h. nach 21 Funktionsauswertungen. Brents Methode dagegen findet ihn in der Differenz x8 − x13 nach 13 Funktionsauswertungen. Die Funktionsauswertungen von f ben¨ otigen nat¨ urlich dann am wenigsten Zeit, wenn man ein Polynom vom Grad 2 mit der Form f (x) = x2 + c w¨ahlt. Dabei r¨at Pollard von den Werten c = 0 und c = −2 ab, weil sich die Folge der yi sonst nicht gen¨ ugend zuf¨ allig“ verhalten w¨ urde. Im Fall ” c = −2 h¨angt das damit zusammen, dass die damit erzeugte Folge der xi eine besondere Rolle im Lucas-Lehmer-Test f¨ ur Mersenne-Primzahlen spielt. Pollard empfiehlt die Wahl des aufw¨ andiger auszuwertenden Polynoms f (x) = xn + c,
mit
c ∈ Z und n > 2
falls bekannt ist, dass der gesuchte Primteiler p von N die Form p = kn+1 hat. Der folgende Satz besagt, dass man so etwas u ¨ber p wissen kann, wenn N die Form N = an ± bn hat. 5.2.1.4 Satz: (Legendre)Es sei p = 2 ein Primteiler der ganzen Zahl N = an ± bn , wobei ggT(a, b) = 1 sei. Wenn p nicht Teiler eines algebraischen Teilers am ± bm von N ist mit m < n , dann hat p die Form p = kn + 1 . Sieht man von dem Fall N = an − bn mit geradem n ab, so hat p sogar die Form p = 2kn + 1 . Beweis: Wenn p = 2 ein Primteiler von N ist, ist an ± bn ≡ 0 mod p . Aus ggT(a, b) = 1 folgt ggT(a, p) = ggT(b, p) = 1 . Damit existiert x := ab in Z∗p und es gilt a n ≡ ∓1 mod p . xn ≡ b
Es sei d die Ordnung von x in der multiplikativen Gruppe Z∗p . Dann ist d Teiler der Gruppenordnung p − 1 und ein Teiler von n bzw. 2n im Fall −1 , und es gibt ganze Zahlen l > 0 und k > 0 mit l(p − 1) k 2l − 1 (2l − 1)(p − 1) n= d= 2 2k n = ld =
im Fall N = an − bn bzw. im Fall N = an + bn .
174
5 Faktorisierung ganzer Zahlen
W¨are im zweiten Fall 2n = ld mit l = 2l , so w¨ are n ein Vielfaches der Ordnung d und damit widerspr¨ uchlicherweise xn = 1 . Deshalb wurde hier gleich 2l − 1 als Faktor gew¨ ahlt. Man liest dann ab, dass in letzterem Fall d gerade sein muss. Daraus folgt in den jeweiligen F¨ allen a d xd ≡ ≡ 1 mod p, d.h. ad − bd ≡ 0 mod p, bzw. b a d/2 xd/2 ≡ ≡ −1 mod p, d.h. ad/2 + bd/2 ≡ 0 mod p. b Wenn l > 1 ist, d.h. wenn d < n ist in dem einen Fall bzw. wenn d/2 < n in dem anderen Fall, dann ist p Teiler des algebraischen Teilers ad − bd von N = an − bn bzw. ad/2 + bd/2 von N = an + bn . Dieser Fall wurde im Satz ausgeschlossen. Daher ist l = 1 und n = p−1 bzw. k . Daraus folgt n = p−1 2k p = kn + 1 falls N = an − bn bzw. p = 2kn + 1 falls N = an + bn . Ist n ungerade im Fall N = an − bn , so muss k gerade sein, damit p = kn + 1 ungerade ist. n Wenn ein Polynom der Form f (x) = x + c verwendet wird, so gilt f¨ ur die Differenzen xi − xj ≡ xni−1 − xnj−1 mod N , d.h. dort sammeln sich Primteiler der Form kn + 1 an. Die Wahrscheinlichkeit, mit der Berechnung von ggT(xi − xj , N ) einen Teiler dieser Form zu finden, wird so erh¨ oht. Die Auswertung von f (xi ) mod N ist umso zeitaufw¨ andiger, je h¨ oher der Grad des Polynoms f ist. Dies f¨ allt aber kaum ins Gewicht, wenn man xni mod N mit folgendem Hilfsalgorithmus berechnet: Große modulare Potenzen procedure ModPot(r, n, s) t←r for i from 2 to do if n−i = 0 then t ← t2 mod s else t ← t · r2 mod s end if end do Return(t) end
N
# Eingabe: r, s ∈ R (Ring), n ∈ , # n = (1 , n0 , . . . , n−1 )2 # Ausgabe: rn mod s
Mit der Wahl des Polynoms f (x) = x1024 + 1 und des Anfangswerts x0 = 3 gelang es Richard P. Brent und John M. Pollard im Jahre 1980 die 8 Fermatsche Zahl F8 = 22 + 1 zu faktorisieren [BPo]∗ . ∗
F7 wird im kommenden Abschnitt zum Algorithmus von Morrison und Brillhart faktorisiert,
F6 zerf¨ allt in 274177 und 67280421310721 , F5 in 641 und 6700417 .
5.2 Pollard-ρ
175
Heutige PCs liefern mit Pari oder GMP schon nach ein paar Stunden F8 = 1238926361552897 · 93461639715357977769163558199606896584051237541638188580280321. 8
Nach dem Satz von Legendre wusste man, dass Teiler von F8 = 22 + 1 von der Form 29 k + 1 sind. Brent und Pollard haben bei der Wahl ihres Polynoms offensichtlich auf Teiler der Form 210 k+1 gehofft und damit auch Recht gehabt. Es sind sogar beide Teiler von F8 von der Gestalt 211 k + 1 , 11 man h¨atte also am besten das Polynom x2 + 1 verwendet. Es gilt 11 · 604944512477 + 1 ·
F8 = 2
2
11
· 45635566267264637582599393652151804972681268330878021767715 + 1
5.2.2 Aufwandsabsch¨ atzung Um die erwartete Laufzeit des Algorithmus absch¨ atzen zu k¨ onnen, nimmt Pollard in [Po2] an, dass sich die Folge der yi ≡ xi mod p wie eine zuf¨ allige Folge von Elementen aus Zp verh¨ alt. Sie wiederholt sich sp¨ atestens bei dem (p + 1) -ten Element yp . F¨ ur die L¨ ange l = l(p) der Periode gilt also 1 ≤ l ≤ p und f¨ ur die L¨ ange k = k(p) des aperiodischen Teils der Folge gilt 0 ≤ k ≤ p − 1 . F¨ ur ihre Summe gilt 1 ≤ h = k + l ≤ p . Die Wahrscheinlichkeit P (k) , dass die ersten k Folgenglieder paarweise k−1 i verschieden sind, ist i=1 1 − p . Sch¨ atzt man die pi in diesem Produkt k−1 i 1 k durch ihr arithmetisches Mittel k−1 alt man die f¨ ur i=1 p = 2p ab, so erh¨ nicht all zu großes k recht passable Absch¨ atzung k−1 k P (k) ≈ 1 − . 2p Sch¨atzt man dies mit Hilfe von (1 + n1 )n ≈ e weiter ab, so erh¨ alt man k(k − 1) . P (k) ≈ exp − 2p " Daraus liest man ab, dass P (k) ≈ 0.5 ist f¨ ur k ≈ 12 + 12 · 1 + 8 n(2)p ≈ √ √ 1.177 · p. Nach dieser Absch¨ atzung kann man nach O( p) Schritten mit einer Wahrscheinlichkeit von u ¨ber 0.5 mit einer ersten Wiederholung rechnen. F¨ ur die L¨ange l = l(p) der Periode und die L¨ ange k = k(p) des aperiodischen Teils der Folge gibt Pollard die Erwartungswerte 7 πp √ E(k(p)) = E(l(p)) − 1 = + O(1) = 0.6267 p + O(1) 8 an, was diese Untersuchung best¨ atigt.
Die kleineren Fermatschen Zahlen sind prim, die gr¨ oßeren Zahlen F9 , F10 und F11 sind
zusammengesetzt. Die Faktorisierung von F9 in seine 3 Primfaktoren mit Hilfe von bis zu 700 Rechnern und dem NFS dauerte etwa 4 Monate [LMP].
176
5 Faktorisierung ganzer Zahlen
Der Pollard-Algorithmus bricht nach r Iterationsschritten ab und gibt das Ergebnis d = ggT(xr − x2r , N ) aus, wobei k ≤ r < k + l und r ≡ 0 mod l ist. Als Erwartungswert f¨ ur r = r(p) gibt Pollard 7 π5 p √ E(r(p)) ≈ = 1.0308 p 288 √ an. Außerdem sch¨ atzt Pollard, dass r(p) < 12 p mit der Wahrscheinlichkeit √ 0.183 und r(p) > 2 p mit der Wahrscheinlichkeit 0.065 eintrifft. Diese Werte sowie die Erwartungswerte f¨ ur l(p) , k(p) und r(p) fand er bei einer Untersuchung der 100 gr¨ oßten Primzahlen unter 106 best¨ atigt. √ Man erwartet also im Mittel O( p) bzw. schlimmstenfalls O(p) Iterationen. Bei jedem bzw. jedem n -ten Iterationsschritt wird der ggT zweier Zahlen von der L¨ ange log N berechnet. Bei der Verwendung des euklidischen Algorithmus ist daf¨ ur ein Rechenaufwand von maximal O(log2 N ) zu veranschlagen. Dies dominiert den Aufwand f¨ ur die Multiplikationen und Additionen modulo N bei den Auswertungen von f . Die maximale zeitliche Komple√ xit¨at ist also O(p log2 N ) , die mittlere Komplexit¨ at dagegen O( p log2 N ) . √ 1 ur die Setzt man n := Lβ (N ) , so ergibt sich wegen p < N ∼ e 2 log N f¨ n maximale zeitliche Komplexit¨ at O(n2 e 2 ) bzw. f¨ ur die erwartete zeitliche Komplexit¨at n Op[d ← PolRho(N )](p, N ) n2 e 4 . All diese Absch¨ atzungen beruhen auf der unbewiesenen Annahme, dass sich die Folge der yi wie eine Zufalls-Folge in Zp verh¨ alt. E. Bach [Bac] untersuchte den Aufwand f¨ ur den Algorithmus realistischer in Abh¨ angigkeit √ von x0 , a und f (x) = x2 +a . Er gibt statt O( p) eine Erfolgswahrscheinlichkeit von Ω(log2 p)/p an .
5.3 Pollard-(p − 1) 5.3.1 Der Faktorisierungsalgorithmus Im Jahre 1974 ver¨ offentlichte J. M. Pollard in [Po1] seine (p − 1)-Methode. Mit der Grundidee dieser Faktorisierungsmethode hatten sich D. N. und D. H. Lehmer schon viele Jahre vor ihm besch¨ aftigt, aber auf den Rechenmaschinen ihrer Zeit konnte deren Effektivit¨ at noch nicht ausprobiert werden. Die Methode basiert auf dem folgenden bekannten Satz von Fermat: 5.3.1.1 Satz: (Fermat) Wenn p eine Primzahl ist und g eine zu p teilerfremde ganze Zahl, dann gilt g p−1 ≡ 1 mod p. Man w¨ahlt eine ganze Zahl k so, dass sie aus m¨ oglichst vielen kleinen Primzahlen zusammengesetzt ist, z.B. k = kgV(1, 2, ..., S) f¨ ur eine Schranke S > 0.
5.3 Pollard-(p − 1)
177
Diesen Wert erh¨ alt man, indem man f¨ ur alle m verschiedenen Primzahlen q1 < q2 < . . . < qm ≤ S jeweils die gr¨ oßte Primzahlpotenz Qi = qiαi ≤ S bestimmt. Es ist m k= Qi . i=1
Dann w¨ahlt man eine beliebige ganze Zahl g > 1 mit ggT(g, N ) = 1 . Wenn p ein Primteiler von N ist, f¨ ur den p − 1 ein Teiler von k ist, dann gilt mit dem Satz von Fermat g k ≡ 1 mod p . Also ist p Teiler von g k − 1 bzw. von g k − 1 mod N , und damit ist d = ggT(g k − 1 mod N, N ) ein (trivialer oder nichttrivialer) Teiler von N . Es ist nicht n¨ otig, k explizit auszumultiplizieren. Setzt man R0 = g Qi und berechnet f¨ ur i = 1, 2, . . . , m die Werte Ri = Ri−1 mod N , so erh¨ alt k man Rm = g mod N . Diese Potenzen modulo N lassen sich sehr schnell mit dem im vorigen Abschnitt angegebenen Algorithmus ModPot berechnen. Es seien pj ein Primteiler von N , und g ein Element der multiplikativen Gruppe Z∗pj mit ord(g) = sj . Dann ist sj Teiler der Gruppenordnung |Z∗pj | = pj − 1 , und es gilt g sj ≡ 1 mod pj . Der Primteiler pj erscheint genau dann als Teiler des Ergebnisses d , wenn g k ≡ 1 mod pj ist, also wenn sj ein Teiler von k ist pj |d ⇐⇒ ordZ∗p (g)|k . j
oßer ist die Je mehr Teiler die Gruppenordnung pj − 1 besitzt, desto gr¨ Wahrscheinlichkeit, dass sj wesentlich kleiner als pj − 1 ist und der Teiler pj von N auch bei relativ niedriger Schranke S gefunden werden kann. Pollard-(p − 1)-Algorithmus procedure PolP1(N, S) # Eingabe: N und ein S > 0 , R0 ← g mit g > 1 und ggT(g, N ) = 1 # Ausgabe: Faktor d von N (u.U d = N ) q1 < . . . < qm ← alle Primzahlen ≤ S # # for i from 1 to m do Bestimme αi bzw. Qi mit Qi = qiαi ≤ S und qi Qi > S . Ri ← ModPot(Ri−1 , Qi , N ) end do Return(ggT(Rm − 1, N )) end
Man erh¨alt die trivialen Ergebnisse d = 1 bzw. d = N , wenn die Ordnungen sj von g in den Gruppen Z∗pj f¨ ur keinen bzw. f¨ ur alle Primteiler pj von N Teiler von k sind. Es besteht daher nach einem trivialen Ergebnis die Chance, dass der Algorithmus mit einem anderen Wert f¨ ur g erfolgreicher ist.
178
5 Faktorisierung ganzer Zahlen
5.3.1.2 Beispiel: F¨ ur die ersten 10 Primzahlen pj > 400 , j = 1, . . . , 10 sind in der folgenden Tabelle die Faktorisierungen der Ordnungen pj − 1 der Gruppen Z∗pj angegeben und f¨ ur die Werte g = 2, 3, 5 die Faktorisierungen der Ordnungen ord (g) in diesen Gruppen. j 1 2 3 4 5 6 7 8 9 10
pj 401 409 419 421 431 433 439 443 449 457
Z∗p |
∗ ∗ ∗
∗ ∗
pj − 1 = | 24 · 52 23 · 3 · 17 2 · 11 · 19 22 · 3 · 5 · 7 2 · 5 · 43 24 · 33 2 · 3 · 73 2 · 13 · 17 26 · 7 23 · 3 · 19
j
∗ ∗ ∗ ∗ ∗ ∗
ord(2) 23 · 52 23 · 3 · 17 2 · 11 · 19 22 · 3 · 5 · 7 43 23 · 32 73 2 · 13 · 17 25 · 7 22 · 19
∗ ∗ ∗
∗ ∗
ord(3) 24 · 52 23 · 3 · 17 11 · 19 3·5·7 43 33 2 · 73 13 · 17 26 · 7 22 · 3 · 19
∗ ∗ ∗
∗ ∗ ∗
ord(5) 52 23 · 3 · 17 19 2·3·5·7 5 · 43 24 · 33 3 · 73 2 · 13 · 17 2·7 23 · 19
W¨ahlt man S = 20 , so ist k = 24 · 32 · 5 · 7 · 11 · 13 · 17 · 19. Die faktorisierten Ordnungen, die dieses k teilen, sind in der Tabelle mit einem Stern gekennzeichnet. F¨ ur die folgende Werte von N und g gibt der Algorithmus aus:
N1 N2 N3 N4 N5
= 409 · 433 = 177097 = 401 · 449 = 180049 = 419 · 421 = 176399 = 409 · 443 = 181187 = 401 · 439 = 176039
g=2 d = N1 d=1 d = N3 d = N4 d=1
g=3 d = 409 d=1 d = N3 d = N4 d=1
g=5 d = 409 d = 449 d = N3 d = N4 d=1
An den Beispielen von N1 und N2 kann man erkennen, dass der Algorithmus mit verschiedenen Werten g verschieden erfolgreich sein kann. F¨ ur N3 und N4 ist das Ergebnis immer trivial, da in beiden F¨ allen f¨ ur jeweils beide Primteiler die zugeh¨ orige Gruppenordnung pj − 1 Teiler von k ist. Im Fall von N3 kann der Teiler 421 gefunden werden, indem man die Schranke S absenkt und den Algorithmus noch einmal wiederholt: F¨ ur S = 10 ist beispielsweise k = 23 · 32 · 5 · 7 . Im Fall N4 nutzt auch ein Absenken von S nichts, weil beide Gruppenordnungen pj − 1 denselben gr¨ oßten Teiler 17 haben. Und im Fall N5 h¨ atte man den Teiler 401 mit einer h¨oheren Schranke S gefunden, z.B. mit S = 30 . F¨ ur den Fall, dass man das triviale Ergebnis N = 1 erhalten hat, schlagen J. M. Pollard und P. L. Montgomery in [Po1] und [Mon] eine relativ aufw¨andige zweite Stufe f¨ ur den Pollard-(p − 1)-Algorithmus vor, die mit Fourier-Transformationen arbeitet. Sie soll speziell solche Primteiler p von N finden, f¨ ur die p − 1 = uv ist, wobei u ein Teiler von k ist und v eine Primzahl zwischen S und einer gr¨ oßeren Schranke S .
5.4 Elliptic Curve Method (ECM)
179
In vorhergehenden Beispiel k¨ onnte mit einer solchen zweiten Stufe der Teiler 439 von N5 gefunden werden. Im Fall N2 w¨ urde sie dagegen keinen Erfolg bringen, da beide Gruppenordnungen keine solchen großen Primteiler zwischen S und S besitzen. Eine andere Variation l¨ auft einfach darauf hinaus, die Schranke S recht hoch zu w¨ahlen und den ggT mehrmals zwischendurch zu berechnen, anstatt nur einmal zum Schluß. Dies sollte aber auch nicht zu h¨ aufig geschehen, da ggT-Berechnungen verh¨ altnism¨ aßig zeitaufw¨ andig sind. In Maple wurde dies besonders geschickt implementiert. Dort ist die Schranke S = 2000 fest gew¨ ahlt. Dadurch kann bei den einzelnen Funktionsaufrufen die Zeit f¨ ur das Bestimmen der Primzahlen qi ≤ S und ihrer Potenzen qiαi gespart werden. Man hat jeweils mehrere Potenzen qiαi in einem Produkt Pl zusammengefaßt und diese 52 großen Produkte direkt in den Programmcode geschrieben. Pl Nach jeder Berechnung von Rl = Rl−1 wird d = ggT(Rl −1, N ) berechnet. Man bricht den Algorithmus ab, sobald f¨ ur ein l > 0 ein nichttriviales Ergebnis 1 < d < N auftritt. Erh¨ alt man jedoch d = N f¨ ur ein l > 0 , so geht man zur¨ uck zum letzten Wert Rl−1 und potenziert ihn dieses Mal in kleineren Schritten, n¨ amlich mit jedem einzelnen Primteiler von Pl , und berechnet dabei nach jeder Potenz den ggT . 5.3.2 Aufwandsabsch¨ atzung Die Anzahl m der Iterationen im Pollard-(p−1)-Algorithmus ist die Anzahl von Primzahlen kleiner oder gleich der Schranke S , also O( logS S ) . √ Die Werte Qi liegen alle in dem Intervall [ S, S] . Bei der Berechnung Qi von Ri−1 mod N mit dem Algorithmus ModPot werden log Qi = O(log S) Iterationsschritte durchgef¨ uhrt, in denen jeweils eine oder zwei Multiplikationen modulo N stattfinden. Insgesamt werden also O(log S logS S ) = O(S) Multiplikationen modulo N durchgef¨ uhrt. Damit gilt f¨ ur die maximale zeitliche Komplexit¨ at des Pollard-(p − 1)-Algorithmus◦ Op[d ← PolP1(N, S)](N, S) S log2 N ∼ S · n2 .
5.4 Elliptic Curve Method (ECM) 5.4.1 Pollard-(p − 1) und ECM Der im letzten Abschnitt angegebene Satz von Fermat lautet allgemeiner 5.4.1.1 Satz: (Fermat) Ist G eine endliche Gruppe mit der Ordnung ur jedes |G| = m und dem neutralen Element e , so ist g m = e f¨ g ∈ G . (Analog dazu m · g = e bei additiver Schreibweise.) ◦
Dabei h¨ angt S von n ab, wenn eine gewisse Erfolgschance vorgegeben wird.
180
5 Faktorisierung ganzer Zahlen
Es sei wieder p ein Primteiler von N . Bei dem Pollard-(p − 1)Algorithmus wurde dieser Satz auf die multiplikative Gruppe Z∗p angewandt. Die Ordnung dieser Gruppe ist p − 1 . Wenn g ∈ Z∗p und die Gruppenordnung p − 1 Teiler einer ganzen Zahl k ist, dann ist in dieser Gruppe g k gleich dem neutralen Element 1 . Deshalb ist p Teiler von ggT (g k − 1, N ) . Im Jahr 1987 ver¨ offentlichte H. W. Lenstra in [Le6] eine zu Pollard-(p−1) analoge Faktorisierungsmethode namens Elliptic Curve Method (ECM). Sie verwendet statt Z∗p eine additive Gruppe von Punkten auf einer zuf¨ alligen elliptischen Kurve E mit Koordinaten in Zp . Diese Gruppe E(Zp ) besitzt die Ordnung p + 1 − t , wobei t eine von E und p abh¨ angige ganze Zahl √ mit |t| ≤ 2 p ist. Das neutrale Element von E(Zp ) ist der Punkt (0 : 1 : 0) . Wenn die Gruppenordnung p + 1 − t die ganze Zahl k teilt, so gilt f¨ ur jeden Punkt P dieser Gruppe k · P = (0 : 1 : 0) . Auch bei ECM wird modulo N statt modulo p gerechnet. F¨ ur die dritte Koordinate Z von k · P gilt dann Z ≡ 0 mod p und mit ggT (Z, N ) l¨ asst sich ein Teiler von N finden. Pollard-(p − 1) versagt, wenn die Gruppenordnung p − 1 die Zahl k nicht teilt, etwa weil einer der Primteiler von p − 1 zu groß ist. Der Vorteil von ECM besteht darin, dass der Algorithmus bei einem Misserfolg mit einer anderen Kurve E wiederholt werden kann. Zu einer anderen elliptische Kurve geh¨ort auch ein anderer Wert t , so dass f¨ ur die Gruppenordnung p+1−t eine neue Chance besteht, aus kleinen Primzahlen zusammengesetzt zu sein. 5.4.2 Die Geometrie elliptischer Kurven 5.4.2.1 Definition:
F¨ ur die beiden Parameter a, b ∈ R gelte 4a3 + 27b2 = 0.
(5.1)
Die elliptische Kurve Ea,b sei definiert als die Menge aller Punkte (x, y) ∈ R2 , welche der folgenden Weierstraß-Gleichung gen¨ ugen y 2 = x3 + ax + b .
(5.2)
aren Punkt. Die implizite Die elliptische Kurve Ea,b besitzt keinen singul¨ Schreibweise von Ea,b ist F (x, y) = y 2 −x3 −ax−b = 0 . Ein Punkt (x0 , y0 ) dieser Kurve ist genau dann singul¨ ar, wenn beide partiellen Ableitungen Fx (x0 , y0 ) = Fy (x0 , y0 ) = 0 sind. = 0 Fx (x, y) = −3x2 − a = 0 ⇐⇒ 3x2 + a Fy (x, y) = 2y = 0 ⇐⇒ x3 + ax + b = 0 Die beiden Polynome 3x2 + a und x3 + ax + b haben genau dann eine gemeinsame Wurzel in C , wenn ihre Resultante gleich Null ist.
5.4 Elliptic Curve Method (ECM)
181
res(3x2 + a, x3 + ax + b) = 4a3 + 27b2 = 0 . aren Punkte. Wegen Bedingung (5.1) besitzt die Kurve Ea,b keine singul¨ Graphen elliptischer Kurven sehen etwa wie folgt aus:
E−3,3 : y 2 = x3 − 3x + 3
E−3,0 : y 2 = x3 − 3x
Die Kurve Ea,b besitzt in jedem Punkt eine eindeutig bestimmte Tangente. Der folgende Satz besagt, dass jede nicht-senkrechte Gerade, die eine solche elliptische Kurve in zwei Punkten schneidet, sie auch noch in einem dritten Punkt schneidet, wenn man den Ber¨ uhrungspunkt einer Tangente als doppelten Schnittpunkt z¨ ahlt. 5.4.2.2 Satz: Gegeben seien zwei Punkte P1 = (x1 , y1 ) und P2 = (x2 , y2 ) auf der elliptischen Kurve Ea,b mit (x1 , y1 ) = (x2 , −y2 ) . G sei die Gerade, die Ea,b in den beiden Punkten P1 und P2 schneidet bzw. ber¨ uhrt, sofern P1 = P2 ist. Dann gilt f¨ ur die Stei 2 gung λ von G 3x1 +a , f¨ ur x1 = x2 , 1 λ = y12y −y2 , f¨ u r x1 = x2 , x1 −x2 und der Punkt P3 = (x3 , y3 ) , definiert durch x3 = λ2 − x1 − x2 , y3 = λ(x3 − x1 ) + y1 = λ(x3 − x2 ) + y2 ist ein weiterer Schnittpunkt von G mit Ea,b . Beweis: Wenn x1 = x2 ist, so ist λ=
y1 − y 2 x1 − x2
die Steigung der Geraden G . Setzt man P1 und P2 jeweils in (5.2) ein und zieht die beiden Gleichungen voneinander ab, so erh¨ alt man y12 − y22 = x31 − x32 + a(x1 − x2 ) ⇒ (y1 − y2 )(y1 + y2 ) = (x1 − x2 )(x21 + x1 x2 + x22 + a).
Das l¨asst sich umformen in λ=
y1 − y 2 x2 + x1 x2 + x22 + a = 1 . x1 − x2 y 1 + y2
(∗)
182
5 Faktorisierung ganzer Zahlen
Wenn man nun P2 gegen P1 gehen l¨ asst, erh¨ alt man Fx (x1 , y1 ) 3x21 + a =− λ= 2y1 Fy (x1 , y1 ) als Steigung der Tangente G , die Ea,b in P1 = P2 ber¨ uhrt. Die Geradengleichung von G ist daher y = λx + µ . Es sei P3 = (x3 , y3 ) ebenfalls ein Schnittpunkt von G und Ea,b . Dann folgt aus (∗) f¨ ur die Punkte-Paare (P3 , P1 ) und (P3 , P2 ) . λ(y3 + y1 ) = x23 + x3 x1 + x21 + a, λ(y3 + y2 ) = x23 + x3 x2 + x22 + a. Voneinander abgezogen ergibt das λ(y1 − y2 ) = x3 (x1 − x2 ) + (x21 − x22 ). Wenn x1 = x2 ist, kann man durch x1 − x2 teilen und erh¨ alt dadurch λ2 = x3 + x1 + x2 . Es folgt x3 = λ2 − x1 − x2 . Setzt man P1 , P2 und P3 in die Geradengleichung ein, so erh¨ alt man y1 = λx1 + µ, y2 = λx2 + µ, y3 = λx3 + µ und daraus folgt y3 = λ(x3 − x1 ) + y1 = λ(x3 − x2 ) + y2 . F¨ ur x1 = x2 gilt y3 = λx3 + (y1 − λx1 ) und y33 = x33 + ax3 + b . Einsetzen der ersten Gleichung in die zweite und des oben f¨ ur diesen Fall berechneten λ liefert (x1 − x3 )2 · (−x41 + 4x3 x31 + 2x21 a + 8x1 b + 4x1 ax3 + 4x3 b − a2 ) = 0 4y12 mit den L¨osungen x1 = x3 oder wie im ersten Fall x3 = −
−x41 + 2x21 a + 8x1 b − a2 = λ2 − x1 − x2 . 4x31 + 4ax1 + 4b
E−3,3 : y 2 = x3 − 3x + 3
E−3,0 : y 2 = x3 − 3x
5.4 Elliptic Curve Method (ECM)
183
Wenn die Punkte (x1 , y1 ) und (x2 , y2 ) rationale Koordinaten besitzen, so gilt das also auch auch f¨ ur den dritten Schnittpunkt (x3 , y3 ) . F¨ ur den Faktorisierungsalgorithmus soll mit der Menge der rationalen Punkte von Ea,b eine Gruppe konstruiert werden. Als Verkn¨ upfung definiert man hierf¨ ur eine Addition, welche die zwei Punkte (x1 , y1 ) und (x2 , y2 ) auf den Punkt (x3 , −y3 ) abbildet, also auf den an der x -Achse gespiegelten dritten Schnittpunkt. In dem im Satz ausgeschlossenen Fall (x1 , y1 ) = (x2 , −y2 ) w¨ are die Gerade G senkrecht. Als dritten Schnittpunkt k¨ onnte man sich hier einen Punkt unendlich weit im Norden vorstellen, der von jeder senkrechten Geraden geschnitten wird. Dieser Punkt soll mit (∞, ∞) bezeichnet werden. 5.4.2.3 Definition: Es sei Ea,b (Q) die Menge aller rationalen Punkte auf der Kurve Ea,b vereinigt mit (∞, ∞) , also Ea,b (Q) = {(x, y); y 2 = x3 + ax + b und x, y ∈ Q} ∪ {(∞, ∞)}. Auf Ea,b (Q) sei eine Addition * Ea,b (Q) × Ea,b (Q) → Ea,b (Q), +: ((x1 , y1 ), (x2 , y2 )) → (x1 , y1 ) + (x2 , y2 ) definiert durch: (i) (x, y) + (∞, ∞) = (∞, ∞) + (x, y) = (x, y) f¨ ur alle (x, y) ∈ Ea,b (Q) . (ii) F¨ ur (x1 , y1 ) = (∞, ∞) und (x2 , y2 ) = (∞, ∞) ist * (∞, ∞), f¨ ur (x1 , y1 ) = (x2 , −y2 ), (x1 , y1 ) + (x2 , y2 ) = (x3 , y3 ), f¨ ur (x1 , y1 ) = (x2 , −y2 ), mit
x3 = λ2 − x1 − x2 , y3 = λ(x1 − x3 ) − y1 = λ(x2 − x3 ) − y2 ,
(3x2 +a) 1 f¨ ur (x1 , y1 ) = (x2 , y2 ), 1) λ = (y(2y 1 −y2 ) f¨ ur (x1 , y1 ) = (x2 , y2 ). (x1 −x2 )
Die Menge Ea,b (Q) bildet mit dieser Addition eine abelsche Gruppe (zum Beweis siehe etwa [Si1]). In dieser Gruppe ist (∞, ∞) das neutrale Element, das Inverse von (x, y) ist (x, −y) . Setzt man x = X/Z und y = Y /Z mit X, Y, Z ∈ Z , Z = 0 in Gleichung (5.2) ein und multipliziert beide Seiten mit Z 3 , so erh¨ alt man Y 2 Z = X 3 + aXZ 2 + bZ 3 .
(5.3)
184
5 Faktorisierung ganzer Zahlen
Jede ganzzahlige L¨ osung (X, Y, Z) ∈ Z3 dieser Gleichung, bei der Z = 0 ist, entspricht einem Punkt (x, y) ∈ Ea,b (Q) mit den rationalen Koordinaten x = X/Z und y = Y /Z , w¨ ahrend die L¨ osung (0, 1, 0) dem unendlichen Punkt (∞, ∞) ∈ Ea,b (Q) zugeordnet werden kann. Zwei L¨ osungen (X, Y, Z) und (X , Y , Z ) repr¨ asentieren genau dann denselben Punkt in Ea,b (Q) , wenn es ein c ∈ Z \ {0} gibt, so dass (X , Y , Z ) = (cX, cY, cZ) . Berechnet man die Koordinaten von (X, Y, Z) jeweils modulo einer Primzahl p und definiert auch die Addition entsprechend, so erh¨ alt man eine Gruppe mit endlicher Ordnung, welche nun definiert werden soll. 5.4.2.4 Definition: Es sei p > 3 eine Primzahl. Zwei Tripel (X, Y, Z) und (X , Y , Z ) aus Z3p \ (0, 0, 0) werden ¨aquivalent genannt, wenn es ein c ∈ Z∗p gibt, so dass (X , Y , Z ) = (cX, cY, cZ) ist. ¨ Die Aquivalenzklasse, die (X, Y, Z) enth¨ alt, wird mit (X : Y : Z) ¨ bezeichnet, und die Menge P2 (Zp ) aller dieser Aquivalenzklassen wird als projektive Ebene u ¨ber Zp bezeichnet. F¨ ur a, b ∈ Zp mit 4a3 + 27b2 ≡ 0 mod p sei Ea,b (Zp ) definiert durch Ea,b (Zp ) = {(X : Y : Z) ∈ P2 (Zp ) : Y 2 Z ≡ X 3 + aXZ 2 + bZ 3 mod p}. Ea,b (Zp ) wird auch als elliptische Kurve modulo p bezeichnet mit den Punkten (X : Y : Z) . Insbesondere nennt man O = (0 : 1 : 0) ∈ Ea,b (Zp ) den Nullpunkt der Kurve. Der Punkt O = (0 : 1 : 0) ist der einzige in Ea,b (Zp ) , bei dem die dritte Koordinate Z = 0 ist. In jeder anderen Klasse (X : Y : Z) ∈ Ea,b (Zp ) gibt es genau einen Repr¨ asentanten (X : Y : 1) , denn Z ∈ Z∗p und es gilt −1 (X : Y : Z) = (XZ : Y Z −1 : 1) = (X : Y : 1) . asentanten erf¨ ullen die KonDie Koordinaten X und Y dieses Repr¨ 2 3 gruenz Y ≡ X + aX + b mod p . Hierbei ist mit Z −1 das Inverse von Z in Z∗p gemeint. Mit der Existenz eines solchen Repr¨ asentanten (X : Y : 1) in jeder Klasse außer O ist folgende Definition einer Addition m¨ oglich: 5.4.2.5 Definition:
Auf der Menge Ea,b (Zp ) sei eine Addition * Ea,b (Zp ) × Ea,b (Zp ) → Ea,b (Zp ), +: (P, Q) → P + Q
definiert durch: (i) P + O = O + P = P f¨ ur alle P ∈ Ea,b (Zp ) . (ii) F¨ ur P = (X1 : Y1 : 1) und Q = (X2 : Y2 : 1) mit P, Q = O ist * O f¨ ur (X1 : Y1 : 1) = (X2 : −Y2 : 1), P +Q = R = (X3 : Y3 : 1) sonst mit X3 , Y3 , λ ∈ Zp bestimmt durch
5.4 Elliptic Curve Method (ECM)
X3 ≡ (λ2 − X1 − X2 ) mod p,
*
λ≡
(3X12
185
Y3 ≡ (λ(X1 − X3 ) − Y1 ) mod p,
−1
+ a)(2Y1 ) mod p (X1 : Y1 : 1) = (X2 : Y2 : 1), sonst. (Y1 − Y2 )(X1 − X2 )−1 mod p
Bei der Definition von λ ist mit (X1 − X2 )−1 bzw. (2Y1 )−1 wiederum das jeweilige Inverse in Z∗p gemeint. Analog zu der Gruppe Ea,b (Q) bildet auch die Menge Ea,b (Zp ) mit der darauf definierten Addition eine abelsche Gruppe (siehe [Si1]). Das neutrale Element dieser Gruppe ist O = (0 : 1 : 0) , und das Inverse von (X : Y : Z) ist −(X : Y : Z) = (X : −Y : Z) . Zur Ordnung dieser Gruppe hat Helmut Hasse im Jahre 1934 den folgenden Satz bewiesen (f¨ ur einen Beweis siehe etwa [Si1]): 5.4.2.6 Satz:
(Hasse) Die Gruppe Ea,b (Zp ) hat die Ordnung |Ea,b (Zp )| = p + 1 + t ,
√ wobei t ∈ N von a , b und p abh¨angig ist mit |t| < 2 p . Weiter bewies William Waterhouse 1969 in [Wat]: 5.4.2.7 Satz: Wenn p > 3 eine Primzahl ist und t eine beliebige ganze √ Zahl mit |t| < 2 p , dann existieren Parameter a, b ∈ Zp , so dass |Ea,b (Zp )| = p + 1 + t. Außerdem sind die Ordnungen der elliptischen Kurven modulo p √ √ ziemlich gleichm¨aßig u ¨ ber das Intervall ]p + 1 − 2 p, p + 1 + 2 p[ verteilt. 5.4.2.8 Beispiel: Die Punkte mit Z = 1 der elliptische Kurve E−3,0 (Z5 ) sind gegeben durch die Gleichung Y 2 ≡ X 3 −3X mod 5 . Die einzige L¨osung dieser Gleichung ist X = 0 = Y , d.h. der Punkt (0 : 0 : 1) . Ansonsten liegt nur noch der Punkt (0 : 1 : 0) auf der Kurve, es gilt also |E−3,0 (Z5 )| = 2 und damit t = −4 . √ Wegen 2 5 ≈ 4.47 ist dies der kleinstm¨ ogliche Wert f¨ ur t und 2 der kleinste Wert f¨ ur |Ea,b (Z5 )| . Die Kurve E−3,3 (Z5 ) besteht dagegen aus den 7 Punkten (1 : 1 : 1) , (1 : 4 : 1) , (2 : 0 : 1) , (3 : 1 : 1) , (3 : 4 : 1) , (4 : 0 : 1) , (0 : 1 : 0) (f¨ ur Z = 1 gilt Y 2 ≡ X 3 − 3X + 3 mod 5 ; zu den L¨osungen hiervon kommt noch der Punkt (0 : 1 : 0) dazu), d.h. es ist t = 1 . 5.4.3 Multiplikation von Kurvenpunkten mit Skalaren F¨ ur einen Punkt P ∈ Ea,b (Q) bzw. P ∈ Ea,b (Zp ) und eine nat¨ urliche Zahl n ∈ N sei der Punkt n · P ∈ Ea,b (Q) bzw. n · P ∈ Ea,b (Zp ) wie u ¨blich bestimmt durch n · P = P + . . . + P (n-mal) .
186
5 Faktorisierung ganzer Zahlen
Ist k ein Vielfaches der Gruppenordnung m = |Ea,b (Zp )| , so folgt mit dem Satz von Fermat k · P = O f¨ ur jeden Punkt P ∈ Ea,b (Zp ) . F¨ ur die Berechnung von n · P soll nun eine schnelle Methode gefunden werden. 5.4.3.1 Satz:
F¨ ur (x1 , y1 ) ∈ Ea,b (Q) und jede Zahl n ∈
(xn , yn ) = n · (x1 , y1 ) = (x1 , y1 ) + . . . + (x1 , y1 )
N
sei (n- mal) .
Dann ist (x2i , y2i ) = (xi , yi ) + (xi , yi ) und (x2i+1 , y2i+1 ) = (xi , yi ) + (xi+1 , yi+1 ) f¨ ur ein bestimmtes i ∈ . Ist (xi , yi ) = (∞, ∞) und yi = 0 , so gilt
N
x2i =
(x2i − a)2 − 8bxi . 4(x3i + axi + b)
(5.4)
Sind (xi , yi ), (xi+1 , yi+1 ) = (∞, ∞) sowie x1 = 0 und xi = xi+1 , so gilt (a − xi xi+1 )2 − 4b(xi + xi+1 ) x2i+1 = . (5.5) x1 (xi − xi+1 )2 Beweis: Wegen yi = 0 ist (xi , yi ) = (xi , −yi ) . Damit folgt Gleichung (5.4) direkt aus der Definition der Addition: (3x2i + a)2 − 2xi (2yi )2 (3x2i + a)2 − 2xi · 4(x3i + axi + b) (x2 − a)2 − 8bxi = = i 3 . 3 4(xi + axi + b) 4(xi + axi + b)
x2i = λ2 − 2xi =
Unter den f¨ ur (5.5) angegebenen Voraussetzungen gilt x2i+1 =
(yi − yi+1 )2 − xi − xi+1 . (xi − xi+1 )2
Daraus erh¨alt man x2i+1 (xi − xi+1 )2 = (yi − yi+1 )2 − (xi + xi+1 )(xi − xi+1 )2 = = −2yi yi+1 + 2b + (a + xi xi+1 )(xi + xi+1 ).
(5.6)
Wegen xi = xi+1 ist auch (x1 , y1 ) = (xi+1 , yi+1 ) + (xi , −yi ) = (∞, ∞) . Analog zu (5.6) gilt daher x1 (xi − xi+1 )2 = 2yi yi+1 + 2b + (a + xi xi+1 )(xi + xi+1 ).
(5.7)
Multipliziert man Gleichung (5.6) mit (5.7), so ergibt das x1 x2i+1 (xi − xi+1 )4 = = (2b + (a + xi xi+1 )(xi + xi+1 ))2 − 4(x3i + axi + b)(x3i+1 + axi+1 + b) = = ((a − xi xi+1 )2 − 4b(xi + xi+1 ))(xi − xi+1 )2 .
5.4 Elliptic Curve Method (ECM)
187
Wenn man beide Seiten durch x1 (xi − xi+1 )4 teilt, folgt daraus f¨ ur x1 = 0 die zweite Gleichung der Behauptung. Die f¨ ur Ea,b (Q) gezeigten Formeln lassen sich auf Ea,b (Zp ) u ¨bertragen. Da man bei der Faktorisierung von N im Grunde nur an der dritten Koordinate des Punktes k · P interessiert ist, ist es vollkommen ausreichend, wenn im folgenden Satz nur Formeln f¨ ur die erste und die dritte Koordinate angegeben werden.
N
5.4.3.2 Satz: F¨ ur (X1 : Y1 : Z1 ) ∈ Ea,b (Zp ) und jede Zahl n ∈ sei (Xn : Yn : Zn ) := n · (X1 : Y1 : Z1 ) . Ist Yi ≡ 0 mod p f¨ ur i ∈ , so gilt X2i ≡ (Xi2 − aZi2 )2 − 8bXi Zi3 mod p, Z2i ≡ 4Zi (Xi3 + aXi Zi2 + bZi3 ) mod p.
N
(5.8)
−1 mod p gilt F¨ ur X1 ≡ 0 mod p und Xi Zi−1 ≡ Xi+1 Zi+1
X2i+1 ≡ Z1 [(Xi Xi+1 − aZi Zi+1 )2 − 4bZi Zi+1 (Xi Zi+1 + Xi+1 Zi )] mod p, (5.9) Z2i+1 ≡ X1 (Xi+1 Zi − Xi Zi+1 )2 mod p. Beweis: (Xi : Yi : Zi ) , (Xj : Yj : Zj ) und deren Summe (Xk : Yk : Zk ) seien Punkte aus Ea,b ( p ) \ {O} . Dann gibt es in Ea,b ( ) \ {(∞, ∞)} Xj Yj Yi i entsprechende Punkte ( X Zi , Zi ) und ( Zj , Zj ) mit der Summe (Zi+j = 0) Xj Yj Xi+j Yi+j Xi Yi + = mit Xi+j , Yi+j , Zi+j ∈ , , , , Zi Zi Zj Zj Zi+j Zi+j
Z
Q
Z
und es gilt (Xk : Yk : Zk ) = (Xi+j mod p : Yi+j mod p : Zi+j mod p) . F¨ ur (Xi : Yi : Zi ) = O und Yi ≡ 0 mod p folgen daher die Formeln (5.8) aus (5.4): i (( Xi )2 − a)2 − 8b( X X2i (Xi2 − aZi2 )2 − 8bXi Zi3 Zi ) = = ZiXi 3 . X i 4Zi (Xi3 + aXi Zi2 + bZi3 ) Z2i 4(( Zi ) + a( Zi ) + b)
Aber auch f¨ ur (Xi : Yi : Zi ) = O liefern diese Formeln das richtige Ergebnis X2i = Z2i = 0 . Unter den Voraussetzungen (Xi : Yi : Zi ), (Xi+1 : −1 Yi+1 : Zi+1 ) = O , X1 ≡ 0 mod p und Xi Zi−1 ≡ Xi+1 Zi+1 mod p folgen die Formeln (5.9) aus (5.5): Xi+1 Xi i Xi+1 2 (a − X X2i+1 Zi Zi+1 ) − 4b( Zi + Zi+1 ) = = Xi+1 2 X1 Xi Z2i+1 Z1 ( Zi − Zi+1 ) =
Z1 [(Xi Xi+1 − aZi Zi+1 )2 − 4bZi Zi+1 (Xi Zi+1 + Xi+1 Zi )] . X1 (Xi+1 Zi − Xi Zi+1 )2
In den F¨allen (Xi : Yi : Zi ) = O oder (Xi+1 : Yi+1 : Zi+1 ) = O erh¨ alt man ebenfalls das richtige Ergebnis X2i+1 ≡ Z2i+1 ≡ 0 mod p .
188
5 Faktorisierung ganzer Zahlen
F¨ ur P1 = (X1 : Y1 : Z1 ) = O sollen die Punkte Pn = (Xn : Yn : Zn ) = n · P1 f¨ ur n = 2, 3, . . . mit den Formeln (5.8) und (5.9) berechnet werden. Die ersten Formeln gelten nicht f¨ ur Yi ≡ 0 mod p , und die zweiten −1 nicht f¨ ur X1 ≡ 0 mod p bzw. Xi Zi−1 ≡ Xi+1 Zi+1 mod p . Welche Fehler und Folgefehler treten auf, wenn man sie trotzdem anwendet? Aus Yi ≡ 0 mod p folgt P2i = O . Das richtige Ergebnis w¨ are also in diesem Fall X2i ≡ Z2i ≡ 0 mod p . Formel (5.8) liefert den korrekten Wert f¨ ur Z2i , aber m¨oglicherweise einen falschen Wert f¨ ur X2i (Xi3 + aXi Zi2 + 3 2 bZi ≡ Yi Zi ≡ 0 mod p aus der Kurvengleichung). −1 mod p bedeutet wegen der Symmetrie der zuXi Zi−1 ≡ Xi+1 Zi+1 −1 mod p . Wegen Pi = Pi+1 grundeliegenden Kurve Yi Zi−1 ≡ ±Yi+1 Zi+1 folgt P2i+1 = O . Formel (5.9) liefert hier ebenfalls den richtigen Wert Z2i+1 ≡ 0 mod p , aber einen m¨ oglicherweise falschen Wert f¨ ur X2i+1 . Diese beiden F¨ alle bieten f¨ ur die weiteren Berechnungen die gleiche Ausgangssituation. F¨ ur einen Punkt Pi = O rechnet man mit richtigem Zi ≡ 0 mod p und eventuell falschem Xi . Bei Anwendung der Formeln (5.8) erh¨alt man als Folge genau die selbe Situation. F¨ ur P2i = O ist Z2i ≡ 0 mod p richtig und X2i eventuell falsch. ur Pi = O und richtigen Werten f¨ ur Wendet man bei falschem Xi f¨ Pi+1 die Formeln (5.9) an, so erh¨ alt man 2 X2i+1 ≡ Z1 Xi2 Xi+1 mod p
und
2 Z2i+1 ≡ X1 Xi2 Zi+1 mod p .
−1 −1 Aus Pi = O folgt P2i+1 = Pi+1 = P1 bzw. X2i+1 Z2i+1 ≡ Xi+1 Zi+1 ≡ −1 X1 Z1 mod p . Wegen −1 2 −1 2 2 )(X1 Xi2 Zi+1 )−1 ≡ (Xi+1 Zi+1 ) (X1 Z1−1 )−1 ≡ Xi+1 Zi+1 mod p (Z1 Xi2 Xi+1
liefern die Formeln (5.9) also trotz falschem Xi die richtigen Werte f¨ ur X2i+1 und Z2i+1 . Analog l¨ asst sich dasselbe f¨ ur den Fall Pi+1 = O zeigen. Nun bleibt noch zu untersuchen, welche Auswirkung X1 ≡ 0 mod p hat f¨ ur P1 = O . F¨ ur P2 liefert (5.8) die richtigen Werte X2 ≡ a2 Z14 mod p
und
Z2 ≡ 4bZ14 mod p .
Mit (5.9) erh¨alt man daraus die m¨ oglicherweise falschen Werte X3 ≡ Z13 (a2 Z22 − 4bZ2 X2 ) ≡ 0 mod p
und
Z3 ≡ 0 mod p .
Ist aber erst einmal Xi ≡ Zi ≡ 0 oder Xi+1 ≡ Zi+1 ≡ 0 mod p f¨ ur irgendein i erreicht, so sind auch alle folgenden, mit den Formeln (5.8) und (5.9) daraus berechneten Werte X2i ≡ Z2i ≡ X2i+1 ≡ Z2i+1 ≡ 0 mod p .
5.4 Elliptic Curve Method (ECM)
189
5.4.3.3 Beispiel: Yi 2 Zi ≡ Xi 3 + 4Xi Zi 2 mod 5 i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Pi Xi Zi (2 : 1 : 1) 2 1 (0 : 0 : 1) 0 4 (2 : 4 : 1) 1 3 (0 : 1 : 0) 1 ∗ 0 (2 : 1 : 1) 4 2 (0 : 0 : 1) 0 4 (2 : 4 : 1) 1 3 (0 : 1 : 0) 1 ∗ 0 (2 : 1 : 1) 1 3 (0 : 0 : 1) 0 4 (2 : 4 : 1) 4 2 (0 : 1 : 0) 1 ∗ 0 (2 : 1 : 1) 4 2 (0 : 0 : 1) 0 4 (2 : 4 : 1) 1 3 (0 : 1 : 0) 1 ∗ 0
Yi 2 Zi ≡ Xi 3 + 2Xi Zi 2 + Zi 3 mod 5 i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Pi Xi Zi (0 : 4 : 1) 0 1 (1 : 2 : 1) 4 4 (3 : 2 : 1) 0 ∗ 0 ∗ (3 : 3 : 1) 3 1 (1 : 3 : 1) 0 ∗ 0 ∗ (0 : 1 : 1) 0 0 ∗ (0 : 1 : 0) 0 0 (0 : 4 : 1) 0 1 (1 : 2 : 1) 0 ∗ 0 ∗ (3 : 2 : 1) 0 ∗ 0 ∗ (3 : 3 : 1) 0 ∗ 0 ∗ (1 : 3 : 1) 0 ∗ 0 ∗ (0 : 1 : 1) 0 0 ∗ (0 : 1 : 0) 0 0 ∗ (0 : 4 : 1) 0 0 ∗ (1 : 2 : 1) 4 4
Die beiden Tabellen zeigen f¨ ur P1 = (2 : 1 : 1) ∈ E4,0 (Z5 ) bzw. P1 = (0 : 4 : 1) ∈ E2,1 (Z5 ) jeweils die Vielfachen Pi , wie sie aus Definition der Addition folgen, sowie daneben die Werte Xi und Zi , wie man sie mit den Formeln (5.8) und (5.9) erh¨ alt. Die falschen Werte sind durch Sternchen gekennzeichnet. Der Punkt P1 = (2 : 1 : 1) ∈ E4,0 (Z5 ) hat die Ordnung 4 . Daher ist jeder vierte Wert P4k = O . Wegen Y2 = 0 erh¨ alt man einen falschen Wert f¨ ur X4 und als Folgefehler falsche Werte f¨ ur alle weiteren X4k . Die Ordnung von P1 = (0 : 4 : 1) ∈ E2,1 (Z5 ) ist 7. Wegen X1 = 0 liefert (5.9) die falschen Werte X3 = Z3 = 0 , und als Folge davon erh¨ alt man f¨ ur alle weiteren i > 3 ebenfalls Xi = Zi = 0 , unabh¨angig davon, ob dies richtig oder falsch ist. Ausnahme sind hierbei die Werte f¨ ur i = 2k , k ∈ , da bei deren Berechnung ausschließlich (5.8) verwendet wird.
N
5.4.4 Der Faktorisierungsalgorithmus Es sei p > 3 ein Primteiler von N . Da p nicht bekannt ist, k¨ onnen die Koordinaten von n · (X1 : Y1 : Z1 ) = (Xn : Yn : Zn ) nur modulo N berechnet werden. Man verwendet analog zum vorhergehenden Satz die Duplikationsformeln 2 2 3 X2i ≡ (Xi − aZi )2 − 8bXi Zi mod N, (5.10) 3 2 3 ≡ 4Zi (Xi + aXi Zi + bZi ) mod N, Z2i
190
5 Faktorisierung ganzer Zahlen
bzw. die Additionsformeln ≡ Z1 [(Xi Xi+1 − aZi Zi+1 )2 − 4bZi Zi+1 (Xi Zi+1 + Xi+1 Zi )] mod N, X2i+1 ≡ X1 (Xi+1 Zi − Xi Zi+1 )2 mod N. (5.11) Z2i+1
Dann gilt f¨ ur j = 2i, 2i + 1 unter den im letzten Satz genannten Voraussetzungen Xj ≡ Xj mod p und Zj ≡ Zj mod p. Missachtet man diese Voraussetzungen, so kann schlimmstenfalls gelten Xj ≡ Xj mod p
und Zj ≡ 0 mod p .
Wenn Zj ≡ 0 mod p ist, entweder weil ein Fehler aufgetreten ist oder wegen (Xj : Yj : Zj ) = (0 : 1 : 0) ∈ Ea,b (Zp ) , dann ist p Teiler von ggT (Zj , N ) . Wie bei Pollard-(p − 1) w¨ ahlt man eine ganze Zahl k , die aus m¨ oglichst vielen kleinen Primzahlen zusammengesetzt ist, etwa k = kgV(1, 2, . . . , S) f¨ ur eine bestimmte Schranke S . Wenn k ein Vielfaches der Gruppenordnung von Ea,b (Zp ) ist, dann gilt k · (X1 : Y1 : Z1 ) = (Xk : Yk : Zk ) = (0 : 1 : 0) mit dem Satz von Fermat. Bei entsprechender Berechnung modulo N ist in diesem Fall ggT (Zk , N ) mit großer Wahrscheinlichkeit ein nichttrivialer Teiler von N . Multiplikation mit Skalaren auf elliptischen Kurven
Z
procedure MulSkal(a, b, n, X, Z, N ) # Eingabe: a, b, n, X, Z, N ∈ , # n = (1 , n0 , . . . , n−1 )2 X1 ← X; Z1 ← Z; i ← 1 # Ausgabe: (Xn : Zn ) = n ∗ (X : Z) Berechne X2 und Z2 gem¨ aß (5.10) for j from 2 to do if n−j =0 then Berechne X2i , Z2i gem¨ aß (5.10) Berechne X2i+1 , Z2i+1 gem¨ aß (5.11) i ← 2i else Berechne X2i+1 , Z2i+1 gem¨ aß (5.11) Berechne X2i+2 , Z2i+2 gem¨ aß (5.10) i ← 2i + 1 end if end do Return (Xn , Zn ) end
Der Algorithmus MulSkal berechnet die X - und Z -Koordinaten von k · (X : Y : Z) mit den Duplikations- und Additionsformeln. Die Y Koordinaten werden dazu nicht ben¨ otigt. Daher sei der durch X und Z repr¨asentierte Punkt mit (X : Z) bezeichnet und die skalaren Vielfachen mod N mit n ∗ (X : Z) . Dadurch k¨ onnen auch die (mod N ) von (mod p ) unterscheidenden Striche bei Xi , X2i , . . . weggelassen werden.
5.4 Elliptic Curve Method (ECM)
191
5.4.4.1 Beispiel: Bei der Multiplikation des Punktes (Xn : Zn ) mit n = 37 = (1, 1, 0, 1, 0, 0, 1)2 berechnet MulSkal nacheinander die Werte X1 , Z 1 , X2 , Z 2 , X4 , Z4 , X9 , Z 9 , X18 , Z18 , X37 , Z37 , → → → → → X2 , Z 2 , X3 , Z 3 , X5 , Z 5 , X10 , Z10 , X19 , Z19 , X38 , Z38 .
Nun kann der Faktorisierungsalgorithmus formuliert werden. Wie bei Pollard-(p − 1) wird eine Schranke S gew¨ ahlt und f¨ ur alle m verschiedenen Primzahlen q1 < q2 < . . . < qm ≤ S jeweils die gr¨ oßte Primzahlpotenz Qi = qiαi ≤ S bestimmt. Dann ist k=
m
Qi = kgV(1, 2, . . . , S).
i=1
Auch hier muss k nicht direkt ausmultipliziert werden. Man erh¨ alt k ∗ (X : Z) durch sukzessive Berechnung von Qm ∗ (. . . (Q2 ∗ (Q1 ∗ (X : Z) )) . . .) . Wie bereits erw¨ ahnt, besteht der wesentliche Vorteil gegen¨ uber dem Pollard-(p − 1)-Algorithmus darin, dass zu verschiedenen Kurven Eaj ,bj , festgelegt durch verschiedene Parameter aj , bj , sehr wahrscheinlich auch verschiedene Gruppenordnungen |Eaj ,bj (Zp )| geh¨ oren, welche ziemlich √ √ gleichm¨aßig auf das Intervall ]p + 1 − 2 p, p + 1 + 2 p[ verteilt sind. F¨ uhrt man die Multiplikationen mit k also auf mehreren Kurven parallel aus, so wird dadurch die Wahrscheinlichkeit, dass eine der Gruppenordnungen k teilt, wesentlich erh¨ oht. 5.4.4.2 Beispiel: Pollard-(p−1) kann die Zahl N = 197111 = 439·449 nur mit einer relativ hoch gew¨ ahlten Schranke S faktorisieren. Wegen 439 − 1 = 2 · 3 · 73 und 449 − 1 = 26 · 7 findet dieser Algorithmus f¨ ur einige g (etwa g = 3 ) den Teiler 449 nur f¨ ur S ≥ 64 . Die folgende Tabelle enth¨ alt f¨ ur dieses N die Anfangspunkte und Parameter von 6 zuf¨ allig erzeugten elliptischen Kurven. So wurden z.B. f¨ ur die erste Kurve die Punktkoordinaten X = 107012 und Y = 39043 sowie der Kurvenparameter a = 88032 zuf¨ allig aus ZN gezogen. Daraus wurde b ≡ Y 2 − X 3 − aX mod N = 4864 ermittelt. Reduziert man die Werte X, Y, a, b modulo 449 , so sieht man, dass der Anfangspunkt (X : Y : 1) dem Punkt (150 : 429 : 1) in der Gruppe E28,374 (Z449 ) entspricht. Dieser Punkt hat in seiner Gruppe die Ordnung 476 = 22 · 7 · 17 . Der Teiler 449 kann also mit ECM gefunden werden, wenn man die Schranke S ≥ 17 w¨ ahlt. F¨ ur S = 20 ist z.B. k = 24 · 32 · 5 · 7 · 11 · 13 · 17 · 19 . Dieses k wird von der Ordnung von (150 : 429 : 1) ∈ E28,374 (Z449 ) geteilt. Bei Reduktion mod 439 erh¨ alt man den Punkt (335 : 411 : 1) ∈ E232,35 (Z449 ) . Er hat in seiner Gruppe die Ordnung 448 = 26 · 7 .
192
5 Faktorisierung ganzer Zahlen
j mod X Y a b ord((X : Y : 1)) S 1 N 107012 39043 88032 4864 449 150 429 28 374 476 = 22 · 7 · 17 17 439 335 411 232 35 448 = 26 · 7 64 2 N 154952 54164 35673 56241 449 47 284 202 116 222 = 2 · 3 · 37 37 439 424 167 114 49 92 = 22 · 23 23 3 N 91435 112406 11963 196411 449 288 156 289 198 67 = 67 67 439 123 22 110 178 450 = 2 · 32 · 52 25 4 N 181455 185914 125994 80967 449 59 28 274 147 485 = 5 · 97 97 439 148 217 1 191 461 = 461 461 5 N 171552 29475 7468 50855 449 34 290 284 118 109 = 109 109 439 342 62 5 370 105 = 3 · 5 · 7 7 6 N 74092 38068 23995 175606 449 7 352 198 47 19 = 19 19 439 340 314 289 6 472 = 23 · 59 59
Der Teiler 439 kann also nur mit einer Schranke S ≥ 64 gefunden werden, dann aber fr¨ uher als der Teiler 449 , weil er bereits nach der Multiplikation mit Q1 ·Q2 ·Q3 ·Q4 = 26 ·33 ·52 ·72 in ggT (Z4 , N ) auftritt. Arbeitet man auf allen 6 Kurven parallel, so findet man den Teiler 439 bereits f¨ ur die Schranke S ≥ 7 mit der 5. Kurve. Nach Satz dem Satz von Hasse gilt f¨ ur die Gruppenordnungen 408 ≤ |Ea,b (Z449 )| ≤ 492
und
399 ≤ |Ea,b (Z439 )| ≤ 481.
Die Ordnungen der Punkte sind Teiler der Gruppenordnungen. So hat etwa bei der zweiten Kurve der Punkt (47 : 284 : 1) die Ordnung 222 . Die Ordnung der Gruppe E202,116 (Z449 ) ist daher 444 . Als Variation schl¨ agt Peter L. Montgomery in [Mon] eine alternative Parametrisierung der elliptischen Kurven vor, die auch in Maple verwendet wird. F¨ ur By 2 = x3 + Ax2 + x statt y 2 = x3 + ax + b verwendet man die Duplikationsformeln X2n ≡ (Xn2 − Zn2 )2 mod N, Z2n ≡ 4Xn Zn (Xn2 + AXn Zn + Zn2 ) mod N, und die Additionsformeln Xm+n ≡ Zm−n (Xm Xn − Zm Zn )2 mod N, Zm+n ≡ Xm−n (Xm Zn − Zm Xn )2 mod N, f¨ ur m · P = n · P . Der Vorteil ist, dass man bei der Auswertung dieser Formeln etwas weniger Additionen und Multiplikationen ben¨ otigt als bei der Auswertung der fr¨ uher vorgestellten Duplikations- und Additionsformeln.
5.4 Elliptic Curve Method (ECM)
193
Die Elliptic Curve Method“ ”
procedure ECM(N, S, h) # Eingabe: N , Schranke S und # Anzahl h der Kurven j ← 1; d ← N # Ausgabe: Faktor d von N while j ≤ h and d = N do # (u.U d = N ) W¨ ahle zuf¨ allige aj ∈ N und Xj , Yj ∈ N \ {0} bj ← Yj2 − Xj3 − aj Xj mod N d ← ggT(4a3j + 27b2j , N ) j ←j+1 end do if d < N then Return (d) else Xj,0 ← Xj , Zj,0 ← 1 end if Es seien q1 < . . . < qm alle m verschiedenen Primzahlen ≤ S for i from 1 to m do Bestimme Qi und αi mit Qi = qiαi und Qi ≤ S < qi Qi for j from 1 to h do (Xj,i , Zj,i ) ← MulSkal(aj , bj , Qi , Xj,i−1 , Zj,i−1 , N ) end do h Zi ← j=1 Zj,i mod N d ← ggT(Zi , N ) if 1 < d < N then Return (d) end if end do Return (d) end
Z
Z
5.4.5 Aufwandsabsch¨ atzung H. W. Lenstra hat in [Le6] die asymptotische erwartete Laufzeit seines Faktorisierungs-Algorithmus ECM abgesch¨ atzt. Die Analyse betrachtet nicht nur eine leicht abgewandelte Form des bisher vorgestellten Algorithmus, sondern baut auch auf unbewiesenen aber plausiblen zahlentheoretischen Annahmen auf. Um einen Vergleich mit den anderen Methoden zu haben, wird Lenstras Vorgehen zur Aufwandsabsch¨ atzung kurz wiedergegeben. Die von ihm untersuchte Version von ECM verwendet nicht die Duplikations- und Additionsformeln in der Routine MulSkal, sondern addiert die Kurvenpunkte direkt mit den Formeln aus der Definition (aber mod N ). Dabei treten die Kurvenpunkte nur in der Form (X : Y : 1) oder (0 : 1 : 0) auf.
194
5 Faktorisierung ganzer Zahlen
Bei diese Variante m¨ ussen bei der Addition der Punkte P1 + P2 = P3 f¨ unf verschiedene F¨ alle unterschieden werden: 1. Fall: P1 = O : Setze P3 = P2 . 2. Fall: P2 = O : Setze P3 = P1 . In den anderen F¨ allen ist P1 = (X1 : Y1 : 1) = O und P2 = (X2 : Y2 : 1) = O : 3. Fall: X1 ≡ X2 mod p und Y1 ≡ −Y2 mod p : Setze P3 = O . 4. Fall: X1 ≡ X2 mod p und Y1 ≡ Y2 mod p : Setze P3 = (X3 : Y3 : 1) mit λ ≡ (3X12 + a)(2Y1 )−1 mod N, X3 ≡ λ2 − X1 − X2 mod N, Y3 ≡ λ(X1 − X3 ) − Y1 mod N, 5. Fall: X1 ≡ X2 mod p : Setze P3 = (X3 : Y3 : 1) mit λ ≡ (Y1 − Y2 )(X1 − X2 )−1 mod N, X3 ≡ λ2 − X1 − X2 mod N, Y3 ≡ λ(X1 − X3 ) − Y1 mod N. Wenn die F¨alle 1. oder 2. gegeben sind, l¨ asst sich dies leicht an den Punkten P1 und P2 ablesen. Zur Unterscheidung der F¨ alle 3. bis 5. sowie zur Bestimmung der Inversen in Z∗N bei der Berechnung von λ wird der erweiterte euklidische Algorithmus herangezogen. Er liefert auch gegebenenfalls den gesuchten nichttrivialen Teiler von N . Es gilt ⎧ ⇒ 3. oder 4. Fall, ⎨N ⇒ 5. Fall, ggT(X1 − X2 , N ) = 1 ⎩ d ∈ {1, N } ⇒ nichttrivialer Teiler d gefunden. Im Falle ggT(X1 − X2 , N ) = 1 liefert der erweiterte euklidische Algorithmus auch das Inverse (X1 − X2 )−1 mod N , welches zur Berechnung von λ ben¨otigt wird. ggT(X1 − X2 , N ) = N bedeutet X1 ≡ X2 mod p , so dass aufgrund der Kurvendefinition Y1 ≡ ±Y2 mod p gelten muss. Es wird weiter unterschieden durch: ⎧ ⇒ 3. Fall, ⎨N ⇒ 4. Fall, ggT(Y1 + Y2 , N ) = 1 ⎩ d ∈ {1, N } ⇒ nichttrivialer Teiler d gefunden. Im Fall Y1 ≡ −Y2 mod p erh¨ alt man ggT (Y1 + Y2 , N ) > 1 . Daher bedeutet ggT (Y1 + Y2 , N ) = 1 , dass Y1 ≡ Y2 mod p ist, wobei der erweiterte euklidische Algorithmus das Inverse (Y1 + Y2 )−1 mod N ≡ (2Y1 )−1 mod N f¨ ur die Berechnung von λ liefert.
5.4 Elliptic Curve Method (ECM)
195
Die Anzahl der erforderlichen Punkt-Additionen f¨ ur die Multiplikation eines Kurvenpunktes mit einer Zahl qiαi ist bei Lenstras Version die gleiche wie bei dem Algorithmus ECM. Der Unterschied ist, dass bei Lenstras Version f¨ ur jede einzelne Addition bis zu zwei ggT-Berechnungen erforderlich sind, w¨ahrend bei der hier vorgestellten Variante der ggT erst nach vollendeter Multiplikation des Punktes mit qiαi berechnet wird. Algorithmus ECM werden die h Kurvenpunkte jeweils mit k = mBeim αi multipliziert, wobei f¨ ur die m Primzahlen q1 < q2 < . . . < qm ≤ i=1 qi S die Exponenten αi so gew¨ ahlt sind, dass qiαi ≤ S < qiαi +1 . Dann ist k = kgV(1, 2, 3, . . . , S) . Bei seiner Analyse geht Lenstra allerdings davon aus, dass die h Kurvenpunkte statt mit k mit einem durch die Parameter v und w bestimmten k2 =
w
re(r)
r=2
multipliziert werden, wobei e(r) die gr¨ oßte ganze Zahl ist mit re(r) ≤ v + √ 2 v + 1 . Die Parameter v und w sollen dabei optimal bestimmt werden. F¨ ur die Multiplikation von h Kurvenpunkten jeweils mit der Zahl k2 ben¨otigt man O(h log k2 ) = O(hw log v) Punkt-Additionen (Routine MulSkal). Wenn A(N ) der Aufwand einer einzelnen Addition von zwei Kurvenpunkten ist, dann hat Lenstras Version von ECM insgesamt eine zeitliche Komplexit¨at von O((hw log v)A(N )) . (5.12) Als zweiten Anhaltspunkt f¨ ur die optimale Wahl der Parameter h , v und w hat Lenstra folgenden Satz u ¨ber die Erfolgswahrscheinlichkeit seines Algorithmus bewiesen:
N
5.4.5.1 Satz: (Lenstra [Le6]) N ∈ habe mindestens zwei verschiedene Primteiler > 3 . Der Parameter v ∈ sei so gew¨ahlt, dass p ≤ v ist f¨ ur den kleinsten solchen Primteiler p > 3 von N und w ∈ sei so gew¨ahlt, dass mindestens drei ganze Zahlen aus dem Inter√ √ vall ]p+1− p, p+1+ p[ ausschließlich Primteiler ≤ w besitzen. Dann gibt es eine Konstante c > 1 , so dass die Erfolgswahrscheinlichkeit von Lenstras ECM mindestens
N
1 − c−hf (w)/ log v
N
(5.13)
betr¨agt. Dabei sei f (w) die Wahrscheinlichkeit, dass eine zuf¨allige √ √ ganze Zahl aus dem Intervall ]p + 1 − p, p + 1 + p[ nur aus Primteilern ≤ w besteht. Diese Wahrscheinlichkeit f (w) soll nun n¨ aher bestimmt werden. F¨ ur eine reelle Zahl x > e definiert man die Funktion √ L(x) = e log x log log x .
196
5 Faktorisierung ganzer Zahlen
Mit dieser Schreibweise kann man aus einem Satz von Canfield, Erd¨ os und Pomerance folgendes schließen (s. [CEP] und [Po3]): 5.4.5.2 Satz: α > 0 sei eine reelle Zahl. Die Wahrscheinlichkeit, dass eine zuf¨allige, positive ganze Zahl ≤ x ausschließlich Primteiler ≤ L(x)α besitzt, betr¨agt L(x)−(2α)
−1
f¨ ur x → ∞.
+o(1)
Lenstra vermutet, √ dass dasselbe ur eine zuf¨ allige ganze Zahl aus dem √ auch f¨ Intervall ]x + 1 − x, x + 1 + x[ gilt: Annahme von Lenstra : α > 0 sei eine reelle Zahl. Die Wahrscheinlichkeit, dass √ eine zuf¨allige, positive ganze Zahl aus dem Intervall √ ]x + 1 − x, x + 1 + x[ ausschließlich Primteiler ≤ L(x)α besitzt, betr¨agt L(x)−(2α)
−1
f¨ ur x → ∞.
+o(1)
Der Term hw log v in der Aufwandsabsch¨ atzung soll minimiert, der Term hf (w)/ log v aus der Erfolgswahrscheinlichkeit soll maximiert werden. Lenstra minimiert daher w/f (w) . Setzt man w = L(p)α , so folgt f (w) = L(p)−(2α) w f (w)
−1
ist minimal f¨ ur α =
+o(1)
√1 2
f (w) = L(p)−1/
−1 w = L(p)(2α) +α+o(1) . f (w)
und
. Setzt man diesen Wert ein, so erh¨ alt man
√ 2+o(1)
und
w = L(p)1/
√ 2+o(1)
.
Das Problem bei dieser Angabe ist, dass der kleinste Primteiler p > 3 von N bei der Wahl des Parameters w noch nicht bekannt ist. Lenstra nimmt aber an, dass die Teiler, die der Algorithmus findet, aufgrund der Definition von k2 ungef¨ ahr von derselben Gr¨ oßenordnung wie die Schranke v sind. Daher schl¨ agt er vor, p in den Formeln f¨ ur w und f (w) durch v zu ersetzen und den Algorithmus mehrmals f¨ ur verschieden große v laufen zu lassen. Der in den Ausdr¨ ucken (5.12) und (5.13) vorkommende Faktor log v ist dann L(p)o(1) . Damit ist der Algorithmus von der Ordnung " n log n √ n √ 1/ 2+o(1) 4 log n 4 A(N ) ∼ h · n · A(N ) ∼ h · e · A(N ) hL(p) bei einer Erfolgswahrscheinlichkeit von 1 − e−hL(p)
−(1/
√
2+o(1))
log c
.
Dabei sei A(N ) die zeitliche Komplexit¨ at einer einzelnen Addition von zwei Kurvenpunkten modulo N . F¨ ur sie kann O(log2 N ) = O(n2 ) angenommen werden, da sie von den Multiplikationen modulo N bzw. den ggT-Berechnungen bei Lenstras Version dominiert wird.
5.5 Der Algorithmus von Morrison und Brillhart
197
6 n log n Wesentlich ist also der Term im Exponenten von e , der zeigt, 4 dass der gesamte Algorithmus exponentiell von n abh¨ angt. √
urzer formulieSetzt man g = hL(p)−(1/ 2+o(1)) log c , dann kann man k¨ ren: Bei passender Wahl der Parameter h , w und v findet der Algorithmus ECM einen nichttrivialen Teiler von N in der Zeit g · K(p) · A(N ) mit einer Wahrscheinlichkeit von mindestens 1 − e−g . Dabei ist p der kleinste Primteiler von N . F¨ ur die Funktion K : R+ → R+ gilt √ K(x) = e (2+o(1)) log x log log x f¨ ur x → ∞.
5.5 Der Algorithmus von Morrison und Brillhart 5.5.1 Die Grundidee Im Jahre 1975 ver¨ offentlichten M. A. Morrison und J. Brillhart in [MBr] ihren Continued Fraction Algorithm“ (kurz CFRAC). Dieser Methode liegt ” ¨ die folgende Uberlegung von Maurice Kra¨ıtchik (1882-1957) zugrunde, die ihrerseits schon auf Fermat zur¨ uckgeht. Angenommen, es seien zwei ganze Zahlen x und y bekannt mit x2 ≡ y 2 mod N
(5.14)
Dann gibt es eine ganze Zahl k ∈ Z mit kN = x2 − y 2 = (x − y)(x + y) . Berechnet man d = ggT(x − y, N ) und stecken die Primteiler von N teils in (x − y) und teils in (x + y) , so ist d ein nichttrivialer Teiler von N . Bereits 1931 hatten D. H. Lehmer und R. E. Powers die Idee, in Kettenbruchentwicklungen nach solchen Zahlen x und y zu suchen, die der Kongruenz (5.14) gen¨ ugen. Ihre Methode war jedoch zu aufw¨ andig f¨ ur die Rechenmaschinen der damaligen Zeit und geriet daher in Vergessenheit. Erst 1970 entwickelten Michael A. Morrison und John Brillhart daraus den Algorithmus CFRAC und berechneten damit als erste die vollst¨ andige Faktorisierung der Fermatschen Zahl F7 = 2128 + 1 ◦ . Wie in den folgenden Abschnitten noch genauer erl¨ autert√wird, erh¨ alt man bei der Berechnung der Kettenbruchentwicklung von N positive ganze Zahlen Ai−1 und Qi , die f¨ ur i = 1, 2, 3, . . . der Kongruenz A2i−1 ≡ (−1)i Qi mod N gen¨ ugen. ◦
F7 = 59649589127497217 · 5704689200685129054721 .
198
5 Faktorisierung ganzer Zahlen
Um eine Kongruenz der Form x2 ≡ y 2 mod N zu erhalten, versucht man n bestimmte Werte Qn so zu kombinieren, dass das Produkt (−1) Qn n eine Quadratzahl ergibt. Wenn man eine solche Kombination gefunden hat, berechnet man 8 x= (−1)n Qn , und y= An−1 mod N . Dann gilt y 2 ≡
n
n
A2n−1
n
≡ (−1)n Qn = x2 mod N n
und d = ggT(x − y, N ) ist der gesuchte nichttriviale Teiler von N , sofern nicht d = 1 oder d = N ist. 5.5.2 Approximation reeller Zahlen durch Kettenbr¨ uche 5.5.2.1 Definition:
Ein einfacher Kettenbruch ist
[q0 , q1 , q2 , . . . , qm ] := q0 +
1 q1 +
1 q2 +
1 q3 +
..
1
.
qm−1 + q1 m
wobei q0 eine ganze Zahl ist und die so genannten Teilnenner q1 , . . . , qm positive ganze Zahlen sind. Jeder einfache Kettenbruch hat ausmultipliziert einen rationalen Wert. Umgekehrt l¨asst sich auch jede rationale Zahl x0 ∈ Q in einen einfachen Kettenbruch x0 = [q0 , q1 , q2 , . . . , qm ] entwickeln. q0 ∈ Z und die Teilnenner q1 , q2 , . . . , qm ∈ dieser Kettenbruchentwicklung erh¨ alt man mit dem folgenden Algorithmus: Kettenbruchentwicklung
N
R
N
procedure KetBru(x0 , M ) # Eingabe: x0 ∈ , M ∈ , # Ausgabe: Kettenbruchentwicklung q0 ← x0 # x0 = [q0 , q1 , . . . , qM −1 , . . .] m←0 while xm − qm = 0 and m < M do 1 xm+1 ← xm −q m qm+1 ← xm+1 m←m+1 end do Return([q0 , q1 , . . . , qm ]) end
L¨asst man die Schranke M weg, so terminiert dieser Algorithmus genau dann, wenn x0 eine rationale Zahl ist. Das Verfahren entspricht einer fortw¨ahrenden Division mit Rest durch den jeweiligen Z¨ ahler:
5.5 Der Algorithmus von Morrison und Brillhart
5 5:5 1 = = 12 12 : 5 2+
2 5
=
199
1 1 = [0, 2, 2, 2] =0+ 1 2 + 2:2 2 + 5:2 2+ 1 2
und ist identisch mit den Schritten zur ggT-Berechnung von Z¨ ahler und Nenner mit dem euklidischen Algorithmus: 5 12 5 2
= = = =
0 2 2 2
· · · ·
12 5 2 1
+ + + +
5 2 1 0
Wendet man ihn auf eine irrationale Zahl x0 ∈ R an, so erh¨ alt man eine unendliche Entwicklung x0 = q0 + q + 1 1 = [q0 , q1 , q2 , . . .], bei welcher
N
1
sind. ebenfalls q0 ∈ Z und q1 , q2 , . . . ∈ Bricht man die Entwicklung einer reellen Zahl x0 an einer beliebigen Stelle m ab, so hat der (nicht einfache) Kettenbruch [q0 , q1 , . . . , qm , xm+1 ] genau den Wert x0 , w¨ ahrend der einfache Kettenbruch [q0 , q1 , . . . , qm ] einen rationalen Wert Am /Bm besitzt. Weil dieser Wert x0 f¨ ur m → ∞ beliebig genau (s. die Folgerung nach dem n¨ achsten Hilfssatz) ann¨ ahert, wird Am /Bm = [q0 , q1 , q2 , . . . , qm ] als m-ter N¨aherungsbruch von x0 bezeichnet. Wenn man den Z¨ ahler Am und den Nenner Bm des m -ten N¨ aherungsbruches [q0 , q1 , q2 , . . . , qm ] explizit berechnen m¨ ochte, liegt es nahe, den Kettenbruch r¨ uckw¨ arts aufzurollen, also zun¨ achst qm−1 + q1m zu berechnen und sich dann sukzessive bis q0 vorzuarbeiten. Es gibt aber gl¨ ucklicherweise eine viel praktischere Methode, bei der man die Teilnenner qi vorw¨ arts durchl¨ auft und auf diesem Wege f¨ ur i = 0, 1, 2 . . . , m gleich s¨ amtliche Werte Ai und Bi erh¨ alt. q2 +...
5.5.2.2 Satz: Es sei [q0 , q1 , q2 , . . . , qm ] ein einfacher Kettenbruch mit q0 ∈ und den Teilnennern q1 , q2 , . . . , qm ∈ . Setzt man
Z
N
A−2 = 0, B−2 = 1,
A−1 = 1, B−1 = 0,
(5.15)
dann lassen sich die N¨aherungsbr¨ uche Ai = [q0 , q1 , q2 , . . . , qi ] Bi f¨ ur i = 0, 1, 2 . . . , m rekursiv berechnen mit den Formeln Ai = qi Ai−1 + Ai−2 , Bi = qi Bi−1 + Bi−2 ,
(5.16)
wobei man die N¨aherungsbr¨ uche Ai /Bi in gek¨ urzter Form erh¨alt, d.h. ggT(Ai , Bi ) = 1. (5.17)
200
5 Faktorisierung ganzer Zahlen
Beweis: F¨ ur i = 0 folgen die Rekursionsformeln (5.16) aus q0 A0 q0 A−1 + A−2 = q0 = . = B0 1 q0 B−1 + B−2 Wegen ggT (A0 , B0 ) = ggT(q0 , 1) = 1 gilt dann auch (5.17). Der Kettenbruch Ai+1 /Bi+1 = [q0 , q1 , q2 , . . . , qi , qi+1 ] kann aus Ai /Bi = [q0 , q1 , q2 , . . . , qi ] konstruiert werden, indem man dessen letzten Teilnenner 1 qi durch qi + qi+1 ersetzt. Wenn die Rekursionsformeln (5.16) und Gleichung (5.17) bereits f¨ ur irgendein i ≥ 0 bewiesen sind, so gilt auch (qi + Ai+1 = Bi+1 (qi + =
1 qi+1 )Ai−1 1 qi+1 )Bi−1
+ Ai−2 + Bi−2
=
qi Ai−1 + Ai−2 + qi Bi−1 + Bi−2 +
Ai−1 qi+1 Bi−1 qi+1
=
Ai + Bi +
Ai−1 qi+1 Bi−1 qi+1
=
qi+1 Ai + Ai−1 . qi+1 Bi + Bi−1
Das entspricht den Rekursionsformeln f¨ ur i + 1 . Schließlich fehlt noch der Beweis von ggT(Ai+1 , Bi+1 ) = 1 . Dieser wird von dem folgenden Hilfssatz erledigt. 5.5.2.3 Hilfssatz: Wenn man die Werte Ai und Bi mit den Formeln (5.15) und (5.16) berechnet, so gilt Ai−1 Bi − Ai Bi−1 = (−1)i .
(5.18)
Beweis: F¨ ur i = 0 stimmt die Gleichung wegen A−1 B0 − A0 B−1 = 1 · 1 − q0 · 0 = 1 . Wenn sie f¨ ur irgendein i ≥ 0 gilt, so gilt sie auch f¨ ur i + 1 wegen Ai Bi+1 − Ai+1 Bi = Ai (qi+1 Bi + Bi−1 ) − (qi+1 Ai + Ai−1 )Bi = = −(Ai−1 Bi − Ai Bi−1 ) = −(−1)i = (−1)i+1 .
Folgerung: Berechnet man wie im Beweis des Satzes [q0 , . . . , qm , xm+1 ] Am = [q0 , q1 , q2 , . . . , qm ] und bildet die Differenz, so erh¨ alt man aus B m Am xm+1 Am + Am−1 Am − = = [q0 , . . . , qm , xm+1 ] − Bm xm+1 Bm + Bm−1 Bm Bm Am−1 − Am Bm−1 (HS) 1 1 = = = < 2 (xm+1 Bm + Bm−1 )Bm (xm+1 Bm + Bm−1 )Bm Bm Da die Folge der Bm streng monoton steigt, zeigt dies dies Konvergenz der m-ten N¨aherungsbr¨ uche gegen x0 .
5.5 Der Algorithmus von Morrison und Brillhart
201
5.5.3 Die Kettenbruchentwicklung einer Wurzel In der Zahlentheorie interessiert man sich besonders f¨ ur die Kettenbruchent√ wicklung von N , wobei N eine nicht quadratische ganze Zahl ist. Durch die rekursive Berechnung von √ √ x0 = N , q0 = " N #, (5.19) 1 xi+1 = xi −q , qi+1 = "xi+1 #, f¨ ur i = 0, 1, 2, . . . i √ (vgl. die Prozedur KetBru) erh¨ alt man ur die irrationale Zahl N eine √ f¨ unendliche Kettenbruchentwicklung N = [q0 , q1 , q2 , . . .] mit qi ∈ . √ 5.5.3.1 Beispiel: F¨ ur N = 21 ergibt sich: √ x0 = 21 ⇒ q0 = 4, √ √ 1 21+4 21−1 = = 1 + ⇒ q1 = 1, x1 = √21−4 5 5
N
x2 = x3 = x4 = x5 = x6 = x7 =
√ 5 21−1 √ 4 21−3 √ 3 21−3 √ 4 21−1 √ 5 21−4 √ 1 21−4
= = = = =
√ 5( 21+1) 20 √ 4( 21+3) 12 √ 3( 21+3) 12 √ 4( 21+1) 20 √ 5( 21+4) 5
= = = = =
√ 21+1 4 √ 21+3 3 √ 21+3 4 √ 21+1 5
√
= 1+ = 2+ = 1+
√ 21−3 4 √ 21−3 3 √ 21−1 4 √ 21−4 5
⇒ q2 = 1, ⇒ q3 = 2, ⇒ q4 = 1,
= 1+ ⇒ q5 = 1, √ 21 + 4 = 8 + 21 − 4 ⇒ q6 = 8, ⇒ q7 = 1.
Wegen x7 = x1 wiederholt sich von nun an die Rechnung, so dass √ 21 = [4, 1, 1, 2, 1, 1, 8, 1, 1, 2, . . .] . In der Beispielrechnung sieht es so aus, als ob sich die xi f¨ ur i ≥ 1 immer in der Gestalt xi = √QNi−1 mit ganzen Zahlen Q und Pi schreiben i−1 −Pi lassen. F¨ ur diese Zahlen sollen nun Rekursionsformeln gefunden werden und dann bewiesen werden, dass sie in der Tat immer ganz sind. Im Beispiel wurde f¨ ur i ≥ 1 jeweils wie folgt gerechnet: √ √ √ N − Pi+1 Qi−1 Qi−1 ( N + Pi ) (∗) N + Pi (∗∗) = = = q + . (5.20) xi = √ i N − Pi2 Qi Qi N − Pi Damit (*) richtig ist, muss gelten Qi =
1 √ Qi = xi −q woraus i N −Pi+1 √ −Pi+1 folgt. xi = qi + N Q i
Aus (5.19) folgt xi+1 = letzte Teil von (5.20)
N − Pi2 . Qi−1
(5.21) durch Umformen der
202
5 Faktorisierung ganzer Zahlen
Damit (**) richtig ist, muss gelten Pi+1 = qi Qi − Pi .
(5.22)
Wegen (5.19) muss dabei gelten >√ qi = "xi # = Wegen x0 =
√
N=
√ N +P0 Q0
N + Pi Qi
? .
(5.23)
setzt man schließlich
P0 = 0 , Q0 = 1.
(5.24)
5.5.3.2 Satz: Es sei N eine nicht quadratische ganze Zahl. Dann sind ur i = 1, 2, 3, . . . aus (5.21) bis die Werte Pi und Qi , die man f¨ (5.24) erh¨alt, ganze Zahlen mit √ √ 0 < Pi < N und 0 < Qi < 2 N . Beweis: F¨ ur i = 1 folgt die Behauptung direkt aus (5.24) bis (5.21) durch √ √ √ P1 = " N # ∈ Z, 0 < " N # < N , √ √ √ √ Q1 = N − " N #2 ∈ Z, 0 < N − " N #2 < N − ( N − 1)2 < 2 N . Wenn f¨ ur ein bestimmtes i ≥ 1 die Werte Pi , Qi ∈ N −P 2 offensichtlich auch Pi+1 ∈ Z . Aus Qi = Qi−1i folgt damit ist auch
Z
sind, dann ist ∈ Z , und
N −Pi2 Qi
2 N − Pi+1 N − (qi Qi − Pi )2 N − Pi2 = = − qi2 Qi + 2qi Pi ∈ Z. Qi Qi Qi √ Nun sei f¨ ur ein bestimmtes i ≥ 1 bereits 0 < Pi < N und Qi > 0 bewiesen. Aus (5.23) und (5.20) folgt √ N − Pi+1 0 < xi − qi = < 1. Qi √ . Falls Qi > Pi ist, folgt√aus (5.22) Pi+1 > 0 . Daher ist Pi+1 < N √ Andernfalls ist Qi ≤ Pi < N , und es folgt Pi+1 > N −Qi > 0 . Dadurch sind die Schranken f¨ ur Pi+1 bewiesen. Aus (5.21) folgt damit Qi+1 > 0 , und aus (5.22) folgt √ Pi + Pi+1 Qi = < 2 N. qi
Qi+1 =
5.5 Der Algorithmus von Morrison und Brillhart
203
5.5.3.3 Satz: Es sei N eine nicht quadratische ganze Zahl. Dann ist die Folge der qi in der Kettenbruchentwicklung √ N = [q0 , q1 , q2 , . . .] periodisch, d.h. es existieren nat¨ urliche Zahlen k und l , so dass qi = qi+l ist f¨ ur alle i ≥ k . √ Beweis: Aus dem vorhergehenden Satz folgt, dass es h¨ ochstens " N # · √ "2 N # < 2N verschiedene Paare (Pi , Qi ) gibt. Deshalb muss nach h¨ ochstens 2N Schritten wieder ein Paar auftreten, das schon fr¨ uher einmal in der Entwicklung vorgekommen ist. Also gibt es ein l > 0 und ein k < 2N mit (Pk+l , Qk+l ) = (Pk , Qk ) und qk+l = qk . Da jedes Paar (Pi+1 , Qi+1 ) durch seinen Vorg¨ anger (Pi , Qi ) bestimmt ist, wiederholt sich von nun an die Folge der Paare und damit auch die der qi . Sp¨ater wird noch eine weitere Formel ben¨ otigt, mit der Qi+1 ohne Division berechnet werden kann. Es gilt Qi+1 = Qi−1 + (Pi − Pi+1 )qi .
(5.25)
Aus (5.21) erh¨ alt man n¨ amlich Qi Qi−1 = N − Pi2 und Qi+1 Qi = N − 2 Pi+1 . Subtrahiert man diese beiden Gleichungen, so erh¨ alt man 2 = (Pi − Pi+1 )(Pi + Pi+1 ) = (Pi − Pi+1 )qi Qi , Qi (Qi+1 − Qi−1 ) = Pi2 − Pi+1
denn aus (5.22) folgt Pi + Pi+1 = qi Qi . Formel (5.25) folgt daraus durch Elimination von Qi . Der nun √ folgende Satz ist der Grund, warum die Kettenbruchentwicklung von N eine solche Bedeutung f¨ ur die Faktorisierung von N hat. 5.5.3.4 Satz: Es sei N eine nicht quadratische ganze Zahl. F¨ ur ein i > 0 seien die Werte Ai−1 , Bi−1 und Qi rekursiv berechnet worden mit (5.15), (5.16) und (5.24) bis (5.21). Dann gilt 2 = (−1)i Qi , A2i−1 − N Bi−1
(5.26)
A2i−1 ≡ (−1)i Qi mod N.
(5.27)
und damit
Beweis: Nach Satz 5.5.2.2 ist [q0 , q1 , q2 , . . . , qi ] =
Ai qi Ai−1 + Ai−2 = . Bi qi Bi−1 + Bi−2
Ersetzt man darin qi durch xi , so ergibt das [q0 , q1 , q2 , . . . , qi−1 , xi ] =
√
N=
xi Ai−1 + Ai−2 . xi Bi−1 + Bi−2
204
5 Faktorisierung ganzer Zahlen
Durch Einsetzen von xi =
√ N +Pi Qi
erh¨ alt man
√ Ai−1 N + Ai−1 Pi + Ai−2 Qi √ N= , Bi−1 N + Bi−1 Pi + Bi−2 Qi √ √ bzw. N Bi−1 + (Bi−1 Pi + Bi−2 Qi ) N = Ai−1 N + Ai−1 Pi + Ai−2 Qi . √ √ angig Da N irrational und damit 1 und N u ¨ber Q linear unabh¨ sind, kann man Koeffizienten vergleichen: √
Ai−1 Pi + Ai−2 Qi = N Bi−1 , Bi−1 Pi + Bi−2 Qi = Ai−1 . alt man (Ai−2 Bi−1 − Ai−1 Bi−2 )Qi = Durch Elimination von Pi erh¨ 2 2 N Bi−1 − A2i−1 . Mit (5.18) ist das (−1)i−1 Qi = N Bi−1 − A2i−1 und daraus folgt die Behauptung. 5.5.4 Der Faktorisierungsalgorithmus Wie bereits am Anfang erw¨ ahnt, sucht man Zahlen x und y , welche die Kongruenz x2 ≡ y 2 mod N erf¨ ullen. F¨ ur die Konstruktion eines solchen Zahlenpaares bieten sich die Werte A i−1 und Qi aus der Ketten√ bruchentwicklung von N an, weil sie f¨ ur i = 1, 2, 3, . . . der Kongruenz (5.27) gen¨ ugen. Da die Werte Ai−1 sehr schnell anwachsen, empfiehlt es sich, diese nur modulo N zu berechnen. Das beschleunigt die Arithmetik und Kongruenz (5.27) bleibt trotzdem g¨ ultig. Man beginnt mit den Startwerten (aus (5.22) folgt Q1 = N − P12 = N − q02 und aus (5.25) Q1 = Q−1 − q02 ; die Wahl f¨ ur Q−1 ist also vern¨ unftig) √ (5.28) A−2 = 0 , A−1 = 1 , Q−1 = N , Q0 = 1 , P0 = 0 , w = " N # , und berechnet rekursiv f¨ ur i = 0, 1, 2, . . . . i , Pi+1 = qi Qi − Pi , qi = w+P Qi Ai = (qi Ai−1 + Ai−2 ) mod N, Qi+1 = Qi−1 + qi (Pi − Pi+1 ).
(5.29)
(vgl. (5.15), (5.16), (5.24), (5.23), (5.22), (5.25)) In der Menge aller hierbei auftretenden Werte Qi soll nun nach einer {Qi1 , . . . , Qin } gesucht werden, f¨ ur die das Produkt n Teilmenge ij (−1) Q eine Quadratzahl ist. Um Indexsalat zu vermeiden, verweni j k=1 det man statt ij einfach den Index n , wenn Elemente dieser bestimmten Teilmenge gemeint sind: Mansucht also nach einer Menge von bestimmten Werten Qn , deren Produkt n (−1)n Qn eine Quadratzahl ist. Daf¨ ur ben¨otigt man die Primfaktorzerlegungen vieler Werte Qi . Man verlagert also das Problem von der Faktorisierung einer √ sehr großen Zahl N auf die Faktorisierung vieler kleinerer Zahlen Qi < 2 N , die ungef¨ ahr die halbe L¨ange von N haben.
5.5 Der Algorithmus von Morrison und Brillhart
205
Aber auch diese sind oft noch schwer zu faktorisieren. Man beschr¨ ankt sich daher auf diejenigen Werte Qi , die sich schon mit wenigen Probedivisionsschritten vollst¨ andig in Primfaktoren unterhalb einer niedrigen Schranke S zerlegen lassen. 5.5.4.1 Definition: Eine Zahl a ∈ Z wird als quadratischen Rest von p ∈ Z bezeichnet, wenn es ein x ∈ Z gibt mit x2 ≡ a mod p . F¨ ur eine ungerade Primzahl p sei das Legendre-Symbol ∗ (a/p) definiert durch
(a/p) =
0 1 −1
falls p Teiler von a ist, falls a quadratischer Rest von p ist, sonst.
5.5.4.2 Satz: Wenn a eine ganze Zahl und p eine ungerade Primzahl ist, dann gilt f¨ ur das Legendre-Symbol (a/p) ≡ a
p−1 2
mod p.
F¨ ur einen Beweis siehe etwa [HWr]. Mit dem Begriff des Legendre-Symbols kann die Menge der Primzahlen ≤ S , durch welche die Werte Qi probedividiert werden m¨ ussen, eingeschr¨ ankt werden: √ 5.5.4.3 Satz: Der Wert Qi aus der Kettenbruchentwicklung von N sei f¨ ur ein i > 0 definiert wie in (5.21). Wenn eine ungerade Primzahl p Teiler von Qi ist, dann ist das Legendre-Symbol (N/p) = 1 oder (N/p) = 0 . Beweis: Aus (5.26) folgt die Kongruenz 2 A2i−1 ≡ N Bi−1 mod p.
Wegen (5.18) ist ggT(Ai−1 , Bi−1 ) = 1 und p kann nicht Teiler von Bi−1 sein. Deshalb ist 2 Ai−1 mod p N≡ Bi−1 ein quadratischer Rest von p oder Null, wenn Ai−1 ≡ 0 mod p ist. Zu Beginn des Algorithmus bestimmt man also die Menge F = {p1 , p2 , . . . , pm } aller Primzahlen pj ≤ S , f¨ ur welche gilt 1 ≡ N (pj −1)/2 mod pj . Das sind alle ungeraden Primzahlen ≤ S mit (N/pj ) = 1 und die 2. ∗
Bei Einschr¨ ankung auf
Z
∗ p
ist das ein Gruppenhomomorphismus
Z
∗ p
→ {−1, 1} . Zur Ver-
meidung von Verwechslungen wird hier nicht die auch u ¨ bliche Schreibweise
a p
verwendet
206
5 Faktorisierung ganzer Zahlen
Diese Menge F wird Faktorenbasis genannt. Nach dem vorhergehenden Satz finden sich alle ungerade Primteiler ≤ S von Werten Qi in dieser Menge. Sollte man hierbei auf ein pj treffen, f¨ ur welches (N/pj ) = 0 ist, so bedeutet dies, dass pj bereits der gesuchte nichttriviale Teiler von N ist. Gew¨ohnlich wendet man aber diese Faktorisierungsmethode erst an, wenn die Zahl N bereits mit weniger anspruchsvollen Methoden (Probedivisionen, Pollard-( p − 1 ) etc.) nach kleineren Primteilern abgesucht worden ist. Außerdem muss man nat¨ urlich vor Beginn dieses Algorithmus sicherstellen, dass N keine Quadratzahl ist. Nach jedem Iterationsschritt der Kettenbruchentwicklung dividiert man das neu berechnete Qi zur Probe nacheinander durch alle Primzahlen p1 < p2 < . . . < pm der Faktorenbasis F , um eine vollst¨ andige Faktorisierung von Qi in der Form ei,0 ei,1 ei,2 p1 p2
(−1)i Qi = (−1)
. . . pemi,m
zu erhalten. ur j = 1, 2, . . . , m jeweils der Exponent Dabei ist ei,0 = i und ei,j ≥ 0 f¨ der Primzahl pj in der Zerlegung von Qi . andig Man verwirft diejenigen Werte Qi , die auf diese Weise nicht vollst¨ faktorisiert werden k¨ onnen. Den erfolgreich zerlegten Qi ordnet man dagegen einen bin¨aren Vektor vi = (αi,0 , αi,1 , αi,2 , . . . , αi,m ) ∈ Zm+1 2 zu, mit den Koordinaten αi,j = ei,j mod 2 Das Produkt bestimmter Werte Qn , (−1)n Qn = (−1)e0 pe11 pe22 . . . pemm , n
ist genau dann eine Quadratzahl, wenn alle Exponenten gerade sind, also en,j ≡ 0 mod 2 f¨ ur k = 0, 1, 2, . . . , m . ej = n
Diesen Fall erkennt man daran, dass die Summe modulo 2 der dazugeh¨ origen Vektoren vn gleich dem Nullvektor ist. Man betreibt die Kettenbruchentwicklung und die Probedivisionen so lange, bis man m + 2 Werte Qi vollst¨ andig faktorisiert hat. Dann bildet man aus den dazugeh¨ origen Vektoren vi als Zeilenvektoren eine (m + 2) × (m + 1) -Matrix M , auf welcher eine Gauß-Elimination modulo 2 durchgef¨ uhrt wird. Jeder dabei auftretende Nullvektor, d.h. jede lineare Abh¨angigkeit in dieser Matrix M , entspricht einer der gesuchten Kombinationen von Werten Qn mit quadratischem Produkt und f¨ uhrt zu einem trivialen oder nichttrivialen Teiler von N .
5.5 Der Algorithmus von Morrison und Brillhart
207
Um hinterher nachvollziehen zu k¨ onnen, um welche Qn es sich dabei handelt, erg¨ anzt man die Matrix M durch eine (m + 2) × (m + 2) Einheitsmatrix E und f¨ uhrt die Gauß-Elimination modulo 2 auf der so erzeugten (m + 2) × (2m + 3) -Matrix [M |E] durch. Wenn der linke Teil einer Zeile nur noch aus Nullen besteht, hat man eine Menge linear abh¨ angiger Vektoren vn gefunden, deren Zusammensetzung am rechten Teil der Zeile abgelesen werden kann. Der Algorithmus von Morrison und Brillhart (CFRAC)
N
procedure MorBril(N, S) # Eingabe: N, S ∈ , # Ausgabe: Teiler d von N F ← {p1 , . . . , pm } mit pj ≤ S # (u.U. d = N ) und N (pj −1)/2 mod pj = 1 Initialisiere gem¨ aß (5.28) i←1 for from 1 to m + 2 do Berechne Ai−1 und Qi gem¨ aß (5.29) m e Berechne fi mit Qi = ( j=1 pj i,j )fi und ggT(fi , pj ) = 1 while fi = 1 do i←i+1 Berechne Ai−1 und Qi gem¨ aß (5.29) m e Berechne fi mit Qi = ( j=1 pj i,j )fi und ggT(fi , pj ) = 1 if fi = 1 then e e e e Bestimme ei,j mit (−1)i Qi = (−1) i,0 p1i,1 p2i,2 . . . pmi,m
v ← (ei,0 mod 2, . . . , ei,m mod 2) if v = 0 then fi ← 2 end if end if end do end do T )T M ← ( v1T , . . . , vm+2 Gauß mod 2
[M |E] −→ [M |M ] mit M in Zeilenstufenform for i from 1 to m + 2 do if ( i -te Zeile von M ) = 0 then Lies aus i -ter Zeile von M ab: K ← (Menge der Indizes n der vn die hier zu 0 kombiniert wurden) " x← (−1)n Qn , y ← n∈K An−1 mod N n∈K d = ggT(x − y, N ) if 1 < d < N then Return (d) end if end if end do Return (Kein Erfolg) end
208
5 Faktorisierung ganzer Zahlen
Mit den dazugeh¨ origen Werten Qn und An−1 berechnet man 8 (−1)n Qn und y= An−1 mod N. x= n
n
Dann ist d = ggT(x − y, N ) ein Teiler von N . Wenn d = 1 oder d = N ist, versucht man sein Gl¨ uck mit einer anderen linearen Abh¨ angigkeit. Eventuell m¨ ussen hierf¨ ur weitere Werte Qi erzeugt und faktorisiert werden. Bei manchen Zahlen√ N scheitert CFRAC, weil die Periode der Kettenbruchentwicklung von N so kurz ist, dass sich die Wertepaare (Ai−1 , Qi ) wiederholen, bevor eine der quadratischen Kombinationen zu einem nichttrivialen Ergebnis gef¨ uhrt hat. Der gezeigte Algorithmus sollte daher in der Praxis um eine Funktion zur Erkennung solcher Endlosschleifen erweitert werden. Im Falle √ einer zu kurzen Periode kann man sich damit behelfen, dass man statt N die Zahl √ kN entwickelt, wobei der Faktor k eine kleine, quadratfreie ganze Zahl ist. Zwei praktische Variationen von CFRAC wurden bereits von Morrison und Brillhart in [MBr] angedeutet. Die erste ist bekannt unter dem Namen Large Prime Variation“: Jedes Qi l¨ asst sich in der Form ” m e pj i,j )fi Qi = ( j=1
schreiben, wobei fi der restliche Faktor von Qi ist, der nach den Probedivisionen u ¨brig bleibt und von keiner der Primzahlen p1 < p2 < . . . < pm aus der Faktorenbasis F geteilt wird. Stellt sich nach den Probedivisionen fi = 1 heraus, so ist Qi vollst¨andig in Primzahlen der Faktorenbasis zerlegt worden. Ist aber fi < p2m , so muss dieser restliche Faktor ebenfalls eine Primzahl sein, und damit w¨are auch in diesen Fall die vollst¨ andige Zerlegung bekannt. Tats¨achlich hat es sich als praktische Variation erwiesen, solche Zerlegungen mit einem einzigen großen Primfaktor nicht einfach zu verwerfen. Je gr¨oßer dieses fi ist, desto seltener werden allerdings weitere Qi -Werte mit diesem Primfaktor auftreten. Und je mehr verschiedene große Primfaktoren fi akzeptiert werden, desto mehr zus¨ atzliche Spalten m¨ ussen der Matrix angef¨ ugt werden und desto l¨ anger dauert schließlich auch die GaußElimination. Daher ist es sinnvoll, diese großen Primfaktoren durch eine obere Schranke S1 zu beschr¨ anken, die kleiner als p2m ist, z.B. S1 = 20pm . Die zweite Variation mit dem Namen Early Abort Strategy“ soll ver” hindern, dass erst langwierig durch alle Primzahlen der Faktorenbasis probedividiert wird, um hinterher doch nur festzustellen, dass das Qi nicht faktorisierbar ist.
5.5 Der Algorithmus von Morrison und Brillhart
209
Nachdem durch eine bestimmte Anzahl von Primzahlen probedividiert worden ist, u uft man, ob der restliche Faktor von Qi immer noch ¨berpr¨ gr¨oßer als ein bestimmter, vorher festgelegter Wert S2 ist, und verwirft das Qi in diesem Fall ohne weitere Probedivisionen. atten Hierbei k¨onnen zwar auch solche Qi verlorengehen, die durchaus h¨ faktorisiert werden k¨ onnen, weil sie nur aus besonders vielen kleinen Primzahlen oder sehr hohen Potenzen von kleinen Primzahlen bestehen, aber bei geschickter Wahl der Schranke S2 machen diese F¨ alle nur einen geringen Anteil aller verworfenen Qi aus und die erhebliche Zeitersparnis macht diesen Verlust wett. F¨ ur sehr große N k¨ onnen sogar mehrere solcher Abbruchm¨oglichkeiten vorgesehen werden. 5.5.4.4 Beispiel: Am Beispiel von N = 6356221 = 2111 · 3011 soll nun der Ablauf von CFRAC in seiner Grundversion erl¨ autert werden. W¨ahlt man die Schranke S = 30 , so erh¨ alt man als Faktorenbasis F = {2, 3, 5, 7, 11, 13, 29} . In der folgenden Tabelle sind f¨ ur i = 1, . . . , 22 die √ Werte Ai−1 und (−1)i Qi aus der Kettenbruchentwicklung von N aufgelistet. Zu jedem Qi ist die vollst¨ andige Primfaktorisierung aufgef¨ uhrt, und in den F¨ allen, in denen diese Zerlegung nur aus Primzahlen der Faktorenbasis besteht, sind im rechten Teil der Tabelle die Werte des entsprechenden Exponentenvektoren vi angegeben. i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Ai−1 2521 15127 32775 211777 244552 456329 6338754 438862 421395 2755456 5932307 211972 6144279 30 6144429 3391163 3179371 3421415 244565 6356195 244383 488740
−780 2173 −724 2353 −2685 60 −2519 2523 −52 2331 −716 2535 −2443 900 −333 4540 −195 4492 −385 676 −1827 2420
= (−1)i Qi −1 2 3 5 7 11 13 29 2 = −2 · 3 · 5 · 13 1 0 1 1 0 0 1 0 = 41 · 53 = −22 · 181 = 13 · 181 = −3 · 5 · 179 = 22 · 3 · 5 0 0 1 1 0 0 0 0 = −11 · 229 = 3 · 292 0 0 1 0 0 0 0 0 = −22 · 13 1 0 0 0 0 0 1 0 = 32 · 7 · 37 = −22 · 179 = 3 · 5 · 132 0 0 1 1 0 0 0 0 = −7 · 349 = 22 · 32 · 52 0 0 0 0 0 0 0 0 = −32 · 37 = 22 · 5 · 227 = −3 · 5 · 13 1 0 1 1 0 0 1 0 = 22 · 1123 = −5 · 7 · 11 1 0 0 1 1 1 0 0 = 22 · 132 0 0 0 0 0 0 0 0 = −32 · 7 · 29 1 0 0 0 1 0 0 1 = 22 · 5 · 112 0 0 0 1 0 0 0 0
210
5 Faktorisierung ganzer Zahlen
In den Zeilen 14 und 20 handelt es sich dabei um Nullvektoren, weil (−1)14 Q14 = 302 und (−1)20 Q20 = 262 Quadratzahlen sind. Sie f¨ uhren aber beide wegen
√ x = A13 = 30, y = √Q14 = 30, x − y = 0, ggT(x − y, N ) = N x = A19 = 6356195, y = Q20 = 26, x − y = 6356169, ggT(x − y, N ) = 1
nur zu trivialen L¨ osungen und k¨ onnen daher verworfen werden. Aus den restlichen Exponentenvektoren (ohne v14 und v20 ) wird eine 9×8 -Matrix gebildet, in welcher nach linear abh¨ angigen Zeilen gesucht wird. Sie wird um eine 9×9 -Einheitsmatrix erg¨ anzt, damit nach der Gauß-Elimination die Zusammensetzungen der linearen Abh¨angigkeiten nachvollzogen werden k¨ onnen. Die Elimination mod 2 wird an folgender Matrix durchgef¨ uhrt: i −1 2 3 5 7 11 13 29 i = 1 1 1 0 1 1 0 0 1 0 1 6 0 0 1 1 0 0 0 0 0 8 0 0 1 0 0 0 0 0 0 9 1 0 0 0 0 0 1 0 0 12 0 0 1 1 0 0 0 0 0 17 1 0 1 1 0 0 1 0 0 19 1 0 0 1 1 1 0 0 0 21 1 0 0 0 1 0 0 1 0 22 0 0 0 1 0 0 0 0 0
6 0 1 0 0 0 0 0 0 0
8 0 0 1 0 0 0 0 0 0
9 12 17 19 21 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1
Nach beendeter Gauß-Elimination enthalten die Zeilen 9, 12, 17 und 22 im linken Teil der Matrix nur noch Nullen. An den Positionen der Einsen im rechten Teil der Matrix l¨ asst sich ablesen, durch welche Zeilen-Additionen diese Nullzeilen zustandegekommen sind: Die Nullzeile in Zeile 9 wurde beispielsweise durch Addition der Zeilen 1, 6 und 9 gebildet. Also ist (−1)1+6+9 Q1 Q6 Q9 eine Quadratzahl. Man berechnet daher " x = A0 A5 A8 mod N = 6354661, y = Q1 Q6 Q9 = 1560, erh¨alt damit aber nur die triviale L¨ osung ggT(x − y, N ) = 1 . i −1 2 3 5 7 11 13 29 i = 1 1 1 0 1 1 0 0 1 0 1 6 0 0 1 1 0 0 0 0 0 8 0 0 0 1 0 0 0 0 0 9 0 0 0 0 0 0 0 0 1 12 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 1 19 0 0 0 0 1 1 1 0 1 21 0 0 0 0 0 1 0 1 0 22 0 0 0 0 0 0 0 0 0
6 0 1 1 1 1 0 0 1 1
8 0 0 1 0 0 0 1 1 1
9 12 17 19 21 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1
5.5 Der Algorithmus von Morrison und Brillhart
211
Als n¨achstes liest man aus den Zeilen 12 und 17 ab, dass (−1)6+12 Q6 Q12 bzw. (−1)1+17 Q1 Q17 Quadratzahlen sind. Sie liefern aber beide wegen √ x = A5 A11 mod N = 6355831, y = √Q6 Q12 = 390, x = A0 A16 mod N = 6355831, y = Q1 Q17 = 390, ebenfalls nur die triviale L¨ osung ggT (x − y, N ) = 1 . Schließlich f¨ uhrt die Kombination (−1)6+8+22 Q6 Q8 Q22 aus Zeile 22 mit x = A5 A7 A21 mod N = 956424, y =
" Q6 Q8 Q22 = 19140
zu dem gesuchten nichttrivialen Teiler ggT (x − y, N ) = 2111 . 5.5.5 Aufwandsabsch¨ atzung Die bisher gr¨ undlichste Analyse der asymptotischen, erwarteten Laufzeit von CFRAC stammt von Carl Pomerance [Po3]: Die Wahl der Schranke S hat einen wesentlichen Einfluss auf die Laufzeit, da sie die Anzahl m der Primzahlen in der Faktorenbasis bestimmt, von welcher abh¨angt, wieviele Probedivisionen pro Qi durchgef¨ uhrt werden m¨ ussen und wie umfangreich schließlich die Matrix ist, auf der die GaußElimination vorgenommen wird. Man definiert daher genau wie bei der Analyse von ECM f¨ ur reelles x > e die Funktion √ L(x) := e log x log log x und nimmt an, dass S = L(N )α ist, wobei f¨ ur den Exponenten α > 0 ein optimaler Wert gefunden werden soll. √ Die √ Werte Qi ∈ [0, 2 N ] werden mit Hilfe der Kettenbruchentwicklung von N deterministisch erzeugt. F¨ ur die Analyse von CFRAC m¨ ochte man aber annehmen k¨ onnen, dass sie a hnlich verteilt sind wie zuf¨ a llig gezogene ¨ Zahlen aus diesem Intervall. Insbesondere m¨ ochte man annehmen k¨ onnen, dass der Anteil der durch die Probedivisionen vollst¨ andig zerlegbaren Qi dem von zuf¨allig gezogenen Zahlen entspricht. Dem steht entgegen, dass f¨ ur bestimmte N die Periode der Kettenbruchentwicklung so kurz ist, dass sie gar nicht gen¨ ugend verschiedene faktorisierbare Qi enth¨ alt. In anderen F¨ allen werden ungew¨ ohnlich viele Qi produziert, die nur aus großen Primteilern bestehen und daher nicht zerlegt werden k¨onnen, oder die Faktorenbasis enth¨ alt zu wenig Primzahlen. Und bei manchen N f¨ uhren die L¨ osungen x, y der Kongruenz x2 ≡ y 2 mod N besonders h¨aufig zu trivialen Teilern von N . kann man jeweils dadurch begegnen, dass man √ Diesen Widrigkeiten √ kN statt N entwickelt, wobei k eine kleine, quadratfreie ganze Zahl ist. Als Voraussetzung f¨ ur seine Laufzeitanalyse formuliert Pomerance daher die folgenden Annahmen:
212
5 Faktorisierung ganzer Zahlen
N
Es gibt eine Konstante N0 ∈ , so dass f¨ ur N ≥ N0 folgendes gilt: 1.) Es gibt eine Zahl k√∈ Z mit 1 ≤ k ≤ log2 N , so dass die Periode des Kettenbruchs von kN mindestens die L¨ ange N 1/100 hat. 2.) F¨ ur diese Zahl k und f¨ ur ein beliebiges α , 1/10 < α < 1 , gilt (kN/p) = 1 f¨ ur mindestens 1/3 aller Primzahlen p ≤ L(N )α . √ aherung von kN ist und Qi = A2i−1 − 3.) Wenn Ai /Bi die i -te N¨ 2 kN Bi−1 , dann sind in der Hinsicht, dass ein bestimmter Anteil von ihnen alle Primfaktoren √ unter einer bestimmten Schranke besitzt, die Qi im Intervall √ [0, 2 kN ] genauso verteilt wie die gesamten ganzen Zahlen in [0, 2 kN ] . 4.) L¨asst man den Algorithmus CFRAC so lange laufen, bis 1 + "log2 N # Paare x, y mit x2 ≡ y 2 mod kN erzeugt sind, so gilt f¨ ur mindestens eines dieser Paare x ≡ ±y mod N . Der Einfachheit halber wird von nun an k = 1 angenommen. agt n¨ aherungsweise Die Anzahl der Primzahlen p ≤ L(N )α betr¨ L(N )α L(N )α = L(N )α+o(1) = √ α log(L(N ) ) α log N log log N
f¨ ur N → ∞.
Ein Drittel davon ist ebenfalls L(N )α+o(1) . Mit der zweiten Annahme von Pomerance werden also zum Erstellen der Matrix m = L(N )α+o(1) vollst¨andig faktorisierte Werte Qi ben¨ otigt. Unter der dritten Annahme folgt mit dem Satz von Canfield, Erd¨ os und Pomerance, auf den schon bei der Analyse von ECM Bezug genommen wurde, dass die Wahrscheinlichkeit, dass sich ein Qi vollst¨ andig in Primzahlen ≤ S = L(N )α zerlegen l¨ asst, f¨ ur N → ∞ den folgenden Wert hat: L(N )−(4α)
−1
+o(1)
Der Exponent −(4α)−1 + o(1) im Gegensatz zu −(2α)−1 + o(1) bei ECM erkl¨art sich hierbei dadurch, dass sich die Qi wie zuf¨ allige, positive √ ganze Zahlen < 2 N verhalten, anstatt ≤ N . Es ist also zu erwarten, dass −1 L(N )α+(4α) +o(1) Qi -Werte erzeugt werden m¨ ussen, damit m = L(N )α+o(1) davon vollst¨ andig in Primzahlen der Faktorenbasis zerlegt werden k¨ onnen. F¨ ur die Erzeugung eines einzelnen Qi veranschlagt man den Aufwand O(log2 N ) = L(N )o(1) und f¨ ur die Probedivisionen eines Qi durch s¨ amtliche m Primzahlen der Faktorenbasis L(N )α+o(1) .
5.5 Der Algorithmus von Morrison und Brillhart
213
Multipliziert man diese Zeiten mit der Anzahl von Qi -Werten, die insgesamt erzeugt und getestet werden m¨ ussen, so ergibt dies f¨ ur das Erstellen der Matrix insgesamt die erwartete Laufzeit L(N )2α+(4α)
−1
+o(1)
.
Die Gauß-Elimination auf dieser L(N )α+o(1) × L(N )α+o(1) -Matrix ben¨ otigt einen Aufwand von L(N )3α+o(1) . Addiert man die Zeiten f¨ ur das Erstellen der Matrix und die GaußElimination, so folgt mit der Annahme von Pomerance f¨ ur CFRAC eine gesamte Laufzeit von −1 L(N )max{2α+(4α) ,3α}+o(1) . −1 alt man √Minimiert man den Ausdruck max{2α + (4α) , 3α} , so erh¨ 1/ 8 als optimale Wahl f¨ ur α . Die asymptotische, erwartete zeitliche √ Komplexit¨at von CFRAC in der Grundversion mit S = L(N )1/ 8 ist also √ 2+o(1)
L(N )
f¨ ur N → ∞ .
Bei Verwendung der Large Prime Variation“ k¨ onnen zus¨ atzlich zu den ” Qi , die nur aus Primzahlen der Faktorenbasis bestehen, auch noch diejenigen Qi verwendet werden, die einen einzigen, einfachen Primteiler aus dem Intervall zwischen S = L(N )α und S1 ≤ L(N )2α besitzen. atzlichen FaktorisierungsMan erh¨alt diese faktorisierten Qi ohne zus¨ aufwand, so dass auch hier die Faktorisierung eines einzelnen Qi die Zeit L(N )α+o(1) ben¨ otigt. Obwohl bei dieser Variation ein gr¨ oßerer Anteil von Qi -Werten vollst¨ andig in Primzahlen der Faktorenbasis zerlegt werden kann als in der Grundversion, betr¨ agt die asymptotische Wahrscheinlichkeit f¨ ur die Faktorisierbarkeit eines Qi ebenfalls nur L(N )−(4α)
−1
+o(1)
.
Der Zuwachs betrifft also nur das o(1) “ im Exponenten von L(N ) . ” Da mit der Large Prime Variation“ mehr Primzahlen in den Zerlegun” gen vorkommen k¨ onnen, stellt sich die Frage, um wieviel komplexer die Gauß-Elimination dadurch wird. Muss sie nun etwa auf einer L2α+(1) × L2α+o(1) -Matrix statt auf einer α+o(1) L × Lα+o(1) -Matrix durchgef¨ uhrt werden ? Um dies zu vermeiden, schl¨ agt Pomerance ein Verfahren vor, das er cull“ nennt (etwa: Kahlschlag): Man ordnet die zerlegten Qi ’s nach ihrem ” jeweils gr¨oßten Primteiler. Dann geht man genau einmal durch die Reihe der dazugeh¨origen Vektoren v . Jedes v , das seine letzte 1 nicht an der selben Position wie eines seiner beiden benachbarten v ’s hat, wird sofort gel¨oscht.
214
5 Faktorisierung ganzer Zahlen
Wenn aber n Vektoren ihre letzte 1 an der selben Stelle haben, wird der erste davon jeweils modulo 2 zu den folgenden n − 1 Vektoren addiert, wodurch deren letzte 1 wegf¨ allt. Da jedes Qi h¨ ochstens einen Primteiler > S = L(N )α besitzt, bleiben nach diesem ersten Ausd¨ unnen nur noch Vektoren u ¨brig, bei denen alle zu den Primteilern > S = L(N )α geh¨ origen Koordinaten 0 sind, so dass die Matrix auf L(N )α+o(1) Spalten reduziert werden kann. Dieser einmalige Durchgang durch die maximal L(N )2α+o(1) großen Primzahlen ben¨otigt eine Laufzeit von h¨ ochstens L(N )2α+o(1) und wird deshalb bei weitem von der Komplexit¨ at L(N )3α+o(1) der Gauß-Elimination dominiert. Da das Erstellen der Matrix und die Gauß-Elimination mit Large Pri” me Variation“ zumindest asymptotisch die gleiche Komplexit¨ at besitzt wie ohne, betr¨agt die erwartete zeitliche Komplexit¨ at von CFRAC mit Large ” Prime Variation“ ebenfalls L(N )
√ 2+o(1)
f¨ ur N → ∞ .
F¨ ur die Early Abort Strategy“ fand Pomerance folgende optimalen √ ” 1/28 Werte: Nach Probedivision jedes einzelnen Qi ’s bis L(N ) u uft ¨berpr¨ man, ob der restliche Kofaktor noch gr¨ oßer als S2 = N 1−1/7 ist. Wenn dies der Fall ist, wird die Probedivision f¨ ur dieses Qi abgebrochen. Die asymptotische zeitliche Komplexit¨ at von CFRAC mit einer Abbruchm¨ oglichkeit betr¨agt dann √ L(N ) 7/4+o(1) f¨ ur N → ∞. Man kann bei der Zerlegung der Qi ’s auch mehrere solcher Abbruchm¨oglichkeiten vorsehen. F¨ ur eine Early Abort Strategy“ mit n Ab” bruchm¨oglichkeiten gibt Pomerance eine zeitliche Komplexit¨ at von √ L(N ) 3/2+1/(2n+2)+o(1) f¨ ur N → ∞. L¨asst man dabei n → ∞ gehen, so dr¨ uckt das die zeitliche Komplexit¨ at von CFRAC herab auf einen idealen Wert von √ L(N ) 3/2+o(1) f¨ ur N → ∞ . Je nach Strategie hat man also eine Algorithmus mit dem erwarteten zeitlichen Aufwand (mit einem γ zwischen 32 und 2 ) √ √ L(N ) γ+o(1) = e γ log N log log N +o(1) f¨ ur N → ∞ .
5.6 Verwendung der Algorithmen
215
5.6 Verwendung der Algorithmen Carl Friedrich Gauß (1777-1855) hatte die Idee, ganze Zahlen mit Hilfe der Theorie der bin¨aren quadratischen Formen zu faktorisieren [Gau]. Daniel Shanks gelang es, aus dieser Theorie einen Algorithmus zu entwickeln, der relativ einfach auf Computern implementiert werden kann [Sha]. Er stellte diesen Algorithmus mit dem Namen Square Forms Factorization (SQUFOF) im Jahre 1975 auf einem AMS-Meeting in San Antonio vor. Die diesem Algorithmus zugrundeliegende Theorie ist sehr umfangreich weshalb dieser Algorithmus hier nicht besprochen wird. Die bisher wohl ausf¨ uhrlichste Behandlung der zugrundeliegenden Theorie und des Algorithmus von Shanks finden sich in [Bue]. Andere Algorithmen werden in den bekanntesten ComputeralgebraProgrammen nicht verwendet. Der Aufbau der Faktorisierungsfunktion ifactor in Maple ist etwa der folgende: 1.) Probedivision bis 1699, 2.) Primalit¨atstest, 3.) Wurzelziehen, 4.) Pollard-(p − 1) mit Schranke S = 2000 , 5.) Probedivision bis 100 000, 6.) Weitere Methoden nach Wahl (2.Parameter von ifactor; Wenn nichts angegeben wird, wird der Kettenbruchalgorithmus von Morrison und Brillhart verwendet): a) pollard“ Pollard-ρ-Algorithmus, ” b) lenstra“ Lenstras ECM-Algorithmus, ” c) squfof“ D. Shanks Algorithmus mit quadratischen Formen. ” Der Aufbau der Funktion FactorInteger in Mathematica ist ¨ ahnlich: 1.) Probedivision, 2.) Pollard-(p − 1), 3.) Pollard Rho, 4.) Probedivision, und es gibt noch eine zus¨ atzliche Funktion FactorIntegerECM, die mit elliptischen Kurven arbeitet. F¨ ur eine feste Schranke S findet der Pollard-(p − 1) Algorithmus kleinere bis mittlere Teiler in O(n2 ) Schritten. Durch die vorgeschalteten Probedivisionen wird dieser Algorithmus in Maple erstmals bei der Faktorisierung von 2941189 aufgerufen und scheitert zum ersten Mal bei 12007001 = 4001 · 3001. Sein Einsatz als erster nichttrivialer Algorithmus erscheint also sinnvoll. Die Laufzeit von Pollard-ρ h¨ angt von der Gr¨ oße der Teiler p von N ab. Dieser Algorithmus scheint damit besonders geeignet f¨ ur mittelgroße Teiler.
216
5 Faktorisierung ganzer Zahlen
Die Laufzeit des Morrison-Brillhart-Algorithmus ist unabh¨ angig von der Gr¨oße der Teiler. Sie h¨ angt nur von der Gr¨oße von N ab. Dieser Algorithmus erscheint damit g¨ ur den Fall, dass N zwei Primteiler von √unstig f¨ der Gr¨oßenordnung von N besitzt. Da dieser Algorithmus asymptotisch schneller als Pollard-ρ ist und man a priori nichts u ¨ber eventuelle Primteiler weiß, wird er von Maple auch folgerichtig als erste Wahl angeboten. Lenstras ECM-Algorithmus und der erw¨ ahnte Algorithmus SQUFOF sind von ¨ahnlicher asymptotische Laufzeit wie CFRAC und werden deshalb in Maple als Alternativen angeboten, die man im Falle des Scheiterns von CFRAC zu Rate ziehen kann. Neuere Versionen von Mathematica, Magma und anderen Systemen bieten zus¨ atzlich zu den oben genannten Verfahren das so genannte quadratische Sieb (QS) an. Dieses wurde Anfang der 80er Jahre von Carl Pomerance in [Po3] vorgestellt und war ab da der schnellste bekannte Faktorisierungs-Algorithmus, bis dann Anfang der 90er Jahre das Zahlk¨orper-Sieb (number field sieve, NFS abgek¨ urzt) bekannt wurde [LMP]. Urspr¨ unglich war das NFS nur f¨ ur Zahlen der speziellen Bauart N = rt − s geeignet, wobei r, t ∈ , s ∈ Z und r und s dem Betrag nach klein sind. Es wurden und werden große Anstrengungen unternommen, das NFS auf beliebige Zahlen zu zu verallgemeinern. Inzwischen gibt es lauff¨ ahige Implementierungen dieses so genannten GNFS (general number field sieve=verallgemeinertes Zahlk¨ orper-Sieb; siehe etwa [Zay]), die aber noch nicht Eingang in die g¨angigen Computeralgebra Programme gefunden haben. Das GNFS ist mit einem Aufwand von √ 3 2 e1.9223 log N (log log N ) f¨ ur N → ∞
N
asymptotisch das schnellste bekannte Verfahren zur Faktorisierung ganzer Zahlen. Bis zur Gr¨ oße von ungef¨ ahr 100 Dezimalen ist aber das quadratische Sieb mit dem gr¨oßeren asymptotischen Aufwand von √ L(N ) = e log N log log N f¨ ur N → ∞ immer noch u ¨berlegen. Die Mathematica-Entwickler haben in der neuesten Version CFRAC durch die Version PMPQS (multiple polynomial quadratic sieve with single large prime variation) von QS ersetzt, die nach ihren Angaben bei Primteilern zwischen 5 und 40 Ziffern ca. 40-80mal schneller als CFRAC ist. Das quadratische Sieb wird im folgenden Abschnitt erl¨autert.
5.7 Das quadratische Sieb
217
5.7 Das quadratische Sieb 5.7.1 Die Grundidee Die Grundidee des quadratischen Siebs (und auch des NFS) ist die gleiche wie bei CFRAC. Es werden ganze Zahlen x und y gesucht, die Gleichung (5.14) erf¨ ullen, also x2 ≡ y 2 mod N , f¨ ur die aber x ≡ ±y mod N gilt. Mit ggT(x − y, N ) oder ggT(x + y, N ) findet man dann einen nichttrivialen Teiler von N . W¨ahrend bei CFRAC aber geeignete x und y mit Hilfe von Kettenbruchentwicklungen gesucht werden, wird f¨ ur QS das Polynom √ f (x) = (x + " N #)2 − N (5.30) verwendet. ahlt, dass das Produkt Angenommen x1 , x2 , . . . xk werden derart gew¨ f (x1 ) · . . . · f (xk ) ein Quadrat y 2 ist. Sei weiterhin √ √ √ x = (x1 + " N #)(x2 + " N #) . . . (xk + " N #) , dann gilt √ √ x2 = (x1 + " N #)2 · . . . · (xk + " N #)2 y 2 = f (x1 ) · . . . · f (xk ) √ √ = [(x1 + " N #)2 − N ] · . . . · [(xk + " N #)2 − N ] √ √ = (x1 + " N #)2 · . . . · (xk + " N #)2 + Vielfache von N , d.h. modulo N sind diese beiden Ausdr¨ ucke gleich, erf¨ ullen also (5.14). Um passende xi zu erhalten, werden Zahlen in einem Interval [−M, M ] , dem so genannten Siebintervall, mit einer von N abh¨ angigen Schranke M u uft, ob sie u ¨berpr¨ ¨ber einer bestimmten Menge kleiner Primzahlen zerfallen. Die Zusammensetzung dieser Menge, die wie bei CFRAC Faktorenbasis genannt wird, wird nun erl¨ autert. 5.7.2 Die Faktorenbasis Die Faktorenbasis F besteht aus Primzahlen p , die m¨ ogliche Teiler der Funktionswerte f (x) sind, und der Zahl −1 , da die untersuchten Zahlen auch negativ sein k¨ onnen. Aus der Definition von f folgt dann, dass f¨ ur Primzahlen p aus der Faktorenbasis gilt √ (x + " N #)2 ≡ N mod p , d.h. N ist ein quadratischer Rest modulo p .
218
5 Faktorisierung ganzer Zahlen
Da die Faktorenbasis nicht zu große Primzahlen enthalten sollte, gibt man sich eine von N abh¨ angige obere Schranke B f¨ ur ihre M¨ achtigkeit vor. Diese Schranke B und Gr¨ oße des Siebintervalls M haben erheblichen Einfluss auf die Laufzeit des gesamten Algorithmus und m¨ ussen entsprechend geschickt gesetzt werden. Ist diese Vorarbeit geleistet, f¨ ullt man die Faktorenbasis (außer mit der −1 , die immer dabei ist) mit kleinen Primzahlen p , so dass jeweils N ein quadratischer Rest modulo p ist. Die l¨asst sich mit Hilfe des bereits im Abschnitt u ¨ber den Algorithmus von Morrison und Brillhart eingef¨ uhrten Legendre-Symbols (N/p) erreichen. Die Berechnung kann etwa mit der oft Euler-Kriterium genannten Formel 5.5.4.2 erfolgen. 5.7.3 Das Sieben In der Siebphase werden nun Zahlen f (x) gesucht, die komplett u ¨ber der Faktorenbasis zerfallen. Dazu kann man dem Siebintervall [−M, M ] eine zuf¨allig gew¨ahlte Zahl x entnehmen, f (x) berechnen, und pr¨ ufen, ob sich diese Zahl vollst¨andig mit den Elementen der Faktorenbasis zerlegen l¨ asst. Hat man ausreichend viele dieser vollst¨ andig zerlegbaren Funktionswerte gefunden, versucht man diese so zu kombinieren, dass in dem Produkt alle Exponenten von den beteiligten Elementen der Faktorenbasis gerade sind, also ein vollst¨andiges Quadrat vorliegt. ¨ Ahnlich wie bei CFRAC f¨ uhrt das auf ein lineares Gleichungssystem u ¨ber Z2 : sind p1 < . . . < pm die Primzahlen der Faktorenbasis F und ei,0 ei,1 ei,2 p1 p 2
f (xi ) = (−1)
. . . pemi,m ,
so ordnet man diesem f (xi ) einen bin¨ aren Vektor vi = (αi,0 , αi,1 , αi,2 , . . . , αi,m ) ∈ Zm+1 2 zu, mit den Koordinaten αi,j = ei,j mod 2 . Ein Produkt verschiedener f (xi ) ist genau dann ein vollst¨ andiges Quadrat, wenn die Summe der zugeh¨origen vi der Nullvektor ist. 5.7.3.1 Beispiel: F¨ ur N = 152769431 kann man etwa B = 13 und M = 2197 w¨ahlen. Damit ist f (x) = x2 + 24718x − 24550 und z.B. F = {−1, 2, 5, 11, 13, 17, 19, 23, 31, 71, 79, 109, 113} eine geeignete Faktorenbasis. F¨ ur das aus dem Siebintervall zuf¨ allig gezogene x = 1002 ergibt sich dann f (x) = 25746890 = 2 · 5 · 13 · 23 · 79 · 109 , d.h. dieser Wert zerf¨ allt vollst¨ andig in Faktoren aus der Faktorenbasis. Der bin¨ are Exponentenvektor dazu ist (0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0) .
5.7 Das quadratische Sieb
219
Schreibt man die gefundenen Exponentenvektoren hintereinander als Spalten in eine Matrix A , so bekommt man sicher eine nichttriviale L¨ osung des homogenen linearen Gleichungssystems A · = 0 u ¨ber Z2 , wenn man mehr Spalten als Zeilen, also mehr als B St¨ uck, hat. Der L¨ osungsvektor liefert dann die f (xi ) , deren Produkt ein Quadrat Das bisher geschilderte Verfahren ist allerdings noch viel zu aufw¨ andig und l¨asst sich noch sehr viel effektiver gestalten. Zuerst einmal gilt es, m¨ oglichst viele Probedivisionen f¨ ur die Zerlegung der f (xi ) zu vermeiden. Außerdem kann man probieren, die dabei auftretenden Zahlen noch kleiner zu bekommen. Da f (x) ein einfaches quadratisches Polynom ist, kann man sich eine ahlen und die zwei Wurzeln der Primzahlen pi aus der Faktorenbasis ausw¨ zi1 , zi2 ∈ {0, 1, . . . , pi − 1} von f (x) mod pi berechnen. Damit weiß man dann aber, dass f¨ ur k ∈ Z auch alle Werte zi1 + kpi und zi2 + kpi Nullstellen von f (x) mod pi sind. Auf diese Weise kann man ohne Probedivisionen von sehr vielen Zahlen im Siebintervall auf einmal feststellen, dass sie durch pi teilbar sind. Dieser Idee verdankt das Verfahren seinen Namen. Da das Siebintervall meist zu groß ist, um alle Werte auf einmal zu untersuchen, k¨onnte man sich jetzt ein gewisses Teilintervall davon vornehmen und alle Funktionswerte f (zi1 + kpi ) und f (zi2 + kpi ) aus diesem Bereich durch die h¨ ochste enthaltene Potenz von pi teilen. Macht man das f¨ ur alle pi aus der Faktorenbasis, so steht am Schluss an der Stelle der v¨ ollig u ¨ber der Faktorenbasis zerfallenden Funktionswerte jeweils eine 1 . Protokolliert man in einem Vektor jeweils mit, durch welche pi und wie oft man schon geteilt hat, so hat man dazu auch gleich den passenden Vektor (ei,0 , . . . , ei,m ) . Am Anfang dieses Verfahrens steht jeweils die Berechnung der Wurzeln √ zi1 , zi2 des quadratischen Polynoms f (x) = (x + " N #)2 − N modulo pi . Dazu muss man die Quadratwurzel von N modulo pi berechnen k¨ onnen. Dies kann z.B. mit dem nach Shanks und Tonelli benannten Algorithmus geschehen, der jetzt beschrieben wird (vgl. etwa [Gon] f¨ ur andere M¨ oglichkeiten). Der so genannte Shanks-Tonelli-Algorithmus berechnet die Quadratwurzel aus einer Zahl a modulo einer Primzahl p . Da das nur f¨ ur einen quadratischen Rest modulo p geht, also f¨ ur (a/p) = 1 , weiß man nach dem p−1 Euler-Kriterium, dass dann a 2 ≡ 1 mod p gelten muss. Ist das der Fall, so zerlegt man p − 1 in p − 1 = s · 2e mit ungeradem s und e ∈ . Zus¨atzlich sucht man sich irgendein Nichtquadrat n , also ein p−1 Element mit n 2 ≡ −1 mod p . Damit setzt man
N
w := a
s+1 2
, b := as , g = ns , r = e .
Mit diesen Werten gilt dann w2 = as+1 = b · a . Ist b ≡ 1 mod p , so ist w gerade die gesuchte Quadratwurzel.
220
5 Faktorisierung ganzer Zahlen
Die Chancen daf¨ ur stehen gut, denn e
k
e
b2 = (as )2 = as2 = ap−1 ≡ 1 mod p ⇒ ord b = 2m mit m < e Ist m doch nicht 0 , so kann man die Ordnung mit dem folgenden Trick schrittweise absenken und so doch noch das Gew¨ unschte erreichen. Setze w = w · g 2
r−m−1
, g = g2
r−m
, b = b · g , r = m .
(5.31)
Mit diesen neuen Gr¨ oßen gilt dann r−m−1 2 r−m 2 = a · b · g2 = a · b w = w · g 2 und dieses neue b hat jetzt h¨ ochstens die Ordnung 2m−1 , denn b
2m−1
= b · g2
r−m 2
m−1
= b2
m−1
m−1
≡ −1 mod p und
denn wegen ord b = 2m ist b2 g2
r−1
= (ns )2
r−1
= ns2
g2
r−1
e−1
≡ (−1) · (−1) = 1 mod p ,
=n
p−1 2
≡ −1 mod p
Reicht dies immer noch nicht, d.h. ist m − 1 = 0 , so benennt man um zu w ← w , b ← b , g ← g , r ← m und wiederholt dieses Verfahren, d.h. macht mit (5.31) weiter. Wurzel aus a modulo einer Primzahl p procedure ShanksTonelli(a, p) p−1
if a 2 mod p = 1 then Return ( kein Quadrat“) ” end if s ← p − 1; e ← 0 while ZRest(s, 2) = 0 do s ← 2s ; e ← e + 1 end do
Z
# Eingabe: a ∈ , p prim # Ausgabe: w mit w2 ≡ a mod p
s+1
w ← a 2 mod p; b ← as mod p; g ← ns mod p r ← e mod p; m ← log2 (ord(b, p)) while m = 0 do ρ ← 2r−m−1 ; g ← g 2ρ mod p; b ← bg mod p w ← wg ρ mod p; r ← m mod p; m ← log2 (ord(b, p)) w ← w ; b ← b ; g ← g ; r ← r end do Return(w) end
5.7.3.2 Beispiel: √ Wie im letzten Beispiel sei N = 152769431 und f (x) = (x + " N #)2 − N . Ist etwa p = 13√, so muss zur Berechnung der Wurzeln von f die Quadratwurzel N mod p berechnet werden.
5.7 Das quadratische Sieb
221
Der Shanks-Tonelli-Algorithmus startet also mit p = 13 und a = p−1 N ≡ 9 mod 13 . Wegen a 2 ≡ 1 mod p ist die Berechnung der Quadratwurzel m¨ oglich. Nun zerlegt man p − 1 = 12 in s · 2e = 3 · 22 . Ein Nichtquadrat mod 13 ist etwa n =√2 . Damit ergibt sich w ≡ 3 , b ≡ 1 , g ≡ 8 , r ≡ 2 mod 13 , d.h. N mod 13 ≡ w = 3 wurde bereits im ersten Schritt des Shanks-Tonelli-Algorithmus berechnet. √ Wegen " N # = 12359 ≡ 4 ergeben sich die Nullstellen von f (x) mod 13 also aus x + 9 = ±3 zu z1 = 1 und z2 = 7 . Arbeitet man mit der Faktorenbasis F des letzten Beispiels (also 13 an der 5ten Stelle), so kann man bei den x-Werten 1 + 13k und 7 + 13k mit k ∈ Z jeweils f (x) durch 13 teilen und an der 5ten Stelle des zugeh¨ origen Exponentenvektors 1 addieren. Da nat¨ urlich f (x) den Primteiler 13 mehrfach enthalten kann, k¨onnte man bei den resultierenden Werten auch nochmals die Teilbarkeit testen und den Faktor solange aus f (x) herausziehen und im Exponentenvektor addieren, bis der Rest teilerfremd zu 13 ist. In der folgenden Tabelle wurde das so gemacht. Im Anschluss an das Beispiel wird eine schnellere Variante diskutiert. Mit der letzten Primzahl der √ aktuellen Faktorenbasis, p = 113 , gelingt die Berechnung von N mod p erst nach einmaliger Anwendung von (5.31): Zuerst zerlegt man p−1 = 112 in s·2e = 7·24 . Ein Nichtquadrat mod 113 ist etwa n = 3 . Damit ergibt sich w ≡ 1 , b ≡ 15 , g ≡ 40 , r ≡ 4 mod 113 . x
f (x) Primteiler
40 59 113 202 566 631 686 844 1002 1150 1332 1522 1535 1554 1876 1983
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Exponentenvektor (0, (0, (0, (0, (0, (0, (0, (0, (0, (0, (0, (0, (0, (0, (0, (0,
1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0,
1, 0, 0, 1, 0, 0, 0, 0, 1, 2, 2, 1, 1, 0, 0, 0,
0, 1, 0, 1, 0, 3, 1, 0, 0, 2, 0, 1, 1, 0, 2, 0,
1, 1, 0, 1, 1, 2, 0, 0, 1, 0, 0, 2, 1, 1, 0, 4,
1, 0, 1, 0, 0, 0, 1, 1, 0, 3, 1, 0, 0, 0, 2, 1,
1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0,
1, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 1, 0,
0, 0, 0, 0, 2, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0,
0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,
0) 0) 0) 1) 0) 0) 0) 1) 0) 0) 1) 1) 0) 0) 0) 0)
222
5 Faktorisierung ganzer Zahlen
Wegen b ≡ 1 mod p bekommt man √ mit (5.31) w ≡ 18 , b ≡ 1 , g ≡ 98 und r ≡ 2 mod 113 , d.h. N mod 113 ≡ 18 . √ Mit " N # = 12359 ≡ 42 mod 113 ergeben sich die Nullstellen von f (x) mod 113 also aus x + 42 = ±18 zu z1 = 53 und z2 = 89 . Siebt man etwa die Zahlen von 1 bis 2000 durch, so finden sich am Ende die auf der Vorseite gezeigten interessanten Eintr¨ age im Siebarray: Diese Exponentenvektoren, mod 2 genommen, kommen als Spalten in die Koeffizientenmatrix des zu l¨ osenden Gleichungssystems. Das im Beispiel beschriebene Testen von Funktionswerten auf mehrfache Teilbarkeit durch eine Primzahl ist so nat¨ urlich noch viel zu aufw¨ andig. Da viele der betrachteten Zahlen nicht quadratfrei u ¨ber der Faktorenbasis sind, kann man zur Vermeidung von teuren Probedivisionen zwei m¨ ogliche Ans¨atze verfolgen. Eine M¨ oglichkeit liefert der Satz von Hensel, der es erm¨oglicht aus Nullstellen von f mod p auch die von f mod pt zu berechnen. Man kann aber auch das Sieben nach h¨ oheren Potenzen von p weglassen und am Schluss nicht nur die Funktionswerte betrachten, die zu 1 reduziert wurden, sondern all die, die unter einer gewissen Schranke liegen. F¨ ur das Hensel-Lifting in diesem einfachen Fall ur die betrachtete √ muss f¨ Primzahl pi aus der Faktorenbasis ggT(2(x + " N #), pi ) = 1 sein. Ist das der Fall, so setzt man startend mit t = 1 f¨ ur jede der beiden Nullstellen z (t) = zi1 und z (t) = zi2 mod pi jeweils v = f (z (t) )/pti ∈ und damit
N
b=−
2(z (t)
v √ mod pi und z (t+1) = z (t) + b·t . + " N #)
Dieses z (t+1) ist dann eine Nullstelle von f mod pt+1 und damit auch jedes z (t+1) + kpt+1 mit k ∈ Z . i das betrachtete Man l¨asst das k ∈ Z so laufen, dass z (t+1) + kpt+1 i Teilintervall des Siebintervalls durchl¨ auft, teilt die Funktionswerte durch pi und addiert 1 im zugeh¨ origen Exponentenvektor. Dann setzt man t um 1 hoch und wiederholt dieses Verfahren bis zu einem geeigneten tmax . Auch im oben ausgeschlossenen Fall pi = 2 kann man mit der folgenden ¨ Uberlegung relativ einfach h¨ ohere Potenzen von 2 in f (x) finden. Da man N√ als ungerade voraussetzen kann, gilt 2|f (x) falls 2 ein Teiler von x + " N # ist. Man kann leicht nachrechnen, dass sogar gilt 8|f (x) falls N ≡ 1 mod 8 , 4|f (x) falls N ≡ 5 mod 8 und 2|f (x) falls N ≡ 3 oder 7 mod 8 . Um große Zahlen m¨ oglichst zu vermeiden, wird beim quadratischen Sieb auch statt mit den Zahlen selbst nur mit ihren 2 -L¨ angen (Bitl¨ ange) gerechnet. Das Siebarray wird dann jeweils nicht mit f (x) , sondern mit der 2 -L¨ange von f (x) belegt und statt der Divisionen durch die Primfaktoren aus der Faktorenbasis werden deren vorher bestimmte 2 -L¨ angen abgezogen.
5.7 Das quadratische Sieb
223
Da die 2 -L¨angen nicht genau die Logarithmen zur Basis 2 sind, sondern die ganzzahlig aufgerundeten Werte, entstehen so Rundungsfehler. Am Ende des Siebprozesses steht somit an der Stelle der v¨ ollig zerfallenden Funktionswerte oft nicht die der 1 entsprechende 0 , sondern ein betragsm¨aßig kleiner Wert. Je nachdem, ob man auch nach gr¨ oßeren Potenzen der pi gesiebt hat, oder nicht, muss man hier also eine geeignete Schranke bereitstellen, so dass mit großer Wahrscheinlichkeit die Funktionswerte, die nach dem Sieben betragsm¨aßig unter dieser Schranke liegen, diejenigen sind, die vollst¨ andig u agt in [Si2] z.B. vor, nur ¨ber der Faktorenbasis zerfallen. Silverman schl¨ 2er-Potenzen wie oben beschrieben zu behandeln, bei den restlichen Primzahlen aber nur die erste Potenz zu sieben und dann alle Werte unter der Schranke 12 n(N ) + n(M ) − 2 n(pmax ) zu nehmen, wobei pmax die gr¨ oßte Primzahl in der Faktorenbasis sei und T ein Faktor zwischen 1.5 und 2.5 bei einer Gr¨oße von 30-60 Bit von N . 5.7.4 Mehrere Polynome Nochmals eine deutliche Beschleunigung des Algorithmus kann erreicht werden, indem man nicht nur das in (5.30) angegebene Polynom, sondern mehrere Polynome mit den gleichen Grundeigenschaften verwendet. Die wesentliche Eigenschaft des bisherigen f (x) war dabei √ f (x) ≡ (x + " N #)2 mod N . Deshalb setzt man f (x) = ax2 + 2bx + c an und bestimmt die ganzzahligen ¨ Koeffizienten so, dass die entsprechende Aquivalenz af (x) ≡ (ax + b)2 mod N erf¨ ullt ist. Es folgt direkt, dass dann b2 − ac ≡ 0 mod N sein muss. Da f (x) mod N ein Quadrat sein soll, nimmt man f¨ ur a ein Quadrat, denn dann folgt das aus obiger Gleichung automatisch. M¨ochte man wieder ein symmetrisches Siebintervall [−M, M ] nehmen, so sollen nat¨ urlich die Werte von f (x) nicht zu groß werden, denn dann rechnet es sich leichter mit ihnen und die Wahrscheinlichkeit, dass sie v¨ ollig u oßer. ¨ber der Faktorenbasis zerfallen, ist gr¨ Das quadratische Polynom f (x) hat sein Minimum bei x = − ab mit 2 2 dem Wert f (− ab ) = c − ba = ac−b . An den R¨andern des Intervalls hat man a 2 dagegen die Werte aM ± 2bM + c . Soll das ein m¨ oglichst kleines, symmetrisches Intervall sein, so kann man wegen b2 − ac ≡ 0 mod N etwa b2 − ac = N w¨ ahlen, denn damit hat man das negative Minimum f (− ab ) = − Na .
224
5 Faktorisierung ganzer Zahlen
Damit an den beiden R¨ andern bei ±M ungef¨ ahr der entgegengesetzte Wert Na angenommen werden kann, sollte das Minimum − ab ungef¨ ahr in der Mitte dazwischen liegen. Dies kann man erreichen, indem man 0 < b < a ⇐⇒ 0 < ab < 1 nimmt. Dann sind die Werte an den beiden Intervallr¨andern aM 2 ± 2bM + c ungef¨ ahr gleich, also ≈ aM 2 + c alt man damit schließlich Aus der Bedingung Na ≈ aM 2 ± 2bM + c erh¨ 6 N a2 M 2 +ac a2 M 2 +b2 −N 2N −b2 2 ≈ aM + c = = , also a ≈ a a a M2 . Nach dieser Diskussion, erscheint es also sinnvoll, die Gr¨ oßen a , b und c wie folgt zu bestimmen: √ 2N a ein Quadrat mit a ≈ und (N/p) = 1 f¨ ur jeden Primteiler p|a , M 2 2 b mit 0 < b < a und b ≡ N mod a , c mit b − ac = N . beginnt mit der Suche nach einem geeigneten a etwa bei 6 Man √ 2N 2 ur alle Primteiler p dieser Zahl (N/p) = 1 , weicht " M # . Gilt nicht f¨ man zu benachbarten Quadratzahlen aus. Zu einem festen a sind nun L¨ osungen b von x2 − N ≡ 0 mod a gesucht. Dies heißt, dass f¨ ur jeden Primteiler p von a gelten muss x2 − N ≡ 0 mod p . Jede dieser quadratischen Gleichungen hat 2 L¨ osungen, denn es wurde ja bereits im ersten Schritt daf¨ ur gesorgt, dass (N/p) = 1 ist. Diese L¨ osungen kann man wieder mit dem Shanks-Tonelli-Algorithmus berechnen. Mit Hensel-Lifting kann man diese L¨ osungen f¨ ur p = 2 liften, so dass man je zwei L¨osungen von x2 − N ≡ 0 mod p2 bekommt. Kombiniert man die L¨osungen zu verschiedenen Primteiler-Quadraten mit Hilfe des Chinesischen Restsatzes, so bekommt man zu einem festen a mit Primfaktoren 2 m¨ogliche Werte f¨ ur b . √
2N ≈ 34.9 . 5.7.4.1 Beispiel: F¨ ur N = 152 769 431 und M = 500 ist M Da f¨ ur das n¨ achstgelegene Quadrat 36 der Primteiler p = 3 mit (N/p) = −1 dabei w¨ are, kann man etwa a = 25 w¨ ahlen, denn (N/5) = 1 . Das Polynom x2 − N hat mod 5 die zwei Wurzeln 1 und 4 . Einmaliges Hensel-Lifting liefert die L¨ osungen 9 und 16 mod 25 . Mit diesen beiden Werten erh¨ alt man zwei geeignete Polynome zu diesem Wert von a :
f = 25x2 + 18x − 6 110 774 oder f = 25x2 + 32x − 6 110 767 Betrachtet man dagegen N = 1 524 212 467 931 und M = 1000 , so ist etwa a = 4225 = (5 · 13)2 ein geeigneter Wert. Das Polynom x2 − N hat mod 5 die zwei Wurzeln 1 und 4 . Einmaliges HenselLifting liefert die L¨ osungen 9 und 16 mod 25 . Dagegen bekommt man mod 13 die Wurzel 6 und 7 oder mod 132 geliftet 45 und 124 .
5.7 Das quadratische Sieb
225
Kombination dieser L¨ osungen mit dem Chinesischen Restsatz liefert die 4 Ergebnisse 1566 , 3166 , 1059 und 2659 mod a , was auf die 4 Polynome 4 225x2 + 3 132x − 360 759 767 , 4225x2 + 6 332x − 360 757 975 , 4 225x2 + 2 118x − 360 760 082 , 4225x2 + 5 318x − 360 758 674 f¨ uhrt. ¨ Ublicherweise geht man so vor, dass man wie im Beispiel zu einem festen a alle m¨oglichen Werte b und c berechnet, und m¨ oglichst auf mehreren Prozessoren oder Rechnern parallel mit diesen Polynomen siebt. Es wird berichtet [Gua], dass Implementierungen mit k Computern dabei fast kmal so schnell wie auf einem Computer sind. Durch die beschriebene Wahl der Koeffizienten a , b und c kommt man mit einer kleineren Faktorenbasis und einem kleineren Siebarray aus, als bei dem anf¨anglichen Polynom (5.30). Nach dem Sieben ist bei großem N das zu l¨ osende lineare Gleichungs√ 2 system u ¨ber Z2 ein Problem. Silverman empfiehlt etwa B ≈ L(N ) 4 und M ≈ B 3 . F¨ ur die Zahl RSA-129, eine 129-stellige Zahl, die aus zwei großen Primfaktoren besteht, w¨ aren das fast 2 Millionen Primzahlen. Bei der Faktorisierung im Jahr 1994 mit dem quadratischen Sieb wurden zwar nicht ganz so viele verwendet ( nur“ 524 339, s. [AGL] ), das resultierende Glei” chungssystem der Gr¨ oße 569 466 mal 524 339 war aber immer noch gigantisch. Trotzdem ließ sich dieser letzte Schritt auf einem einzigen Computer erledigen. Die Siebphase dominiert also deutlich. F¨ ur lineare Gleichungssysteme dieser Gr¨oßenordnung u osungsverfahren ¨ber Z2 sind spezialisierte L¨ n¨otig, etwa der Algorithmus von Wiedemann [Wie].
An der Siebphase dieser Faktorisierung nahmen etwa 600 Personen mit insgesamt ca. 1600
Computern teil. Trotzdem dauerte das fast 8 Monate
6 Polynom–Faktorisierung
6.1 Motivation In vielen Teilgebieten der Mathematik st¨ oßt man auf das Problem, ein gegebenes Polynom faktorisieren zu m¨ ussen. W¨ ahrend man in der Codierungstheorie oder Kryptographie eher Polynome u orpern fakto¨ber endlichen K¨ risieren muss (etwa f¨ ur die Konstruktion zyklischer Codes, die Berechnung der Anzahl von Punkten auf elliptischen Kurven oder den ’index calculus’ Algorithmus zum Berechnen diskreter Logarithmen), braucht man f¨ ur andere Teilgebiete der Computeralgebra (etwa als Vorarbeit f¨ ur die Summation oder Integration) auch die Faktorisierung von Polynomen u ¨ber Ringen der Charakteristik 0 . F¨ ur den Anfang wird man dort univariate Polynome u ¨ber Q oder algebraischen Erweiterungen Q[α], Q[α, β] betrachten. Nach dem in 4.6.6.2 bewiesenen Satz von Gauß kann sich bei Q[x] auf Z[x] beschr¨ anken. Eine erste Idee, wie man Polynome aus Z[x] faktorisieren k¨ onnte, wird meist nach Kronecker benannt, obwohl sie wohl bereits 90 Jahre vor Kronecker (1793) von Friedrich von Schubert entwickelt worden war (Schuberts Idee beruht ihrerseits auf einer von Newton in seiner Arithmetica Universalis (1707) angegebenen Methode zum Auffinden linearer und quadratischer Faktoren). Die Grundidee ist dabei denkbar einfach: Es sei f (x) ∈ Z[x] mit deg f (x) = n . Zerf¨ allt f (x) in Faktoren g(x) , h(x) ∈ Z[x] , also f (x) = g(x)h(x) , so hat einer dieser Faktoren $ % Grad ≤ n2 . Es sei also m = n2 und g(x) der gesuchte Faktor vom Grad ≤ m . Zur Bestimmung von g(x) berechnet man m + 1 ganzzahlige Funktionswerte f (a0 ) , . . . , f (am ) f¨ ur beliebige ai ∈ Z f¨ ur i = 0 , . . . , m . Wegen g(x)|f (x) in Z[x] gilt insbesondere g(ai )|f (ai ) f¨ ur i = 0 , . . . , m in Z . Da jedes f (ai ) nur endlich viele Teiler in Z hat, gibt es auch nur endlich viele M¨oglichkeiten f¨ ur die g(ai ) . Mittels Polynominterpolation durch die St¨ utzpunkte (a0 , g(a0 )) , . . . , (am , g(am )) l¨ asst sich das zugeh¨ orige g(x) bestimmen. Kandidaten mit nicht-ganzzahligen Koeffizienten werden nat¨ urlich sofort verworfen. Weiterhin kommen nur Polynome in Frage, deren Leitkoeffizient den Leitkoeffizienten von f teilt.
228
6 Polynom–Faktorisierung
Hat ein Kandidat all diese Tests bestanden, k¨ onnte man vor der n¨ otigen Polynomdivision noch f¨ ur eine weitere Zahl am+1 ∈ Z pr¨ ufen, ob g(am+1 ) den Funktionswert f (am+1 ) teilt. Nun kann man mit Polynomdivision nachpr¨ ufen, ob dieses g(x) wirklich ein Teiler von f (x) in Z[x] ist. Die ai wird man bei per Hand gerechneten Beispielen nat¨ urlich so w¨ ahlen, dass f (ai ) m¨ oglichst wenige ganzzahlige Faktoren hat, um die Suche etwas k¨ urzer zu gestalten. 6.1.1 Beispiel: f (x) = x5 +x4 +x2 +x+2 soll mit der Kronecker-Methode faktorisiert werden. Ganzzahlige Nullstellen von f (x) sind Teiler des konstanten Terms 2 von f (x) , hier also ±1 oder ±2 . Wegen x −2 −1 0 1 2 f (x) −12 2 2 6 56 hat f (x) keine Linearfaktoren. Man muss also nur noch nach Teilern g(x) vom Grad 2 suchen. W¨ ahlt man als St¨ utzpunkte −1 , 0 , 1 aus, so ergibt sich das folgende Bild: ai −1 0 1 f (ai ) 2 2 6 g(ai ) ±1; ±2 ±1; ±2 ±1; ±2; ±3; ±6 Es gibt 4 · 4 · 8 = 128 m¨ ogliche St¨ utzstellenkombinationen, von denen je zwei auf (bis auf das Vorzeichen) gleiche Polynome f¨ uhren. Das Polynom g(x) mit den Funktionswerten 1 , 1 , 3 an den vorgegebenen St¨ utzstellen ist x2 +x+1 . Polynomdivision zeigt, dass dies ein Teiler von f (x) ist. Der zweite Faktor ist also h(x) = x3 − x + 2 . Jeder der gefundenen Faktoren muss grunds¨ atzlich nach dem gleichen Verfahren weiter untersucht werden. Im vorliegenden Fall hat man allerdings schon die vollst¨ andige Faktorisierung in irreduzible Faktoren erreicht. 6.1.2 Beispiel: Sehr viel Arbeit kann man sich sparen, wenn man ein Polynom zuerst modulo verschiedener Primzahlen p faktorisiert und aus diesen Faktorisierungen versucht, Informationen u ¨ber die Grade der irreduziblen Faktoren des Polynoms zu erhalten. Zerf¨allt f (x) u allt dieses Polynom modu¨ber Z in Faktoren, so zerf¨ lo einer Primzahl p mindestens in Faktoren gleichen Grades, wenn nicht gerade p den Leitkoeffizienten von f teilt.
6.1 Motivation
Einige Faktoren k¨ onnen nat¨ urlich u ¨ber len. Es sei etwa
Zp
229
auch noch weiter zerfal-
f (x) = x8 + x6 − 3x4 − 3x3 + 8x2 + 2x − 5 . Die vollst¨andige Faktorisierung modulo 13 ist f (x) ≡ (x4 + 2x3 + 3x2 + 4x + 6)(x3 + 8x2 + 4x + 12)(x + 3) mod 13 , die vollst¨andige Faktorisierung modulo 2 ist dagegen f (x) ≡ (x6 + x5 + x4 + x + 1)(x2 + x + 1) mod 2 . Wie man auf diese Faktorisierungen kommt, wird im folgenden noch beschrieben werden. Jetzt sei nur soviel gesagt, dass diese Faktorisierungen sehr viel leichter zu bekommen sind, als Faktorisierungen u ¨ber Z . Aus der Faktorisierung mod 2 liest man hier ab, dass f (x) entweder irreduzibel ist, oder in zwei Faktoren vom Grad 6 und 2 zerf¨ allt. Dies steht aber im Widerspruch zur Faktorisierung mod 13, nach der nur die Faktorgrade 8 ; 7, 1 ; 5, 3 ; 4, 4 ; 4, 3, 1 m¨ oglich sind. Das Polynom f (x) ist also irreduzibel u ¨ber Z und damit auch u ¨ber Q . Kroneckers Methode ist als Algorithmus sehr schlecht: Die Wahl der ¨ St¨ utzpunkte ai h¨ angt sehr vom Geschick des Einzelnen ab. Uberl¨ asst man das einem Rechner, so wird man meist große Funktionswerte f (ai ) mit vielen Primteilern bekommen. Das Zerlegen in Primteiler ist sehr aufw¨ andig (exponentiell in der β L¨ange der zu faktorisierenden Zahl; vgl. den entsprechenden Abschnitt). Dann m¨ ussen noch Interpolationspolynome durch all diese Primteiler berechnet werden und mit Polynomdivision getestet werden. Insgesamt h¨ angt der Rechenaufwand f¨ ur Kroneckers Methode exponentiell vom Grad des betrachteten Polynoms ab. Der Algorithmus ist f¨ ur praktische Anwendungen uninteressant. Wie im letzten Beispiel gezeigt, ist es oft g¨ unstig zur Faktorisierung eines Polynoms von Z in den endlichen K¨ orper Zp (p prim) auszuweichen. Es gibt Methoden, die aus solchen Faktorisierungen die vollst¨ andige Faktorisierung u ateren ¨ber Z berechnen. Diese Methoden werden in einem sp¨ Abschnitt noch behandelt. Abgesehen von diesem Interesse an der Faktorisierung ganzzahliger Polynome, ist – wie bereits erw¨ ahnt – die Faktorisierung von Polynomen u ¨ber endlichen K¨orpern auch f¨ ur sich selbst genommen in vielen mathematischen Teilgebieten von gr¨ oßtem Interesse.
230
6 Polynom–Faktorisierung
6.2 Quadratfreie Faktorisierung Es sei R ein faktorieller Ring (also insbesondere nullteilerfrei und wie immer kommutativ mit 1). Der Polynomring R[x] ist dann ebenfalls faktoriell (vgl. den Abschnitt u ¨ber Ideale). Bevor man die Faktorisierungs-Algorithmen der folgenden Abschnitte auf ein gegebenes Polynom f ∈ R[x] anwendet, zerlegt man f zun¨ achst in seinen Inhalt Inh(f ) und den verbleibenden primitiven Anteil pA(f ) und durchsucht beide nach mehrfachen Faktoren. Dann zerlegt man f in nicht unbedingt irreduzible Faktoren, die keine mehrfachen Teilfaktoren mehr enthalten. Da R[x] faktoriell ist, l¨ asst sich f (x) ∈ R[x] \ (R∗ ∪ {0}) eindeutig∗ als f (x) = a · f1µ1 · f2µ2 · . . . · fkµk
(6.1)
mit verschiedenen irreduziblen, paarweise nicht assoziierten Faktoren f1 , . . . , fk ∈ R[x] \ R und a ∈ R∗ , µ1 , . . . , µk ∈ schreiben. Das Polynom f heißt quadratfrei, wenn in seiner Zerlegung in Primelemente (=irreduzible Polynome) gilt: µ1 = . . . = µk = 1 . Unter der quadratfreien Faktorisierung von f (x) ∈ R[x] \ (R∗ ∪ {0}) versteht man eine Darstellung der Form
N
m f = c · q1 · q22 · . . . · qm
(6.2)
mit c ∈ R∗ und quadratfreien, paarweise teilerfremden q1 , . . . , qm ∈ R[x] . Das Produkt q1 · q2 · . . . · qm heißt der quadratfreie Anteil von f (und ist auch wirklich quadratfrei). Die Faktoren der quadratfreien Faktorisierung sind bis auf Assoziiertheit eindeutig. Die Quadratfreiheit l¨ asst sich ¨bernmit Hilfe der formalen Ableitung u pr¨ ufen. Definiert man f¨ ur f := i=0 ai xi ∈ R[x] die formale Ableitung
f :=
n−1
(i + 1)ai+1 xi ∈ R[x],
i=0
so pr¨ uft man leicht nach, dass eine R-lineare Abbildung von R[x] ist. Es gilt die Produktregel (f g) = f g+f g und die Kettenregel (f (g)) = f (g) · g . Ist char(R) = 0 , so ist genau dann f = 0 , wenn f ∈ R ist. Ist dagegen char(R) = p = 0 , so ist f = 0 genau dann der Fall, wenn f von der Gestalt g(xp ) mit einem g ∈ R[x] ist. ∗
ν
ν
ν
d.h.: ist f (x) = b · g1 1 · g2 2 · . . . · g eine andere Zerlegung, so ist = k und (m¨ oglicherweise
nach Umnummerierung) gi und fi sind assoziiert mit νi = µi f¨ ur i = 1, . . . , k . (i + 1) bedeutet hier 1R + . . . + 1R mit i + 1 Summanden. Folgt f¨ ur n ∈ und r ∈ R aus nr = 0 stets r = 0 , so hat R die Charakteristik 0 , i.Z.
N
char(R) = 0 . Gibt es r = 0 mit dieser Eigenschaft, so ist char(R) das kleinste n dazu.
6.2 Quadratfreie Faktorisierung
231
N
Ist g ∈ R[x] \ R irreduzibel und g m mit m ∈ ein Teiler von f in R[x] , also etwa f = g m · h , so gilt nach Ketten- und Produktregel f = m · g m−1 · g · h + g m · h = g m−1 · (m · g · h + g · h ) . Da der Klammerausdruck in R[x] ist, ist g m−1 ein Teiler von f in R[x] . Ist m ein Vielfaches von char(R) , so verschwindet der erste Summand in der Klammer und es ist sogar g m ein Teiler von f . Da auf jeden Fall g m−1 ein Teiler von ggT(f, f ) ist, wenn g m das Polynom f teilt, folgt insbesondere, dass f quadratfrei ist, wenn ggT(f, f ) = 1 ist. Die Umkehrung davon ist auf jeden Fall richtig, wenn char(R) = 0 ist. Ist n¨amlich g m die gr¨ oßte Potenz von g , die in f aufgeht, so ist g m−1 die gr¨oßte Potenz von g , die in ggT(f, f ) aufgeht, da g kein Teiler des nichtverschwindenden Ausdrucks m · g · h ist. Im Fall char(R) = p k¨ onnte p dagegen ein Teiler von m sein, so dass sogar g m den ggT(f, f ) teilt. orper Zp (tp ) Das Standardbeispiel f = xp − tp eines u ¨ber dem Unterk¨ des K¨orpers Zp (t) irreduziblen (und somit quadratfreien) Polynoms mit f = 0 und damit ggT(f, f ) = f zeigt, dass bei char(R) = 0 i.Allg. nicht aus der Quadratfreiheit eines Polynoms auf ggT(f, f ) = 1 geschlossen werden kann. In der Algebra wird gezeigt, dass K¨ orper der Charakteristik 0 und endliche K¨orper vollkommen◦ sind und dass bei diesen K¨ orpern aus der Quadratfreiheit auf ggT(f, f ) = 1 geschlossen werden kann. Der angegebene Fall eines unendlichen K¨ orpers der Charakteristik p ist also die einzige Chance f¨ ur ein solches Gegenbeispiel. m Ist f = c i=1 qii eine quadratfreie Faktorisierung, so ist die formale Ableitung ⎞ ⎞ ⎛ ⎛ m m m m m ⎟ ⎟ ⎜ ⎜ j−1 f = c · qii ⎠ = c · qii−1 · ⎝ j · qj · qi ⎠ ⎝j · q j · q j · j=1
i=1 i=j
i=1
j=1
i=1 i=j
m m i−1 ein gemeinsamer Teiler von f = c i=1 qii−1 · mDamit ist i=1 qi i=1 qi und f und damit auch ein Teiler von ggT(f, f ) . F¨ ur char(R) = 0 ist dieser Teiler bereits ein ggT , denn ist h ein irm reduzibler Teiler von ur i=1 qi , so ist h ein Teiler von genau einem qj f¨ j = 1, . . . , m , denn die qj sind ja paarweise teilerfremd vorausgesetzt.
◦
K heißt vollkommen, wenn jedes irreduzible f ∈ K[x] nur einfache Wurzeln in K hat.
232
6 Polynom–Faktorisierung
m m i=1 qi , die Damit teilt h die m − 1 Summanden von j=1 j · qj · i=j m dieses qj enthalten, den Summanden j · qj · i=1 qi und damit die ganze i=j m i=1 qi von Null verschieden, also Summe aber nicht: es sind j , qj und i=j m i=1 qi wegen der Nullteilerfreiheit auch deren Produkt; der Teiler h teilt i=j
nicht und wegen der Quadratfreiheit von qj teilt er auch qj nicht∗ . Es gilt also
ggT(f, f ) =
m
qii−1
i=1
m f , qi f¨ ur char(R) = 0 . =c· ggT(f, f ) i=1
(6.3)
Nun sei char(R) = p . Als faktorieller Ring ist R insbesondere nullteilerfrei. Ist R zus¨atzlich endlich (dies sei im folgenden jeweils vorausgesetzt), so ist R automatisch ein K¨ orper (vgl. etwa [Me1]) und somit vollkommen. m m i=1 qi , bei Es verschwinden diejenigen Summanden in j=1 j · qj · i=j denen die Charakteristik p den Index j teilt. Ist h wieder ein irreduzibler m Teiler von ur j = i=1 qi und somit auch Teiler eines bestimmten qj f¨ 1, . . . , m , so teilt h die Summe nur, wenn durch diesen Effekt genau der Term ohne qj verschwindet, d.h. wenn p den Index j teilt. Ist das nicht der Fall, mso folgert man wie im Fall char(R) = 0 , dass h den Summanden j · qj · i=1 qi nicht teilt. i=j
Damit ist gezeigt ggT(f, f ) =
m
qii
i=1 p|i
m
f qi f¨ ur char(R) = p. (6.4) = c · ggT(f, f ) i=1 m
qii−1 ,
i=1 pi
pi
ur f (x) wie in (6.2) gegeben Setzt man im Fall char(R) = 0 f¨ ) f¨ ur j = 1, 2, . . . F0 := f , Fj := ggT(Fj−1 , Fj−1
so ist nach (6.3) Fj =
m
qii−j , also insbesondere Fj = 1 f¨ ur j > m .
i=j
Berechnet man nun Gj := so ist Gj =
∗
m i=j
Fj−1 f¨ ur j = 1, . . . , m , Fj
qi und damit Gj f¨ ur j = 1, . . . , m . qj = Gj+1
Es ist char(R) = 0 und deshalb der Quotientenk¨ orper vollkommen ⇒ ggT(qj , qj ) = 1 Die Schreibweise char(R) = p suggeriert bereits, dass es sich bei der Charakteristik um eine
Primzahl handelt. Dies ist bei nullteilerfreien Ringe mit 1 in der Tat immer der Fall.
6.2 Quadratfreie Faktorisierung
233
Normale ggT-Berechnungen k¨ onnten dabei in den Quotientenk¨ orper K := Q(R) von R f¨ uhren, sollen aber hier jeweils so durchgef¨ uhrt werden, dass sie auch wieder Ergebnisse in R[x] liefern (vgl. den Abschnitt u ¨ber die ggT-Berechnung bei Polynomen). Ein einfacher Algorithmus im Fall char(R) = 0 f¨ ur die quadratfreie Zerlegung eines primitiven (d.h. Inh(f ) = 1 ) Polynoms f sieht dann etwa wie die folgende Prozedur SQF aus. Quadratfreie Faktorisierung im Fall char(R) = 0 procedure SQF(f ) i←1 temp1 ← f d temp1 ) temp2 ← ggT(temp1 , dx d temp2 ) temp3 ← ggT(temp2 , dx while temp2 = temp3 do temp1 ·temp3 qi ← temp2 2
i←i+1 temp1 ← temp2 ; temp2 ← temp3 d temp3 ← ggT(temp2 , dx temp2 ) end do m←i temp1 ·temp3 qm ← temp2
m2
Return (
j=1
# Alle aufgerufenen Unterroutinen # wie ggT oder Division sollen # Ergebnisse in R[x] liefern. # # Eingabe: primitives f ∈ R[x] # mit char(R) = 0 # Ausgabe: quadratfreie Faktorisierung # wie in (6.2) #
qjj )
end
6.2.1 Beispiel: Gegeben sei das primitive Polynom f ∈ R = Z[x] durch f =2x17 − 11x16 + 26x15 − 69x14 + 120x13 − 120x12 + 228x11 + 54x10 + 42x9 + + 273x8 − 534x7 − 117x6 − 884x5 − 790x4 − 584x3 − 732x2 − 144x − 216 .
Seine quadratfreie Zerlegung ist f = (2x − 3) · (x2 − 2x − 3)2 (x4 + 3x2 + 2)3 . Soll das Polynom 12 · f quadratfrei zerlegt werden, so k¨ onnte man auch seinen Inhalt 12 zerlegen in 3·22 und die Faktoren dieser Zerlegung sinngem¨ aß auf die oben berechnete Zerlegung seines primitiven Teils verteilen. $ %2 $ %3 12 · f = [3(2x − 3)] · 2(x2 − 2x − 3) (x4 + 3x2 + 2) . Die quadratfreie Zerlegung des Inhalts von f wird von den meisten Computeralgebra-Systemen nur soweit gemacht, wie dieser noch polynomial ist: die 12 im letzten Beispiel wird etwa von Maples convert(f,sqrfree)-Befehl nicht mehr zerlegt.
234
6 Polynom–Faktorisierung
Die vollst¨andige Zerlegung von f in irreduzible Faktoren lautet (2x − 3)(x + 1)2 (x − 3)2 (x2 + 1)3 (x2 + 2)3 . 6.2.2 Beispiel: Es sei f (x, y) := 27x8 −36x6 y+81x5 y 2 +54x6 +12x4 y 2 −108x3 y 3 −72x4 y+36xy 4 +24x2 y 2 .
Betrachtet man x als Hauptvariable, d.h. R = Z[y] und Z[x, y] = R[x] , so ist Inh(f ) = 3 ∈ R und die quadratfreie Zerlegung von pA(f ) ist (x4 + 2x2 + 3y 2 x)(3x2 − 2y)2 , so dass die quadratfreie Zerlegung von f lautet [3(x4 + 2x2 + 3y 2 x)][(3x2 − 2y)]2 . Betrachtet man y als Hauptvariable, d.h. R = Z[x] und Z[x, y] = R[y] , so ist Inh(f ) = 3x ∈ R und quadratfreie Zerlegung von pA(f ) ist (x3 + 2x + 3y 2 )(3x2 − 2y)2 ,
was aber insgesamt auf die gleiche quadratfreie Zerlegung von f wie oben f¨ uhrt. Eine Verbesserung zu SQF stammt von D. Y. Y.Yun und wurde in [Yun] ¨ angegeben. Die Verbesserung zielt vor allem darauf ab, durch kleine Anderungen an dem hier gezeigten Algorithmus die ggT-Berechnungen in der Schleife effektiver zu machen. f Yun betrachtet zus¨ atzlich zu dem bisher betrachteten ggT(f,f ) = c · m q aus (6.3) die Ausdr¨ u cke i=1 i ⎛ ⎛ ⎞ ⎞ m m m m ⎟ d f f ⎜ ⎜ ⎟ j · qj · qi ⎠ und qj · qi ⎠ . =c·⎝ =c·⎝ ggT(f, f ) dx ggT(f, f ) j=1
i=1 i=j
j=1
i=1 i=j
Damit gilt
f d f − ggT(f, f ) dx ggT(f, f )
⎞ ⎛ m m ⎟ ⎜ qi ⎠ . = c · q1 · ⎝ (j − 1) · qj · j=2
(6.5)
i=2 i=j
f und dem soeben berechneten Bildet man nun den ggT von ggT(f,f ) Ausdruck, so erh¨ alt man den ersten Faktor q1 der quadratfreien Faktorisierung von f , da q2 , . . . , qm den Klammerausdruck in (6.5) nicht teilen. f als auch (6.5) durch q1 , so hat Dividiert man jetzt sowohl ggT(f,f ) m m m i=2 qi man c · i=2 qi und c · , woraus man nach dem j=2 (j − 1) · qj · i=j gleichen Verfahren q2 berechnen kann.
6.2 Quadratfreie Faktorisierung
235
Rekursive Fortsetzung liefert die komplette quadratfreie Zerlegung von f . Damit hat man zwar eine Ableitung zus¨ atzlich zu berechnen, die zu berechnenden ggTs sind jetzt aber deutlich einfacher. Bezeichnet ni den m Grad des Faktors qi (also n = deg(f ) = i=1 (i · ni ) ), so wird im jtenSchritt in der Schleife bei Yun der ggT von Polynomen vom Grad m m ≤ i=j ni berechnet (statt i=j (i − j)ni bei der zuerst vorgestellten Methode). Da die Berechnung des ggT zweier Polynome vom Grad ≤ n von der Ordnung O(n2 ) ist, ben¨ otigt die Schleife bei Yun ⎛ ⎞2 m m ⎝ ni ⎠ = O(n2 ) j=1
i=j
Operationen in R , ebenso wie die Berechnung von ggT(f, f ) vor der Schleife. Damit ist der gesamte Algorithmus von quadratischer Ordnung, d.h. m OpR [c · q1 · q22 · . . . · qm gem¨aß (6.2) ← SQFYun (f )] = O(n2 ) Quadratfreie Faktorisierung im Fall char(R) = 0 nach Yun procedure SQFYun (f ) d f) i ← 1 ; temp1 ← ggT(f, dx f f temp2 ← temp ; temp3 ← temp 1
temp4 ← temp3 − temp2 while temp4 = 0 do qi ← ggT(temp2 , temp4 ) i←i+1 temp temp2 ← qi 2 ; temp3 ← temp4 ← temp3 − temp2 end do i Return ( j=1 qjj )
1
# # # # # # # #
Alle aufgerufenen Unterroutinen wie ggT oder Division sollen Ergebnisse in R[x] liefern. Eingabe: primitives f ∈ R[x] mit char(R) = 0 Ausgabe: quadratfreie Faktorisierung wie in (6.2)
temp3 qi
end
Setzt man im Fall char(R) = p f¨ ur f (x) wie in (6.2) gegeben ) f¨ ur j = 1, 2, . . . F0 := f , Fj := ggT(Fj−1 , Fj−1
so ist nach (6.4) die Situation etwas komplizierter als im Fall char(R) = 0 . Um diesem Fall gerecht zu werden, ordnet man in (6.2) die Exponenten nach Restklassen mod p 2p p+1 p+2 m p+m . . . q11 qp+1 . . . q22 qp+2 . . . . . . qm f = qpp q2p q p+m . . . .
N
oßte Index, f¨ ur den es ein Dabei sei m ∈ 0 , 0 ≤ m ≤ p − 1 der gr¨ qi = 1 (qi = 0 ist in (6.2) sowieso vorausgesetzt) mit i ∈ m + pZ gibt.
236
6 Polynom–Faktorisierung
Damit liefert Anwendung von (6.4) F0 = qii · qii ·
i≡0 mod p
F1 =
qii ·
i≡0 mod p
F2 =
Fm
·
i≡0 mod p
i≡m
·
i≡1 mod p
,
mod p
qii−1 ,
i≡m mod p
qii−2
· ... ·
i≡m
i≡2 mod p
qii−1 ·
qii
qii−1 · . . . ·
i≡2 mod p
qii−1
i≡1 mod p
qii ·
qii−1 ·
· ... ·
i≡2 mod p
i≡1 mod p
qii
i≡0 mod p
.. . =
i≡1 mod p
qii
qii−2 ,
mod p
qii−2 · . . . ·
qii−m .
i≡m mod p
i≡2 mod p
Da jetzt alle Exponenten Vielfache der Charakteristik p sind, verschwindet die n¨achste Ableitung, d.h. es ist Fm +1 = Fm . oßen Ist m ≥ 1 so berechnet man nun wie im Fall char(R) = 0 die Gr¨ F Gj := Fj−1 f¨ u r j = 1, . . . , m und liest daraus ab j
G1 =
qi ·
i≡1 mod p
i≡2 mod p
Gm
qi ,
i≡m mod p
i≡2 mod p
G2 =
qi · . . . ·
qi · . . . ·
qi ,
i≡m mod p
.. . =
qi .
i≡m mod p
Ist dagegen m = 0 , so ist f selbst eine p-te Potenz, d.h. es gibt ein Polynom g mit f = g p . Dieses g zerlegt man entsprechend quadratfrei. Durch die jetzt kompliziertere Form der Gj im Fall m ≥ 1 liefert die Gj f¨ ur j = 1, . . . , m − 1 und Hm := Gm noch Berechnung von Hj := Gj+1 nicht die gesuchten Werte qj wie im Fall char(R) = 0 . Es gilt qi . Hj = i≡j mod p
Betrachtet man nun ggT(Hj , Fj ) =
qi f¨ ur j = 1, . . . , m ,
i≡j mod p i=j
so liest man daraus ab, dass Hj ur j = 1, . . . , m . = qj f¨ ggT(Hj , Fj )
6.2 Quadratfreie Faktorisierung
237
Damit sind die Werte q1 , . . . , qp−1 berechnet, denn qm +1 , . . . , qp−1 = 1 waren ja bereits bekannt. Vergleicht man nun die beiden Polynome m p p qjj ggT(Hj , Fj )p = q1 qp+1 q2p+1 ...
j=1
p+1 2p+1 F0 = q1 qp+1 q2p+1 . . .
p p m p p q22 qp+2 q2p+2 . . . . . . qm q p+m q2p+m . . .
p+2 2p+2 m p+m 2p+m q22 qp+2 q2p+2 . . . . . . qm q p+m q2p+m . . .
2p 3p qpp q2p q3p . . .
so liest man daraus den Quotienten ab: f1 := m
F0
qj j=1 j
ggT(Hj , Fj )p
p+1 m p+m = qp+1 q2p+1 . . . . . . qp+m q 2p+m . . .
2p 3p qpp q2p q3p . . .
Quadratfreie Faktorisierung im Fall char(R) = p procedure SQFp(f, p) sqfp(f, p, 0, 0) end procedure sqfp(f, p, Z1 , Z2 ) i ← 1 , F0 ← f , g ← f if g = 0 then 0 F1 ← ggT(F0 , g) , G1 ← F F1 while Fi − Fi−1 = 0 i←i+1 k ← pZ2 · (Z1 · p + i − 1) d Fi ← ggT(Fi−1 , dx Fi−1 ) Fi−1 G Gi ← Fi , Hi−1 ← Gi−1 i Hi−1 qk ← ggT(Hi−1 ,Fi−1 )
# # # # # # # # # # # # #
Die Prozedur sqfp wird von SQFp mit Z1 = Z2 = 0 gestartet und ruft sich dann mit anderen Werten Z1 , Z2 rekursiv selbst auf. Die Gr¨ oßen Z1 , Z2 kontrollieren, welche qi dabei berechnet werden. Alle nicht explizit berechneten qi seien =1 gesetzt. Alle aufgerufenen Unterroutinen wie ggT oder Division sollen Ergebnisse in R[x] liefern. Eingabe: primitives f ∈ R[x] und p = char(R) Ausgabe: quadratfr. Fakt. wie in (6.2)
end do m ← i − 1 , Hm ← Gm for i from 1 to p − 1 do k ← pZ2 · (Z1 · p + i) , qqi ← qk end do F0 sqfp( m , p, Z1 + 1, Z2 ) l=1
qq l ·ggT(Hl ,Fl ) l
else if F0 ∈ R[x] \ R then √ sqfp( p F0 , p, 0, Z2 + 1) else Return( qii ) end if end if end
238
6 Polynom–Faktorisierung
Das Polynom f1 hat kleineren Grad als das urspr¨ ungliche f , sieht prinzipiell aber genauso aus. Damit kann man die eben beschriebenen Operationen nochmals auf f1 anwenden und erh¨ alt somit den n¨ achsten Abschnitt der quadratfreien Faktorisierung von f , n¨ amlich die Polynome qp+1 , . . . , q2p−1 . Rekursive Fortsetzung dieses Verfahrens liefert nun aus f = p+m p 2p 3p p+1 2 p+2 m qp+1 q(+1)p+1 . . .
qp+2 q(+1)p+2 . . . . . . qp+m q(+1)p+m . . .
qp q2p q3p . . .
die Polynome qp+1 , . . . , qp+p−1 f¨ ur = 2, 3, . . . , bis man schließlich bei d p 2p 3p fL = 0 anlangt. einem = L mit fL = qp q2p q3p . . . und damit mit dx 2 3 Daraus kann man direkt das Polynom qp q2p q3p . . . ablesen. Dieses Polynom hat kleineren Grad als das urspr¨ unglich gegebene. Seine mit dem soeben beschriebenen Algorithmus berechnete quadratfreie Faktorisierung liefert die restlichen Faktoren qp , q2p , . . . der quadratfreien Faktorisierung von f . Es folgen eine m¨ ogliche Implementierung und ein Beispiel des Algorithmus zur Berechnung der quadratfreien Faktorisierung mod p .
6.2.3 Beispiel: Es sei f =x47 + 2x46 + x45 + x44 + 2x43 + x42 + 2x41 + x40 + 2x39 + x38 + + 2x37 + x36 + x35 + 2x34 + x33 + x32 + 2x31 + x30 + 2x26 + x25 + + 2x24 + x23 + 2x22 + x21 + x17 + 2x16 + x15 + 2x14 + x13 + 2x12 + + x8 + 2x7 + x6 + x2 + 2x + 1 ∈
Z3 [x]
Im ersten Schritt (Z1 = 0 , Z2 = 0) wird q1 = q2 = 1 berechnet. Nun ist f1 =x44 + 2x43 + x42 + 2x38 + x37 + 2x36 + 2x35 + x34 + 2x33 + 2x32 + + x31 + 2x30 + 2x29 + x28 + 2x27 + x26 + 2x25 + x24 + x23 + 2x22 + + x21 + x14 + 2x13 + x12 + x11 + 2x10 + x9 + 2x8 + x7 + 2x6 + + 2x5 + x4 + 2x3 + x2 + 2x + 1 und die Routine wird nochmals mit Z1 = 1 und Z2 = 0 aufgerufen. Dabei wird q4 = 1 , q5 = x + 1 und f2 = x42 + 2x36 + 2x33 + 2x30 + 2x27 + x24 + x21 + x12 + x9 + 2x6 + 2x3 + 1 berechnet. Wegen f2 = 0 wird x3 durch x ersetzt, Z1 = 0 , Z2 = 1 gesetzt und die Prozedur mit dem neuen f = x14 + 2x12 + 2x11 + 2x10 + 2x9 + x8 + x7 + x4 + x3 + 2x2 + 2x + 1 gestartet. Dieser Schritt liefert q3 = x2 + 1 , q6 = x3 + 2x + 2 und f1 = x6 + x3 + 1.
6.3 Der Berlekamp-Algorithmus
239
Da f1 = 0 ist, wird wieder x3 durch x ersetzt, Z1 = 0 , Z2 = 2 gesetzt und die Prozedur mit dem neuen f = x2 + x + 1 gestartet, was q9 = 1 und q18 = x + 2 liefert. Nun ist f2 = 1 und der Algorithmus ist damit beendet. Insgesamt wurde also die quadratfreie Faktorisierung (x2 + 1)3 (x + 1)5 (x3 + 2x + 2)6 (x + 2)18 des urspr¨ unglichen Polynoms f berechnet, was in diesem Fall bereits die vollst¨ andige Faktorisierung mod 3 ist. Damit wurde in diesem Fall das folgende Diagramm durchlaufen: Z1 Z2
0 1 2
0
1
q1 , q 2 → q4 , q 5 q3 , q 6 ↓ q9 , q18
(alle nicht explizit aufgef¨ uhrten qi mit i ≤ 18 werden gleich 1 gesetzt). Dieser Algorithmus l¨ asst sich ¨ ahnlich wie im Fall char(R) = 0 mit der Idee von Yun noch etwas beschleunigen, so dass man wieder mit O(n2 ) Operationen in R rechnen kann. Dies soll hier nicht weiter ausgef¨ uhrt werden.
6.3 Der Berlekamp-Algorithmus 6.3.1 Grundvariante f¨ ur kleine K¨ orper M¨ ochte man ein Polynom vom Grad n aus GF(q)[x] ( q = ps , p prim) faktorisieren, so kommen alle q n Polynome vom Grad < n als Teiler in Frage. Der einfachste, aber nat¨ urlich auch d¨ ummste Algorithmus w¨ are es, alle Kandidaten mittels Polynomdivision durchzuprobieren. Es ist klar, dass dies kein sch¨ ones Verfahren ist, da der Rechenaufwand exponentiell vom Grad des untersuchten Polynoms abh¨ angt. Berlekamps [Be1]Verdienst ist es, als erster die Anzahl der zu ankt zu haben und somit einen untersuchenden Polynome auf O(n3 · q) eingeschr¨ in n und q polynomialen Algorithmus bereitgestellt zu haben. Ist das zu faktorisierende Polynom in dichter Darstellung gespeichert, so ben¨ otigt es den Platz von s · (n + 1) = O(n log q) Elementen aus p . Betrachtet man deshalb n log q als Eingabegr¨ oße, so ist der Berlekamp-Algorithmus wegen oße. q = O(plog q ) nicht polynomial in dieser Eingabegr¨ Bevor der Algorithmus von Berlekamp vorgestellt wird, sollen noch einige aus der Algebra bekannte Fakten u orper wiederholt werden, die im ¨ber endliche K¨ folgenden ben¨ otigt werden. Wie bereits im Abschnitt u orper erw¨ ahnt, ist GF(q)∗ = GF(q)\ ¨ber endliche K¨ {0} eine zyklische Gruppe. Damit gilt f¨ ur jedes Element a dieser Gruppe nach ur jedes a ∈ GF(q) : aq = a . dem Satz von Fermat aq−1 = 1 und somit f¨
Z
240
6 Polynom–Faktorisierung
¨ Jedes K¨ orperelement ist deshalb eine Wurzel des Polynoms xq − x . Uber GF(q) zerf¨ allt dieses Polynom in Linearfaktoren
xq − x =
(x − a) .
a∈GF(q)
orper-Homomorphismus von Die Frobenius-Abbildung x → xp ist einn K¨ n n ur alle a1 , . . . , ar ∈ GF(q) . Insbesondere folgt (a1 +. . .+ar )p = ap1 +. . .+apr f¨ q . Zusammen mit a = a f¨ ur alle a ∈ GF(q) folgt f¨ ur jedes GF(q) und n ∈ h(x) ∈ GF(q)[x] : h(x)q = h(xq ) . Da GF(q)[x] ein euklidischer und damit insbesondere auch ein faktorieller Ring der Charakteristik p ist, kann jedes f (x) ∈ GF(q)[x] von positivem Grad eindeutig in der Form (6.1) geschrieben werden. Beim Faktorisieren kann man sich auf normierte Polynome beschr¨ anken, denn das Durchmultiplizieren mit dem Inversen des Leitkoeffizienten ¨ andert nichts an der Faktorisierung. Nach dem vorhergehenden Abschnitt kann man zuerst die quadratfreie Faktorisierung von f berechnen und muss dann nur noch die quadratfreien TeilPolynome faktorisieren. Nach dieser Vorarbeit hat man es mit einem normierten quadratfreien Polynom zu tun. Der Einfachheit halber wird dieses Polynom ab jetzt mit f (x) ∈ GF(q)[x] bezeichnet und es sei f = f1 · . . . · fk mit verschiedenen, irreduziblen und normierten Faktoren fi . Die Grundidee von Berlekamp ist es nun, Polynome g(x) ∈ GF(q)[x] mit
N
1 ≤ deg(ggT(f, g)) < n = deg(f ) zu finden, denn dann ist ggT(f, g) ein nichttrivialer Teiler von f . Solche Polynome g heißen f -reduzierend. Das Problem dabei ist es, geeignete Polynome g zu finden: Dazu nimmt man sich ein Polynom G , das von f geteilt wird und von dem man im Gegensatz zu f bereits eine Zerlegung in Faktoren kennt. Die ur bekannten Faktoren g1 , . . . , gm von G sind dann sicher gute Kandidaten f¨ f -reduzierende Polynome. F¨ ur die Wahl des Polynoms G erinnert man sich nun an die bekannte Faktorisierung des Polynoms
xq − x =
(x − a) .
a∈GF(q)
Substituiert man in diese Gleichung statt x ein beliebiges Polynom (x) ∈ GF(q)[x] , so erh¨ alt man (x)q − (x) =
((x) − a) .
(6.6)
a∈GF(q)
W¨ ahlt man nun also das Polynom so, dass G(x) := (x)q − (x) durch f teilbar ist, so hat man die oben beschriebene Situation, denn von G ist ja eine Faktorisierung (nicht unbedingt in irreduzible Faktoren !) bekannt.
6.3 Der Berlekamp-Algorithmus
241
Unter den Faktoren (x) − a von G sind dabei sicher f -reduzierende Polynome, wenn deg() < deg(f ) ist. Man sucht also ein Polynom mit den Eigenschaften deg() < deg(f ) (6.7) q ≡ mod f , Der folgende Satz zeigt, dass man schon sehr weit ist, wenn man solch ein hat. 6.3.1.1 Satz: Es sei f (x) ∈ GF(q)[x] normiert und (x) ∈ GF(q)[x] mit q ≡ mod f und deg > 0 . Dann gilt:
f (x) =
ggT(f (x), (x) − a).
a∈GF(q)
Beweis: ggT(f, − a)|f ggT( − a, − b) = 1 f¨ ur a = b ⇒ ggT(ggT(f, − a), ggT(f, − b)) = 1 ⇒
; ⇒
ggT(f, − a)|f
a∈GF(q)
q ≡ mod f ⇐⇒ f |q − =
a∈GF(q)
( − a) ⇒ f |
ggT(f, − a).
a∈GF(q)
Die Hauptfrage ist nun also die Anzahl der L¨ osungen von (6.7) und, falls es L¨ osungen gibt, wie man diese bekommt. Aus (6.6) und der Irreduzibilit¨ at der f1 , . . . , fk folgt, dass jeder der Faktoren fi von f eines der Polynome − a teilt, d.h. jede L¨ osung von (6.7) erf¨ ullt (x) ≡ ai mod fi (x) , 1 ≤ i ≤ k
(6.8)
f¨ ur ein k-Tupel (a1 , . . . , ak ) von K¨ orperelementen. orperUmgekehrt kann man zu jedem beliebigen k-Tupel (a1 , . . . , ak ) von K¨ elementen eine L¨ osung von (6.7) finden, denn nach dem Chinesischen Rest osung (x) mit deg() < deg(f ) . satz gibt es zu (6.8) eine eindeutige L¨ F¨ ur diese L¨ osung gilt (x)q ≡ aqi mod f (x) , 1 ≤ i ≤ k und damit wegen aqi = ai auch (6.7). Damit ist gezeigt, dass (6.7) genau q k L¨ osungen besitzt, denn zu jedem k-Tupel (a1 , . . . , ak ) von K¨ orperelementen geh¨ ort wegen (6.8) genau ein jeweils anderes . Gleichung (6.7) stellt ein ganz einfaches lineares dar. Um n−1 Gleichungssystem i q x . Wegen (x) = (xq ) das einzusehen macht man den Ansatz (x) = i i=0 heißt das, dass man die Koeffizienten in der folgenden Gleichung berechnen will
die fi sind wegen der Quadratfreiheit paarweise teilerfremd, die erzeugten Ideale paarweise
erzeugend
242
6 Polynom–Faktorisierung n−1
i xi =
i=0
n−1
i xqi mod f (x) .
(6.9)
i=0
Um einen Koeffizientenvergleich durchf¨ uhren zu k¨ onnen, muss man dazu erst noch die Potenzen xqi auf der rechten Seite modulo f reduzieren. Jedes xqi ergibt nach dieser Reduktion ein Polynom vom Grad kleiner als n = deg(f ) . Die Koeffizienten der reduzierten Monome schreibt man in die so genannte Berlekamp-Matrix B = (bji ) mit 0 ≤ i, j ≤ n − 1 : qi
x
≡
n−1
bji xj mod f (x) , 0 ≤ i ≤ n − 1
j=0
Mit diesen Abk¨ urzungen wird (6.9) zu n−1
j xj =
j=0
n−1 i=0
i
n−1 j=0
bji xj =
n−1 n−1
i bji xj
j=0 i=0
Koeffizientenvergleich liefert jetzt j =
n−1
bji i , 0 ≤ j ≤ n − 1
i=0
oder in Matrixschreibweise:
=B·
mit
:= (0 , . . . , n−1 )t Die gesuchten Vektoren
bilden also den Eigenraum der Matrix B zum osungsEigenwert 1, bzw. den Kern der Matrix B −En . Da es q k verschiedene L¨ polynome (x) gibt, also auch ebensoviele Vektoren
, heißt dies, dass der Rang r der Matrix B − En gleich n − k ist, d.h. n − r ist die Anzahl der irreduziblen Faktoren von f . Das Polynom f ist genau dann irreduzibel, wenn B − En den Rang n − 1 hat. osung 1 (x) = 1 bzw.
1 = Im Kern von B − En befindet sich die L¨ (1, 0, . . . , 0)t , die aber wegen deg 1 = 0 nicht f -reduzierend und damit uninteressant ist. Die anderen Basiselemente
2 , . . . ,
k des Kerns von B −En , bzw. ihre polynomialen Entsprechungen 2 (x) , . . . , k (x) haben dann sicher Grad > 0 . Zusammen mit 6.3.1.1 sieht man, dass es zu jedem i (x) (i > 1) mindestens ein ai ∈ GF(q) gibt, so dass i (x) − ai f -reduzierend ist. Aus dem Rang von B−En weiß man im voraus, wieviele irreduzible Faktoren von f es gibt und beginnt diese nun mit der Berechnung von ggT(f (x), 2 (x) − a) f¨ ur alle a ∈ GF(q) zu suchen. Sollte man dabei nicht alle k irreduziblen Faktoren von f gefunden haben, so berechnet man jeweils den ggT der bereits gefundenen Faktoren mit 3 (x) usw. Bei diesem Prozess kommt man sicher auf die vollst¨ andige Faktorisierung von f , selbst wenn die einzelnen ggT(f (x), (x)−a) nicht unbedingt irreduzibel sind: Nach (6.8) gibt es Elemente ai1 , ai2 ∈ GF(q) mit i (x) ≡ ai1 mod f1 (x) und ur 1 ≤ i ≤ k . W¨ are ai1 = ai2 f¨ ur 1 ≤ i ≤ k , so g¨ abe i (x) ≡ ai2 mod f2 (x) f¨ es f¨ ur jede L¨ osung (x) von (6.7) ein b ∈ GF(q) mit b mod f1 (x) ≡ (x) ≡ osung (x) ist ja eine Linearkombination der i . b mod f2 (x) , denn jede L¨
6.3 Der Berlekamp-Algorithmus
243
Da gezeigt wurde, dass (6.8) f¨ ur beliebige k-Tupel (a1 , . . . , ak ) von K¨ orperelementen l¨ osbar ist, muss es auch eine L¨ osung geben, die modulo f1 und f2 verschiedene Werte liefert. Damit gibt es also ein 1 ≤ i ≤ k mit ai1 = ai2 , was zur Folge hat, dass i (x) − ai1 zwar durch f1 , nicht aber durch f2 teilbar ist. Die irreduziblen Faktoren von f werden also im Laufe des Prozesses sicher getrennt.
Z
6.3.1.2 Beispiel: Das Polynom x8 + x4 + x3 + x2 + x + 1 soll u ¨ber 2 faktorisiert werden. Der Algorithmus SQFp liefert die quadratfreie Faktorisierung (x5 + x4 + 1)(x + 1)3 mit dem offensichtlich irreduziblen Faktor x + 1 . Man muss sich also nur noch um den ersten Faktor f := x5 + x4 + 1 k¨ ummern. Dieser ist quadratfrei mit deg f = n = 5 . Die Spalten der Matrix B sind die Koeffizienten der Polynome ur 0 ≤ i ≤ n − 1 = 4 . F¨ ur i = 0, 1, 2 ist nichts zu rechx2i mod f f¨ nen, f¨ ur i = 3, 4 ergibt sich: x6 ≡ x5 + x ≡ x4 + x + 1 , x8 ≡ x7 + x3 ≡ x4 + x3 + x2 + x + 1 asst sich dabei sehr einfach mit dem folDie Berechnung der x2i mod f l¨ genden linearen Schieberegister bewerkstelligen bzw. nach dem gleichen Verfahren als Software implementieren. Damit ist
⎛1 0 0 1 1⎞ ⎛0 0 0 1 1⎞ ⎛0 1 0 0 0⎞ 0 0 0 1 1 0 1 0 1 1 ⎜ ⎟ ⎜ ⎟ ⎜0 0 1 0 1⎟ ⎟ ⇒ B − En = ⎜ 0 1 1 0 1 ⎟ ⎜ 0 0 0 1 1 ⎟ 0 1 0 0 1 B=⎜ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ 0 0 0 0 1 0 0 1 1 1
Zeitpunkt 0 1 2 3 4 5 6 7 8 9
0 0 0 1 1 0 0 1 1 0
0 0 0 0 0 0 0 0 0 0
Speicherinhalt 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1
Die unterstrichenen Speicherinhalte sind die Spalten von B .
Schieberegister zu f =x5 +x4 +1
Damit ist
⎛1 0 0 1 1⎞ ⎛0 0 0 1 1⎞ ⎛0 1 0 0 0⎞ ⎜0 0 0 1 1⎟ ⎜0 1 0 1 1⎟ ⎜0 0 1 0 1⎟ ⎟ ⇒ B − En = ⎜ 0 1 1 0 1 ⎟ ⎜ 0 0 0 1 1 ⎟ B=⎜ 0 1 0 0 1 ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ 0 0 0 0 1 0 0 1 1 1
0 0 0 1 1 0 0 1 1 0
0 0 0 0 0 0 0 0 0 0
Der Rang der Matrix ist r = 3 , das Polynom f zerf¨ allt in n−r = k = 2 irreduzible Faktoren. Außer der trivialen L¨ osung 1 (x) = 1 findet man aus
2 = (0 , 0 , 1 , 1 , 1)t das f -reduzierende 2 (x) = x4 + x3 + x2 .
244
6 Polynom–Faktorisierung
Wegen ggT(f , 2 −0) = x2 +x+1 und ggT(f , 2 −1) = x3 +x+1 gilt also f (x) = (x2 +x+1)(x3 +x+1) und damit ist (x2 +x+1)(x3 +x+1)(x+1)3 die vollst¨ andig faktorisierte Form des urspr¨ unglich gegebenen Polynoms u ¨ber 2 .
Z
6.3.1.3 Beispiel: Da die Werte ggT(f (x), (x) − a) nicht zwangsl¨ aufig irreduzibel sind, bekommt man die irreduziblen Teiler des untersuchten Polynoms i.Allg. nicht so direkt serviert wie im letzten Beispiel. Die Behauptung , dass man einfach so lange ggT(f (x), (x) − a) f¨ ur die verschiedenen (x) und a ∈ GF(q) berechnen muss, bis man n − r verschiedene Werte beisammen hat, ist schlichtweg falsch, wie das folgende Beispiel zeigt: Es sei f = x10 + x8 + x7 + x6 + x2 + 1 und wieder p = 2 . Dieses f ist bereits quadratfrei. Die Berechnung aller ggT(f (x), (x) − a) mit L := {x9 + x5 + x4 + x3 + x2 + x, x8 + x6 + x5 + x4 + x3 + x2 , x7 + x3 + x}
=2
=3
=4
liefert in diesem Fall die 6-elementige Menge {x3 +x+1, x4 +x+1, x6 +x4 +x+1, x5 +x4 +1, x5 +x4 +x2 +1, x7 +x3 +x+1} . Da man aus dem Rang r von B − En weiß, dass f in n − r = 4 irreduzible Faktoren zerf¨ allt, und dass die Summe der Grade dieser Faktoren nat¨ urlich gleich dem Grad n = 10 von f ist, sieht man, dass die 4 Faktoren von f nicht als Teilmenge dieser Menge erscheinen. Aus der Herleitung weiß man, dass alle irreduziblen Faktoren von f in den berechneten 6 Elementen enthalten sind und dass es zu jedem irreduziblen Faktor fi von f sowohl Elemente dieser Menge gibt, die diesen enthalten, als auch andere, die ihn nicht enthalten. Da f¨ ur ein festes gilt ggT( − a, − b) = 1 f¨ ur a = b , muss man diese ggTs nicht berechnen. Im vorliegenden Fall beginnt man etwa mit 2 = x9 + x5 + x4 + x3 + x2 + x , was auf K := {x4 + x + 1, x6 + x4 + x + 1} f¨ uhrt. Statt nun mit ggT(f (x), 3 (x) − a) weiterzumachen, zerlegt man die bereits berechneten Faktoren u ∈ K weiter, indem man gleich ggT(u(x), 3 (x) − a) berechnet. W¨ ahlt man 3 = x8 + x6 + x5 + x4 + x3 + x2 , so ist der erste nichttriviale (also = 1, u(x) ) Teiler, den man findet ggT(x6 + x4 + x + 1, 3 ) = x + 1 . Das Element x6 + x4 + x + 1 wird deshalb aus K gestrichen und durch 6 4 +x+1 die zwei Polynome x + 1 und x +xx+1 = x5 + x4 + 1 ersetzt. Da man jetzt erst 3 der 4 Teiler von f hat, f¨ ahrt man entsprechend rekursiv fort. Der letzte Faktor findet sich schließlich bei der Untersuchung von ggT(x5 + x4 + 1, x7 + x3 + x) = x3 + x + 1 . Man ersetzt 5 4 +1 = x2 + x + 1 und erh¨ alt x5 + x4 + 1 in K durch x3 + x + 1 und xx3+x +x+1 2 3 4 somit K = {x + 1, x + x + 1, x + x + 1, x + x + 1} . Der zeitliche Aufwand f¨ ur diese Variante des Berlekamp-Algorithmus liegt im Aufstellen der Matrix B , dem Triangulieren der n × n-Matrix B − En zur Kern-Berechnung und in den anschließenden ggT-Berechnungen.
6.3 Der Berlekamp-Algorithmus
245
Berlekamp-Algorithmus f¨ ur kleines“ GF(q) ” procedure Berle(f, q) # Kern , ggT usw. jeweils # in GF(q) bzw. GF(q)[x] . n ← deg(f ) n−1 # Li = i.tes Element von L . B ← (bji ) mit xqi ≡ j=0 bji xj mod f # f¨ ur 0 ≤ i ≤ n − 1 # Eingabe: f (quadratfrei) und K ← Kern(B − En ) , k ← dim(K) # K¨ orpergr¨ oße q . L ← Basis von K ohne 1 # K ← {f } ; i ← 1 # Ausgabe: Faktoren von f while |K| < k do for u in K do for a in GF(q) do g ← ggT(u, Li − a) K ← ((K \ {u}) ∪ {g, ug }) \ {1} if |K| = k then Return(K) end if end do end do i←i+1 end do end
Da man in diesem Algorithmus viele Operationen mit univariaten Polynomen u orpern ausf¨ uhren muss, sollte man diese in dichter ¨ber endlichen K¨ Darstellung abspeichern. Damit k¨ onnen f¨ ur die Verkn¨ upfung zweier Polynome vom Grad ≤ n jeweils O(n) (Addition und Subtraktion) bzw. O(n2 ) (Multiplikation, Division und ggT ) Operationen im endlichen K¨ orper veranschlagt werden. F¨ ur sehr großes n sollte man die Multiplikation mit dem Karatsuba-Algorithmus ( O(nlog2 3≈1,585 ) ) oder sogar mit der schnellen Fouriertransformation (allgemein O(n log n log log n) , bei Zp sogar O(n log n) , nach [Mo2] ab ca. n = 600 lohnend) erw¨ agen. Bei diesen asymptotisch schnellen Multiplikationsalgorithmen wird auch die ggT-Berechnung entsprechend schneller ( log n-faches der Multiplikation; s. [AHU]). F¨ ur das Aufstellen von B braucht man xqi mod f (x) mit i = 0, . . . , n − 1 . Dazu berechnet man erst die Potenzen xi mod f (x) f¨ ur i = 0, . . . , q analog zu obigem Schieberegister-Beispiel. Dabei erfordert jeder Schritt O(n) Additionen im K¨ orper. Der Gesamtaufwand f¨ ur die Berechnung der ersten nichttrivialen Spalte von B ist so O(nq) . Die folgenden Spalten werden 2 jeweils durch x2q = (xq ) mod f (x) , x3q = x2q · xq mod f (x) ,. . . berechnet. Dies erfordert O(n) Produkte und Reduktionen von Polynomen vom Grad ≤ n , also O(n3 ) Grundoperationen. Damit braucht das Aufstellen von B insgesamt O(nq + n3 ) K¨ orperoperationen. Die vielleicht schneller erscheinende Berechnung von xq mod f durch fortgesetztes Quadrieren und anschließende Multiplikation mit xq mod f ist nur f¨ ur großes q schneller und wird deshalb im Abschnitt u ¨ber große K¨orper verwendet.
246
6 Polynom–Faktorisierung
Das Triangulieren der Matrix B mit dem Gauß-Eliminationsverfahren ben¨otigt O(n3 ) Rechenschritte in GF(q) . Es gibt Vorschl¨ age, wie man das asymptotisch schneller machen k¨ onnte ([CoW]: O(nw ) mit w < 2, 376 ), diese erscheinen aber unpraktikabel. Besteht K bereits aus den Faktoren u1 , . . . , ur von f mit den Graden m1 , . . . , mr mit r < k und m1 + . . . + mr = n , so erfordert wegen deg Li < n die Berechnung von ggT(uj , Li − a) f¨ ur festes i , festes a und j = 1, . . . , r den Gesamtaufwand O(m1 · n + . . . + mr · n) = O(n2 ) . Dies wird in der while-Schleife maximal k · q-mal geschehen. Alle ggT-Berechnungen ben¨otigen also zusammen O(q · k · n2 ) Rechenschritte. Damit hat die Grundversion des Algorithmus von Berlekamp eine gesamte zeitliche Komplexit¨ at von O(qn2 (1 + k) + 2n3 ) = O(2n3 + n2 kq) . Da f h¨ochstens k = n Faktoren hat, ist die maximale zeitliche Komplexit¨at des Algorithmus OpGF(q) [f1 . . . fk ← Berle(f, q)] = O(n3 q) W¨ahlt man ein zuf¨ alliges Polynome f vom Grad n aus GF(q)[x] , so ist dieses mit circa der Wahrscheinlichkeit n1 irreduzibel∗ . Ist der K¨orper ausreichend groß, so kann man im Mittel Hn := 1 + 12 + . . . + n1 verschiedene, irreduzible Faktoren von f erwarten [Kn2]. Wegen n→∞ Hn − n n → γ (Euler-Konstante ≈ 0, 5772 ) folgt Hn ≈ n n . Ein zuf¨allige gew¨ ahltes Polynome f vom Grad n aus GF(q)[x] hat also im Mittel O(log n) irreduzible Faktoren, d.h. man wird bei der Grundversion des Berlekamp-Algorithmus und der Schulversion der Polynommultiplikation mit dem mittleren Aufwand O(qn2 log(n)) rechnen. Mit den oben erw¨ ahnten schnelleren Multiplikationsverfahren f¨ ur großes n ließe sich der Aufwand f¨ ur die ggT-Berechnungen auf O(n log2 (n)) und somit die maximale zeitliche Komplexit¨ at des Berlekamp-Algorithmus auf O(n3 + n2 log2 (n)q) bzw. erwartet O(n3 + n log3 (n)q) dr¨ ucken. Verwendet man etwa die polynomiale Darstellung von GF(q = ps ) u ¨ber GF(p) = Zp , so ben¨ otigt eine Addition O(s) , eine Multiplikation O(s2 ) Operationen in Zp . Je nach der Gr¨ oße von p sind diese Rechnungen in Kurzzahlarithmetik zu erledigen oder erfordern ihrerseits weitere Rechnungen in Langzahlarithmetik. Im schlimmsten Fall bedeutet dies nochmal einen Faktor (s log p)2 f¨ ur Op(Berle(f, q)) .
∗
Es gibt
1 n
Dabei ist µ :
n
µ(d)q d ≈
N → {−1, 0, 1} d|n
1 n nq
normierte irreduzible Polynome vom Grad n [HQ], [Kn2].
die M¨ obius-µ-Funktion. Es ist µ(d) = 0 , falls die Primfaktorzer-
legung von d nicht quadratfrei ist und µ(d) = (−1)r , f¨ ur d quadratfrei mit r Primfaktoren. Hn ist die n-te Partialsumme der harmonischen Reihe und wird als n-te harmonische Zahl bezeichnet.
6.3 Der Berlekamp-Algorithmus
247
Bei der Laufzeit kann man auch ohne Schaden noch die quadratfreie Faktorisierung hinzunehmen, da diese mit O(n2 ) Schritten von den folgenden Schritten dominiert wird. Daf¨ ur kann man dann die bisherige Voraussetzung quadratfrei“ fallen lassen. ” Da in der Laufzeit die Gr¨ oße q des K¨ orpers eingeht, die z.B. in kryptographischen Anwendungen ziemlich groß werden kann, ist diese Version des Algorithmus nur f¨ ur kleinere K¨ orper geeignet. Eine f¨ ur große K¨ orper geeignetere Version wurde ebenfalls von Berlekamp [Be2] angegeben und wird im folgenden Abschnitt behandelt. Auch f¨ ur große Werte von n ist der Algorithmus in dieser Form ungeeignet, denn die Berlekamp-Matrix ben¨ otigt Speicherplatz in der Gr¨ oßenordnung O(n2 ) und ihre Behandlung mit dem Gauß-Eliminationsverfahren geht mit O(n3 ) in die Laufzeit ein. 6.3.2 Variante f¨ ur große K¨ orper Grundlage f¨ ur den Berlekamp-Algorithmus zur Faktorisierung eines Polynoms f mit deg f = n u orper GF(q) (ob groß oder ¨ber dem endlichen K¨ klein) ist der in Satz 6.3.1.1 formulierte Sachverhalt f (x) = ggT(f (x), (x) − a) a∈GF(q)
wobei (x) ∈ GF(q)[x] ein Polynom von positivem Grad mit q ≡ mod f ist. Solch ein Polynom (x) l¨ asst sich dabei u ¨ber ein lineares Gleichungssystem ( n × n Koeffizientenmatrix) einfach bestimmen. Dieses Gleichungssystem hat k linear unabh¨ angige L¨ osungen 1 (x) , . . . , k (x) wenn f in k irreduzible Faktoren zerf¨ allt. Das Problem in großen K¨ orpern ( groß“ heißt hier q ' n ) ist es also, ” die kq gr¨oßten gemeinsamen Teiler auf der rechten Seite zu berechnen. Da die Faktoren dieses Produkts paarweise teilerfremd sind, sind h¨ ochstens k der q Faktoren von positivem Grad (man stelle sich die Ineffizienz dieser Methode etwa im Fall q = 2>100 und k ≤ 10 vor). Man k¨ onnte sich also viel Rechenzeit ersparen, wenn man von vornherein w¨ usste, f¨ ur welche a ∈ GF(q) gilt deg(ggT(f, − a)) > 0 . Solch ein Kriterium mit Hilfe von Resultanten liefert Satz 2.5.4. Nach diesem Satz sind die interessanten K¨ orperelemente gerade die Wurzeln in GF(q) des Polynoms F (y) := resx (f (x) , (x) − y) . Dieses F (y) ist ein Polynom vom Grad n in y . Da es aber h¨ ochstens k K¨orperelemente a mit deg(ggT(f, − a)) > 0 gibt, heißt das, dass F (y) u ¨ber GF(q) h¨ochstens k Wurzeln hat. Wegen
248
6 Polynom–Faktorisierung
yq − y =
(y − a)
a∈GF(q)
kann man die h¨ochstens k interessanten Linearfaktoren herausfiltern: F ∗ (y) := ggT(F (y), y q − y) hat genau die a ∈ GF(q) als einfache Wurzeln, f¨ ur die es sich lohnt ggT(f, − a) zu berechnen. Damit ist das Problem, ein allgemeines Polynom f (x) ∈ GF(q)[x] vom Grad n in irreduzible Faktoren zu zerlegen, auf die Berechnung der Wurzeln des vollst¨andig in Linearfaktoren zerfallenden Polynoms F ∗ (y) vom Grad k ≤ n reduziert. Da F ∗ (y) ein Teiler von y q − y ist, kann man mit (4.2) schreiben (S(y) − b) ≡ 0 mod F ∗ (y) b∈GF(p)
Mit der gleichen Argumentation wie beim Beweis von 6.3.1.1 folgt sofort F ∗ (y) = ggT(F ∗ (y) , S(y) − b) (6.10) b∈GF(p)
Falls man mit dieser Formel eine nichttriviale Faktorisierung des Hilfsunglichen polynoms F ∗ (y) und damit auch eine Faktorisierung des urspr¨ Polynoms f (x) bek¨ ame, so h¨ atte man dazu nur p statt q = ps ggTBerechnungen ben¨ otigt. Dies w¨ are insbesondere f¨ ur kleine Charakteristik p und großes s eine ganz erhebliche Vereinfachung. Gibt es ein b ∈ GF(p) mit S(y) ≡ b mod F ∗ (y) , so ist ggT(S(y) − b, F ∗ (y)) = F ∗ (y) und (6.10) liefert nur eine triviale Faktorisierung. Dies kann in der Tat passieren, l¨ asst sich aber durch eine einfache Substitution in (6.10) wieder gutmachen: Es sei {1 , c , c2 , . . . , cs−1 } eine Basis des GF(p)Vektorraumes GF(q) und 0 ≤ i ≤ s − 1 . Substituiert man ci y f¨ ur x in (4.2), so erh¨alt man wegen (ci )q = ci : yq − y =
(S(y) − b) ⇐⇒ y q − y = c−i
b∈GF(p)
(S(ci y) − b)
b∈GF(p)
Damit erh¨alt man die Verallgemeinerung ggT(F ∗ (y) , S(ci y) − b) F ∗ (y) =
(6.11)
b∈GF(p)
von (6.10). Rechnet man von dieser Gleichung ausgehend wie beim Grundalgorithmus von Berlekamp weiter, so werden dabei sicher alle irreduziblen Teiler gefunden.
6.3 Der Berlekamp-Algorithmus
249
Angenommen, es g¨ abe im Widerspruch dazu zu jedem i ein bi mit S(ci y) ≡ bi mod F ∗ (y) d.h. jede Faktorisierung w¨ are trivial. Sind d1 = d2 ∈ GF(q) zwei der k Nullstellen von F ∗ (y) , so gilt also auch S(ci d1 ) = bi = S(ci d2 ) f¨ ur 0 ≤ i ≤ s − 1 . Dies heißt S(ci d1 ) − S(ci d2 ) = 0 f¨ ur 0 ≤ i ≤ s − 1 . Da aber S(a) f¨ ur a ∈ GF(q) die Spur von a ist und diese nach 4.5.3 linear ist, gilt ur 0 ≤ i ≤ s − 1. Sp(ci (d1 − d2 )) = 0 f¨ Wieder wegen der Linearit¨ at von Sp und wegen der Voraussetzung, dass die ci eine Basis von GF(q) bilden, gilt damit Sp(a(d1 − d2 )) = 0 f¨ ur alle a ∈ GF(q). Da Sp nach 4.5.3 surjektiv ist, heißt das d1 = d2 im Widerspruch zur Voraussetzung. Damit kommt man u.U. nicht gleich mit den ersten p ggT-Berechnungen in (6.10) aus, die h¨ ochstens s · p ggT-Berechnungen in (6.11) reichen aber. Dies ist immer noch ein erheblicher Vorteil gegen¨ uber ps . Nat¨ urlich bekommt man diese Vereinfachung nicht umsonst. Der geringere Aufwand f¨ ur die ggT-Berechnungen wird erkauft mit der zus¨ atzlichen Berechnung von F (y) = resx (f (x) , (x) − y) , F ∗ (y) = ggT(F (y), y q − y) und ggT(F ∗ (y) , S(ci y) − b) . Nach [Co2] ist die Berechnung der Resultante f¨ ur F mit dem Aufwand O(sn5 + s2 n4 ) verbunden. atte man W¨ urde man den ggT bei F ∗ so ausrechnen, wie er dasteht, h¨ mit einem Aufwand von O(nq) zu rechnen. Das h¨ angt wieder von dem großen q ab, was man ja gerade vermeiden wollte. Große modulare Potenzen procedure ModPot(r, n, s) t←r for i from 2 to do if n−i = 0 then t ← t2 mod s else t ← t · r2 mod s end if end do Return(t) end
N
# Eingabe: r, s ∈ R (Ring), n ∈ , # n = (1 , n0 , . . . , n−1 )2 # Ausgabe: rn mod s
Da q sehr viel gr¨ oßer als n ist, kann man diesen ggT allerdings schneller berechnen, indem man zuerst y q mod F (y) mit dem Algorithmus ModPot, also im Wesentlichen durch fortgesetztes Quadrieren, berechnet.
250
6 Polynom–Faktorisierung
Da die Schleife − 1 = log2 (n)! − 1-mal durchlaufen wird und in jeder Schleife eine feste Anzahl von Operationen in R ausgef¨ uhrt wird, ben¨ otigt ModPot O(log n) Operationen in R . Speziell im Fall von R = GF(q)[y] und s = F (y) kann man sich diese Operationen zus¨atzlich noch erleichtern, indem man einmal am Anfang die folgenden auf Polynome vom Grad < n reduzierten Ausdr¨ ucke berechnet: y n mod F (y) , y n+1 mod F (y) , . . . , y 2n−2 mod F (y) . Ist n¨amlich r(y) ≡ r0 + r1 y + . . . + rn−1 y n−1 mod F (y) , so kann man die reduzierte Form von r2 mod F einfach bestimmen, indem man r2 berechnet und dann die dort auftretenden Potenzen y n , . . . , y 2n−2 durch die bereits mod F reduzierten Ausdr¨ ucke ersetzt. Damit kommt man in der Schleife mit O(n2 ) Operationen in GF(q) aus. Der Aufruf ModPot(y, q, F (y)) erfordert O(log q) Operationen im Ring GF(q)[x] , bzw. O(n2 log q) Operationen im K¨ orper GF(q) . Dies dominiert die anschließende Berechnung von ggT(F (y), y q −y mod F (y)) , die mit O(n2 ) Operationen auskommt, d.h. der ganze Schritt ist von der Ordnung O(n2 log q) . Das gleiche Problem tritt nochmals auf beim Aufstellen der Matrix B . Das Berechnen der ersten nichttrivialen Spalte ist mit der bisher verwendeten Methode mit dem f¨ ur großes q nicht akzeptablen Aufwand O(nq) verbunden. Wird diese Spalte dagegen mit ModPot(x, q, f (x)) berechnet, so sinkt der Aufwand daf¨ ur auf O(n2 log q) . Die weiteren Spalten sind die Koeffizienten von xqi mod f (x) mit i = 2, . . . , n − 1 und k¨ onnen nun mit den in ModPot bereits bestimmten Ausdr¨ ucken xn mod f (x) , xn+1 mod f (x) , . . . , x2n−2 mod f (x) durch x2q = 2 (xq ) mod f (x) , x3q = x2q · xq mod f (x) ,. . . und Substituieren der reduzierten Werte f¨ ur xn , xn+1 , . . . , x2n−2 berechnet werden. orperoperationen verbunden, Jeder dieser n−2 Schritte ist mit O(n2 ) K¨ so dass man den Aufwand f¨ ur das Aufstellen der Matrix bei großen K¨ orpern insgesamt von O(nq + n3 ) auf O(n2 log q + n3 ) = O(n2 s log p + n3 ) reduziert hat. Da S(ci y)−b den Grad ps−1 = pq hat, darf man ggT(F ∗ (y) , S(ci y)−b) auch nicht direkt berechnen, sondern muss erst S(ci y) modulo F ∗ reduzieren. Dies kann man erreichen, indem man die in S(y) vorkommeni den Potenzen y p f¨ ur i = 0, . . . , s − 1 mit ModPot(y, pi , F ∗ ) berechnet (das ben¨otigt jeweils O(k 2 log pi ) K¨ orperoperationen, also insgesamt O(k 2 s2 log p) ) und dann geeignet kombiniert. Dieser Schritt ist so von der Ordnung O(k 2 s2 log p) , also schlimmstenfalls O(n2 s2 log p) bzw. im Schnitt O(s2 log p log2 n) . Damit sind die dominierenden Schritte des Berlekamp-Algorithmus f¨ ur große K¨orper die ggT-Berechnungen zur Faktorisierung von F ∗ in (6.11), die Berechnung der Resultante und die Reduktion von S mod F ∗ .
6.3 Der Berlekamp-Algorithmus
251
Dies bedeutet einen Gesamtaufwand von maximal O(n2 log p · s2 + n2 p · s + n5 s + n4 s2 ) bzw. erwartet O(log2 n log p · s2 + n2 ps + n5 s + n4 s2 ) . ¨ Durch den Ubergang von q zu log q gewinnt man hier also bei großen K¨orpern. Bei großen Polynomgraden ist diese Variante dagegen noch schlechter als die Grundversion. 6.3.2.1 Beispiel: Gegeben sei das normierte, quadratfreie Polynom f = x7 + (2α2 + 2α)x6 + (2α3 + 2α2 )x5 + (α2 + α + 2)x4 + + (2α2 + α + 2)x3 + (α3 + α2 + 2α + 2)x2 + + (α2 + α + 1)x + 2α2 + α3 ∈ GF(81)[x]
⎛1
Dabei sei α eine Wurzel des u ¨ber Z3 irreduziblen Polynoms x4 + x + 2 . Dieses Trinom ist primitiv, d.h. α erzeugt GF(81)∗ und {1, α, α2 , α3 } ist eine Basis des Z3 -Vektorraumes GF(81) . Nun berechnet man x81 mod f mit ModPot(x, 81, f (x)) und daraus die weiteren f¨ ur die Berlekamp-Matrix ben¨ otigten Potenzen x81i mod f f¨ ur i = 2, . . . , 6 durch fortgesetztes Quadrieren. Aus den Koeffizienten dieser Polynome liest man die Eintr¨ age f¨ ur die Matrix ab. Es ergibt sich ⎞ α3 +α 2 α3 +α+2 2 α3 +2 α2 +α+2 2 α3 +2 α+2 α3 +2 α2 +1 2 α2 +2 α+1
2 α3 +2 2 α+1 2 α2 +2 α3 +α2 +α+2 0 2 α2 +α+2 2 α3 +α2 0 2 α3 +α2 +2 α+1 α2
⎜0 ⎜0 ⎜0 ⎜ ⎝0
2 α3 +α2 +α+1 α2 +2 2 α3 +α+2 2 α+1
α2 +α α2 +α α3 +α2 +2 2α 0 α2 +α+1
α3 +2 α2 +α+2 α2 +2 α3 +α2 +α+2 2 α3 +α+2 2 α3 +2 α2 +2 α α3 +α2 +α+1 α3 +2 α+1 α3 +2 α α2 +α α3 α3 +α2 +2 α α3 +2 α2 +2 α+1
2 α2 +α+1 α2 +α 2 α3 +α+1 2 2 α3 +2 α α3 +α2 +α
Die triangulierte Form von B − En ist ⎛ 0 2 α+1 α3 +α2 +α+2 2 α α3 +2 α 0
0
α2 +1
0 0
0 0 0 0 0
0 0 0 0 0
⎜ ⎜0 ⎜0 ⎜0 ⎝
α3 +2 α 2 0 2 α3 +α2 +α+1 α3 +2 α 2 α3 +α2 +α+2 α3 +α+2 α3 +2 α2 +α+1 2 α3 +2 α+2 1 0 2 α3 +2 α2 +2 α3 +2 α2 +2 α+2 2 α2 +2 α+2 0 0 0 0 0 0 0 0 0 0 0 0
⎟ ⎟ ⎟ ⎟ ⎠
⎞ ⎟ ⎟ ⎟ ⎟ ⎠
woraus man bereits abliest, dass f drei irreduzible Faktoren hat. Die zu Polynomen umgeschriebenen Basisvektoren von Kern(B − En ) sind 1 , (2α3 + α + 1)x + (α3 + 2α + 1)x2 + x3 + (2α + 2)x4 + 2α3 x6 , (α2 + 1)x + (α3 + α2 + 2α)x2 + (2α + 1)x4 + x5 + (2α2 + 2α3 + 1)x6
252
6 Polynom–Faktorisierung
Beginnt man mit dem zweiten dieser drei Polynome, so ergibt sich F =2y 7 + (α3 + 2)y 6 + (α3 + α2 + 2)y 5 + 2α3 y 4 + (2α2 + 2α + 1)y 3 + (α3 + α + 2)y 2 + α3 y + 2 + 2α3 + 2α2 + 2α und daraus F ∗ = y 3 + (α2 + α + 2)y 2 + (2α2 + 2α + 1)y + 2α . alt F ∗ Wegen deg F ∗ = 3 und der Konstruktion von F ∗ enth¨ drei Linearfaktoren, deren Wurzeln auf drei zueinander teilerfremde, nichttriviale Faktoren von f f¨ uhren. Da bereits bekannt ist, dass f drei irreduzible Faktoren besitzt, f¨ uhrt also bereits dieser erste Schritt zu einer vollst¨ andigen Zerlegung. Die Berechnung von ggT(F ∗ (y) , S(y) − b) f¨ ur b ∈ Z3 mit S(y) = y + y 3 + y 9 + y 27 liefert die noch unvollst¨ andige Faktorisierung F ∗ = (y + 2α2 + α + 2)(y 2 + 2α2 x + α3 + α2 ) . Der quadratische Faktor wird schließlich durch die Berechnung von ggT(y 2 + 2α2 y + α3 + α2 , S(αy) − b) f¨ ur b ∈ Z3 zerlegt. Aus den drei Faktoren y + 2α3 + α2 + α, y + 2α2 + α + 2, y + α3 + α2 + 2α von F ∗ liest man die drei Werte a1 = α3 + 2α2 + 2α, a2 = α2 + 2α + 1, a3 = 2α3 + 2α2 + α ab f¨ ur die sich die Berechnung von ggT(f, − ai ) lohnt. Die Berechnung dieser drei ggTs liefert die vollst¨ andige Zerlegung f = (x2 +(2α+2)x+α+2)(x2 +(2α+1)x+2)(x3 +(2α2 +α)x2 +2αx+2α2 ) . Dazu waren insgesamt 9 ggT-Berechnungen n¨ otig (6 f¨ ur die Faktorisierung von F ∗ und 3 f¨ ur die Zerlegung von f ) statt sch¨ atzungsweise k · q = 243-ggT-Berechnungen beim Standard-Algorithmus. 6.3.3 Verbesserungen von Cantor und Zassenhaus Probabilistische Versionen des Berlekamp-Algorithmus f¨ ur große K¨ orper wurden von Cantor und Zassenhaus in [CZa] vorgeschlagen. Der erste Vorschlag zielt darauf ab, den Aufwand f¨ ur die Berechnung der Resultante resx (f (x) , (x) − y) , f¨ ur ggT(F (y), y q − y) und ggT(F ∗ (y) , S(ci y) − b) zu sparen, nimmt daf¨ ur aber in Kauf, dass wieder einige (aber bei weitem nicht so viele, wie bei der Grundversion des Berlekamp-Algorithmus) ggTs umsonst berechnet werden.
6.3 Der Berlekamp-Algorithmus
253
Je nach gerader oder ungerader Charakteristik des K¨ orpers werden zwei F¨alle unterschieden. Ist p und somit auch q ungerade, so gilt xq − x = x · (x
q−1 2
− 1) · (x
q−1 2
+ 1) ,
d.h. aus (6.7) folgt f | · (
q−1 2
− 1) · (
q−1 2
+ 1) .
Nun kann man hoffen, dass sich die irreduziblen Teiler von f f¨ ur beliebiges aus dem L¨ osungsraum aus (6.7) jeweils circa zur H¨ alfte in den q−1 beiden gleich großen Faktoren 2 ± 1 finden. Deshalb berechnet man f¨ ur verschiedene, zuf¨ allig aus dem Kern von B − q−1 En gew¨ahlte Vektoren den ggT(f, 2 −1) bzw., falls schon nichttriviale q−1 Faktoren u von f gefunden sind ggT(u, 2 − 1) . q−1
Der ggT(f, 2 −1) ist trivial, wenn entweder alle irreduziblen Faktoren q−1 f1 , . . . , fk das Polynom 2 − 1 teilen oder wenn keiner der Faktoren dieq−1 ¨r alle i = sen Ausdruck teilt. Das ist der Fall, wenn gilt 2 ≡ 1 mod fi f u q−1 2 1, . . . , k bzw. wenn ≡ 1 mod fi f u ¨r alle i = 1, . . . , k . Die Vektoren bilden einen GF(q)-Vektorraum der Dimension k . Die entsprechenden Polynome (x) bilden den Ring W := { ∈ GF(q)[x]; q ≡ mod f } . Da die Faktoren f1 , . . . , fk irreduzibel u ¨ber GF(q) vorausgesetzt waren, ist Ki := GF(q)[x]/fi f¨ ur i = 1, . . . , k jeweils ein K¨ orper isomorph zu GF(q ni ) . Die Teilmenge Wi := { ∈ Ki ; q = } ist jeweils isomorph zu GF(q) . k Die Abbildung φ : → ( mod f1 , . . . , mod fk ), von W nach j=1 Wi ist nach dem Chinesischen Restsatz ein Isomorphismus. q−1
q−1
Der ggT(f, 2 − 1) ist also trivial, wenn entweder φ( 2 ) = q−1 (1 , . . . , 1) ist oder wenn keine einzige Komponente von φ( 2 ) gleich 1 ist. Ist α ein primitives Element von GF(q) , so gilt f¨ ur ein beliebiges, von q−1 q−1 j Null verschiedenes Element β := α dieses K¨ orpers β 2 = αj 2 . Ist j gerade, d.h. β ein Quadrat, so ist dies eine Potenz von αq−1 = 1 , q−1 also selber 1 . Ist j dagegen ungerade, so ist dies gleich α 2 , also von 1 2 verschieden und damit wegen β = 1 gleich −1 . In GF(q) gibt es deshalb q−1 genau q−1 Elemente β mit β 2 = 1 (Quadrate) und q+1 Elemente β 2 2 q−1 mit β 2 = 1 (Nichtquadrate). Sind die Komponenten von φ(
q−1 2
) voneinander unabh¨ angig, so ist k φ( ) = (1 , . . . , 1) mit der Wahrscheinlichkeit q−1 , bzw. keine einzi2q k q−1 ge Komponente von φ( 2 ) gleich 1 mit der Wahrscheinlichkeit q+1 . 2q q−1 2
254
6 Polynom–Faktorisierung q−1
Die Wahrscheinlichkeit f¨ ur einen nichttrivialen ggT(f, 2 − 1) ist also k k q+1 q−1 − . P (q, k) = 1 − 2q 2q Da q ungerade vorausgesetzt war, gilt q ≥ 3 . Die Methode wird nur verwendet im Fall von mindestens 2 irreduziblen Teilern von f , man kann somit k ≥ 2 voraussetzen. Diskussion der Funktion P (q, k) unter diesen Voraussetzungen zeigt nun, dass sie ihr globales Minimum in dem Punkt (3, 2) annimmt. Wegen P (3, 2) = 49 erh¨ alt man wie erhofft in fast der H¨alfte aller F¨alle einen nichttrivialen ggT . Wie der Berlekamp-Algorithmus f¨ ur große K¨ orper braucht diese verbesserte Version erst mal die Berlekamp-Matrix und deren Eigenraum zum Eigenwert 1 . Dieser Programmteil ist also mit dem Aufwand O(n2 log p · s + 2n3 ) verbunden. Dann geht es in die Schleife, in der jeweils zuerst ein aus der berechneten Basis zuf¨ allig kombiniert wird. Das Kombinieq−1 ren ben¨otigt O(kn) Rechenschritte. Dann wird 2 mod f mit ModPot 2 berechnet, was mit O(n2 log( q−1 2 ) = O(n log p · s) geht. Die folgende ggTBerechnung ben¨otigt mit Standardverfahren O(n2 ) , d.h. die gesamte Arbeit in der Schleife wird von n2 log p · s dominiert. Nachdem pro Schleifendurchlauf mit einer Wahrscheinlichkeit P (q, k) ≥ 4 ein nichttrivialer Faktor gefunden wird, erwartet man mindestens bei je9 dem zweiten Durchlauf einen Treffer. Da man insgesamt log n irreduzible Faktoren erwartet, wird man im Mittel mit 2 log n Durchl¨ aufen auskommen, was also auf die erwartete Komplexit¨ at von O(2(n2 log n log p · s + n3 )) f¨ uhrt. Gegen¨ uber der urspr¨ unglichen Version von Berlekamp ist das eine deutliche Verbesserung sowohl bei der Potenz von n , als auch bei der K¨ orpergr¨oße ( log p · s statt p · s ). Diese verbesserte Version des BerlekampAlgorithmus f¨ ur große K¨ orper findet sich in der Literatur oft unter dem Namen Big Prime Berlekamp 6.3.3.1 Beispiel: Betrachtet wird wieder das Polynom f = x7 + (2α2 + 2α)x6 + (2α3 + 2α2 )x5 + (α2 + α + 2)x4 + + (2α2 + α + 2)x3 + (α3 + α2 + 2α + 2)x2 + + (α2 + α + 1)x + 2α2 + α3 ∈ GF(81)[x] dessen Faktorisierung bereits im vorhergehenden Beispiel mit dem Berlekamp-Algorithmus f¨ ur große K¨ orper berechnet worden ist. Bis zur Berechnung einer Basis von Kern(B − En ) verl¨ auft die Cantor-Zassenhaus-Variante genauso wie Berlekamps Version. Man kann also die geordnete Basis [1 , (α2 + 1)x + (α3 + α2 + 2α)x2 + (2α + 1)x4 + x5 + (2α2 + 2α3 + + 1)x6 , (2α3 + α + 1)x + (α3 + 2α + 1)x2 + x3 + (2α + 2)x4 + 2α3 x6 ]
6.3 Der Berlekamp-Algorithmus
255
aus dem bereits gerechneten Beispiel u oglicher ¨bernehmen. Ein m¨ Verlauf des Algorithmus sieht nun etwa wie folgt aus: Zuf¨allig gew¨ ahlte Koeffizienten der Linearkombination: λ1 = α3 , λ2 = 2α3 + 2α2 + α + 1 , λ3 = α3 + 2α. Die zugeh¨ orige Linearkombination ist =(α3 + α2 + α)x6 + (α3 + 2α)x5 + (2α3 + 2)x4 + (2α3 + α+ + 1)x3 + (2α3 + 2α2 + α + 1)x2 + (α2 + α + 2)x + α3 Damit ist
q−1 2
− 1 ≡(α3 + 2)x6 + (α2 + 2)x5 + (α3 + 2α + 1)x4 + + (2α2 + 2α3 + 2 + 2α)x3 + (α3 + α2 )x2 + + (α3 + α2 + α + 2)x + 2 + α mod f
Der ggT diese Ausdrucks mit f liefert die Zerlegung U von f U = {x3 + (2α2 + α)x2 + 2αx + 2α2 , x4 + αx3 + (α2 + α)x2 + 2α2 x + 2α + 1} Mit den neuen Koeffizienten λ1 = α3 + α2 + α , λ2 = 2 , λ3 = α3 + 2α2 + 2α erh¨alt man nun die Linearkombination =(α3 + 2α2 + α + 2)x6 + (α3 + 2α2 + 2α)x5 + (2α3 + α2 + α+ + 1)x4 + (2α2 + α3 )x3 + 2x2 + (α3 + α2 + α)x + α2 + α + α3 mit
q−1 2
− 1 ≡(2α3 + 2α)x6 + (α3 + 2α2 + 2α + 1)x5 + (2α2 + 2α + 1)x4 + + (α3 + α2 + 1)x3 + α2 x2 + (2α3 + 2)x + 2α3 + 2α2 mod f .
Nun werden alle ggTs dieses Ausdrucks mit den zwei berechneten Teilern von f in der Menge U berechnet. W¨ ahrend der erste Teiler in U nichts Neues bringt, liefert der zweite die neuen Teiler x2 + (2α + 1)x + 2 und x2 + (2α + 2)x + α + 2 . Damit sind bereits die 3 gesuchten Teiler von f gefunden: {x2 +(2α+2)x+α+2, x2 +(2α+1)x+2, x3 +(2α2 +α)x2 +2αx+2α2 } Die Faktorisierung von f wurde in diesem Fall besonders sparsam mit nur 3 ggT-Berechnungen erreicht.
256
6 Polynom–Faktorisierung
F¨ ur einen ¨ahnlichen Ansatz im Fall p = 2 sollte man sich an (4.2) erinnern, was hier xq − x = S(x) · (S(x) + 1) und damit f |S() · (S() + 1) bedeutet. Berechnet man wieder f¨ ur zuf¨ allig gew¨ ahlte aus dem L¨ osungsraum den Ausdruck ggT(f, S()) , bzw. ggT(u, S()) , wenn man schon Teiler u von f hat, so erh¨ alt man m¨ oglicherweise nichttriviale Teiler von f . Betrachtet man wieder die Abbildung φ : → ( mod f1 , . . . , mod fk ), k von W nach j=1 Wi , so folgt wegen der in 4.5.3 nachgewiesenen Linearit¨at der Spurfunktion φ(S()) = (S() mod f1 , . . . , S() mod fk ) = = (S( mod f1 ) , . . . , S( mod fk )) . Die Funktionswerte S( mod fi ) f¨ ur i = 1, . . . , k sind Elemente von GF(2) , k¨onnen also nur 0 oder 1 sein. Die i-te Komponente von φ(S()) ist genau dann gleich 0 , wenn fi das Polynom S() teilt. Der ggT(f, S()) wird also genau dann trivial, wenn alle Komponenten von φ(S()) verschwinden ( ggT = f ), oder wenn alle Komponenten von φ(S()) gleich 1 sind ( ggT = 1 ). Geht man davon aus, dass die S( mod fi ) unabh¨ angig voneinander sind, so ist die Wahrscheinlichkeit f¨ ur jeden dieser F¨ alle ( 12 )k , also die Wahrscheinlichkeit f¨ ur eine nichttriviale Faktorisierung P (k) = 1 − 2( 12 )k = 1 k−1 1−(2) . Da man dieser Verfahren nur f¨ ur k > 1 anwendet, hat man also auch in diesem Fall mit P (k) ≥ 12 sehr gute Erfolgsaussichten. 6.3.3.2 Beispiel: Gegeben sei das normierte, quadratfreie f ∈ GF(32) f = x10 + x9 + (α2 + 1)x8 + (α3 + α)x7 + x6 + x5 + x4 + (α3 + α)x3 + x + 1
(sogar primitiven) Polynoms x5 + x3 + 1 sei. Nach der u ¨blichen Vorarbeit erh¨ alt man die geordnete Basis (1, (α3 + α2 + 1)x + (α4 + α + 1)x2 + (α3 + α2 + α + 1)x3 + + x4 + (α4 + α2 + α + 1)x8 , (α4 + α3 + α)x + (α2 + α)x2 + (α4 + α3 + α2 )x3 + x5 + (α + 1)x6 + (α4 + α3 + α2 + α+ + 1)x7 + (α3 + α2 )x8 , αx + (α3 + α + 1)x2 + (α3 + α2 + + α)x3 + α2 x6 + (α4 + α2 + α)x7 + (α4 + α2 )x8 + x9 ) von Kern(B − En ) , woraus man insbesondere abliest, dass f in 4 irreduzible Teiler zerf¨ allt.
6.3 Der Berlekamp-Algorithmus
257
Beginnt man z.B. mit den zuf¨ alligen Koeffizienten der Linearkombination α2 + α, α4 + α2 , α2 , α3 + α , so erh¨ alt man (x) =(α3 + α)x9 + (α + 1)x8 + (α4 + α2 + α)x7 + (α3 + + α2 + 1)x6 + α2 x5 + (α4 + α2 )x4 + (α3 + α2 + α + 1)x3 + + (α4 + α3 + 1)x2 + (α4 + α2 + 1)x + α2 + α und damit mod f S() ≡(α4 + α2 + 1)x9 + (α4 + α2 + α + 1)x8 + (α4 + α)x7 + + (α3 + α2 + α + 1)x6 + (α2 + α + 1)x5 + (α4 + α3 + α2 + + α)x4 + x3 + (α3 + α2 + α + 1)x2 + (α3 + α2 )x + α4 + α und somit aus ggT(f, S()) bzw. ggT(f, S() mod f ) die erste nichttriviale Zerlegung von f . Nach diesem Schritt ist U = {x4 + αx3 + α4 x2 + (α + 1)x + α4 + 1, x6 + (α + 1)x5 + (α4 + α + 1) x4 + (α4 + α3 + α2 + α + 1)x3 + x2 + (α4 + α3 + 1)x + α4 + α}
Rechnet man nun z.B. mit den zuf¨ alligen Koeffizienten der Linearkombination α4 + α2 + α , α4 , α4 + α3 + α2 + α , α weiter, so erh¨alt man (x) =αx9 + (α4 + α2 + 1)x8 + (α2 + α + 1)x7 + (α + 1)x6 + + (α4 + α3 + α2 + α)x5 + α4 x4 + (α4 + α + 1)x3 + (α+ + 1)x2 + (α4 + α2 )x + α4 + α2 + α und damit S() ≡(α3 + α2 )x9 + (α4 + α + 1)x8 + (α3 + α + 1)x6 + (α3 + + α2 + α)x5 + (α4 + α2 + α + 1)x4 + (α4 + α2 )x3 + (α+ + 1)x2 + (α4 + α3 + α2 )x + α3 + α2 + α mod f Mit dieser Spur wird nun jeweils der ggT(u, S()) f¨ ur alle u ∈ U berechnet. Der erste ggT ist 1 , der zweite, mit dem Polynom 6. Grades aus U , liefert eine Verfeinerung der bisher berechneten Zerlegung: ggT(u, S()) = x2 + (α3 + α2 )x + α3 + α . Nach diesem Schritt ist U ={x4 + (α3 + α2 + α + 1)x3 + (α3 + α2 + α + 1)x2 + (α4 + + α2 )x + α4 + α3 + α, x4 + αx3 + α4 x2 + (α + 1)x + α4 + + 1, x2 + (α3 + α2 )x + α3 + α}
258
6 Polynom–Faktorisierung
Rechnet man nun z.B. mit den zuf¨ alligen Koeffizienten der Linearkombination α4 + α2 + 1 , α3 + α , α4 + α2 , α3 + α2 + α + 1 weiter, also mit der Linearkombination (x) =(α3 + α2 + α + 1)x9 + (α3 + α2 + α)x8 + (α4 + α2 + α)x7 + +(α4 + α2 )x5 + (α3 + α)x4 + (α4 + α3 + α + 1)x3 + +(α3 + α + 1)x2 + (α4 + α3 + α)x + α4 + α2 + 1 so ergibt sich die Spur S() ≡(α3 + α)x9 + (α3 + α2 + α + 1)x8 + (α4 + α + 1)x7 + + (α3 + α)x6 + (α4 + α3 + α2 + α)x5 + (α4 + α2 + α+ + 1)x4 + (α4 + α3 + α2 )x3 + (α3 + α + 1)x2 + (α3 + α2 + + α)x + α4 + α2 + α mod f Der ggT der Spur mit dem ersten u (Grad 4 ) liefert dann auch schon den letzten Faktor: ggT(u, S()) = x2 + (α2 + α + 1)x + α2 + 1 + α4 also insgesamt die vollst¨ andige Zerlegung von f : U = {x2 + (α2 + α + 1)x + α2 + 1 + α4 , x2 + α3 x + α + 1 + α3 , x4 + αx3 + α4 x2 + (α + 1)x + α4 + 1, x2 + (α3 + α2 )x + α3 + α} . Bei dem geschilderten Verlauf wurden insgesamt 4 ggT-Berechnungen durchgef¨ uhrt. Nur eine davon ergab einen trivialen ggT , alle anderen f¨ uhrten direkt zur Zerlegung von f ! Bekanntlich ist xq − x das Produkt aller x − a mit a ∈ GF(q) , d.h. das Produkt aller verschiedenen normierten, u ¨ber GF(q) irreduziblen Polynome vom Grad 1 . Eine weitere Verbesserung des Faktorisierungsalgorithmus beruht auf dem folgenden Satz, der dieses Ergebnis verallgemeinert. r
6.3.3.3 Satz: Das Polynom xq − x ist das Produkt aller verschiedenen, normierten, u ¨ber GF(q) irreduziblen Polynome, deren Grad die Zahl r ∈ teilt.
N
Beweis: Es sei m(x) ∈ GF(q)[x] ein irreduzibles Polynom vom Grad d mit d | r , also etwa r = d · r . Dann ist der Restklassenring F := GF(q)[x]/m(x) ein K¨ orper mit q d Elementen. d
F¨ ur jedes f ∈ F gilt also f q = f und somit auch f
qr
=f
q d·r
=
f
qd
q d
q d ... =f.
6.3 Der Berlekamp-Algorithmus
259
Insbesondere gilt dies nat¨ urlich f¨ ur das Polynom f (x) = x , was f¨ ur r x ∈ F bedeutet xq = x , bzw. f¨ ur x ∈ GF(q)[x] r
r
xq ≡ x mod m(x) ⇐⇒ m(x) | xq − x , r
d.h. jedes irreduzible Polynom vom Grad d | r teilt xq − x . r Es bleibt noch zu zeigen, dass das alle Polynome sind, die xq −x teilen. Dazu geht man vom Gegenteil aus und betrachtet ein irreduzibles Polynom r m(x) ∈ GF(q)[x] vom Grad d > r mit m(x) | xq − x . Der K¨ orper F d−1 sei wie oben definiert. F¨ ur ein beliebiges f (x) = i=0 fi xi ∈ F ist dann r r r f (x)q = f (xq ) = f (x) , denn in F gilt wegen m(x) | xq − x , dass r r xq = x . Somit ist jedes f ∈ F eine Wurzel des Polynoms z q − z , was r aber wegen |F | = q d > q r = deg(z q − z) nicht m¨ oglich ist. 6.3.3.4 Beispiel: Das Polynom x16 − x hat u ¨ber Z2 die Faktoren x , x + 1 , x2 + x + 1 , x4 + x + 1 , x4 + x3 + 1 und x4 + x3 + x2 + x + 1 , also genau alle verschiedenen, normierten, u ¨ber Z2 irreduziblen Polynome vom Grad 1 , 2 und 4 . Mit diesem Satz kann man mit einer Folge einfacher ggT-Berechnungen ein gegebenes quadratfreies Polynom f (x) ∈ GF(q)[x] vom Grad n faktorisieren in f (x) = d1 (x) · d2 (x) · · · . . . · dn (x) , wobei di das Produkt aller verschiedenen, normierten, u ¨ber GF(q) irreduziblen Teiler vom Grad i von f sei. Es ist n¨amlich ⎛ ⎞ i−1 i di (x) = ggT ⎝xq − x, f (x)/ dj (x)⎠ f¨ ur i = 1, 2, . . . j=1
Faktorisierung nach Graden (Distinct Degree Factorization) procedure DDF(f, q) # Eingabe: f ∈ GF(q)[x] quadratfrei d =f # Ausgabe: d1 , d2 ,. . . mit r ← x ; h ← f ; g ← 0 ; n ← deg(f ) i i = Produkt aller # und d i while g < n/2 and h = 1 do # Teiler vom Grad i g ← g + 1 ; r ← rq mod h dg ← ggT(r − x, h) if dg = 1 then h ← h/dg r ← r mod h end if end do n ← deg(h) ; if n > 1 then dn ← h end if Return(d1 , . . . , dn ) end
6.3.3.5 Beispiel: F¨ ur f (x) = x21 + x20 + x18 + x17 + x15 + x6 + x5 + x3 + 2 x + 1 ∈ Z2 [x] liefert DDF die Faktorisierung
260
6 Polynom–Faktorisierung
f = (x + 1) (x2 + x + 1) (x12 + x9 + x6 + x3 + 1) (x6 + x5 + x3 + x2 + 1) . d1
d2
d4
d6
Ist der Grad von di gleich i , so ist di irreduzibel. Im Beispiel weiß man also, dass d1 , d2 und d6 irreduzibel sind und d4 aus 3 irreduziblen Faktoren vom Grad 4 besteht. Ist n = deg(f ) und berechnet man rq mod h jeweils mit ModPot(r, q, h) so erfordert das h¨ ochstens O(n2 log q) Operationen in GF(q) , denn deg(h) ≤ deg(f ) . Die folgende ggT-Berechnung erfordert O(n2 ) Operationen, wird also von dem ersten Schritt dominiert. Da die Schleife maximal n uhrt das auf eine Gesamtkomplexit¨ at dieses Teils 2 -mal durchlaufen wird f¨ von O(n3 log q) . Die if -Schleife wird maximal so oft durchlaufen, wie es verschiedene irreduzible Faktoren in f gibt. Hier erwartet man im Schnitt O(log(n)) Faktoren und im schlimmsten Fall O(n) Faktoren und jeder Schritt ist von der Ordnung O(n2 ) , d.h. dieser Teil schl¨ agt insgesamt mit erwartet O(n2 log(n)) bis maximal O(n3 ) zu Buche und wird somit von obigem O(n3 log q) dominiert. Es gilt also Op[(d1 , . . . , dn ) ← DDF(f, q)](n, q) = O(n3 log q) . i
andigste Wie gezeigt, ist die Berechnung von xq − x mod h(x) der aufw¨ Teil des Algorithmus. Eine Verbesserung mit Hilfe der Berlekamp-Matrix B wurde in [Le7] vorgeschlagen und beruht auf dem 6.3.3.6 Hilfssatz: Es seien f (x) ∈ GF(q)[x] quadratfrei mit deg(f ) = n n−1 und B = (bji ) die Matrix mit xqi ≡ j=0 bji xj mod f (x) f¨ ur 0 ≤ i ≤ n − 1 . F¨ ur ein beliebiges g(x) ∈ GF(q)[x] mit deg g < deg f gilt dann B · g = g q mod f (x) , wobei g und g p hier die Koeffizientenvektoren der entsprechenden Polynome seien. n−1 i q q Beweis: Es sei g(x) = i=0 gi x . In GF(q)[x] gilt g(x) = g(x ) = n−1 qi i=0 gi x . Damit folgt n−1 n−1 n−1 n−1 q j gi bji x mod f (x) = bji gi xj = B · g . g(x) ≡ i=0
j=0
j=0
i=0
Damit muss man einmal am Anfang die Berlekamp-Matrix berechnen, was mit ModPot bekanntlich mit dem Aufwand O(n2 log q + n3 ) verbunden i ist, und dann jeweils xq −x mod h(x) u ¨ber das Produkt mit der BerlekampMatrix B gem¨aß dem Hilfssatz bestimmen.
6.3 Der Berlekamp-Algorithmus
261
Da das jeweils mit O(n2 ) geht und die Schleife maximal n2 -mal durchlaufen wird, sinkt damit die Komplexit¨ at dieses Programmteils auf O(n3 + n2 log q) gegen¨ uber obigem O(n3 log q) . Eine sehr ausf¨ uhrliche Diskussion der Laufzeit dieses Algorithmus findet sich in [FGP]. Dort wird unter anderem gezeigt, dass nach der Anwendung der quadratfreien Faktorisierung und der Faktorisierung nach Graden die Wahrscheinlichkeit f¨ ur eine bereits vollst¨ andige Faktorisierung asymptotisch nahe bei e−γ liegt◦ , also bei u ¨ber 56%. Um die verbleibenden reduziblen Faktoren di mit deg di > i nun noch vollst¨andig zu zerlegen (der Gesamtgrad dieser di hat laut [FGP] den Erwartungswert log n ), verwendet man einen ¨ahnlichen Ansatz wie bei der ‘Big Prime’-Variante des Berlekamp-Algorithmus. Wie bereits im Beweis des vorhergehenden Satzes gezeigt, ist jedes f ∈ F eine Wurzel des Polyr r r r r noms z q −z , d.h. f q ≡ f mod xq −x bzw. xq −x | f q −f . Insbesondere r enth¨alt also f q − f alle irreduziblen Polynome vom Grad r u ¨ber GF(q) . Deshalb gilt f¨ ur ungerades q und beliebiges f i
di = ggT(di , f q − f ) = ggT(di , f ) · ggT(di , f
q i −1 2
− 1) · ggT(di , f
q i −1 2
+ 1)
q i −1
und man kann hoffen durch die Berechnung von ggT(di , f 2 − 1) nichttriviale Teiler von di zu finden. Der große Vorteil bei diesem Verfahren ist nat¨ urlich, dass dazu keine Berlekamp-Matrix und keine L¨ osung eines linearen Gleichungssystems n¨ otig ist. Außerdem sieht man ohne weitere Rechnung sofort am Grad, ob eines der beteiligten Polynome irreduzibel ist. Ist deg di > i , so gibt es irreduzible Polynome fi1 ,. . . , fij mit deg fi = i f¨ ur = 1, . . . , j und di = fi1 · . . . · fij . Nach dem Chinesischen Restsatz ist der kanonische Homomorphismus φ : GF(q)[x]/di (x) → GF(q)[x]/fi1 (x) × . . . × GF(q)[x]/fij (x) sogar ein Ringisomorphismus und alle Restklassenringe auf der rechten Seite sind wegen der Irreduzibilit¨ at der fi K¨ orper isomorph zu GF(q i ) . Analog zur Argumentation am Anfang ist ggT(di , f trivial, wenn alle fi das Polynom f q i −1 2
q i −1 2 q i −1
Polynom f − 1 teilt, d.h. wenn φ(f all seine Eintr¨age = 1 sind.
q i −1 2
−1) genau dann
− 1 teilen oder kein fi das
2
) der volle 1-Vektor ist oder
q i −1
Dies ist genau dann der Fall, wenn f 2 ≡ 1 mod fi f¨ ur = 1, . . . j ist, d.h. wenn f in allen GF(q)[x]/fi (x) ein Quadrat ist, oder wenn f in all diesen K¨orpern ein Nichtquadrat ist. Da es in GF(q i ) genau q 2−1 Quadrate und q 2+1 Nichtquadrate gibt, ist die Wahrscheinlichkeit f¨ ur eine nichttriviale Faktorisierung i
◦
γ ≈ 0, 577216 sei die Eulersche Konstante
i
262
6 Polynom–Faktorisierung
P (q i , j) = 1 −
qi − 1 2q i
j
−
qi + 1 2q i
j ≥
4 9
Deshalb erwartet man etwa 2 Schritte pro Treffer. Pro Schritt wird q i −1 2
f − 1 mod di berechnet, was mit ModPot etwa O(deg(di )2 log q 2−1 ) = 3 2 O(i j log q) Schritte erfordert. Der Algorithmus, der oft mit EDF (Equal Degree Factorization) bezeichnet wird, sieht dann etwa so aus: Faktorisierung, Produkt gleicher Grade, q ungerade (EDF) i
procedure EDF(d, i, q) # Eingabe: Polynom d(x) = quadratfreies Produkt if deg(d) ≤ i then Return(d) end if # # irreduzibler Faktoren f ← zuf¨ alliges Polynom vom Grad # vom Grad i deg(d) − 1 aus GF(q)[x] # Ausgabe: Irreduzible Faktoren q i −1 f ← ggT(d, f 2 − 1 mod d) # f1 ,. . . , fj von d(x) Return(EDF(f, i, q) · EDF(d/f, i, q)) end
6.3.3.7 Beispiel: Gegeben sei das quadratfreie Polynom f =x7 + (α + 1)x6 + 2x5 + (2α2 + 2α)x4 + (2α2 + 2α + 2)x3 + + (α3 + α2 + 2)x2 + (2α2 + α + 1)x + α ∈ GF(81)[x] . Dabei sei α eine Wurzel des u ¨ber Z3 irreduziblen Polynoms x4 + x + 2 . Dieses Trinom ist primitiv, d.h. α erzeugt GF(81)∗ und {1, α, α2 , α3 } ist eine Basis des Z3 -Vektorraumes GF(81) . DDF liefert d1 (x) = x3 +(2α3 +α2 +2α+2)x2 +(2α3 +α2 +1)x+2+α3 +2α2 +2α , also 3 noch nicht getrennte Linearfaktoren und d2 (x) =x4 + (α3 + 2α2 + 2α + 2)x3 + (α2 + α + 1)x2 + + (α3 + 2α2 + 2α)x + α3 + 2 , was aus 2 quadratischen Faktoren besteht. Mit d1 k¨ onnte EDF z.B. so ablaufen (im Algorithmus ist d jeweils das als erstes Argument u ¨bergebene Polynom): Erster Aufruf: EDF(d1 , 1, 81) Zuf¨ alliges f = x2 + 2α3 + 2α2 + α + 2 + (2α2 + 1)x ⇒f
q i −1 2
q i −1
mod d = 2 ⇒ ggT(d, f 2 − 1 mod d) = 1 Ausgabe: EDF(d1 , 1, 81) · EDF(1, 1, 81) Rekursiver Aufruf (EDF(1, 1, 81) liefert 1): EDF(d1 , 1, 81) Zuf¨ alliges f = x2 + α3 + α2 + 2α + 2 + α3 x
6.3 Der Berlekamp-Algorithmus q i −1
q i −1 2
⇒ f 2 mod d = 1 ⇒ ggT(d, f Ausgabe: EDF(d1 , 1, 81) · EDF(1, 1, 81)
263
− 1 mod d) = d
Rekursiver Aufruf (EDF(1, 1, 81) liefert 1): EDF(d1 , 1, 81) Zuf¨ alliges f = x2 + 2α3 + 2α2 + α + 2 + (2α3 + 1)x ⇒f
q i −1 2
mod d = (α3 + α2 )x2 + 2x + 2α + 2 + 2α3 + α2 q i −1
⇒ ggT(d, f 2 − 1 mod d) = x + α2 + 2 Ausgabe: EDF(x + α2 + 2, 1, 81) · EDF(x2 + (2α3 + 2α)x + 2α3 + 1, 1, 81) Rekursiver Aufruf (EDF(x + α2 + 2, 1, 81) liefert x + α2 + 2): EDF(x2 + (2α3 + 2α)x + 2α3 + 1, 1, 81) Zuf¨ alliges f = x + 2α3 + α2 + α + 1 ⇒f
q i −1 2
mod d = α3 x + α2 + 2α + 1 + 2α3 q i −1
⇒ ggT(d, f 2 − 1 mod d) = x + 2α2 + 2 Ausgabe: EDF(x + 2α2 + 2, 1, 81) · EDF(x + α2 + 2α + 1 + 2α3 , 1, 81) = (x + 2α2 + 2) · (x + α2 + 2α + 1 + 2α3 ) also zusammen mit dem bereits weiter oben berechneten Linearfaktor mit insgesamt 4 ggT-Berechnungen d1 = (x + α2 + 2)(x + 2α2 + 2)(x + α2 + 2α + 1 + 2α3 ). Entsprechend erh¨ alt man f¨ ur d2 die Zerlegung d2 = (x2 + (α3 + 2α2 + α + 2)x + α3 + 2)(x2 + αx + 1) , so dass damit die vollst¨ andige Faktorisierung f =(x + α2 + 2)(x + 2α2 + 2)(x + α2 + 2α + 1 + 2α3 ) (x2 + (α3 + 2α2 + α + 2)x + α3 + 2)(x2 + αx + 1) berechnet wurde. Ist q gerade, also von der Form p = 2s , so verwendet man wieder die Spurfunktion, von der man nach (4.2) weiß, dass rs−1 rs−1 i i (q r ) p p x · −x= x x +1 i=0
i=0
264
6 Polynom–Faktorisierung r
Da f q − f alle irreduziblen Polynome vom Grad r u alt, ¨ber GF(q) enth¨ folgt ⎞ ⎛ ⎞ ⎛ is−1 is−1 j j i f p ⎠ · ggT ⎝di , f p + 1⎠ di = ggT(di , f q − f ) = ggT ⎝di , j=0
j=0
is−1 j und man kann hoffen, mittels ggT(di , j=0 f p ) nichttriviale Teiler von di zu finden. Auch hier hat man sehr gute Chancen f¨ ur ein nichttriviales Ergebnis. Besteht di aus den j irreduziblen Faktoren fi1 ,. . . , fij , so ist obiis−1 pi ger ggT trivial, falls von allen fi geteilt wird, oder falls es i=0 f von keinem geteilt wird. Von den insgesamt 2j M¨ oglichkeiten f¨ uhren also genau 2 zu einem trivialen Ergebnis, d.h. mit der Wahrscheinlichkeit j 1 − 2 12 ≥ 12 f¨ ur j ≥ 2 erh¨ alt man eine nichttriviale Zerlegung. Um den gezeigten Algorithmus EDF tauglich f¨ ur die Charakteristik 2 zu machen, muss man also nur eine if -Abfrage nach q einbauen und im geraden Fall is−1 j q i −1 statt ggT(d, f 2 − 1 mod d) den ggT(d, j=0 f p mod d) berechnen.
6.4 Berlekamp-Hensel Faktorisierung 6.4.1 Grundidee Um einen besseren Algorithmus als den von Kronecker zu bekommen, bedient man sich der Technik des Rechnens in homomorphen Bildern, die f¨ ur den Fall der Faktorisierung eines univariaten Polynoms durch das folgende Diagramm beschrieben wird. Bevor man ein gegebenes Polynom f aus Z[x] dieses Diagramm durchlaufen l¨asst, macht man es primitiv und quadratfrei (Algorithmus vonYun). L¨ osung in Z[x]
Gegebenes Polynom
in
Z[x]
Bild der L¨ osung in Zpt [x] Bildproblem in Zp [x]
Bild der L¨ osung in Zp [x] L¨ ose Bildproblem in Zp [x]
6.4 Berlekamp-Hensel Faktorisierung
265
Durch Multiplizieren von f mit LK(f )deg f −1 und anschließende Substitution x ← x/ LK(f )) erh¨ alt man ein Polynom fˆ(x) , das normiert ist, in Z[x] liegt und aus dessen Faktorisierung man durch die umgekehrte Transformation die Faktorisierung von f in Z[x] ablesen kann. Diese Normierung erleichtert die Wahl der Primzahl p (s. das folgende Beispiel) und die sp¨ atere R¨ ucktransformation aus Zp [x] , macht aber die Koeffizienten des betrachteten Polynoms unn¨otig groß. L¨ asst man deshalb diesen Schritt weg, so muss man sich Gedanken machen, wie man nach der R¨ ucktransformation den urspr¨ unglichen Leitkoeffizienten wieder herstellen kann. Das Durchlaufen des Diagramms f¨ uhrt auf eine Faktorisierung von f , wenn die gew¨ahlte Primzahl p nicht gerade ungl¨ ucklich gew¨ ahlt wurde. Dies ist sicher dann der Fall, wenn p den Leitkoeffizienten von f teilt und somit der Grad von f durch die Abbildung nach Zp [x] verringert wird. Ebenso ist p ungl¨ ucklich, wenn das Bild von f in Zp [x] nicht mehr quadratfrei ist. Der zweite Punkt l¨ asst sich leicht mit Hilfe von Resultanten nachpr¨ ufen. Da wir u orper arbeiten, ist ¨ber einem endlichen und somit vollkommenen K¨ f genau dann quadratfrei in Zp [x] , wenn gilt ggT(f mod p, f mod p) = 1 . Dies ist genau dann der Fall, wenn resx (f mod p, f mod p) nicht verschwindet, also wenn p kein Teiler von resx (f, f ) ist. 6.4.1.1 Beispiel: Das Polynom f (x) = 10x6 − 9x5 − 7x4 + 40x2 − 36x − 28 ∈ Z[x] soll faktorisiert werden. Es ist primitiv und wegen ggT(f, f ) = 1 quadratfrei. Geht man zu x fˆ(x) = 105 · f ( ) = x6 − 9x5 − 70x4 + 40000x2 − 360000x − 2800000 10 u ¨ber und faktorisiert dieses normierte Polynom, so muss man sich zwar nicht mehr um ein eventuelles Verschwinden des Leitkoeffizienten k¨ ummern, hat es aber daf¨ ur mit deutlich gr¨ oßeren Koeffizienten zu tun. Die vollst¨ andige Faktorisierung von fˆ lautet fˆ = (x − 14)(x + 5)(x2 + 20x + 200)(x2 − 20x + 200) . R¨ ucktransformation liefert f (x) = 10−5 fˆ(10x) = (2x + 1)(5x − 7)(x2 − 2x + 2)(x2 + 2x + 2) . Verzichtet man auf diese Normierung, so muss p ∈ {2 , 5} sein, damit der Leitkoeffizient 10 von f nicht beim Rechnen modulo p verschwindet.
266
6 Polynom–Faktorisierung
Wegen resx (f, f ) = −6002376864600064000 = −215 53 136 192 292 muss p ∈ {2, 5, 13, 19, 29} sein, da sonst f mod p nicht mehr quadratfrei ist. Es gilt z.B. f ≡ 10(x + 4)(x + 6)(x + 9)2 (x + 7)2 mod 13 , f ≡ 3x(x + 4)(x2 + 5x + 2)(x2 + 2x + 2) mod 7 , f ≡ 10(x + 14)(x + 9)(x + 2)(x + 5)(x + 12)(x + 3) mod 17 . W¨ahrend sich aus der ersten Faktorisierung wegen des doppelten Faktors (x + 9)(x + 7) nicht auf die Faktorisierung in Z[x] schließen l¨asst, ist f in den beiden anderen F¨ allen quadratfrei. Die Faktorisierung mod 7 f¨ uhrt mit dem Satz von Hensel relativ direkt auf die Faktorisierung in Z[x] , w¨ ahrend f mod 17 in mehr irreduzible Faktoren zerf¨ allt als f selbst und deshalb noch zus¨ atzliche Arbeit erfordert. Der sehr allgemeine Fall des Satzes von Hensel wird in dem vorliegenden Fall deutlich einfacher. Der Ring R ist Z[x] , das Ideal I ist p , die Elemente a1 , a2 , . . . , ak sind die mit dem Berlekamp-Algorithmus oder irgendeinem anderen Faktorisierungs-Algorithmus gefundenen irreduziblen Faktoren von f in Zp [x] , n ist 1 und wir betrachten das Polynom F (x1 , x2 , . . . , xk ) := f − x1 · x2 · . . . · xk aus
Z[x][x1 , x2 , . . . , xk ] .
Bezeichnet man die irreduziblen Faktoren des quadratfreien Polynoms f wie beim Berlekamp-Algorithmus mit f1 , f2 , . . . , fk (nicht zu verwechseln mit den gleichnamigen Polynomen im Satz von Hensel), so gilt nach Definition von F F (f1 , f2 , . . . , fk ) ≡ 0 mod p . ∂F (f , . . . , f ) ist in diesem einfachen Die Jakobi-Matrix U = ∂x 1 k i 1≤i≤k
Fall der Zeilenvektor U = (u1 , . . . , uk ) mit ui := −
k
fj f¨ ur 1 ≤ i ≤ k .
j=1 j=i
Da die ui teilerfremd sind und v = F (f1 p,...fk ) ein Polynom kleineren Grades als f ist, gibt es nach der Folgerung zu Satz 2.4.2 ein b = (bj )1≤j≤k mit U · b ≡ −v mod p und deg bj < deg fj . Mit diesem b ist auch f (2) := fj + bj · p ein normiertes Polynom mit deg f (2) = deg fj . j j
6.4 Berlekamp-Hensel Faktorisierung
267
Mit dieser Strategie f¨ ur die L¨ osung von U · b ≡ −v mod p hat man (t) (t) F f1 ,...fk Erfolg, denn auch auch in den folgenden Liftschritten mit v = pt dieses Polynom hat kleineren Grad als f . Das Polynom (t+1)
fj
(t)
:= fj + bj · pt (1)
hat also immer noch den gleichen Grad wie fj = fj und ist normiert. Da das relativ einfach ist, kann man sich auch an das quadratische Liften wagen. Statt der im Sinne von 2.4.2 verallgemeinerten B´ezout-Gleichung:◦ u1 b1 + . . . + uk bk ≡ −v mod p , muss man daf¨ ur die Gleichung (t)
(t)
u1 b1 + . . . + uk bk = −v mod pt
(6.12)
k (t) (t) mit ui := − j=1 fj , t ∈ unter Einhaltung der Gradschranken j=i ur 1 ≤ i ≤ k nach bi l¨ osen. deg bi < deg fi f¨ An die L¨osung von (6.12) tastet man sich schrittweise heran. Zuerst betrachtet man eine solche Gleichung mit nur zwei Termen auf der linken Seite und mit t = 1 , also etwa Sa + T b = v mod p mit teilerfremden Polynomen a und b und deg(v) < deg(a) + deg(b) . Aus 2.4.2 ist bekannt, dass diese Gleichung eindeutig l¨ osbar ist. Mit Hilfe der Prozedur Gcdex aus dem Abschnitt u ¨ber Ideale (man befindet sich ja in dem euklidischen Ring Zp [x] ) kann man effektiv die Gleichung S a + T b = 1 mod p l¨ osen. Beidseitige Multiplikation mit v f¨ uhrt dann auf S va + T vb = v mod p . Teilt man wie im Beweis von 2.4.2 die beiden Summanden mit Rest durch den kgV(a, b) = ab , so erh¨ alt man
N
S va = qab + r ⇒ (a|r ⇐⇒ r = a˜ r) ⇒ S v − qb = r˜ T vb = q ab + r ⇒ (b|r ⇐⇒ r = ar) ⇒ T v − q a = r , und S := r˜ , T := r l¨ osen Sa + T b = v mod p . Wegen q + q = 0 reicht f¨ ur die Berechnung von S und T neben dem Aufruf von Gcdex die eine Division mit Rest S v = qb+S und damit T v = q a+T ⇐⇒ T = T v+qa . Als kleine Routine sieht das etwa so aus B´ ezout-Gleichung mit zwei Termen mod p procedure bezout2 (a, b, v, p) Gcdex(a, b, S, T ) q ← PQuo(Sv, b) Return([PRest(Sv, b), qa + T v]) end ◦
Z
# Eingabe: p prim, a, b, v ∈ p [x] # mit deg(v) < deg(a) + deg(b) # Ausgabe: [S, T ] mit Sa + T b = v mod p # PQuo , PRest und Gcdex # arbeiten in p [x]
Z
Da es sich um eine Gleichung mit ganzzahligen L¨ osungen handelt, spricht man auch von
einer diophantischen Gleichung (nach Diophantos von Alexandria)
268
6 Polynom–Faktorisierung
Hat man erst einmal die L¨ osung mod p , so kann man diese mit einfachem Hensel-Lifting unter Verwendung der Routine bezout2 liften zu einer L¨ osung von Sa + T b = v mod pt . B´ ezout-Gleichung mit zwei Termen mod pt
N
Z
p prim, a, b, v ∈ p [x] , t ∈ mit deg(v) < deg(a) + deg(b) [S, T ] mit Sa + T b = v mod pt
# Eingabe: # # Ausgabe:
procedure bezout2l (a, b, v, p, t) [S, T ] ← bezout2(a, b, v, p) for i from 1 to p − 1 do b−v V ← Sa+T pi [σ, τ ] ← bezout2(a, b, −V, p) S ← (S + σpi ) mod pi+1 T ← (T + τ pi ) mod pi+1 enddo Return([S, T ]) end
Damit kann man nun endlich (6.12) l¨ osen, indem man rekursiv bezout2l aufruft. Man setzt β0 := v und berechnet dann f¨ ur i = 1, . . . , k − 1 die eindeutige L¨osung βi , bi der Gleichung k
βi fi + bi
fj ≡ βi−1 mod pt
(6.13)
j=i+1
aus. Am Ende setzt man noch bk := βk−1 , d.h. bk fk−1 + bk−1 fk ≡ βk−2 . oßen, wie Die so berechneten bi sind wirklich die in (6.13) gesuchten Gr¨ man durch Einsetzen u uft: ¨berpr¨
=−u1 b1
b1
k
(t)
=−uk−2 bk−2
(t) (t)
fj + . . . + bk−2 fk fk−1
k−3
=−uk−1 bk−1
k−2 (t)
(t)
fj + bk−1 fk
j=1
j=2
≡βk−3
k−3
(t) f j=1 j
(t)
k−2
j=1
=−uk bk
k−2 (t)
fj + bk fk−1
j=1
≡βk−2
(t)
fj
(t)
fj
j=1
mod pt ((6.13),i=k−1)
mod pt ((6.13) mit i=k−2)
≡β0 mod pt ≡v mod pt
B´ ezout-Gleichung mit mehreren Termen mod pt
Z
procedure bezoutm (F, v, p, t) # Eingabe: F =Faktorenliste f1 , . . . , fk ∈ p [x] # von f ∈ [x] , deg(v) < deg(f ) β0 ← v # p prim, t ∈ k ← L¨ ange von F # Ausgabe: [b1 , . . . , bk ] wie in (6.12) for i from 1 to k − 1 do k [βi , bi ] ← bezout2l(fi , j=i+1 fj mod pt , βi−1 , p, t) end do Return([b1 , . . . , bk−1 , βk−1 ]) end
Z
N
6.4 Berlekamp-Hensel Faktorisierung
269
6.3.2 Beispiel: Mit f (x) := x6 + x4 + x2 + 1 und p = 13 ist f1 := x + 5 , f2 := x2 + 5 , f3 := x − 5 und f4 := x2 − 5 und es folgt −U = (x5 − 5x4 + x − 5 , x4 − 4x2 − 5 , x5 + 5x4 + x + 5 , x4 + 6x2 + 5) Zu dieser Matrix ist bereits in Beispiel 2.4.3 eine Rechtsinverse W mod 13 mit kleinen Graden berechnet worden, n¨ amlich W = (−2, 1, 2, 5)t . Weiterhin ist v=
F (f1 , . . . , f4 ) ≡ 2x4 + 2x2 + 4 mod 13 . 13
Damit ist eine L¨ osung von −Ub ≡ v mod 13 der Vektor ⎞ ⎛ −4x4 − 4x2 + 5 4 2 2x + 2x + 4 ⎟ b = W v ≡ ⎜ ⎠ mod 13 . ⎝ 4x4 + 4x2 − 5 4 2 −3x − 3x − 6 Da die Eintr¨ age von b alle vom Grad 4 sind, w¨ urden sie beim Lift(2) ur j = 1, . . . 4 den Grad erh¨ ohen, was schritt fj = fj + bj · 13 f¨ nat¨ urlich unerw¨ unscht ist. Gem¨ aß der Folgerung zu Satz 2.4.2 gibt es aber auch eine L¨ osung b , bei der dieser Effekt nicht auftritt. Solch eine L¨ osung ist in Beispiel 2.4.4 bereits berechnet worden, n¨amlich b = (5, 5, −5, −5)t . Die Prozedur bezoutm liefert diese L¨osung jetzt sehr viel direkter. Damit hat man nun die algorithmische Grundlage, um linear oder quadratisch liften zu k¨onnen. Linear braucht man bezoutm nur mod p und mit der gegebenen Faktorenliste, im quadratischen Fall wird bezoutm mod p gebraucht und mit der bereits gelifteten Faktorenliste L . Lineares Hensel-Lifting nach dem Berlekamp-Algorithmus procedure henlin (f, F, p, t) # Eingabe: F =Faktorenliste f1 , . . . , fk ∈ # von f ∈ [x] , p prim, t ∈ m ← p; L ← F # Ausgabe: L =geliftete Faktorenliste k ← L¨ ange von F (t) (t) f1 , . . . , fk mod pt for j from 1 to t − 1 do # k # Li = i.tes Element von L fp ← i=1 Li f −fp v ← m mod m bezoutm(F, v, p, 1) for i from 1 to k do Li ← Li + bi · m mod(p · m) end do m←m·p end do Return(L) end
Z
Zp [x]
N
270
6 Polynom–Faktorisierung
6.3.3 Beispiel: Mit dem in vorhergehenden Beispiel berechneten b erh¨ alt man die Faktoren mod 132 von f (2)
f1
(2)
= x + 70 , f2
(2)
= x2 + 70 , f3
(2)
(2)
= x − 70 , f4
= x2 − 70 .
(2)
ur i = 1, . . . , 4 . Es gilt fi ≡ fi mod 13 und deg fi = deg fi f¨ Quadratisches Hensel-Lifting nach dem Berlekamp-Algorithmus # Eingabe: procedure henqu (f, F, p, t) # m ← p; L ← F ; ← 1 # Ausgabe: k ← L¨ ange von F # for j from 1 to t do k p f p ← i=1 Li ; v ← f −f mod m m bezoutm(L, v, p, ) for i from 1 to k do Li ← Li + bi · m mod m2 end do m ← m2 ; ← 2 end do Return(L) end
F =Faktorenliste f1 , . . . , fk ∈ von f ∈ [x] , p prim, t ∈ L =geliftete Faktorenliste (t) (t) f1 , . . . , fk mod pt
Z
Zp [x]
N
6.3.4 Beispiel: Es sei wieder f (x) := x6 + x4 + x2 + 1 ∈ Z[x] gegeben. Dieses Polynom ist quadratfrei und normiert. Da 3 kein Teiler von resx (f, f ) ist, kann man etwa mod p = 3 faktorisieren und erh¨ alt mit dem Berlekamp-Algorithmus f (x) = (x2 + 2x + 2)(x2 + 1)(x2 + x + 2) bzw. die Faktorenliste F := [x2 + 2x + 2, x2 + 1, x2 + x + 2] . Ruft man nun henlin mit diesen Werten auf, so erh¨ alt man hintereinander (1) v L (2) v L (3) v L
= x4 + 2 + 2 x5 + x , b = [x + 2, 0, x + 2] ⇒ =[x2 − 4x − 1, x2 + 1, x2 + 4x − 1] mod 9 = 2x2 + 2x4 , b = [x, 0, 2x] ⇒ =[x2 + 5x − 1, x2 + 1, x2 − 5x − 1] mod 27 = x4 + x2 , b = [2x, 0, x] ⇒ =[x2 − 22x − 1, x2 + 1, x2 + 22x − 1] mod 81
usw. Analog kommt man da mit henqu schon in 2 Lift-Schritten hin. 6.3.1 Wie weit muss man liften? Nun stellt sich die Frage, wie weit man liften muss, um von der Faktorisierung modulo pt auf die gesuchte Faktorisierung in Z[x] schließen zu k¨onnen. Dar¨ uber geben die Ungleichungen von Mignotte in 2.7.6 Auskunft.
6.4 Berlekamp-Hensel Faktorisierung
In Zpt rechnet man mit ganzzahligen Vertretern zwischen − t und p2 . W¨ahlt man nun t so, dass 9
271
pt −1 2
: $n% pt − 1 n > max{|bj | , deg q ≤ } = $ n2 % f := B ⇐⇒ pt > B 2 2 4
mit B := 2B + 1 bzw. B := 2B je nachdem ob p gerade oder ungerade ist, so ¨andert sich nichts, wenn man die gesuchte Faktorisierung in Z[x] modulo pt betrachtet. Eine aus der Faktorisierung in Zp [x] nach Zpt [x] hochgeliftete Faktorisierung k¨onnte h¨ ochstens aus mehr Faktoren bestehen als dieses Bild der gesuchten Faktorisierung in Z[x] . In diesem Fall k¨ onnten einige der (t) (t) Faktoren f1 , . . . , fk mit den Faktoren in Z[x] u ¨bereinstimmen, andere m¨ ussen zu Faktoren in Z kombiniert werden. 6.3.1.1 Beispiel: F¨ u das bereits √ mehrfach betrachtete f (x) := x6 + x4 + "r n 2 2 x + 1 ist i=0 ai = 4 , n = 6 und damit (f¨ ur ungerades √ 3 ahlen p) B = 2 · · 4 = 12 . Man kann also ein p < B w¨ 1 und solange liften, bis man bei einem pt > B angelangt ist, oder man kann gleich eine Primzahl p > B nehmen und sich damit das Hensel-Lifting sparen. Die erste M¨ oglichkeit wurde bereits im letzten Beispiel durchgerechnet: f (x) ≡ (x2 + 5x − 1)(x2 − 5x − 1)(x2 + 1) mod 27 Probedivisionen zeigen nun, dass x2 + 1 auch ein Teiler von f (x) in Z[x] ist, die beiden anderen mod 27 gefundenen Teiler aber keine Faktoren in Z[x] sind. Weiteres Liften bringt auch nichts, weil 27 schon u ¨ber der Mignotte-Schranke liegt. Die einzig verbleibende M¨ oglichkeit ist, dass f (x) mod 3 in mehr Faktoren zerf¨ allt, als es das in Z[x] tut. In der Tat ist (x2 + 5x − 1)(x2 − 5x − 1) ≡ x4 + 1 mod 27 ein Teiler von f in Z[x] , womit die vollst¨ andige Faktorisierung von f in Z[x] gefunden w¨ are: f (x) = (x4 + 1)(x2 + 1) . Die zweite M¨ oglichkeit kann man etwa mit p = 13 durchrechnen. Der Berlekamp-Algorithmus liefert f (x) ≡ (x2 + 5)(x2 − 5)(x + 5)(x − 5) mod 13 .
272
6 Polynom–Faktorisierung
Mit Polynomdivision pr¨ uft man nun leicht nach, dass diese Faktoren keine echten Teiler sind. Die Produkte (x − 5)(x + 5) ≡ x2 + 1 mod 13 und (x2 − 5)(x2 + 5) ≡ x4 + 1 mod 13 sind dagegen die bereits oben auf andere Weise gefundenen irreduziblen Faktoren in Z[x] . Bereits im letzten Beispiel war auch die L¨ osung mod 13 geliftet worden. Die Faktorisierung von f (x) in Z[x] erh¨ alt man aus dieser Faktorisierung wie aus der Faktorisierung mod 13 durch Kombination zweier Faktoren. Dieser Liftschritt jenseits der Mignotteschranke bringt nichts. Ist f nicht normiert, und l¨ asst man trotzdem die Normierung fˆ(x) := x deg(f )−1 LK(f ) · f ( LK(f ) ) weg um die Koeffizienten (und damit auch die Mignotte-Schranke) m¨ oglichst klein zu halten, so stellt sich die Frage, wie man mit dem Leitkoeffizienten von f umgeht. In Zp [x] rechnet man ja auf jeden Fall mit normierten Polynomen. Ist g(x) einer der berechneten normierten Faktoren von f (x) mod pt und ist pt bereits gr¨ oßer als B , so berechnet man gˆ := LK(f ) · g(x) mod pt . Da f (x) primitiv vorausgesetzt war, ist auch jeder der gesuchten Teiler in Z[x] primitiv. Deshalb betrachtet man pA(ˆ g ) in Z[x] . Dieses Polynom enth¨alt den richtigen Anteil von LK(f ) und ist m¨ oglicherweise einer der gesuchten Teiler in Z[x] . Ist es dies auch nicht, so muss man wieder Teiler kombinieren. 6.3.1.2 Beispiel: (Fortsetzung von 6.4.1.1)
F¨ ur
f (x) = 10x6 − 9x5 − 7x4 + 40x2 − 36x − 28 ist B ≈ 187.6 , man kann also etwa pt = p = 379 > B = 2B nehmen und muss dann nicht mehr liften. Die normierte Faktorisierung von f mod 379 ist (x2 − 2x + 2)(x − 189)(x2 + 2x + 2)(x − 153) . Es folgt LK(f ) · g = 10(x2 − 2x + 2) 10(x − 189) 10(x2 + 2x + 2) 10(x − 153)
gˆ = ≡ 10x2 − 20x + 20 ≡ 10x + 5 ≡ 10x2 + 20x + 20 ≡ 10x − 14
pA(ˆ g) = mod 379 mod 379 mod 379 mod 379
, x2 − 2x + 2 , , 2x + 1 , , x2 + 2x + 2 , , 5x − 7 .
Die vier Polynome in der letzten Spalte sind gerade auch die irreduziblen Teiler von f in Z[x] . Dies war durch Zufall der g¨ unstige Fall in dem die Grade dieser Faktoren den Faktoren in Z[x] entsprachen.
6.4 Berlekamp-Hensel Faktorisierung
273
Nimmt man p = 401 , so erh¨ alt man die normierte Faktorisierung (x − 19)(x − 21)(x + 159)(x + 21)(x − 200)(x + 19) . Wie oben ergibt sich daraus LK(f ) · g = 10(x − 19) 10(x − 21) 10(x + 159) 10(x + 21) 10(x − 200) 10(x + 19)
gˆ = ≡ ≡ ≡ ≡ ≡ ≡
10x − 190 10x + 191 10x − 14 10x − 191 10x + 5 10x + 190
pA(ˆ g) = mod 401 mod 401 mod 401 mod 401 mod 401 mod 401
, x − 19 , , 10x + 191 , , 5x − 7 , , 10x − 191 , , 2x + 1 , , x + 19 .
Davon sind nur 5x−7 und 2x+1 echte Teiler in Z[x] , die anderen Faktoren m¨ ussen miteinander kombiniert werden. So ist etwa (x − 19)(x + 21) ≡ x2 + 2x + 2 mod 401 ein weiterer Teiler in Z[x] (hier muss nicht mehr die Multiplikation mit LK(f ) versucht werden, denn dieser Faktor steckt in den Linearfaktoren 5x − 7 und 2x + 1 bereits vollst¨ andig drin). Die letzten Beispiele zeigen, dass man sich viel Arbeit mit dem Kombinieren der Faktoren am Ende sparen kann, wenn man eine gl¨ uckliche Primzahl w¨ahlt, modulo der das gegebene Polynom m¨oglichst wenige Teiler hat. Im letzten Beispiel f¨ uhrte etwa p = 379 ohne jegliche Kombination direkt auf die Faktorisierung in Z[x] . In dem Beispiel mit x6 +x4 +x2 +1 war 3 von der Anzahl der Faktoren her g¨ unstiger als 13 , es musste aber in jedem Fall kombiniert werden. Der daf¨ ur verantwortliche Faktor x4 + 1 von f (x) hat die f¨ ur dieses Verfahren unangenehme Eigenschaft, dass er modulo jeder Primzahl zerf¨ allt, obwohl er in Z[x] irreduzibel ist. Der Berlekamp-Algorithmus und das anschließende Hensel-Lifting funktionieren abh¨angig von n und p in polynomialer Zeit. Es stellt sich nun die Frage, wie stark das Kombinieren und Testen von entsprechend gelifteten Faktoren am Ende auf die Gesamtzeit des Algorithmus wirkt. 6.3.2 Swinnerton-Dyer Polynome
N
6.3.2.1 Satz: Es seien n ∈ und p1 , . . . , pn paarweise verschiedene Primzahlen. Das Polynom fp1 , ... , pn (x) vom Grad 2n , dessen Wurzeln √ √ e1 p1 + . . . + en pn mit ei = ±1 f¨ ur i = 1 , . . . , n sind, hat ganzzahlige Koeffizienten und ist irreduzibel in Z[x] . Weiterhin zerf¨allt fp1 , ... , pn (x) f¨ ur jede Primzahl p modulo p in irreduzible Faktoren vom Grad h¨ochstens 2 Die Polynome fp1 , ... , pn (x) heißen Swinnerton-Dyer Polynome.
274
6 Polynom–Faktorisierung
N
Beweis: Wir zeigen zun¨ achst per Induktion nach n ∈ , dass gn (x) := √ √ fp1 , ... , pn (x) ∈ Z[x] ist, dass ζn := p1 + . . . + pn ein primitives Element √ √ der K¨orpererweiterung Kn : Q mit Kn := Q[ p1 , . . . , pn ] ist und dass n [Kn : Q] = 2 ist. F¨ ur n = 1 ist die Behauptung sofort klar. Nun sei n > 1 . Ist gn−1 ∈ Z[x] , so folgt aus der Definition von gn (x) √ √ √ gn (x) = gn−1 (x + pn ) · gn−1 (x − pn ) ∈ Z[ pn ][x]. Mit Satz 2.5.3 liest man daraus ab gn (x) = resy gn−1 (x − y), y 2 − pn . Als Resultante zweier Polynome aus Z[x][y] ist damit gn (x) ∈ Z[x] . Die 2n−1 Elemente der Menge Bn−1 mit @√ A pi1 · . . . · pij ; j = 1, . . . , k , 1 ≤ i1 < i2 < . . . < ij ≤ k Bk := {1} ∪ erzeugen den Q-Vektorraum Kn−1 . Wegen der Induktionsvoraussetzung [Kn−1 : Q] = 2n−1 ist Bn−1 sogar eine Basis von Kn−1 : Q . √ pn liegt nicht in Kn−1 , denn es l¨ asst sich nicht als Das Element Q-Linearkombination der Elemente von Bn−1 darstellen. G¨abe es n¨amlich eine solche nichttriviale Linearkombination, so folgte aus der Tatsache, dass p1 , . . . , pn paarweise verschiedene Primzahlen sind, dass mindestens zwei der Koeffizienten in der Kombination ungleich Null w¨ aren. Nummeriert man die Primzahlen gerade so, dass etwa pn−1 eine der Primzahlen ist, die in dieser nichttrivialen Linearkombination vorkommt, so g¨abe es Elemente a, b ∈ Kn−2 \ {0} mit pn − a2 − b2 pn−1 √ √ √ a + b pn−1 = pn ⇒ pn−1 = ∈ Kn−2 , 2ab was aber ein Widerspruch zur Induktionsvoraussetzung w¨ are. Dies zeigt [Kn : Kn−1 ] = 2 und damit [Kn : Q] = [Kn : Kn−1 ] · [Kn−1 : Q] = 2n . √ √ Es bleibt also noch zu zeigen, dass ζn := p1 + . . . + pn ein primitives Element der K¨ orpererweiterung Kn : Q ist. Dazu betrachten wir die Wurzeln w1 := ζn−1 , w2 , . . . , w2n−1 von gn−1 (x) . Dann ist √ h(x) := gn−1 (w1 + pn −x) ∈ Q[ζn ][x] . =ζn
√ √ √ Wegen h( pn ) = 0 = h(− pn ) ( w1 + 2 pn ∈ {w2 , . . . , w2n−1 } , denn √ w1 − wj ∈ Kn−1 und pn ∈ Kn−1 ) gilt √ √ ggT(h(x), x2 − pn ) = x − pn ∈ Q[ζn ][x] ⇒ pn ∈ Q[ζn ]. Da nach Induktionsvoraussetzung ζn−1 primitives Element von Kn−1 ist √ √ und wegen ζn−1 + pn = ζn , folgt Q[ζn ] = Kn−1 [ pn ] = Kn .
6.4 Berlekamp-Hensel Faktorisierung
275
Da [Q[ζn ] : Q] = 2n ist und ζn Wurzel des normierten Polynoms gn (x) vom Grad 2n ist, ist gn (x) das Minimalpolynom von ζn , also insbesondere irreduzibel. √ Rechnet man modulo p , so ist pi als Wurzel des Polynoms x2 − pi ∈ ¨ GF(p)[x] (1 ≤ i ≤ n) in GF(p) oder schlimmstenfalls in GF(p2 ) . Uber 2 GF(p ) zerf¨allt gn (x) somit in Linearfaktoren. Die irreduziblen Faktoren von gn (x) mod p sind also h¨ ochstens quadratisch. 6.3.2.2 Beispiel: f17,19,23 (x) =(x + ·(x + ·(x − ·(x −
√ √ √ √
17 + 17 − 17 + 17 −
√ √ √ √
19 + 19 + 19 + 19 +
√ √ √ √
23)(x + 23)(x + 23)(x − 23)(x −
√ √ √ √
17 + 17 − 17 + 17 −
√ √ √ √
19 − 19 − 19 − 19 −
√ √ √ √
23)· 23)· 23)· 23) =
=x − 236x + 11678x − 210428x + 1261129 . 8
6
4
2
F¨ ur dieses Polynom erh¨ alt man als Faktorisierungen:
Z
in : mod 2 : mod 3 : mod 5 : mod 7 : mod 11 : mod 13 : mod 17 : mod 19 : mod 23 : mod 29 : :
x8 − 236x6 + 11678x4 − 210428x2 + 1261129 , (x + 1)8 , (x2 + 2x + 2)(x2 + x + 2)(x + 1)2 (x + 2)2 , (x2 + x + 1)(x2 + x + 2)(x2 + 4x + 2)(x2 + 4x + 1) , (x2 + x + 3)(x2 + 6x + 6)(x2 + 6x + 3)(x2 + x + 6) , (x2 + 2x + 2)(x2 + 9x + 2)(x2 + 2x + 5)(x2 + 9x + 5) , (x2 + 5x + 10)(x2 + 8x + 10)(x2 + 10x + 6)(x2 + 3x + 6) , (x2 + 12x + 13)2 (x2 + 5x + 13)2 , (x + 4)2 (x + 8)2 (x + 15)2 (x + 11)2 , (x2 + 12)2 (x2 + 8)2 , (x2 + 11x + 20)(x2 + 18x + 20)(x2 + 18x + 12) ·(x2 + 11x + 12),
√ Insbesondere gilt B = 84 · 33364545494 ≈ 15343410, 08 . Die n¨achstgr¨oßte Primzahl ist p = 15343417 . Die Faktorisierung von f17,19,23 (x) modulo p ist (x + 5180808) · (x + 723412) · (x + 4014938) · (x + 9919158)· (x + 10162609) · (x + 14620005) · (x + 11328479) · (x + 5424259) .
Um eine Faktorisierung von f17,19,23 in Z[x] zu erhalten, m¨ usste man jetzt hintereinander erst die 8 Faktoren modulo p testen, dann 28 Kombinationen von je 2 Faktoren, 56 Kombinationen von je 3 Faktoren und schließlich 70 Kombinationen von je 4 Faktoren. Die Swinnerton-Dyer Polynome f¨ uhren also zur Explosion der Rechenzeit beim Faktorisieren mit dem Berlekamp-Hensel-Algorithmus. Dieser schlimmste Fall l¨ asst sich mit einem Algorithmus von A. K. Lenstra, H. W. Lenstra und L. Lov´ asz ([LLL] oft LLL- oder L3 -Algorithmus genannt) abfangen, der mit Hilfe ganzzahliger Gitter arbeitet.
7 Summation in endlich vielen Termen
7.1 Grundbegriffe n Die Summation B k=m f (k) ist in vielerlei Hinsicht das diskrete Analogon n zur Integration m f (x) dx. Die zur Untersuchung n¨ otige Differenzenrechnung hat sich parallel zur Differentialrechnung entwickelt. Brook Taylor, dessen Name von der Differentialrechnung her wohlbekannt ist, gilt auch als einer der Urv¨ ater der Differenzenrechnung (Methodus Incrementorum, London 1717). Eine zentrale Rolle f¨ ur die Differenzenrechnung spielen binomische Polynome: 7.1.1 Definition: F¨ ur k ∈ Z wird das binomische Polynom xk ∈ Q[x] definiert durch ⎧ k−1 ⎪ ⎨ 1 (x − i) f¨ x ur k ∈ 0 := k! i=0 ⎪ k ⎩ 0 f¨ ur −k ∈ . F¨ ur n, k ∈ 0 stimmt das binomische Polynom xk an der Stelle n mit den bekannten Binomialkoeffizienten u ¨berein, es gibt also keine Verwirrung durch die Schreibweise 9 : x n . = k x=n k x F¨ ur k ∈ 0 ist degx xk = k . Die Folge k k∈N0 bildet also eine Basis des -Vektorraumes [x] .
N
N
N
Q
N
7.1.2 Satz:
Q
(Produktsatz f¨ ur binomische Polynome) F¨ ur n, k ∈ x x−k x x−n . = n k k n
Z
gilt:
Beweis: F¨ ur n < 0 oder k < 0 ist die Behauptung trivial. Es seien nun also n, k ≥ 0. F¨ ur jede ganze Zahl m ≥ n, k gilt dann
278
7 Summation in endlich vielen Termen
m! m m−n (m − n)! m! 1 = · = = k (m − n)! n! (m − n − k)! k! k! (m − n − k)! n! n (m − k)! m m−k m! . = = n (m − k)! k! (m − n − k)! n! k Damit stimmen die beiden Polynome in unendlich vielen St¨ utzpunkten u ¨berein, sind also gleich. Der Vollst¨andigkeit halber sei noch (ohne Beweis) der Binomialsatz angegeben, der in dieser Allgemeinheit demn¨ achst ben¨ otigt wird. 7.1.3 Satz: (Binomialsatz) Es sei R ein nicht notwendig kommutativer Ring mit Einselement und x, y ∈ R seien vertauschbare Elemente. Dann gilt f¨ ur n ∈ n n k n−k (x + y)n = x y . k
N
k=0
7.1.4 Definition: Ein Tupel (F, F) aus einem K¨ orper F der Charakteristik 0 und einer Abbildung F : F → F heißt (Vorw¨ arts-) Differenzenk¨orper, wenn f¨ ur alle f, g ∈ F gilt: (∆1) F(f + g) = Ff + Fg, (∆2) F(f · g) = f · Fg + g · Ff + Ff · Fg, (∆3) F1 = 0 . Die Menge K := {f ∈ F, Ff = 0} heißt der Konstantenk¨orper des Differenzenk¨ orpers F . Es ist aus den drei Grundeigenschaften nachweisbar, dass K wirklich ein K¨orper ist, der den Primk¨ orper Q umfasst. Weiterhin folgt, dass F eine K-lineare Abbildung des K-Vektorraumes F ist: (∆1)
Ff = Fg = 0 ⇒ F(f + g) = 0 (∆3)
F0 = F(0 + 0) = F0 + F0 ⇒ F0 = 0 , (∆1)
0 = F(f − f ) = F(f ) + F(−f ) ⇒ (Ff = 0 ⇒ F(−f ) = 0) , (∆2)
Ff = Fg = 0 ⇒ F(f · g) = 0 , (∆3)
0 = F(1) = F(f · f −1 ) = f · F(f −1 ) + f −1 · Ff + Ff · F(f −1 ) ⇒ (Ff = f =0
0 ⇒ f · F(f −1 ) = 0 ⇒ F(f −1 ) = 0) , (∆1)
(∆2)
Fa = Fb = 0 ⇒ F(af + bg) = F(af ) + F(bg) = a · Ff + f · Fa + Fa · Ff + b · Fg + g · Fb + Fb · Fg = a · Ff + b · Fg f¨ ur alle a, b ∈ K, f, g ∈ F . √ 7.1.5 Beispiel: Es sei F = √ Q( 3). Jedes Element dieses K¨orpers l¨asst sich in der Form f = a + 3b mit a, b ∈ Q schreiben.
7.1 Grundbegriffe
Da die Abbildung
* κ:
√ 3) √ a + 3b
Q(
279
√ → Q( √ 3) → a − 3b
bekanntlich ein Automorphismus von F ist, erf¨ ullt die durch F := κ − id definierte Abbildung offensichtlich die Bedingung (∆1). Weiterhin gilt f¨ ur f, g ∈ F : F(f · g) = κ(f · g) − f · g = κf · κg − f · g = = f (κg − g) + g(κf − f ) + (κf − f )(κg − g) = = f Fg + gFf + Ff · Fg also√(∆2). Die√Bedingung√(∆3) ist trivialerweise erf¨ ullt. Damit ist orper mit Konstan(Q( 3) , a + 3b → −2 3b) ein Differenzenk¨ tenk¨orper K = Q. F¨ ur den Nachweis der Eigenschaft (∆1) – (∆3) im letzten Beispiel wurden die speziellen Eigenschaften des Automorphismus κ gar nicht benutzt. Man kann deshalb Differenzenk¨ orper auch einfach als Paar aus einem K¨orper F und einem Automorphismus κ einf¨ uhren. Die in der vorhergehenden Definition geforderte Abbildung F ergibt sich dann aus F := κ−id. 7.1.6 Beispiel: Das Standardbeispiel eines Differenzenk¨ orpers ist der K¨ orper der rationalen Funktionen Q(x) mit dem Translationsoperator * Q(x) → Q(x) T : f (x) → f (x + 1). Da T ein K¨ orperautomorphismus ist, ist nach dem vorhergehenden Bemerkungen (Q(x), ∆) ein Differenzenk¨ orper, wobei ∆ := T − id gesetzt sei, also ∆f (x) = f (x + 1) − f (x) . Konstantenk¨ orper ist der Primk¨orper Q. Die im vorhergehenden Beispiel eingef¨ uhrten Operatoren T (= Translationsoperator, in vielen englischsprachigen B¨ uchern mit E bezeichnet) und ∆ (Vorw¨artsdifferenz) lassen sich bei Bedarf auch v¨ ollig analog in einem Erweiterungsk¨ orper F von Q(x) definieren. Sind Verwechslungen m¨oglich, so wird die Hauptvariable extra gekennzeichnet. Weiterhin werden auch andere Schrittweiten als 1 f¨ ur die beiden Operatoren zugelassen. F¨ ur f (x, y) ∈ Q(x, y) schreibt man T f (x, y) := f (x + h, y) und
x,h
∆ f (x, y) := f (x + h, y) − f (x, y).
x,h
Der Zusammenhang ∆ = T −id bleibt auch in dieser Schreibweise erhalx,h
x,h
ten. Ist h = 1 und die Hauptvariable x eindeutig, so kann man bei der k¨ urzeren Notation T und ∆ bleiben. Steht die Variable x fest, so kann man nat¨ urlich statt T auch T h schreiben. x,h
280
7 Summation in endlich vielen Termen
Im Folgenden werden nur noch diese beiden Operatoren betrachtet. F¨ ur weitere Informationen zu allgemeinen Differenzenk¨ orpern siehe etwa [Coh]. Der Differenzenoperator ∆ entspricht dem Operator D der Differential (x) f (x+h)−f (x) rechnung statt lim . im diskreten Fall f (x+h)−f h h h→0
h=1
Beide Operatoren sind linear u orper. Die ¨ber dem jeweiligen Konstantenk¨ Produktregel (∆2) ist durch den letzten Term etwas komplizierter als die bekannte Produktregel der Differentialrechnung. Bei der Quotientenregel f¨ ur ∆ sieht der Nenner etwas anders aus. Wie man leicht nachrechnet, gilt 1 ∆g(x) ∆ =− und damit g(x) g(x) · T g(x) ∆
f (x) g(x)
=
−f (x) · ∆g(x) + g(x)∆f (x) . g(x) · T g(x)
Da T eine K-lineare Abbildung ( K =Konstantenk¨ orper) und mit der Identit¨at vertauschbar ist, kann man eine Potenz ∆n des Differenzenoperators f¨ ur n ∈ 0 mit Hilfe des Binomialsatzes berechnen. Es gilt n n n j n T n−j (−1) ∆ = (T − id) = j j=0
N
und damit ( T ist sogar K¨ orperautomorphismus) n n n−j T (−1)j f (x) · T n−j g(x) = ∆n (f (x) · g(x)) = j j=0 n j n (∆ + id)n−j f (x) · T n−j g(x) . = (−1) j j=0 uhrt auf Nochmalige Anwendung des Binomialsatzes auf (∆ + id)n−j f (x) f¨ n
(−1)j
j=0
=
n n−j j=0 k=0
n−j n n−j ∆k f (x) · T n−j g(x) = j k k=0
(−1)j
n n−j ∆k f (x) · T n−j g(x) . k j
Mit Hilfe des Produktsatzes 7.1.2 erh¨ alt man daraus n n−j n n−k ∆k f (x) · T n−j g(x) = (−1)j j k j=0 k=0
7.1 Grundbegriffe
=
n n−k
(−1)j
k=0 j=0
=
n n
k=0
=
k
n
k=0
281
n n−k ∆k f (x) · T n−j g(x) = j k
· ∆k f (x)
n−k
(−1)j
j=0
n−k · T n−j g(x) = j
n−k n · T n−k−j T k g(x) . · ∆k f (x) (−1)j j k j=0
n−k
Wendet man nochmals den Binomialsatz auf die innere Summe an, so hat man damit den folgenden Satz gezeigt. 7.1.7 Satz: gilt
(Leibnizsche Produktregel) F¨ ur n ∈ ∆ (f (x) · g(x)) = n
n n k=0
k
N0
und f (x), g(x) ∈ F
· ∆k f (x)∆n−k g(x + k).
Wie x bereits am Anfang des Abschnitts bemerkt, bilden die Polynome k k∈N0 eine Basis des Q− Vektorraumes Q[x] . Es gibt also zu jedem Polynom p(x) ∈ Q[x] vom Grad n eine eindeutige Darstellung der Gestalt n x mit pj ∈ Q. pj · (7.1) p(x) = j j=0 Zur Bestimmung der Koeffizienten (pj )j∈N0 betrachtet man die Wirkung des Differenzenoperators auf die binomischen Polynome. F¨ ur k ∈ gilt
N
∆
k−1 k−1 1 x 1 = (x + 1 − i) − (x − i) = k k! i=0 k! i=0 k−2 k−2 1 (x + 1) = (x − i) − (x − k + 1) (x − i) = k! i=0 i=0 k−2 1 x . = (x − i) = k−1 (k − 1)! i=0
(7.2)
Wegen x0 = 1 und xk = 0 f¨ ur negatives k , stimmt diese Formel sogar f¨ ur k ∈ . F¨ ur j, k ∈ 0 gilt also 9 : x x x und damit ∆k = ∆k = δj,k j−k j j x=0
Z
N
(Kronecker-Symbol).
282
7 Summation in endlich vielen Termen
Damit gilt f¨ ur j ≤ n : n 9 x x x = . ∆k · j j x=0 k k=0
Einsetzen in (7.1) ergibt p(x) =
n j=0
pj
: n 9 x x . ∆k · j x=0 k
k=0
Wegen der Linearit¨ at von ∆ und der Unabh¨angigkeit der Koeffizienten pj von x erh¨alt man n n n % $ k x x x k = . pj ∆ p(x) = · ∆ p(x) x=0 · j x=0 k k j=0 k=0 k=0 =pk =p(x)
Damit ist gezeigt: 7.1.8 Satz: (Newton- oder MacLaurin-Entwicklung) F¨ ur p(x) ∈ mit deg(x) = n gilt n % $ k x . p(x) = ∆ p(x) x=0 · k
Q[x]
k=0
Betrachtet man zum Vergleich die MacLaurin-Entwicklungeines Polynoms in der Differentialrechnung % $ k n D p(x) x=0 k p(x) = x , k! k=0
so sieht man, dass den xk die Polynome k! · xk entsprechen. Diese Polynome heißen auch (fallende) faktorielle Polynome. F¨ ur k ∈ 0 sei k−1 x = (x)k := k! (x − i) . k i=0
N
Leider existieren in der Literatur sehr viele verschiedene Abk¨ urzungen f¨ ur faktorielle Polynome (z.B. [x]k , [x]k , x[k] , x(k) , xk etc. siehe [Jor]). Die hier gegebene Definition wird sp¨ ater noch deutlich verallgemeinert werden. Einsetzen der neuen Definition in (7.2) zeigt ∆(x)k = k(x)k−1 , also die Entsprechung zu Dxk = kxk−1 .
7.1 Grundbegriffe
283
Die Newton-Entwicklung lautet jetzt % n $ k ∆ p(x) x=0 (x)k . p(x) = k! k=0
Die gleiche Formel kann man nochmals verwenden, um schnell rekursiv die Koeffizienten % $ k ∆ p(x) x=0 ak := k! zu berechnen. F¨ ur j ≤ n gilt % $ k j n % ∆ p(x) x=0 j $ k ∆ p(x) x=0 = p(j) = (j)k = k k! k=0 k=0 $ % % $ j−1 ∆j p(x) x=0 ∆k p(x) x=0 = j! + j! k!(j − k)! k=0 $ j % % j−1 $ ∆ p(x) x=0 p(j) ∆k p(x) x=0 ⇐⇒ = − ⇐⇒ j! j! k!(j − k)! k=0
p(j) ak − j! (j − k)! j−1
⇐⇒ aj =
f¨ ur
j = 0, 1, . . . , n .
k=0
7.1.9 Beispiel: Es sei p(x) = x2 + 2 . Dann ist a0 = p(0) = 2 , a1 = p(1) − a0 = 3 − 2 = 1 und a2 = 21 p(2) − 12 a0 − a1 = 3 − 1 − 1 = 1 und damit x x x . +2 + p(x) = 2 · 1 +1 · x +1 · x(x − 1) = 2 2 1 0 =(x)0
=(x)1
=(x)2
Das Analogon Dxk = kxk−1 der Differentialrechnung zu dem soeben nachgewiesenen ∆(x)k = k(x)k−1 gilt bekanntlich sogar f¨ ur alle k = 0. Die faktoriellen Polynome sind bisher nur f¨ ur k ∈ definiert und es stellt sich die Frage, wie man die Definition von (x)k zu verallgemeinern hat, um ∆(x)k = k(x)k−1 auch f¨ ur negative k zu bekommen. Sind n und m positive ganze Zahlen mit n > m , so liest man aus der Definition der faktoriellen Polynome ab, dass (x)n = (x)m · (x − m)n−m ist. Setzt man m = 0 in diese Formel ein, so sieht man, dass die Formel auch in diesem Fall richtig bleibt, falls man (x)0 = 1 definiert. Probiert man nun n = 0 , so sagt die Formel, dass
N
(x − m)−m =
1 1 bzw. (x)−m = (x)m (x + m)m
eine sinnvolle Erweiterung der Definition der faktoriellen Polynome auf negative ganze Zahlen w¨ are.
284
7 Summation in endlich vielen Termen
Die Definition der faktoriellen Polynome wird also wie folgt erweitert: ⎧ k−1 ⎪ ⎪ ⎪ (x − i) f¨ ur k ∈ 0 ⎪ ⎨ i=0 (x)k := −k−1 ⎪ ⎪ 1 ⎪ ⎪ f¨ ur −k ∈ . ⎩ (x − k − i) i=0
N
N
F¨ ur −k ∈
N
∆(x)k = ∆
gilt damit
−k−1 i=0
: −k−1 : −k−1 9 9 1 1 1 − = (x − k − i) (x + 1 − k − i) (x − k − i) i=0 i=0
−k−2 −k−2 1 1 1 1 = − = x + 1 − k i=0 (x − k − i) x + 1 i=0 (x − k − i)
=k· =k·
−k−1 1 1 = (x + 1)(x + 1 − k) i=1 x − k + 1 − i −k
1 = k(x)k−1 . x−k+1−i i=0
Diese Regel gilt also jetzt wie gew¨ unscht f¨ ur alle k ∈ Z mit k = 0. Insbesondere f¨ ur die Summation rationaler Funktionen wird die vorliegende Definition faktorieller Polynome nochmals erweitert, und zwar von x auf ein beliebiges Polynom f (x) ∈ F , also ⎧ k−1 ⎪ ⎪ ⎪ f (x − i) f¨ ur k ∈ 0 ⎪ ⎨ i=0 (f (x))k := −k−1 ⎪ ⎪ 1 ⎪ ⎪ f¨ ur −k ∈ . ⎩ f (x − k − i) i=0
N
N
Nachdem es sich f¨ ur negatives k nicht um ein Polynom handelt spricht man nur noch von der k-ten Faktoriellen von f . Die Zahl k nennt man in Analogie zum Exponenten in der Potenz k (f (x)) auch faktoriellen Exponenten von (f (x))k . Um mit diesen neuen Begriffen arbeiten zu k¨ onnen, untersucht man wieder die Wirkung des Differenzenoperators auf diese Ausdr¨ ucke. Ist k ∈ , so gilt
N
∆ (f (x))k = ∆
k−1
f (x − i) =
i=0
= f (x + 1)
k−1
f (x + 1 − i) −
k−1
i=0 k−2 i=0
f (x − i) − f (x − k + 1)
f (x − i) =
i=0 k−2 i=0
f (x − i) =
7.2 Die unbestimmte Summation
285
= (f (x))k−1 · ∆ f (x − k + 1). x,k
F¨ ur −k ∈
N
gilt
−k−1
∆ (f (x))k = ∆
i=0
−k−1 −k−1 1 1 1 = − f (x − k − i) f (x + 1 − k − i) f (x − k − i) i=0
−k
= f (x + 1)
i=0
i=0
1 1 − f (x + 1 − k) f (x + 1 − k − i) f (x + 1 − k − i) −k
i=0
= (f (x))k−1 ∆ f (x − k + 1). x,k
Zusammen ist also f¨ ur k ∈ Z * (f (x))k−1 · ∆ f (x − k + 1) falls k = 0 x,k ∆ (f (x))k = 0 falls k = 0
(7.3)
7.2 Die unbestimmte Summation Gibt es zu einem f (x) ∈ F ein g(x) ∈ F mit ∆g(x) = f (x), so gilt n k=m
f (k) =
n
∆g(k) =
k=m
n
g(k + 1) −
k=m
n
g(k) = g(n + 1) − g(m),
k=m
falls f (x) f¨ ur x = m, . . . , n bzw. g(x) f¨ ur x = m, . . . , n + 1 definiert sind. Der Zusammenhang n x=n+1 ∆g(x) = f (x) ⇒ f (k) = [g(x)]x=m k=m
ist die (bis auf die obere Grenze) genaue Entsprechung des Hauptsatzes der Differential- und Integralrechnung C n x=n Dg(x) = f (x) ⇒ f (x)dx = [g(x)]x=m . m
Dies f¨ uhrt auf die folgende 7.2.1 Definition: Gibt es zu f (x) ∈ F ein g(x) ∈ F mit ∆g(x) = f (x) , so heißt f (x) in endlich vielen Termen summierbar in F und g(x) seine unbestimmte Summe. Man schreibt g(x) = f (x). In der Literatur ist statt auch ∆−1 gebr¨ auchlich, g(x) wird auch diskrete Stammfunktion von f (x) genannt. Im Gegensatz zur Stammfunktion der Differential- und Integralrechnung ist diese nicht nur bis auf Konstanten eindeutig, sondern bis auf Funktionen mit der Periode 1 .
286
7 Summation in endlich vielen Termen
Man verschafft sich einen ersten Eindruck u ¨ber die unbestimmte Summation, indem man auf viele bekannte Funktionen den Differenzenoperator anwendet und die so erhaltene Tabelle umdreht. Nr. f (x) = ∆g(x)
f (x) = g(x)
Tipp
cx
a ac − 1
(1) acx (c = 0, a = 1) (2) (x)k ax (a = 1, k ∈ (3) (x)k
ak
N)
Z
N
differenzieren
x
1 (x)k+1 k+1
x k+1
$ j % n ∆ p(x) x=0 j !
j=0
(p = Polynom vom Grad n, a = 1) (6) sin(ax + b) (a = 2kπ, k ∈
Z)
(7) cos(ax + b) (a = 2kπ, k ∈
Z)
(8) sinh(ax + b) (a = 2kπi, k ∈
Z)
(9) cosh(ax + b)
Z
(a = 2kπi, k ∈ ) a (10) log 1 + ax + b (11) a log(ax + b) a∈
Z
(1) nach a
0
(k ∈ , k = −1) x (4) k (k ∈ 0 ) (5) p(x) · a
d ax dak a − 1
aj
dj daj
ax a−1
Newton-Entw. von p(x) und (2)
− cos(ax + b − a2 ) 2 sin
a 2
∆ cos(ay + b) y,1
und x = y + sin(ax + b − a2 ) 2 sin
a
1 2
analog zu (6)
2
mit sin cosh(ax + b − a2 ) 2 sinh
a
analog zu (6),
2
nur hyperbolisch sinh(ax + b − a2 ) 2 sinh
a
analog zu (7),
2
nur hyperbolisch log(ax + b) log Γ(ax + b)
In der letzten Spalte wird gegebenenfalls ein Tipp gegeben, was zu tun ist, um die angegebene Formel selber herzuleiten. Die Wirkung von ∆ auf binomische Polynome wurde bereits untersucht: x x x x = ⇒ = ∆ k k−1 k−1 k Wie etwa bei Integraltabellen u asst man jeweils das +C “ bzw. ¨blich, l¨ ” +Funktion der Periode 1“ weg. ”
7.3 Die Polygamma-Funktionen
N
Damit erh¨alt man f¨ ur k ∈ die Formel : 9 n x=n+1 x j n+1 = = k x=0 k−1 k j=0
oder
n j j=0
k
=
287
n+1 . k+1
7.2.2 Beispiel: Ein schon etwas fortgeschritteneres Beispiel erh¨ alt man mit Hilfe von Beispiel 7.1.9. Dort war gezeigt worden: x2 + 2 = 2(x)0 + (x)1 + (x)2 . ist offensichtlich linear): Wegen ∆(x)k = k(x)k−1 gilt (
(x)k−1 =
1 (x)k k
bzw.
(x)k =
(x)k+1 . k+1
Damit folgt
(x2 + 2) = 2
(x)1 (x)2 (x)3 + + bzw. 1 2 3
:x=n+1 9 (x)1 (x)2 (x)3 (k + 2) = 2 = + + 1 2 3 x=0 k=0 1 1 = (n + 1) · 2 + n + n(n − 1) . 2 3 n
2
7.3 Die Polygamma-Funktionen B k+1 Bekanntlich gilt die Formel xk dx = xk+1 nur f¨ ur k = −1 , f¨ ur k = −1 ist das Ergebnis nicht mehr in Q(x) . Erst, wenn man den Logarithmus naturalis zum Grundk¨ orper hinzunimmt, wird auch der Fall k = −1 l¨ osbar. Bei der Summation liegt das Problem sehr ¨ ahnlich. Die Formel
(x)k =
(x)k+1 k+1
gilt nur f¨ ur k = −1 . Auch hier muss eine u ¨ber Q(x) transzendente Funktion, die so genannte Digamma-Funktion, hinzugenommen werden um den Fall k = −1 behandeln zu k¨ onnen. Da sich diese Digamma-Funktion, bzw. die ganze Klasse der so genannten Polygamma-Funktionen, aus der Gammafunktion ableiten, werden erst einige Grundlagen aus der Funktionentheorie wiederholt. F¨ ur z ∈ C mit Re(z) > 0 ist die Gammafunktion Γ(z) als eulersches Integral definiert: C ∞
Γ(z) = 0
tz−1 exp(−t) dt
288
7 Summation in endlich vielen Termen
In der Halbebene Re(z) > 0 konvergiert dieses Integral absolut und stellt dort eine analytische Funktion dar. F¨ ur die Ableitung gilt C ∞ k tz−1 (n(t)) exp(−t) dt f¨ ur k ∈ 0 , Re(z) > 0 . Γ(k) (z) =
N
0
Weiterhin ist Γ(1) = 1 und durch partielle Integration folgt die Funktionalgleichung Γ(z + 1) = z · Γ(z) f¨ ur Re(z) > 0 . Insbesondere gilt also Γ(n + 1) = n! , weshalb die Gammafunktion als Verallgemeinerung der Fakult¨ at betrachtet werden kann. Durch iterierte Anwendung der Funktionalgleichung erh¨ alt man f¨ ur n ∈ 0
N
Γ(z) =
Γ(z + n + 1) . z · (z + 1) · . . . · (z + n)
Die rechte Seite dieser Gleichung ist definiert f¨ ur Re(z) > −(n + 1) und f¨ ur z = 0, −1, −2, . . . , −n . Diese Gleichung erlaubt also die analytische Fortsetzung auf die linke Halbebene mit Ausnahme der Menge − 0 . In der Funktionentheorie wird gezeigt, dass diese Fortsetzung die einzig m¨ ogliche ist. In den Ausnahmestellen liegen einfache Pole vor. Die Gammafunktion ist also nach dieser Fortsetzung eine in C meromorphe Funktion mit der Polstellenmenge − 0 . Wenn hier von der Gammafunktion geredet wird, ist jeweils diese auf \ − 0 fortgesetzte Funktion gemeint. Sie hat in ihrem Definitionsbereich keine ur alle z ∈ \ − Nullstellen und es gilt Γ(z) = Γ(z) f¨ 0 , also insbesondere − Γ(x) ∈ f¨ ur x ∈ \ 0 .
N
N C
N
R
R N
Die Gamma-Funktion auf der reellen Achse
C N
Der Betrag der Gamma-Funktion u ¨ber der gaußschen Zahlenebene
7.3 Die Polygamma-Funktionen
F¨ ur z ∈ C \
7.3.1 Definition:
N−0
und m ∈
N
289
heißt
Ψm (z) := Dm n (Γ(z)) Polygamma-Funktion. Im Fall m = 1 spricht man von der DigammaFunktion∗ oder gaußschen Psi-Funktion , im Fall m = 2 von der Trigamma-Funktion◦ etc. Diese Definition der Polygamma-Funktionen ist in der Literatur nicht einheitlich. Einige Autoren (vgl etwa [Jor]) verwenden z + 1 statt z als Argument. Die hier angegebene Definition geht wohl auf Legendre zur¨ uck. In der rechten Halbebene l¨ asst sich die Polygamma-Funktion wie die Gammafunktion als Integral schreiben. Es ist C ∞ C ∞ m−1 Ψ1 (z) = 0
exp(−t) exp(−zt) − dt , Ψm (z) = (−1)m t 1 − exp(−t)
t
0
exp(−zt) dt 1−t
f¨ ur m = 2, . . . und Re(z) > 0 . Insgesamt ist die Polygamma-Funktion Ψm (z) eine in C meromorphe Funktion mit Polen der Ordnung m in z = 0, −1, −2, . . . Es ist Ψm (z) = Ψm (z) , also insbesondere Ψm (x) ∈ R f¨ ur x ∈ R \ N− 0 . Die Digamma-Funktion ist die Funktion, die die angesprochene L¨ ucke bei der Summation schließt: ∆Ψm (x) = ∆Dm nΓ(x) = Dm ∆nΓ(x) = Dm (nΓ(x + 1) − nΓ(x)) = 1 Γ(x + 1) m m m−1 1 m−2 − 2 = = D n = D n(x) = D =D Γ(x) x x 1 (m − 1)! (7.4) = Dm−3 (−1)(−2) 3 = . . . = (−1)m−1 x xm f¨ ur m ∈ N also insbesondere f¨ ur m = 1 : ∆Ψ1 (x + 1) = ∆(x + 1) =
1 = (x)−1 x+1
(dies zeigt, woher die erw¨ ahnte Alternativdefinition von mit dem Argument x + 1 statt x kommt) bzw. (x)−1 = Ψ1 (x + 1) = (x + 1) . Die dabei gewonnene allgemeinere Formel
∗
(z)
geschrieben;
heißt Digamma und ist ein nicht mehr gebr¨ auchliches griechisches
Zeichen Γ (z) ψ(z) = Γ(z) geschrieben; es ist ψ (m−1) (z) = Ψm (z) ◦ Teilweise wie – aber mit einem zus¨ atzlichen kleinen Querstrich – geschrieben.
290
7 Summation in endlich vielen Termen
1 (−1)m−1 = ur m ∈ Ψm (x) f¨ xm (m − 1)!
N
(7.5)
ist nat¨ urlich auch von großem Interesse. Die Digamma-Funktion Ψ1 (z) = ψ(z) = (z) auf der reellen Achse
Die Trigamma-Funktion Ψ2 (z) = ψ (z) auf der reellen Achse
Aus (7.4) liest man ab, dass die Polygamma-Funktion der Rekursion Ψm (z + 1) = Ψm (z) +
(−1)m−1 (m − 1)! zm
gehorcht. Mit Hilfe dieser und anderer Formeln l¨ asst sich die PolygammaFunktion sehr effektiv berechnen, was hier aber nicht weiter ausgef¨ uhrt werden soll (man vergleiche dazu etwa [ASt]).
7.4 Shiftfreie Faktorisierung 7.4.1 Definition: Ein Polynom f (x) ∈ F heißt r-shiftfrei, wenn ggT (f (x), T r f (x)) = 1 ist ( r ∈ , im Fall von 1-shiftfrei spricht man auch einfach von shiftfrei). Ist ein Polynom f (x) f¨ ur jedes r ∈ r-shiftfrei, so heißt f (x) vollst¨andig shiftfrei. Eine Dark stellung f (x) = i=1 (fi (x))i mit shiftfreien, paarweise teilerfremden Faktoren fi (x) heißt shiftfreie Faktorisierung von f . Besitzt k andig shiftfreif (x) eine Darstellung f (x) = i=1 (fi (x))i mit vollst¨ en, paarweise teilerfremden Faktoren fi (x) , so heißt diese Zerlegung vollst¨andig shiftfreie Faktorisierung von f . Mit Hilfe von Resultanten l¨ asst sich ein Polynom sehr leicht auf vollst¨ andige Shiftfreiheit pr¨ ufen, denn der gr¨ oßte gemeinsame Teiler von f (x) und T r f (x) ist nach 2.5.4 genau dann nichttrivial, wenn g(r) := resx (f (x), T r f (x)) verschwindet.
N
N
7.4 Shiftfreie Faktorisierung
291
Man berechnet also die ganzzahligen positiven Nullstellen von g(r) ( 0 ist trivialerweise immer eine Wurzel, außerdem ist g(r) achsensymmetrisch, d.h. die negativen Wurzeln bringen keine neue Information). 7.4.2 Beispiel: Es sei n(x) = x6 +6x5 +16x4 +30x3 +37x2 +36x+18 ∈ Q[x] . Die Resultante g(r) = resx (n(x), T r n(x)) (ein Polynom vom Grad 36 ) hat die ganzzahligen Nullstellen 0, ±1 und ±2 . Das Polynom n ist also nicht shiftfrei. Es ist h := ggT(n, T n) = x2 + 2x + 3, also T −1 h · h = (h)2 = (x2 + 2x + 3)2 = x4 + 5x2 + 2x3 + 4x + 6 ein Teiler von n . n = x2 + 4x + 3 ist wegen Der Rest (h) 2 resx (x2 + 4x + 3, (x + r)2 + 4(x + r) + 3) = r2 (r − 2)(r + 2) zwar shiftfrei, aber nicht vollst¨ andig shiftfrei: ggT(x2 + 4x + 3, (x + 2)2 + 4(x + 2) + 3) = x + 3. und damit n(x) = (x2 + 4x + 3)1 · (x2 + 2x + 3)2 zwar eine shiftfreie Zerlegung von n , wegen des ersten Faktors aber nicht vollst¨ andig shiftfrei ( x2 + 2x + 3 ist irreduzibel u ¨ber Q , also erst recht vollst¨ andig shiftfrei). Es ist bereits an diesem Beispiel klar, dass sich eine vollst¨ andig shiftfreie Zerlegung im Allgemeinen auch nicht erreichen l¨ asst. Ist das betrachtete Polynom der Nenner einer rationalen Funktion z(x) r(x) = n(x) , so kann man mit Hilfe der shiftfreien Faktorisierung von n(x) gem¨aß 2.6.3 die shiftfreie Partialbruchzerlegung von r(x) berechnen. Auch wenn n(x) keine vollst¨ andig shiftfreie Zerlegung besitzt, kann man sich in diesem Fall durch Erweitern mit den fehlenden Termen behelfen und r umschreiben in zˆ(x) r(x) = k i=1 (ni (x))i mit vollst¨andig shiftfreier Faktorisierung des neuen Nenners. Daraus kann man dann die so genannte vollst¨andig shiftfreie Partialbruchzerlegung berechnen. 7.4.3 Beispiel: (Fortsetzung) Wegen x2 + 4x + 3 = T −2 (x + 3) · (x + 3) = (x + 1)(x + 3) fehlt dem Polynom n(x) = x6 + 6x5 + 16x4 + 30x3 + 37x2 + 36x + 18 der Faktor T −1 (x + 3) = x + 2 , man schreibt also 1 z.B. die rationale Funktion r(x) := n(x) um in x+2 r(x) = . (1)1 (x2 + 2x + 3)2 (x + 3)3 Der Nenner ist jetzt eine vollst¨ andig shiftfreie Faktorisierung.
292
7 Summation in endlich vielen Termen
Der erweiterte euklidische Algorithmus liefert 1 1 (5x2 +26x+32)·(x2 +2x+3)2 − (5x3 +6x2 +18x+10)·(x+3)3 = x+2 66 66 und damit die Partialbruchzerlegung 9 : 1 5x2 + 26x + 32 5x3 + 6x2 + 18x + 10 r(x) = . − 66 (x + 3)3 (x2 + 2x + 3)2 Durch fortgesetzte Division mit Rest (vgl. Beweis von 2.6.3) erh¨ alt man daraus die vollst¨ andig shiftfreie Partialbruchzerlegung 9 : 5 1 1 1 5x − 4 11(x + 2) r(x) = . + − − 2 − 2 66 (x + 1)1 (x + 2)2 (x + 3)3 (x + 2)1 (x + 2x + 3)2
7.5 Partielle Summation Analog zur Integration l¨ asst sich aus der Produktregel (∆2) eine Rechenregel zur partiellen Summation herleiten. Es gilt ∆(f g) = f ∆g + g∆f + ∆f ∆g = f ∆g + ∆f (g + ∆g) = f ∆g + ∆f T g ⇐⇒ f ∆g = ∆(f g) − ∆f T g und damit
(f ∆g) = f g −
∆f T g.
Mit Hilfe dieser Rechenregel und der Tabelle diskreter Stammfunktionen kann man nun schon schwierigere Funktionen summieren. 7.5.1 Beispiel: Es soll x sin(ax + b) bestimmt werden. W¨ ahlt man f (x) = x und ∆g(x) = sin(ax + b) , so ist ∆f (x) = 1 und − cos(ax+b− a 2) (f¨ ur a = 2kπ, k ∈ Z ). Damit ergibt partielg(x) = 2 sin( a 2) le Summation 1 a a x cos ax + b − x sin(ax + b) = − − T g(x). 2 2 sin 2 at von Wegen T g(x) = − 2 sin1 a cos ax + b + a2 und der Linearit¨ ( ) 2 kann man jetzt das Ergebnis aus der Tabelle ablesen. Es folgt a 1 x + 2 sin(ax + b) x sin(ax + b) = cos ax + b − h 2 h a mit h := −2 sin 2 . 7.5.2 Beispiel: Auch die gerade eingef¨ uhrte Polygamma-Funktion l¨ asst sich mit Hilfe partieller Summation summieren.
7.6 Der Algorithmus von Moenck
293
Mit f (x) = Ψm (x) und ∆g(x) = 1 ist ∆f (x) = (−1)m−1 (m−1)! xm (vgl. (7.4)) und g(x) = x . Damit erh¨ alt man f¨ ur m ≥ 2
(m − 1)! · (x + 1) = xm 1 (7.5) 1 m−1 = (m − 1)! · + m = xΨm (x) − (−1) xm−1 x
Ψm (x) = xΨm (x) −
(−1)m−1
= xΨm (x) + ((m − 1)Ψm−1 (x) − Ψm (x)) = = (x − 1)Ψm (x) + (m − 1)Ψm−1 (x). Im Spezialfall m = 1 erh¨ alt man entsprechend 1 Ψ1 (x) = xΨ1 (x) − = 1+ x = xΨ1 (x) − (x + Ψ1 (x)) = (x − 1)Ψ1 (x) − x Die Liste solcher Beispiele l¨ asst sich beliebig erweitern. Wie bei der Integration ist es aber oft sehr schwierig, geeignete Funktionen f und g zu finden. Insbesondere ist diese Suche nach f und g im allgemeinen kein Algorithmus. F¨ ur rationale Funktionen hat R. Moenck ([Mo3]) einen Algorithmus angegeben, der mit Hilfe rekursiver Anwendung partieller Summatid∆h on arbeitet. Moenck betrachtet Ausdr¨ ucke der Gestalt ahlt man hT h . W¨ 1 ∆h g = − h , so folgt nach der Quotientenregel ∆g = . Damit ist der zu hT h summierende Ausdruck von der Gestalt f ∆g mit f = d und g = − h1 . Es folgt also d∆h d ∆d =− + . (7.6) hT h h Th
7.6 Der Algorithmus von Moenck z(x) Gegeben sei eine rationale Funktion r(x) = n(x) ∈ Q(x) mit z(x), n(x) ∈ Z[x], deg z(x) < deg n(x) und nat¨urlich n(x) = 0 . Mittels geeigneter Erweiterung l¨asst sich r(x) in die Form
r(x) = k
zˆ(x)
i=1 (ni (x))i
mit vollst¨andig shiftfreier Faktorisierung des Nenners bringen. Da die (ni (x))i f¨ ur i = 1, . . . , k paarweise teilerfremd sind und wegen (ni (x))i =
i−1 j=0
ni (x − j) =
i
ni (x − j + 1)
j=1
gibt es nach 2.6.3 eine zugeh¨ orige vollst¨ andige Partialbruchzerlegung
294
7 Summation in endlich vielen Termen
r(x) = k i=1
i
zˆ(x)
j=1
ni (x − j + 1)
=
i k
i=1 =1
j=1
wi, (x) ni (x − j + 1)
mit deg wi, < deg ni f¨ ur 1 ≤ ≤ i ≤ k (vgl. Beispiel 7.4.3). Man kann also rationale Funktionen summieren, wenn man in der Lage ist Summanden der Gestalt w(x) (ni (x)) mit ≤ i, deg w(x) < deg ni (x) und vollst¨ andig shiftfreiem ni (x) zu summieren. Dazu setzt man h(x) = (ni (x − 1))−1 in (7.6) und erh¨ alt −
d ∆d d · ∆(ni (x − 1))−1 + = . (ni (x − 1))−1 (ni (x))−1 (ni (x − 1))−1 · (ni (x))−1
Da wegen (7.3) gilt ∆(ni (x − 1))−1 = (ni (x − 1))−2 ∆ ni (x − + 1) x,−1
hat man zusammen −
∆d d + = (ni (x − 1))−1 (ni (x))−1 =
d · (ni (x − 1))−2 ∆ ni (x − + 1) x,−1
(ni (x − 1))−1 (ni (x))−1 d · ∆ ni (x − + 1) x,−1
ni (x − + 1)(ni (x))−1 ∆ ni (x − + 1) d · x,−1 = . (ni (x))
=
(7.7)
Um diesen Sachverhalt ausnutzen zu k¨ onnen, zerlegt man das Polynom w(x) w(x) im Z¨ahler von (ni (x)) nach B´ezout in c(x) · ni (x − + 1) + d(x) · ∆ ni (x − + 1) = w(x).
(7.8)
x,−1
Das geht, da ni (x − + 1) und
∆ ni (x − + 1) teilerfremd sind (dies
x,−1
ist noch zu begr¨ unden) und deg w(x) < deg ni (x) ist. Wie u ¨blich ist man an L¨osungen c(x), d(x) m¨ oglichst kleinen Grades interessiert, da man ja mit diesen Polynomen weiterrechnen muss. Die L¨ osung ist sogar eindeutig, wenn man deg c(x), deg d(x) < deg ni (x) fordert. Mit dieser Zerlegung bekommt man w(x) = (ni (x))
c(x) · ni (x − + 1) + d(x) · ∆ ni (x − + 1) x,−1
(ni (x))
=
7.6 Der Algorithmus von Moenck
c(x) = + (ni (x))−1
295
d(x) · ∆ ni (x − + 1) x,−1
(ni (x))
Zusammen mit (7.7) wird nun die Summation von (nw(x) m¨ oglich, i (x)) denn durch c(x) + ∆d(x) w(x) d(x) =− + (7.9) (ni (x)) (ni (x − 1))−1 (ni (x))−1 wird der faktorielle Exponent der Nenner um 1 abgesenkt. Man kann also rekursiv so weitermachen, bis man beim faktoriellen Exponenten 1 angelangt ist. 7.6.1 Beispiel: (Fortsetzung von 7.4.3) Einige der Summanden der vollst¨andig shiftfreien Partialbruchzerlegung von r(x) kann man nun direkt summieren. Der einfachste Summand ist 5 5 1 5 (x)−1 = = Ψ1 (x + 1). 66 (x + 1) 66 66 1 1 Den Summanden 66 (x+2)2 kann man mit der Moenckschen Reduktion (7.9) vereinfachen. Mit = 2 und ni = x + 2 ist ni (x − + 1) = x + 1 und n (x ∆ i − + 1) = (x + 2) − (x + 1) = 1.
x,−1
Der Satz von B´ezout (7.8) liefert zu w(x) = 1 die Polynome c(x) = 1 und d(x) = −x . Die Formel (7.9) lautet also
1 + ∆(−x) 1 −x =− + = (x + 2)2 (x + 1)1 (x + 2)1 x 1 . = =1− x+1 x+1
Die 1 kann man dabei ohne Schaden weglassen. Da x + 2 linear ist, 1 = h¨atte man dies auch einfacher haben k¨ onnen. Es ist n¨ amlich (x+2) 2 (x)−2 und damit
(x)−2 =
1 1 (x)−2+1 = −(x)−1 = − . −2 + 1 x+1
In jedem Fall kann man f¨ ur den zweiten Summanden von r notieren 1 1 1 1 =− . 66 (x + 2)2 66 x + 1 Entsprechend erh¨ alt man f¨ ur
296
7 Summation in endlich vielen Termen
1 1 1 = (x)−3 = 66 (x + 3)3 66 1 1 1 =− (x)−3+1 = (x)−2 = 66 −3 + 1 132 1 1 = . 132 (x + 2)(x + 1) 1 x+2 . Auch dieser wird Nun zum letzten Summanden − 6 (x2 +2x+3) 2 mit der Reduktion (7.9) vereinfacht. Mit = 2 und ni = x2 + 2x + 3 ist ni (x − + 1) = x2 + 2 und 2 2 ∆ ni (x − + 1) = (x + 2x + 3) − (x + 2) = 2x + 1. −
x,−1
Zu w(x) = x + 2 liefert der Satz von B´ezout c(x) = 23 und d(x) = − 13 x + 23 . Mit Formel (7.9) folgt nun − 13 x + 23 23 + − 13 x+2 =− 2 + (x2 + 2x + 3)2 x +2 x2 + 2x + 3 und damit 9 : 1 1 x−2 x+2 1 . − = − + 6 (x2 + 2x + 3)2 18 x2 + 2 x2 + 2x + 3 Damit hat man bisher insgesamt
5 1 1 1 1 Ψ1 (x + 1) − + − 66 66 x + 1 132 (x + 1)(x + 2) 1 1 x−2 1 1 5x − 4 − − − . 2 2 18 x + 2 18 x + 2x + 3 66 x2 + 2
r(x) =
Der eigentliche Algorithmus von Moenck ist damit am Ende, denn die Nenner der noch zu summierenden rationalen Funktionen sind vollst¨andig shiftfrei und u ¨ber Q nicht weiter zu zerlegen. Da die Nennerpolynome in den verbleibenden Summen nun vom Grad kleiner als 5 sind, kann man jetzt vollst¨ andige Partialbruchzerlegungen u ¨ber C berechnen und kommt so zum Ziel. √ √ Mit der Faktorisierung x2 + 2x + 3 = (x + 1 − i 2)(x + 1 + i 2) und B´ezout erh¨ alt man die vollst¨ andige Partialbruchzerlegung √ √ 1 i 2 1 1 i 2 √ √ =− + x2 + 2x + 3 4 x+1−i 2 4 x+1+i 2 und damit
√ √ √ √ 1 1 i 2 i 2 − (x + 1 − i 2) − (x + 1 + i 2). = Ψ Ψ 1 1 18 x2 + 2x + 3 72 72
7.6 Der Algorithmus von Moenck
297
Entsprechend erh¨ alt man aus der komplexen Partialbruchzerlegung √ √ 5x − 4 1 −5 + 2 2i −5 − 2 2i √ √ =− + x2 + 2 2 x + 2i x − 2i die diskrete Stammfunktion √ √ √ √ −5 − 2 2i 1 5x − 4 −5 + 2 2i (x + 2i) + − = Ψ Ψ1 (x − 2i) 1 2 66 x +4 132 132 also insgesamt r(x) = 1 1 1 1 1 x−2 + − + 66 x + 1 132 (x + 1)(x + 2) 18 x2 + 2 √ √ √ √ i 2 i 2 5 + Ψ1 (x + 1) + Ψ1 (x + 1 − i 2) − Ψ1 (x + 1 + i 2)+ 66 72 72 √ √ √ √ −5 − 2 2i −5 + 2 2i + Ψ1 (x + 2i) + Ψ1 (x − 2i). 132 132 −
Wegen aΨm (z) + aΨm (z) = aΨm (z) + aΨm (z) = 2 Re(aΨm (z)) kann man dabei die komplex aussehenden Terme zusammenfassen und erh¨alt schließlich
1 1 1 1 1 x−2 + − + 66 x + 1 132 (x + 1)(x + 2) 18 x2 + 2 √ √ i 2 5 + Ψ1 (x + 1) + 2 Re Ψ1 (x + 1 − i 2) + 66 72 √ √ −5 + 2 2i + 2 Re Ψ1 (x + 2i) . 132
r(x) = −
Nun noch zu der nachzutragenden Begr¨ undung f¨ ur (7.9): 7.6.2 Hilfssatz:
ggT(n(x), ∆ n(x)) = 1 ⇐⇒ n ist -shiftfrei. x,
Beweis: ⇒ “ W¨are ggT(n(x), T n(x)) = g(x) mit deg g(x) > 0 , also n(x) ” nicht -shiftfrei, so w¨ are dieses g(x) auch ein Teiler von ∆ n(x) = x,
T n(x) − n(x) = T n(x) − n(x) und damit ggT(n(x), ∆ n(x)) = 1 .
x,
”
x,
⇐ “ Ist g(x) := ggT(n(x), ∆ n(x)) von positivem Grad, so teilt g(x) x,
die Polynome n(x) und n(x + ) − n(x) . Damit teilt g(x) auch n(x + ) = T n , also auch ggT(n(x), T n(x)) .
298
7 Summation in endlich vielen Termen
7.7 Der Algorithmus von Gosper Ein weiteres m¨ achtiges Verfahren zur unbestimmten Summation ist der 1978 ver¨offentlichte Algorithmus von Gosper ([Gos]). Dieser ist in der Lage rational in x ist (also f (x) ∈ F f (x) = g(x) zu berechnen, falls g(x+1) g(x) und g(x+1) orper des Differenzenk¨ orpers g(x) ∈ K(x) , wobei K der Konstantenk¨ (F, ∆) sei). Das Problem ist, dass man dies nat¨ urlich nicht a priori weiß. Der Algorithmus muss also auf gut Gl¨ uck gestartet werden. Er entscheidet g(x+1) ob g(x) wirklich rational ist und berechnet g(x) in diesem Fall. Die Methode ist denkbar einfach. Es wird gezeigt werden, dass rational ist, falls gibt mit
g(x+1) g(x)
f (x) f (x−1)
rational ist und dass es Polynome p, q, r ∈ K[x] p(x) q(x) f (x) = · f (x − 1) p(x − 1) r(x)
N
ur alle j ∈ 0 . und ggT(q(x), T j r(x)) = 1 , f¨ Mit diesen Polynomen kann man weiterhin zeigen, dass es ein Polynom s(x) ∈ K[x] mit q(x + 1) g(x + 1) = s(x)f (x) p(x) gibt, f¨ ur das die folgende Funktionalgleichung gilt: p(x) = q(x + 1)s(x) − r(x)s(x − 1) . Da man Schranken f¨ ur den Grad von s(x) angeben kann, l¨ asst sich s(x) aus der Funktionalgleichung berechnen und man hat damit auch g(x) . Nun zu den Einzelheiten des Vorgehens. Ist g(x) = f (x) ⇐⇒ f (x) = ∆g(x) bekannt und g(x+1) (und damit nat¨ urlich auch g(x−1) g(x) g(x) ) rational, so folgt g(x+1) ∆g(x) g(x + 1) − g(x) f (x) g(x) − 1 , = = = f (x − 1) ∆g(x − 1) g(x) − g(x − 1) 1 − g(x−1) g(x) d.h. insbesondere, dass auch
f (x) f (x−1)
rational ist.
Damit gibt es Polynome p, q, r ∈ K[x] mit f (x) p(x) q(x) = ; f (x − 1) p(x − 1) r(x)
(7.10)
man nehme etwa p(x) = 1 und f¨ ur q(x), r(x) den Z¨ ahler bzw. den Nenner f (x) der rationalen Funktion f (x−1) . Dies ist allerdings noch nicht die Darstelf (x) lung von f (x−1) , die man f¨ ur das weitere Vorgehen braucht. Wie bereits erw¨ahnt, h¨atte man in (7.10) gerne
7.7 Der Algorithmus von Gosper
ggT(q(x), T j r(x)) = 1 f¨ ur alle j ∈
N0 .
299
(7.11)
Diese Forderung l¨ asst sich wie folgt immer erf¨ ullen. Gibt es ein j0 ∈ mit ggT(q(x), T j0 r(x)) = d(x) und deg d(x) > 0 so ersetzt man q(x) ←
q(x) r(x) , r(x) ← −j0 d(x) T d(x)
N0
(7.12)
und p(x) ← p(x)(d(x))j0 . Damit bekommt die rechte Seite von (7.10) die Gestalt p(x)(d(x))j0 q(x)T −j0 d(x) p(x − 1)(d(x − 1))j0 d(x)r(x) was wegen
immer noch
(d(x))j0 T −j0 d(x) =1 (d(x − 1))j0 d(x) f (x) f (x−1)
ist.
f (x) gilt nun ggT(q(x), T j0 r(x)) = In der neuen Darstellung (7.10) von f (x−1) uck 1 . Um alle j ∈ 0 mit (7.11) zu finden, greift man wieder auf 2.5.4 zur¨ und betrachtet h(j) := resx (q(x), T j r(x)).
N
Aus der Definition der Resultanten folgt, dass h(j) ein Polynom vom Grad deg q · deg r ist. F¨ ur jede der endlich vielen Wurzeln j0 ∈ 0 von h(j) ist also die Substitution (7.12) durchzuf¨ uhren. Nach endlich vielen Schritten erh¨alt man so eine Darstellung (7.10), die die Bedingung (7.11) erf¨ ullt.
N
7.7.1 Beispiel: Es sei f (x) = xax mit a ∈ K \ {0 , 1} . Dann ist xa xax f (x) = ∈ K(x) . = x−1 f (x − 1) (x − 1)a x−1 Man startet mit q(x) = xa, r(x) = x − 1 und p(x) = 1 . Es ist a 0 = a(j − 1) h(j) = resx (xa, x + j − 1) = 1 j − 1
N
orige also j0 = 1 die einzige Wurzel von h(j) in 0 . Der zugeh¨ nichttriviale gr¨ oßte gemeinsame Teiler ist d(x) = ggT(xa, x) = x . Damit liefert die Substitution (7.12) q(x) ← also mit (7.10):
xa x−1 = a , r(x) ← = 1 , p(x) ← x x x−1
300
7 Summation in endlich vielen Termen
f (x) xa x a = = . f (x − 1) x−1 x−11 Mit der nun vorliegenden Zerlegung (7.10) mit Zusatzbedingung (7.11) macht man den Ansatz g(x + 1) =
q(x + 1) s(x)f (x) p(x)
(7.13)
aus dem versucht werden soll die Funktion s(x) ∈ F zu berechnen. Der folgende Hilfssatz zeigt, dass dieser Ansatz sinnvoll ist. 7.7.2 Hilfssatz:
Ist
g(x+1) g(x)
rational, so ist s(x) in (7.13) ein Polynom.
Beweis: Aufl¨osen von (7.13) nach s(x) liefert p(x) g(x + 1) p(x) g(x + 1) = q(x + 1) f (x) q(x + 1) ∆g(x) p(x) 1 . = q(x + 1) 1 − g(x)
s(x) =
g(x+1)
g(x) Da p(x) und q(x + 1) nach Voraussetzung Polynome sind und g(x+1) rational ist, zeigt dies, dass s(x) rational ist. Es gibt also Polynome z(x) z(x), n(x) mit s(x) = n(x) . Diese Darstellung sei optimal durchgek¨ urzt ist, also ggT(z(x), n(x)) = 1 , und im Widerspruch zur Aussage des Hilfssatzes sei deg n(x) > 0 . Nun setzt man (7.13) in f (x) = ∆g(x) ein. Es ergibt sich
q(x + 1) q(x) s(x)f (x) − s(x − 1)f (x − 1) ⇐⇒ p(x) p(x − 1) f (x − 1) (7.10) p(x) q(x)s(x − 1) ⇐⇒ p(x) = q(x + 1)s(x) − p(x − 1) f (x) p(x) = q(x + 1)s(x) − r(x)s(x − 1).
f (x) =
Einsetzen von s(x) = f¨ uhrt auf
z(x) n(x)
(7.14)
und Ausmultiplizieren mit dem Hauptnenner
n(x)n(x − 1)p(x) = z(x)n(x − 1)q(x + 1) − z(x − 1)n(x)r(x).
N
(7.15)
oßte ganze Zahl mit ggT(n(x), T i0 n(x)) = Nun sei i0 ∈ 0 die gr¨ t(x) und deg t > 0 , d.h. die gr¨ oßte ganzzahlige Wurzel des Polynoms resx (n(x), T i n(x)). Da t(x) das Polynom n(x) teilt, sieht man an (7.15), dass t(x) das Produkt z(x)n(x − 1)q(x + 1) teilt. Wegen ggT(z(x), n(x)) = 1 folgt ggT(z(x), t(x)) = 1 . Wegen der Maximalit¨ at von i0 gilt ggT(n(x), T i0 +1 n(x)) = 1 ⇐⇒ ggT(n(x − 1), T i0 n(x)) = 1.
7.7 Der Algorithmus von Gosper
301
Da t(x) ein Teiler von T i0 n(x) ist, heißt dies insbesondere ggT(n(x − 1), t(x)) = 1 . Also ist t(x) ein Teiler von q(x + 1) , bzw. t(x − 1) ein Teiler von q(x) . Ausgehend von ggT(T −(i0 +1) n(x), n(x − 1)) = T −(i0 +1) t(x) kann man nun aber v¨ollig analog argumentieren, dass T −(i0 +1) t(x) das Polynom n(x − 1) und damit nach (7.15) auch z(x − 1)n(x)r(x) teilt. Wegen ggT(n(x − 1), z(x − 1)) = 1 folgt nun ggT(T −(i0 +1) t(x), z(x − 1)) = 1 , wegen der Maximalit¨ at von i0 gilt ggT(T −(i0 +1) t(x), n(x)) = 1 , −(i0 +1) d.h. T t(x) ist ein Teiler von r(x) bzw. t(x − 1) ein Teiler von T i0 r(x) . Damit ist aber t(x − 1) ein gemeinsamer nichttrivialer Teiler von q(x) und T i0 r(x) , was ein Widerspruch zu (7.11) ist. Damit ist deg n(x) = 0 gezeigt, s(x) ist also ein Polynom. Um das Polynom s(x) mit Hilfe der Funktionalgleichung (7.14) bestimmen zu k¨onnen, braucht man noch eine Schranke f¨ ur den Grad k := deg s(x) . Dazu schreibt man (7.14) um in s(x) + s(x − 1) s(x) − s(x − 1) + (q(x + 1) + r(x)) . 2 2 (7.16) Es ist k = deg(s(x) + s(x − 1)) = 1 + deg(s(x) − s(x − 1)) (das bleibt auch richtig f¨ ur konstantes s = 0 , wenn man dem Nullpolynom den Grad −1 zuweist). Nun sei p(x) = (q(x + 1) − r(x))
:= max(deg(q(x + 1) − r(x)), deg(q(x + 1) + r(x))). Ist = deg(q(x + 1) − r(x)) , so hat die rechte Seite von (7.16) den Grad + k , es ist also k = deg(p(x)) − . Ist dagegen = deg(q(x + 1) + r(x)) um mindestens 2 gr¨ oßer als deg(q(x + 1) − r(x)) , so hat die rechte Seite von (7.16) den Grad + k − 1 , es ist also k = deg(p(x)) − + 1. Es bleibt noch die M¨ oglichkeit = deg(q(x + 1) + r(x)) = deg(q(x + 1) − r(x)) + 1 zu betrachten. Der Koeffizient von x+k−1 auf der rechten Seite von (7.16) ist 1 k · LK(q(x + 1) + r(x)) + LK(q(x + 1) − r(x)) · LK(s). 2 Ist dieser Koeffizient von Null verschieden, so ist wieder k = deg(p(x))− LK(q(x+1)−r(x)) +1 . Ist k0 := −2LK(q(x+1)+r(x)) dagegen ganzzahlig, so k¨ onnte dieser Wert noch gr¨oßer sein als deg(p(x)) − + 1 .
302
7 Summation in endlich vielen Termen
Zusammen ist also gezeigt, dass s(x) fast immer kleiner oder gleich deg(p(x)) − + 1 ist. Einzige Ausnahme ist der Fall, dass k0 ganzzahlig und gr¨oßer als deg(p(x)) − + 1 ist, in diesem Fall ist deg s(x) = k0 . In jedem Fall kann man damit s(x) mit unbestimmten Koeffizienten ansetzen und durch Einsetzen in die Funktionalgleichung (7.14) berechnen. 7.7.3 Beispiel: (Fortsetzung von 7.7.1) Wegen p(x) = x, q(x) = a und r(x) = 1 ist = 0 und damit k = 1 . Mit dem Ansatz s(x) = s1 x + s0 wird (7.14) also zu x = a(s1 x + s0 ) − (s1 x + s0 − s1 ) ⇐⇒ 1 = as1 − s1 , 0 = as0 − s0 + s1 Man liest ab
s1 =
1 1 , s0 = − a−1 (a − 1)2
und damit aus (7.13) x (a − 1)x − 1 x+1 a 1 xax = a g(x + 1) = − x a − 1 (a − 1)2 (a − 1)2 1 ⇐⇒ g(x) = ((a − 1)x − a)ax (a − 1)2 Zur Probe berechne man ∆g(x) bzw. vergleiche mit Eintrag (2) unserer Summationstabelle. 7.7.4 Beispiel: Ein sehr viel komplizierteres Beispiel, bei dem das gospersche Verfahren seine M¨ achtigkeit beweisen kann, ist x3 3 j=1 (j + 1)
f = x
Bearbeitet man dies mit Maple, so wird erst das unbestimmte Produkt berechnet. Das Programm liefert x2 π √ √ 1 1 √ . f= (x + 1) sin(π 2 + 2 I 3 )Γ(x + 12 − 12 I 3)Γ(x + 12 + 12 I 3)Γ(x) Setzt man nun infolevel[‘sum‘]:=5 und berechnet sum(f,x), so bekommt man die Einzelschritte des ausgef¨ uhrten Algorithmus zu sehen (die Ausgabe wurde zur besseren Lesbarkeit etwas aufbereitet): sum/indefnew sum/extgosper
: :
sum/gospernew
:
sum/gospernew
:
indefinite summation applying Gosper algorithm to a(x):= x^2*Pi/(x+1)/sin(Pi*(1/2+1/2*I*3^(1/2)))/ GAMMA(x+1/2-1/2*I*3^(1/2))/ GAMMA(x+1/2+1/2*I*3^(1/2))/GAMMA(x) a(x)/a(x-1):= -4*x^3/(x+1)/(x-1)^3/(-2*x+1+I*3^(1/2))/ (2*x-1+I*3^(1/2)) Gosper’s algorithm applicable
7.7 Der Algorithmus von Gosper
: : : : : : : :
sum/gospernew sum/gospernew sum/gospernew sum/gospernew sum/gospernew sum/gospernew sum/gospernew sum/indefnew
p:= x^3 q:= -4 r:= -4*x^3-4 degreebound:=0 solving equations to find f Gosper’s algorithm successful f:= 1/4 indefinite summation finished
Die Ausgabe ist schließlich −
x (x + 1) sin(π
1 2
303
+
1 2
x3 + 1 π
√ I 3 )Γ(x)Γ(x +
was identisch ist mit g=
1 2
√ + 1/2 I 3)Γ(x +
1 2
−
1 2
√ , I 3)
−1 x−1
(j 3 + 1)
j=1
Per Hand h¨ atte man dies nat¨ urlich ohne den Umweg u ¨ber die Berechnung der Produkte gemacht. Es ist f (x) −4 x3 x3 p(x) q(x) · = = = · f (x − 1) (x − 1)3 (x3 + 1) (x − 1)3 −4x3 − 4 p(x − 1) r(x) ( p , q und r wie oben von Maple berechnet). Aus p(x) = q(x + 1)s(x) − r(x)s(x − 1) ⇐⇒ x3 = −4 · s(x) − (−4x3 − 4) · s(x − 1) berechnet man mit der Gradschranke deg s = 0 die L¨ osung s(x) = (im Maple-Ausdruck mit f bezeichnet) und somit 1 q(x) −4 (x − 1)3 = · s(x − 1)f (x − 1) = · p(x − 1) (x − 1)3 4 x−1 3 (j + 1) j=1 −1 = x−1 (j 3 + 1)
g(x) =
j=1
1 4
8 Gr¨ obner-Basen
8.1 Variet¨ aten und Ideale Es sei K ein beliebiger kommutativer K¨ orper. Zu einem n -Tupel a = (a1 , . . . , an ) von Elementen einer K¨ orpererweiterung L : K sei * K[x1 , . . . , xn ] → L φa : . f → f (a) = f (a1 , . . . , an ) Die Elemente a1 , . . . , an ∈ L heißen algebraisch unabh¨angig u ¨ber K , falls Kern φa = {0} ist, sonst algebraisch abh¨angig. Ist f ∈ Kern φa , so heißt a eine Nullstelle von f . Die Menge der gemeinsamen Nullstellen von endlich vielen Polynomen f1 , . . . , fr ∈ K[x1 , . . . , xn ] heißt algebraische Mannigfaltigkeit oder Variet¨at M in An (L) , wobei An (L) den affinen Raum der n -Tupel u orper L bezeichnet, in Zeichen M = VL ({f1 , . . . , fr }) . ¨ber dem K¨ Ist M die Variet¨ at der gemeinsamen Nullstellen von f1 , . . . , fr in L , so ist M sogar die Variet¨ at der gemeinsamen Nullstellen aller Polynome des Ideals I = f1 , . . . , fr ⊆ K[x1 , . . . , xn ] in L . Man bezeichnet deshalb M auch als Variet¨ at von I in L , in Zeichen M = VL (I) und nennt die Elemente von M Nullstellen von I . Da jeder K¨orper nur die trivialen Ideale 0 und K enth¨ alt, ist er insbesondere ein noetherscher Ring. Nach Hilbert (vgl. den Abschnitt u ¨ber Ideale) ist also K[x1 , . . . , xn ] ein noetherscher Ring. Deshalb kann man jede Variet¨at M als Variet¨ at eines Ideals I auffassen, denn jedes Ideal ist ja endlich erzeugt. Nun seien M := VL (I) und N := VL (J) die zu den von F = {f1 , . . . , fr } und G = {g1 , . . . , gs } erzeugten Idealen I = F und J = G ¨ geh¨origen Variet¨aten. Bei den folgenden Uberlegungen werden die in 2.4.9 zusammengestellten Eigenschaften von Idealen verwendet. Falls I ⊂ J ist, so gilt offensichtlich M ⊇ N , d.h., die Abbildung VL , die jedem Ideal die zugeh¨ orige Variet¨ at zuordnet, kehrt die Inklusion um. Der Fall I J und M = N ist allerdings m¨ oglich: 8.1.1 Beispiel: In Q[x, y] gilt xy x2 y, xy 2 . Beide Ideale haben aber die gleiche Variet¨ at in A2 (C) , n¨ amlich alle Punkte (a1 , a2 ) mit a1 = 0 oder a2 = 0 ( Koordinatenachsen“ in A2 (C) ). ”
306
8 Gr¨ obner-Basen
Der Schnitt M ∩ N der Variet¨ aten M und N ist wieder eine Variet¨ at, n¨ amlich die zu F ∪ G geh¨ orige, in Zeichen VL (F ) ∩ VL (G) = VL (F ∪ G) oder in Idealschreibweise VL (I) ∩ VL (J) = VL (I + J) . Auch die Vereinigung M ∪ N der beiden Variet¨ aten M und N ist wieder eine Variet¨ at, etwa von dem Ideal I ∩ J oder dem Ideal I · J : Ist h ∈ I ∩ J , so gilt h(m) = 0 f¨ ur alle m ∈ M und h(n) = 0 f¨ ur alle n ∈ N also zusammen h(m) = 0 f¨ ur alle m ∈ M ∪ N . Das zeigt VL (I ∩ J) ⊇ M ∪ N . Ist dagegen m ∈ M ∪ N , so gibt es ein Polynom f ∈ I mit f (m) = 0 und ein g ∈ J mit g(m) = 0 . Das Polynom f · g ist dann ein Element von I · J mit der Eigenschaft (f · g)(m) = 0 . Dies zeigt VL (I · J) ⊆ M ∪ N . Wegen I · J ⊆ I ∩ J und der die Inklusion umkehrenden Eigenschaft von VL , gilt also M ∪ N ⊇ VL (I · J) ⊇ VL (I ∩ J) ⊇ M ∪ N. Es gilt also bei allen drei Inklusionen das Gleichheitszeichen. F¨ ur die Basen heißt das: VL (F )∪VL (G) = VL (F ·G) , wobei F ·G die Menge aller Produkte von Elementen aus F und G bedeutet. L¨asst sich eine Variet¨ at M auf diese Weise als Vereinigung zweier nichtleerer und echter Teilvariet¨ aten M1 und M2 darstellen, so heißt sie reduzibel (¨ uber dem Grundk¨ orper K ), sonst irreduzibel. 8.1.2 Beispiel: Die Variet¨ at VC (xy) von xy ⊆ Q[x, y] ist reduzibel, denn sie ist die Vereinigung der Variet¨ aten VC (x) und VC (y) der Ideale x und y . Wie bereits gezeigt, kann eine Variet¨ at M durchaus das Nullstellengebilde verschiedener Ideale sein. Die Teilmenge I(M ) := {f ∈ K[x1 , . . . , xn ],
f (a) = 0 f¨ ur alle a ∈ M ⊆ An (L)}
von K[x1 , . . . , xn ] ist, wie sich leicht nachpr¨ ufen l¨ asst, ein Ideal das seinerseits auch wieder die Variet¨ at M besitzt, d.h. es gilt VL (I(M )) = M . Die Inklusion VL (I(M )) ⊇ M ist klar nach Definition. Ist M = VL ({f1 , . . . , fs }) , so gilt insbesondere f1 , . . . , fs ⊆ I(M ) und damit VL (f1 , . . . , fs ) = M ⊇ VL (I(M )) , also die andere Inklusion. Das Ideal I(M ) heißt das zu M geh¨orige Ideal. F¨ ur zwei Variet¨ aten M, N ⊂ An (L) weist man leicht nach: (i) M ⊆ N ⇐⇒ I(M ) ⊇ I(N ) und M = N ⇐⇒ I(M ) = I(N ) , (ii) I(M ∪ N ) = I(M ) ∩ I(N ) . oßtm¨ ogliDie Abbildung I weist also einer Variet¨ at M ⊆ An (L) das gr¨ che zugeh¨orige Ideal in K[x1 , . . . , xn ] zu und kehrt dabei die Inklusion um. Erkl¨art man I sogar f¨ ur beliebige Teilmengen (also nicht nur f¨ ur Variet¨aten) S ⊆ An (L) , so ist VL (I(S)) die kleinste Variet¨ at, die die Menge S enth¨alt. Ist n¨amlich M ⊆ An (L) eine beliebige Variet¨ at mit M ⊇ S , so folgt I(M ) ⊆ I(S) und damit VL (I(M )) ⊇ VL (I(S)) .
8.1 Variet¨ aten und Ideale
307
Da die Abbildung VL ◦ I Teilmengen S ⊆ An (L) zu Variet¨ aten in An (L) abschließt“, nennt man S := VL (I(S)) auch den Zariski” Abschluss von S . Der affine Raum An (L) mit den Variet¨ aten als abgeschlossenen Mengen (Zariski-Topologie) ist ein topologischer Raum. 8.1.3 Satz: Eine Variet¨at M ist genau dann irreduzibel, wenn das zugeh¨orige Ideal I(M ) ein Primideal ist. Beweis: ⇐ “ Sind M1 und M2 echte Teilvariet¨ aten von M mit M = M1 ∪ ” M2 ⇐⇒ I(M ) = I(M1 ) ∩ I(M2 ) und I(M ) = I(M1 ), I(M2 ) , so gibt es Polynome f ∈ I(M1 ) \ I(M ) und g ∈ I(M2 ) \ I(M ) . F¨ ur diese Polynome gilt f · g ∈ I(M ) aber f, g ∈ I(M ) , d.h. I(M ) ist nicht prim. ⇒ “ Ist M irreduzibel und f · g ∈ I(M ) mit f, g ∈ I(M ) , so setzt man ” M1 := {a ∈ An (L), f (a) = 0} und M2 := {a ∈ An (L), g(a) = 0} . Da aus f (a) · g(a) = 0 folgt, dass f (a) = 0 oder g(a) = 0 ist, heißt das M = M1 ∪ M2 . Da M1 und M2 echte Teilvariet¨ aten von M (f, g ∈ I(M )) sind, ist das ein Widerspruch zur Irreduzibilit¨ at von M . 8.1.4 Satz: Sind M, M1 , M2 Variet¨aten mit M ⊆ M1 ∪ M2 und irreduziblem M , so gilt M ⊆ M1 oder M ⊆ M2 . Beweis: Aus M ⊆ M1 ∪ M2 folgt I(M ) ⊇ I(M1 ) ∩ I(M2 ) . Ist weder I(M1 ) ⊆ I(M ) noch I(M2 ) ⊆ I(M ) , so gibt es f ∈ I(M1 ) \ I(M ) und g ∈ I(M2 ) \ I(M ) mit f · g ∈ I(M1 ) ∩ I(M2 ) ⊆ I(M ) also auch mit f (m) · g(m) = 0 f¨ ur alle m ∈ M . Daraus folgt f ∈ I(M ) oder g ∈ I(M ) im Widerspruch zur Voraussetzung. Ist M eine Menge von Variet¨ aten in An (L) , so besitzt M bzgl. Inklusion ein minimales Element, denn die Menge zugeh¨ origer Ideale besitzt ein maximales Element (da K[x1 , . . . , xn ] noethersch ist) und die Abbildung I dreht die Inklusion um. Diese Vor¨ uberlegung f¨ uhrt auf 8.1.5 Satz: (Zerlegung von Variet¨ aten) Jede u ¨ ber K definierte Variet¨at M l¨asst sich als Vereinigung von endlich vielen u ¨ ber K irreduziblen Variet¨aten darstellen. Beweis: G¨abe es Variet¨ aten, die sich nicht als Vereinigung von irreduziblen Variet¨aten darstellen lassen, so h¨ atte diese Menge von Variet¨ aten nach Vor¨ uberlegung ein minimales Element M . Da M nicht als Vereinigung von irreduziblen Variet¨ aten darstellbar ist und folglich auch selbst nicht irreduzibel ist, gibt es zwei echte Teilvariet¨ aten M1 und M2 mit M = M1 ∪ M2 . Wegen M1 , M2 ⊂ M und der Minimalit¨ at von M sind M1 und M2 sehr wohl als Vereinigungen irreduzibler Variet¨ aten darstellbar, was die Annahme zum Widerspruch f¨ uhrt.
308
8 Gr¨ obner-Basen
Folgerung: Ist M = M1 ∪ . . . ∪ Mr , so folgt f¨ ur die zugeh¨ origen Ideale nach den hergeleiteten Rechenregeln I(M ) = I(M1 ∪ . . . ∪ Mr ) = I(M1 ) ∩ . . . ∩ I(Mr ) . Die Ideale I(M1 ), . . . , I(Mr ) sind dabei nach Satz 8.1.3 Primideale, da die Variet¨ aten M1 , . . . , Mr nach Voraussetzung irreduzibel sind. Es gilt also: Jedes zu einer Variet¨ at geh¨ orige Ideal l¨ asst sich als Schnitt von Primidealen darstellen.∗ Eine Teilmenge S des Erweiterungsk¨ orpers L von K heißt transzendent u angig ¨ber K , wenn jede endliche Teilmenge von S algebraisch unabh¨ u ¨ber K ist. Eine u ¨ber K transzendente Teilmenge B von L heißt eine Transzendenzbasis von L : K , wenn L : K(B) algebraisch ist. In der Algebra-Vorlesung wird gezeigt (vgl. etwa [Me2]), dass solche Transzendenzbasen existieren und dass je zwei Transzendenzbasen die gleiche M¨ achtigkeit haben. Diese M¨achtigkeit heißt der Transzendenzgrad von L : K in Zeichen Trg(L : K) := |B| . M¨ochte man sich beim Arbeiten mit Variet¨ aten von Idealen nicht jedesmal Gedanken u orper L von K machen, so setzt man ¨ber den Oberk¨ L zweckm¨aßig als so genannten Universalk¨orper u ¨ber K voraus, d.h. man setzt voraus, dass L unendlichen Transzendenzgrad u ¨ber K hat und algebraisch abgeschlossen ist. Man kann L etwa aus K gewinnen, indem man zuerst abz¨ ahlbar unendlich viele Unbestimmte y1 , y2 , . . . zu K adjungiert und dann algebraisch abschließt. Zum Arbeiten mit einem einzelnen Ideal reicht zwar immer schon eine K¨orpererweiterung K(α1 , . . . , αm ) mit endlich vielen Elementen α1 , . . . , αm aus einem Oberk¨ orper von K aus, solch eine K¨ orpererweiterung l¨ asst sich aber immer isomorph in einen Universalk¨ orper L u ¨ber K einbetten: 8.1.6 Satz: Jede K¨orpererweiterung K(α1 , . . . , αm ) mit endlich vielen Elementen α1 , . . . , αm aus einem Oberk¨orper von K kann isomorph in einen Universalk¨orper L u ¨ ber K eingebettet werden. Beweis: Die Elemente α1 , . . . , αm seien so nummeriert, dass α1 , . . . , αr mit r ≤ m algebraisch unabh¨ angig u ¨ber ¨ber K sind und αr+1 , . . . , αm u K(α1 , . . . , αr ) algebraisch sind. angig u Nun w¨ahlt man α1 , . . . , αr ∈ L algebraisch unabh¨ ¨ber K . Dies ist wegen des unendlichen Transzendenzgrades von L u oglich. ¨ber K m¨ Dann gibt es einen Isomorphismus ϕ : K(α1 , . . . , αr ) → K(α1 , . . . , αr ) , uhrt. der die Elemente von K festl¨ asst und αi f¨ ur i = 1, . . . , r in αi u ¨berf¨ ∗
Wegen dieser Sonderstellung der Nullstellengebilde von Primidealen werden von manchen
Autoren nur diese Variet¨ aten genannt, die Nullstellengebilde beliebiger Ideale werden dort einfach Nullstellengebilde“ oder auch algebraische Mengen“ genannt. ” ”
8.1 Variet¨ aten und Ideale
309
Ist r = n , so ist der Beweis hiermit beendet. Es sei also r < n . Dann ist αr+1 Wurzel eines Polynoms f (x) ∈ K(α1 , . . . , αr )[x] . Durch Abbildung der Koeffizienten von f (x) mit dem Isomorphismus ϕ erh¨ alt man nun ein Polynom f (x) ∈ K(α1 , . . . , αr )[x] mit einer Wurzel αr+1 ∈ L. Damit l¨asst sich der Isomorphismus ϕ fortsetzen zu einem Isomorphismus ϕ : K(α1 , . . . , αr+1 ) → K(α1 , . . . , αr+1 ).
Fortsetzung dieses Verfahrens f¨ uhrt auf den gew¨ unschten Isomorphismus ψ : K(α1 , . . . , αn ) → K(α1 , . . . , αn ) .
Ist a ∈ An (L) eine Nullstelle des Ideals I , so heißt a allgemeine Nullstelle von I , wenn gilt: f ∈ I ⇐⇒ f (a) = 0 . Durch jeden Punkt a ∈ An (L) wird eindeutig das Ideal I := I({a}) ⊂ K[x1 , . . . , xn ] definiert, welches diesen Punkt als allgemeine Nullstelle besitzt. Da dieses Ideal offensichtlich das Einselement nicht enth¨ alt, ist es vom gesamten Ring verschieden. Das so definierte Ideal ist sogar ein Primideal, denn ist f · g ∈ I , also f (a) · g(a) = 0 , so ist f (a) = 0 oder g(a) = 0 und damit f ∈ I oder g∈I. 8.1.7 Beispiel: x ⊆ Q[x, y] hat die allgemeine Nullstelle (0, t) , wobei t eine neue Unbestimmte ist, d.h. ein von x und y verschiedenes transzendentes Element aus L , denn es gilt f ∈ x ⇐⇒ f (0, t) = 0. x ist ein Primideal, die zugeh¨ orige Variet¨ at M ist irreduzibel. Die Punkte von M entstehen alle durch Einsetzen von√Werten f¨ ur t in die allgemeine Nullstelle, also etwa (0, 1), (0, i), (0, 3 2), . . . 8.1.8 Satz: Es seien a ∈ An (L) und I := I({a}) das Primideal mit der allgemeinen Nullstelle a . Dann gilt K[x1 , . . . , xn ]/I ∼ = K[a1 , . . . , an ] und damit auch die Isomorphie der zugeh¨origen Quotientenk¨orper. Beweis: Die bereits eingef¨ uhrte Abbildung * K[x1 , . . . , xn ] → L φa : f → f (a) = f (a1 , . . . , an ) ist offensichtlich ein Ringhomomorphismus mit Kern φa = I und Bild φa = K[a1 , . . . , an ] . Damit folgt die Behauptung aus dem Homomorphiesatz. Da I prim ist, handelt es sich um Integrit¨ atsbereiche, man darf also Quotientenk¨orper bilden, die dann nat¨ urlich auch isomorph sind. 8.1.9 Satz: Es sei L Universalk¨orper u ¨ ber K . Dann besitzt jedes Primideal I = K[x1 , . . . , xn ] eine allgemeine Nullstelle a in An (L) .
310
8 Gr¨ obner-Basen
Beweis: Es sei φ : K[x1 , . . . , xn ] → K[x1 , . . . , xn ]/I der kanonische Epimorphismus. Benennt man die Nebenklassen von x1 , . . . , xn um in a1 := φ(x1 ), . . . , an := φ(xn ) , so gilt: f ∈ Kern φ = I ⇐⇒ φ(f ) = 0 ⇐⇒ f (a1 , . . . , an ) = 0. Da der Restklassenring K[x1 , . . . , xn ]/I = 0 und nullteilerfrei ist ( I ist prim !), l¨ asst sich der Quotientenk¨ orper bilden. Die Nebenklassen a1 , . . . , an lassen sich so als Elemente eines Erweiterungsk¨ orpers von K deuten, der sich seinerseits isomorph in einen Universalk¨ orper L einbetten l¨asst. Damit ist a = (a1 , . . . , an ) eine allgemeine Nullstelle von I . Wenn jedes von K[x1 , . . . , xn ] verschiedene Primideal in An (L) eine allgemeine Nullstelle a besitzt, so ist also das einzige Primideal ohne allgemeine Nullstelle das Einheitsideal 1 = K[x1 , . . . , xn ] . Es gilt sogar allgemeiner: 8.1.10 Satz: Es sei L Universalk¨orper u ¨ ber K. Besitzt ein Ideal I in K[x1 , . . . , xr ] keine Nullstelle a ∈ An (L) , so ist I = K[x1 , . . . , xn ] . Beweis: Angenommen, das Ideal I = K[x1 , . . . , xn ] hat keine Nullstelle. Da der Ring K[x1 , . . . , xn ] noethersch ist, gibt es dann ein maximales Ideal I ⊇ I das ebenfalls keine Nullstelle besitzt und von K[x1 , . . . , xn ] verschieden ist. In einem kommutativen Ring mit 1 ist jedes maximale Ideal prim. Damit ist I prim und hat nach dem vorhergehenden Satz im Widerspruch zur Annahme eine allgemeine Nullstelle. F¨ ur diese Aussage reicht statt eines Universalk¨ orpers L u ¨ber K ein u orper L (vgl. etwa [CLO]), der Be¨ber K algebraisch abgeschlossener K¨ weis wird dann allerdings etwas aufw¨ andiger. Der vorliegende Satz mit dieser Voraussetzung wird auch als schwacher Nullstellensatz bezeichnet. Folgerung: F¨ ur Polynome f1 , . . . , fr ∈ K[x1 , . . . , xn ] und u ¨ber K algebraisch abgeschlossenes L heißt das: f1 , . . . , fr haben keine gemeinsame Nullstelle in An (L) ⇐⇒ 1 ∈ f1 , . . . , fr Die Aussage des letzten Satzes l¨ asst sich nun noch verallgemeinern zu dem so genannten Hilbertschen Nullstellensatz: 8.1.11 Satz: (Hilbertscher Nullstellensatz) Ist f ∈ K[x1 , . . . , xn ] ein Polynom, das in allen gemeinsamen Nullstellen der Polynome f1 , . . . , fr ∈ K[x1 , . . . , xn ] in An (L) ( L algebraisch abgeschlossen u mit ¨ ber K ) verschwindet, so gilt: Es gibt ein q ∈ f q ∈ f1 , . . . , fr .
N
Beweis: Der Beweis wird mit Hilfe eines Kunstgriffs gef¨ uhrt der diesen Satz auf die vorhergehende Folgerung zur¨ uckf¨ uhrt. Die gezeigte Vorgehensweise wird sp¨ater genauso mit Hilfe von Gr¨ obner-Basen auch angewandt: Ist f = 0 , so ist die Behauptung klar, es sei also f = 0 .
8.1 Variet¨ aten und Ideale
311
Zu den bereits benutzten Unbekannten x1 , . . . , xn nimmt man eine neue Unbekannte z dazu. Nun betrachtet man die Polynome f1 , . . . , fr+1 mit fr+1 := 1 − z · f . Eine gemeinsame Nullstelle von f1 , . . . , fr+1 ist insbesondere eine gemeinsame Nullstelle von f1 , . . . , fr . Da nach Voraussetzung auch f diese Nullstelle besitzt, ist fr+1 an dieser Stelle immer gleich 1 , also von Null verschieden. Damit haben f1 , . . . , fr+1 keine gemeinsame Nullstelle in An+1 (L) , es gilt nach der vorangegangenen Folgerung 1 ∈ f1 , . . . , fr+1 ⊆ K[x1 , . . . , xn , z]. Es gibt also Polynome g1 , . . . , gr+1 ∈ K[x1 , . . . , xn , z] mit 1=
n
gi fi = g1 f1 + . . . + gr fr + gr+1 (1 − zf ).
i=1
Die gi h¨angen dabei im Gegensatz zu den fi auch von z ab. Substituiert man also z = f1 in diese Gleichung, so f¨ allt der letzte Summand weg und in den gi erh¨alt man Potenzen von f1 . Multipliziert man diese Gleichung mit der h¨ochsten in einem Nenner vorkommenden Potenz von f , so erh¨ alt man f q = h1 f1 + . . . + hr fr mit hi = gi (x1 , . . . , xn , f1 )f q ∈ K[x1 . . . . , xn ] oder f q ∈ f1 , . . . , fr ⊆ K[x1 , . . . , xn ].
N
Gibt es umgekehrt ein q ∈ mit f q ∈ f1 , . . . , fr , so verschwindet q trivialerweise f und damit auch f auf allen gemeinsamen Nullstellen von f1 , . . . , fr . ur ein q ∈ ist gerade Die Menge aller f ∈ R mit √ f q ∈ f1 , . . . , fr f¨ das in 2.4.9 definierte Radikal I des Ideals f1 , . . . , fr . F¨ ur einen u ¨ber K algebraisch abgeschlossenen K¨ orper L l¨ asst sich das Radikal eines Ideals I ∈ K[x1 , . . . , xn ] nach dem Hilbertschen Nullstellensatz auch in der Form √ I = {f ∈ K[x1 , . . . , xn ] ; f (a) = 0 f¨ ur alle a ∈ VL (I)}
N
schreiben. Mit den bereits eingef¨ uhrten Bezeichnungen heißt das: √ I = I(VL (I)). Dies wird auch als der starke Nullstellensatz bezeichnet. √ √ F¨ ur ein beliebiges Ideal I ⊆ R gilt I ⊇ I . Ein Ideal I ⊆ R mit I = "√ √ I heißt Radikalideal. Wegen I = I ist insbesondere jedes Radikal ein Radikalideal.
312
8 Gr¨ obner-Basen
Zusammenfassung: (i) F ⊂ G ⊂ K[x1 , . . . , xn ] ⇒ VL (G) ⊂ VL (F ) (ii) F , G ⊂ K[x1 , . . . , xn ] ⇒ VL (F ) ∪ VL (G) = VL (F · G) = VL (F ∩ G) (iii) F , G ⊂ K[x1 , . . . , xn ] ⇒ VL (F ) ∩ VL (G) = VL (F ∪ G) aten ⇒ I(M1 ) ⊃ I(M2 ) (iv) M1 ⊂ M2 ⊂ An (L) Variet¨ aten ⇒ I(M1 ∪ M2 ) = I(M1 ) ∩ I(M2 ) (v) M1 , M2 ⊂ An (L) Variet¨ (vi) F¨ ur jedes Ideal I ⊂ K[x1 , . . . , xn ] gilt ( L algebraisch abgeschlossen): √ I(VL (I)) = I (vii) F¨ ur jede Variet¨ at M ⊂ An (L) gilt: VL (I(M )) = M .
8.2 Reduktionen modulo Polynomidealen Es seien K ein K¨ orper und R = K[x1 , . . . , xn ] = K[X] ein Polynomring u orper (Schreibweisen wie im Abschnitt u ¨ber diesem K¨ ¨ber Polynome eingef¨ uhrt). Weiterhin sei < eine zul¨ assige Ordnungsrelation auf Term(X) . Jedes Polynom f (X) ∈ K[X] sei in seiner zugeh¨ origen kanonischen Normalform f (X) =
m
aJi X Ji mit aJi ∈ K \ {0} f¨ ur i = 0, . . . , m
i=0
und X J0 < X J1 < . . . < X Jm dargestellt. Sind f1 , . . . , fs ∈ K[X] , E := {f1 , . . . , fs } und I := E , so gilt nat¨ urlich fi ≡ 0 mod I f¨ ur beliebiges i ∈ {1, . . . , s} . und damit auch fi fi ≡ 0 mod I ⇐⇒ LT(fi ) − ≡ LT(fi ) mod I LK(fi ) LK(fi )
.
fi Die in LT(fi ) − LK(f vorkommenden Terme sind dabei bez¨ uglich der i) Ordnungsrelation < kleiner, als LT(fi ) falls fi = 0 ist. Ein Term X L = x11 · . . . · xnn heißt Vielfaches des Terms X J = xj11 · . . . · xjnn wenn f¨ ur i = 1, 2, . . . , n gilt i ≥ ji . Ist ein m := aX L ∈ K[X] gegeben und X L Vielfaches von einem LT(fi ) , also etwa X L = LT(fi ) · X L , so gilt: fi L L L mod I m = aX = aX · LT(fi ) ≡ aX · LT(fi ) − LK(fi ) fi ≡ m − aX L · mod I . LK(fi )
F¨ ur X L ∈ Term(X; f ) gilt entsprechend
8.2 Reduktionen modulo Polynomidealen
313
fi f ≡ f − aX L · mod I LK(fi )
=:g
Dies f¨ uhrt auf die folgende Definition: 8.2.1 Definition: f, fi = 0
Mit den eingef¨ uhrten Bezeichnungen schreibt man f¨ ur f −→ fi g [m]
und sagt: f reduziert sich zu g modulo fi durch Elimination von m ¨ Ublicherweise wird man dabei f¨ ur a den Koeffizienten von X L in f w¨ahlen, dies ist aber nicht zwingend: 8.2.2 Beispiel: Das Polynom 2x2 y 2 ist Vielfaches beider Leitterme der Idealbasis E = {f1 := x2 y − x, f2 := xy 2 − 1} in Q[x, y] (bzgl. jeder der drei meistverwendeten Ordnungsrelationen). Damit ergeben sich u.a. die folgenden m¨ oglichen Reduktionen: Wegen x2 y 2 = y(x2 y) −→ y x2 y − (x2 y − x) [x2 y 2 ] = y(x) = xy f1 x2 y 2 = x(xy 2 ) −→ x xy 2 − (xy 2 − 1) [x2 y 2 ] = x(1) = x f2 gilt etwa 2x2 y 2 −→ 2xy [2x2 y 2 ] f1 2 2 2x y −→ 2x [2x2 y 2 ] f2 2 2 2 2 2x y −→ x + x y [x2 y 2 ] −→ x + xy [x2 y 2 ] f2 f1 8.2.3 Definition: L (i) Gibt es ein X L ∈ Term(X; f ) und a ∈ K mit f −→ fi g[aX ] , so schreibt man auch f −→ fi g und sagt: f reduziert sich zu g modulo fi . (ii) Gibt es ein fi ∈ E mit f −→ fi g , so schreibt man f −→ E g und sagt: f reduziert sich zu g modulo E . Das Tupel (K[X], −→ ist ein Umformungssystem. Die Schreibweisen E ) ∗ ∗ −→ , ←− , ↓ und g werden sinngem¨ aß aus dem Abschnitt u ¨ber UmE E E E formungssysteme f¨ ur die Relation −→ bernommen. E 8.2.4 Beispiel: Es seien f1 (x, y) = x2 y−3y 2 +2y , f2 (x, y) = y 2 −2x , E = {f1 , f2 } und I = E ⊂ Q[x, y] . Weiterhin sei g(x, y) = x4 − 2x2 y 2 + 5y 3 + x (alle Polynome nach Gesamtgrad und dann lexikographisch mit x > y sortiert). Bez¨ uglich der gegebenen Ordnungsrelation ist LT(f1 ) = x2 y und LT(f2 ) = y 2 . Damit kann g z.B. auf die folgenden Weisen modulo E reduziert werden:
314
8 Gr¨ obner-Basen
g −→ f1 = −→ f2 = −→ f2 =
x4 − 2x2 y 2 + 5y 3 + x + 2y(x2 y − 3y 2 + 2y)[−2x2 y 2 ] x4 − y 3 + 4y 2 + x x4 − y 3 + 4y 2 + x + y(y 2 − 2x)[−y 3 ] x4 − 2xy + 4y 2 + x x4 − 2xy + 4y 2 + x − 4(y 2 − 2x)[4y 2 ] x4 − 2xy + 9x =: g1 (x, y)
oder g −→ f2 = g −→ f2 =
x4 − 2x2 y 2 + 5y 3 + x + 2x2 (y 2 − 2x)[−2x2 y 2 ] x4 − 4x3 + 5y 3 + x x4 − 4x3 + 5y 3 + x − 5y(y 2 − 2x)[5y 3 ] x4 − 4x3 + 10xy + x =: g2 (x, y)
Die Polynome g1 und g2 sind in Normalform bez¨ uglich −→ , da E weder in Term(X; g1 ) , noch in Term(X; g2 ) Vielfache von LM(f1 ) oder LM(f2 ) enthalten sind. ∗ ∗ g −→ g1 E mit g1 E = g2 E vor, d.h. −→ Damit liegt hier der Fall g2 E ←− E E E ist nicht konfluent. Ist S also ein Algorithmus, der jedem Element g ein g E zuordnet, so ist dieser Normalform-Algorithmus f¨ ur das E aus dem vorhergehenden Beispiel kein kanonischer Simplifikator. Als Programm k¨ onnte die Reduktion eines Polynom modulo eines anderen Polynoms in Normalform etwa wie folgt aussehen: Vollst¨ andige Reduktion bzgl {g} procedure RedPolPol( f, g ) count ← 1 f ← f while count = 1 do count ← 0 for X I in Term(X; f ) do if LT(g)|X I then a ← Koeffizient von X I in f I f ← h mit f −→ g h[aX ] count ← 1 end if end do end do Return ( f ) end
# Eingabe: f, g ∈ K[X] , # Ausgabe: f {g} mit f −→ g f
Das folgende Beispiel zeigt, dass ein einmaliger Durchlauf des vorhergehenden Algorithmus pro Basiselement im allgemeinen nicht gen¨ ugt. 8.2.5 Beispiel: Es seien f1 = yz +2y , f2 = xy 2 +xyz und f = x2 y 2 (alle nach Gesamtgrad, dann lexikographisch mit x > y > z sortiert). Das Polynom f ist bereits vollst¨ andig bez¨ uglich f1 reduziert.
8.2 Reduktionen modulo Polynomidealen
315
Da das Leitmonom x2 y 2 ein Vielfaches des Leitmonoms xy 2 von f2 ist, ergibt sich 2 2 2 f −→ f2 x y − x · f2 = −x yz . Das Ergebnis ist jetzt nicht mehr reduziert bez¨ uglich f1 : 2 2 2 −x2 yz −→ f1 −x yz + x f1 = 2x y .
Erst jetzt ist das Ergebnis reduziert bez¨ uglich f1 und f2 . Vollst¨ andige Reduktion bzgl E procedure RedPolBas(f, E) count ← 1 ; f ← f while count=1 do count ← 0 ; f ← f for i from 1 to |E| do f ← RedPolPol( f , fi ) end do if f = f then count ← 1 ; f ← f end if end do Return ( f ) end
# Eingabe: f ∈ K[X] , E ⊆ K[X] # (endlich). # Ausgabe: f E mit f −→ E f .
Ein Ziel beim Rechnen mit Polynomidealen ist es, eine Idealbasis F von I = E zu finden, so dass −→ konfluent und damit der zugeh¨ orige F Normalform-Algorithmus ein kanonischer Simplifikator wird. Solche Basen existieren und werden Standardbasen oder Gr¨ obner-Basen genannt (B. Buchberger betrachtete diese Basen 1965 in seiner Doktorarbeit und benannte sie nach seinem Doktorvater W. Gr¨ obner). 8.2.6 Definition: Eine Basis E = {f1 , . . . , fs } eines Ideals I ⊆ K[X] heißt reduziert bez¨ uglich der zul¨ assigen Ordnungsrelation < , wenn gilt: (i) f1 , . . . , fs sind normiert bzgl. < . ur i = 1, . . . , s . (ii) fi = fi E\{f } f¨ i
F¨ ur das Nullideal I = {0} sei E = ∅ die reduzierte Basis. 8.2.7 Definition: Eine Menge G ⊆ K[X] \ {0} heißt Gr¨obner-Basis des Ideals I = G bzgl. der Ordnungsrelation < , wenn f¨ ur jedes g(x) ∈ K[X] die Normalform modulo G eindeutig ist, d.h. wenn gilt: ∗ ∗ g2 G ←− g −→ g1 G ⇒ g1 G = g2 G G G
Ist G zus¨ atzlich eine reduzierte Basis, so nennt man G reduzierte Gr¨obner-Basis. Die Reduktion einer gegebenen Basis E erledigt das folgende Programm:
316
8 Gr¨ obner-Basen
Reduktion einer Basis procedure RedBas(E) # Eingabe: E ⊆ K[X] (endlich), if E = {0} then Return(∅) end if # Ausgabe: reduziertes E mit # E = E E ← E ; count ← 1 while count=1 do count ← 0 for ei in E do ei ← RedPolBas( ei , E \ {ei } ) if ei = ei then E ← (E \ {ei }) ∪ {ei } ; count ← 1 end if end do E ← E end do D E Return (
f LK(f )
; f ∈ E \ {0} )
end
Eine Menge E ist also genau dann Gr¨ obner-Basis von I = E ⊆ K[X] , wenn die Reduktion −→ des Umformungssystems (K[X], −→ E E ) konfluent ist. Da −→ noethersch ist, ist dies genau dann der Fall, wenn −→ lokal E E konfluent ist, d.h. wenn f¨ ur alle g ∈ K[X] gilt: g2 ←− E g −→ E g1 ⇒ g1 ↓E g2 (vgl. die Folgerung zu Satz 2.3.8). Der zugeh¨orige Normalform-Algorithmus S ist dann ein kanonischer Simplifikator von (K[X], −→ E ) . Es sei TermE (X) := {X J ∈ Term(X) , X J = X JE } die Menge der Terme, die bereits in Normalform bzgl. E vorliegen. Da jedes Polynom, das in Normalform bzgl. E vorliegt, eine Linearkombination von Elementen aus TermE (X) ist, ist TermE (X) ein Erzeugendensystem der Algebra K[X]/E . Diese Erzeugendensystem ist aber i.Allg. nicht linear unabh¨angig, wie bereits im vorhergehenden Beispiel durchgerechnet wurde. 8.2.8 Beispiel: Bez¨ uglich der gegebenen Basis E = {f1 , f2 } aus 8.2.4 ist TermE (xy) = {1, y, xy, x, x2 , x3 , x4 , . . .} . Dies kann man sich graphisch wie folgt verdeutlichen. In einem kartesischen Koordinatensystem identifiziert man jeden ganzzahligen Gitterpunkt (i, j) mit dem Term xi y j . Alle Terme, die Vielfache von LT(f1 ) = x2 y sind, liegen in der nord¨ ostlichen Viertelebene vom Punkt (2, 1) , die Vielfachen von LT(f2 ) = y 2 in der durch (0, 2) gegebenen Viertelebene. Die Punkte im nichtschraffierten Gebiet sind gerade die Elemente von TermE (xy) .
8.3 Der Buchberger-Algorithmus
317
Wegen g1 ≡ g2 mod I ⇐⇒ x4 − 4x3 + 10xy + x ≡ x4 − 2xy + 9x mod I ⇐⇒ 4x3 − 12xy + 8x ≡ 0 mod I folgt die lineare Abh¨ angigkeit von TermE (xy) . Der im folgenden Kapitel vorgestellte Algorithmus von Buchberger wird deshalb praktikabel, weil er sich zum Untersuchen der lokalen Konfluenz auf endlich viele so genannte kritische Paare beschr¨ ankt: 8.2.9 Definition: Sind X I = xi11 · . . . · xinn = LT(fi ) und X J = xj11 · . . . · xjnn = LT(fj ) die Leitterme der Polynome fi , fj ∈ E , so heißt der Term X L = x11 · . . . · xnn mit k := max(ik , jk ) f¨ ur k = 1, . . . , n kleinstes gemeinsames Vielfaches dieser beiden Leitterme, i.Z. X L = kgV (LT(fi ), LT(fj )) . Das Paar fi fj L−I L−J X · (LT(fi ) − · (LT(fj ) − ), X ) LK(fi ) LK(fj ) heißt dann kritisches Paar bzgl. E . Die Differenz der beiden Komponenten des kritischen Paars heißt S-Polynom SP(fi , fj ) von fi und fj . 8.2.10 Beispiel: Es seien f (x, y) := x3 y 2 − x2 y 3 + x und g(x, y) := x4 y + 1 2 3 y ∈ Q[x, y] . Dann ist (bzgl. der lexikographischen Ordnung) kgV (LT(f ), LT(g)) = kgV x3 y 2 , x4 y = x4 y 2 ein Polynom, das sich auf zwei Arten bez¨ uglich der Ideal-Basis E = {f, g} reduzieren l¨ asst, n¨ amlich gerade in die zwei Komponenten eines kritischen Paares: ; * x(x2 y 3 − x) = x3 y 3 − x3 x(x3 y 2 ) −→ f x4 y 2 = ⇒ y(x4 y) −→ y(− 13 y 2 ) = − 13 y 3 g 1 SP(f, g) = x3 y 3 − x3 + y 3 3 Da sowohl x3 y 3 − x3 , als auch − 13 y 3 kongruent zu x4 y 2 modulo I = E sind, ist SP(f, g) ≡ 0 mod I .
8.3 Der Buchberger-Algorithmus W¨are −→ konfluent, so w¨ urden sich beide Komponenten eines jeden kritiE schen Paares zu einem gemeinsamen Nachfolger reduzieren lassen, d.h. das zugeh¨orige S-Polynom m¨ usste sich zu Null reduzieren. Tut es dies nicht, so liegt es nahe, die vorliegende Basis um eine Normalform dieses S-Polynoms zu erweitern.
318
8 Gr¨ obner-Basen
Es ist klar, dass f¨ ur die neue Basis E gilt: E = E = I . Mit dieser neuen Basis verf¨ ahrt man nun entsprechend weiter, bis sich wirklich alle S-Polynome zu Null reduzieren. Mit dieser Vorgehensweise stellen sich die folgenden Fragen (F1) Bricht dieser Algorithmus f¨ ur jedes Ideal I ⊆ K[X] und jede vorgegebene Idealbasis E von I nach endlich vielen Schritten ab? (F2) Wenn (F1) mit ja“ beantwortet werden kann: Ist die nach Ablauf des ” Algorithmus vorliegende Idealbasis eine Gr¨ obner-Basis ? Beide Fragen k¨onnen mit ja“ beantwortet werden, wie im Folgenden ge” zeigt wird. Entscheidend f¨ ur die Endlichkeit des Buchberger-Algorithmus ist die Tatsache, dass das in einem Schritt zur vorgegebenen Idealbasis E hinzugef¨ ugte S-Polynom bzgl. E reduziert ist, d.h. insbesondere, dass der Leitterm des S-Polynoms nicht Vielfaches von einem Leitterm der Polynome in E ist. Der folgende Satz zeigt, dass so etwas nur endlich oft geht: I
I
I
I
8.3.1 Satz: Hat eine Folge f1 = x11,1 · . . . · xn1,n , f2 = x12,1 · . . . · xn2,n , . . . von Termen die Eigenschaft, dass kein fk Vielfaches eines fr¨ uheren fm (1 ≤ m < k) ist, so ist diese Folge endlich. Beweis: Induktion nach der Variablenanzahl N : I I N = 1 : F¨ ur die Exponenten in f1 = x11,1 , f2 = x12,1 , . . . muss gelten I1,1 > I2,1 > . . . . Diese Folge ganzer Zahlen ist durch 0 nach unten beschr¨ ankt, also endlich. Es sei nun N > 1 und der Satz gelte also f¨ ur alle n < N . F¨ ur den I I Induktionschritt zu N betrachtet man die Folge, die mit x11,1 · . . . · xN1,N I,1 I,N beginnt. F¨ ur f = x1 · . . . · xN gilt dann f¨ ur mindestens ein i (1 ≤ i ≤ N ) : I,i < I1,i . Es seien i1 , . . . , ik (1 ≤ k ≤ N, 1 ≤ ij ≤ N f¨ ur j = 1, . . . , k, ij = im f¨ ur j = m) Indizes, in denen I,ij < I1,ij gilt. Es gibt endlich viele M¨ oglichkeiten solch ein k-Tupel (i1 , . . . , ik ) auszuw¨ahlen und zu jedem dieser k-Tupel gibt es nur endlich viele k-Tupel (I,i1 , . . . , I,ik ) , die die Voraussetzung I,ij < I1,ij f¨ ur j = 1, . . . , k erf¨ ullen, denn die Exponenten sind ja durch Null nach unten beschr¨ ankt. Nennt man das k-Tupel von Exponenten (I,i1 , . . . , I,ik ) den Typ von ” f “, so ist damit gezeigt, dass es in der Folge f1 , f2 , . . . nur endlich viele verschiedene Typen gibt. Eine unendliche Folge mit der geforderten Eigenschaft kann es also nur geben, wenn es eine unendliche Teilfolge von Termen gleichen Typs in ihr gibt. Nun betrachtet man diese unendliche Teilfolge. Da alle Elemente dieser Folge in den Exponenten von xi1 , . . . , xiN u ¨bereinstimmen, streicht man diese Variablen und erh¨ alt eine unendliche Folge f1 , f2 , . . . , in der kein fk Vielfaches eines fr¨ uheren fm (1 ≤ m < k) ist, in den N − k Variablen xi mit i ∈ {1, . . . , N } \ {i1 , . . . , ik } . Wegen N − k < N ist diese Folge im Widerspruch zur Annahme nach Induktionsvoraussetzung endlich.
8.3 Der Buchberger-Algorithmus
319
Sind in K[X] die Terme erst nach Grad und dann lexikographisch geordnet, so kann man diesen bei 1 beginnend der Gr¨ oße nach jeweils eine nat¨ urliche Zahl, ihre sog. Ordnungsnummer zuordnen, in K[x, y, z] mit x > y > z etwa ord(1) = 1 , ord(z) = 2 , ord(y) = 3 , ord(x) = 4 , ord(z 2 ) = 5 , ord(yz) = 6 , . . . usw. Der folgende Beweis arbeitet mit Induktion nach dieser Ordnungszahl, setzt also eine Ordnung nach Gesamtgrad voraus. Der Beweis l¨ asst sich f¨ ur andere vertr¨ agliche Ordnungen entsprechend anpassen, dies soll hier aber nicht ausgef¨ uhrt werden (siehe auch den Zusammenhang der Ordnungen u ¨ber die Ordnungsmatrizen!). Im Fall von 2 Variablen x und y und der Ordnung nach dem Gesamtgrad gibt die Ordnungsnummer gerade die Stellung in einer Art Pascalschem Dreieck an: 1 x x2 3
x
y y2
xy 2
x y .. .
xy .. .
2
y3
8.3.2 Satz: Es sei G = {g1 , . . . , gu } eine nach den endlich vielen Schritten des Algorithmus von Buchberger vorliegende Idealbasis von I = E ⊆ K[X] . Dann ist G eine Gr¨obner-Basis von I . Beweis: Zu zeigen ist, dass f G f¨ ur jedes f ∈ K[X] eindeutig ist. Wie angek¨ undigt geschieht dies per Induktion nach der Ordnungszahl des Leitterms von f . Die Induktion startet mit dem Element 1 = x01 · . . . · x0n mit der Ordnungszahl 1 . Dieser Term hat bzgl. jeder Idealbasis die eindeutig bestimmte Normalform 1 , bzw. 0 bzgl. des Nullideals. Dies gilt erst recht bzgl. G . Der Satz gelte also f¨ ur alle Polynome f mit ord(LT(f )) < N ∈ . Nun betrachtet man ein Polynom h mit ord(LT(h)) = N und LK(h) = a ∈ K . Um alle m¨ oglichen Reduktionen von h bzgl. G zu untersuchen, spaltet man das Leitmonom a LT(h) von hauf in a1 LT(h)+. . .+ap LT(h) p mit K¨orperelementen a1 , . . . , ap ∈ K und i=1 ai = a . Nun gibt es drei F¨ alle zu unterscheiden: (i) LT(h) = LT(h)G ist bereits in Normalform
N
(ii) LT(h) ist Vielfaches genau eines LT(gi ) (1 ≤ i ≤ u) (iii) LT(h) ist Vielfaches mehrerer LT(gi ) (1 ≤ i ≤ u) zu (i) Wegen ord(LT(h)) = N ist ord(h − a LT(h)) < N . Da LT(h) bereits in Normalform vorliegt, kann h also nur durch Reduktion von h − a LT(h) reduziert werden. Nach Induktionsvoraussetzung ist h − a LT(h) eindeutig und damit auch hG . G
zu (ii) In diesem Fall wird im Laufe der Reduktion jeder Summand aj LT(h) (1 ≤ j ≤ p) des Leitmonoms a · LT(h) von h irgendwann gi durch das entsprechende Vielfache von aj (LT(gi ) − LK(g ) ersetzt. i)
320
8 Gr¨ obner-Basen
Das Ergebnis ist jeweils ein Polynom mit einem Leitterm mit einer Ordnungsnummer < N und kann damit nach Induktionsvoraussetzung zu einem eindeutig bestimmten Element in Normalform weiter reduziert werden. ur i ∈ {i1 , . . . , ir } (1 < r ≤ zu (iii) Ist LT(h) Vielfaches von LT(gi ) f¨ n, 1 ≤ i ≤ n, i = ik f¨ ur = k ), so kann man a1 LT(h) + . . . + ap LT(h) reduzieren, indem man jeden beliebigen Summanden aj LT(h) (1 ≤ j ≤ p) durch das entsprechende Vielfache von gi aj (LT(gi ) − LK(g ) ersetzt. i )
Jede m¨ogliche Reduktion von a LT(h) ist also gekennzeichnet durch ein p -Tupel von Indizes (I1 , . . . , Ip ) mit nicht notwendig verschiedenen Ij ∈ {i1 , . . . , ir } . Es wird gezeigt, dass ein beliebiges IndexTupel I1 , . . . , Ip dabei im Endeffekt auf die gleiche Normalform f¨ uhrt, wie etwa das p -Index-Tupel (i1 , . . . , i1 ) . Da LT(h) Vielfaches der Leitterme von gi1 und gi ist, ist LT(h) auch Vielfaches von k := kgV(LT(gi1 )), LT(gi ) , also etwa LT(h) = v · k . Reduktion von LT(h) liefert also v · k1 und v · k2 , wobei (k1 , k2 ) das zu gi1 und gi geh¨ orige kritische Paar ist, bzw. k1 − k2 = SP(gi1 , gi ) . Da der Buchberger-Algorithmus aber erst abbricht, wenn die Normalformen aller S-Polynome Null sind, heißt das, dass Reduktion von LT(h) mit gi1 und Reduktion mit gi letztendlich zum gleichen Ergebnis f¨ uhrt. Damit ist gezeigt, dass man zu jedem Ideal I in K[X] mit dem Buchbergerschen Algorithmus in endlich vielen Schritten eine Gr¨ obner-Basis G berechnen kann. Ist S der zu dieser Gr¨ obner-Basis geh¨ orige NormalformAlgorithmus ( S(f ) = RedPolBas(f, G) ), so folgt aus der Definition von Gr¨obner-Basen sofort: S(f ) = S(g) ⇐⇒ f ≡ g mod I f ∈ I ⇐⇒ S(f ) = 0. Da der Algorithmus von Buchberger erst stoppt, wenn sich alle SPolynome zu Null reduzieren, ist eine Basis E von I also genau dann eine Gr¨obner-Basis von I , wenn f¨ ur alle f, g ∈ E mit f = g gilt: RedPolBas(SP(f, g), E) = 0 . 8.3.3 Beispiel: Es sei E := {f1 , f2 , f3 } ⊆ Q[x, y, z] mit f1 := x3 yz − xz 2 , f2 := xy 2 z − xyz, f3 := x2 y 2 − z 2 . eine Basis des Ideals I ⊆ Q[x, y, z] . Dann ist (Ordnung nach Gesamtgrad, dann x > y > z ) kgV(LT(f1 ), LT(f2 )) = x3 y 2 z und es gilt
8.3 Der Buchberger-Algorithmus
321
x3 y 2 z −→ x3 y 2 z − y(x3 yz − xz 2 ) = xyz 2 und f1 3 2 x y z −→ x3 y 2 z − x2 (xy 2 z − xyz) = x3 yz 2 . f2 uglich der Basis E Damit ist (xyz 2 , x3 yz 2 ) ein kritisches Paar bez¨ und SP(f1 , f2 ) = xyz 2 − x3 yz 2 = − SP(f2 , f1 ) . asst sich SP(f1 , f2 ) Da x3 yz 2 Vielfaches von LT(f1 ) = x3 yz ist, l¨ reduzieren: 2 3 2 3 2 SP(f1 , f2 ) = xyz 2 − x3 yz 2 −→ f1 xyz − x yz + z(x yz − xz ) =
= xyz 2 − xz 3 . Dieses Polynom ist in Normalform bzgl. E , da offensichtlich keiner seiner zwei Terme Vielfaches von x3 yz, xy 2 z oder x2 y 2 ist. Damit ist E keine Gr¨ obner-Basis von I . Die beiden Terme xyz 2 und xz 3 von SP(f1 , f2 ) sind Elemente von TermE (xyz) , die wegen SP(f1 , f2 ) ≡ 0 mod I linear abh¨ angig in der Q -Algebra Q[x, y, z]/I sind. Mit dem folgenden Algorithmus l¨ asst sich eine Gr¨ obner-Basis eines Ideals I = E in endlich vielen Schritten berechnen: Berechnung einer Gr¨ obner-Basis procedure Gr¨ obner( E ) G←E P ← {{f, g} , f, g ∈ G , f = g} while P = ∅ do w¨ ahle ein {f, g} ∈ P P ← P \ {{f, g}} h ← SP(f, g) h ← RedPolBas( h, G ) if h = 0 then P ← P ∪ {{f, h} , f ∈ G} G ← G ∪ {h} end if end do Return ( G ) end
# Eingabe: E ⊆ K[X] # (endlich). # Ausgabe: Gr¨ obner-Basis G # mit G = E .
Da der Algorithmus nicht festlegt, in welcher Reihenfolge die S-Polynome betrachtet werden sollen und man auch bei verschiedenen Basen starten kann, ist noch nicht gekl¨ art, wieviele verschiedene Gr¨ obner-Basen ein Ideal I haben kann. Dar¨ uber gibt der folgende Satz Auskunft: 8.3.4 Satz: Zwei Teilmengen F und G von K[X] erzeugen genau dann das gleiche Ideal I , wenn sie die gleichen reduzierten Gr¨obner-Basen GB(F ) und GB(G) besitzen.
322
8 Gr¨ obner-Basen
Reduzierte Gr¨ obner-Basen sind nach diesem Satz also eindeutig, wobei das nat¨ urlich nur bis auf Reihenfolge der Basiselemente gemeint ist und nur f¨ ur eine feste vertr¨ agliche Ordnungsrelation. Bevor dieser Satz bewiesen wird, werden einige n¨ otige Hilfss¨ atze bereitgestellt: Es sei F eine endliche Teilmenge von K[X] . Es sei V (F ) die Menge aller Terme in x1 , . . . , xn , die Vielfache eines Leitterms eines Elements von F sind, also V (F ) := {X J ∈ Term(X) , X J ist Vielfaches eines LT(f ) f¨ ur f ∈ F } (siehe die graphische Darstellung in einem der vorhergehenden Beispiele). 8.3.5 Hilfssatz: Sind F und G reduzierte Gr¨ obner-Basen des Ideals I , so gilt: V (F ) = V (G) . Beweis: Angenommen, der Satz ist falsch und es gibt einen Term t ∈ V (F ) \ V (G) , d.h. es gilt t = t · LT(fi ) f¨ ur ein fi ∈ F . Da t ∈ V (G) ist, reduziert sich t · fi bzgl. G nicht zu Null: t · fi −→ G t G = 0
t · fi ist aber ein Element von I und reduziert sich trivialerweise bzgl. F zu Null. Die Tatsache, dass t G = 0 ist, widerspricht also der Voraussetzung, dass G eine Gr¨ obner-Basis von I ist. 8.3.6 Hilfssatz: Sind F und G zwei reduzierte Gr¨ obner-Basen des Ideals I , so sind sie gleichm¨ achtig und haben (bis auf Reihenfolge) die gleichen Leitterme. Beweis: Angenommen fi ist ein Polynom aus der Basis F , dessen Leitterm mit keinem Leitterm von G u ¨bereinstimmt. Wegen 8.3.5 ist V (F ) = V (G) . Wegen LT(fi ) ∈ V (F ) folgt also LT(fi ) ∈ V (G) d.h. es gibt ein gj ∈ G und einen Term v = 1 mit LT(fi ) = v · LT(gj ) . Wegen LT(gj ) ∈ V (G) = V (F ) gibt es dann aber auch einen Term v mit LT(gj ) = v · LT(f ) , also zusammen LT(fi ) = v · v · LT(f ) mit v = 1 . Das ist aber ein Widerspruch zur Voraussetzung, dass F eine reduzierte Gr¨obner-Basis ist. Nun zum Beweis des eigentlichen Satzes: Beweis: (von Satz 8.3.4) Da f¨ ur das Nullideal ∅ die einzige reduzierte Gr¨ obner-Basis ist, sei F = ∅ = G . Da F und G nach 8.3.6 bis auf Reihenfolge die gleichen Leitterme besitzen und gleichm¨ achtig sind, gibt es ein s ∈ und ein π ∈ Ss mit F = {f1 , f2 , . . . , fs }, G = {g1 , g2 , . . . , gs } und LT(fi ) = LT(gπ(i) ) f¨ ur i = 1, 2, . . . , s . Angenommen es gibt unter diesen Indizes i = 1, . . . , s einen Index i0 mit fi0 = gπ(i) . Man betrachtet das Polynom h := fi0 − gπ(i0 ) .
N
8.3 Der Buchberger-Algorithmus
323
Da die beiden beteiligten Polynome den gleichen Leitterm besitzen und beide normiert sind, kommt dieser Leitterm also in h nicht mehr vor. Als Differenz zweier Polynome aus F = G = I ist h selbst wieder in I und nach Voraussetzung von Null verschieden. Ist nun t ∈ Term(X; h) ein einzelner Term von h , so gibt es zwei M¨ oglichkeiten: (i) t kommt in fi0 vor, also t ∈ Term(X; fi0 ) , (ii) t kommt in gπ(i0 ) vor, d.h. t ∈ Term(X; gπ(i0 ) ) . Im Fall (i) ist t ∈ V (F ) , denn sonst w¨ are fi0 bzgl. F \ {fi0 } nicht reduziert. Im 2. Fall folgt analog t ∈ V (G) , was aber wegen 8.3.5 auch heißt t ∈ V (F ) . Das heißt, dass in jedem Fall t ∈ V (F ) gilt, was zur Folge hat, dass das Polynom h , das aus diesen Termen besteht, bereits in Normalform bzgl. der Basis F ist. Wegen h ∈ I und hF = 0 ist das aber ein Widerspruch zu der Voraussetzung, dass F eine reduzierte Gr¨ obnerBasis ist. Es gibt also keinen Index i0 mit fi0 = gπ(i0 ) . Nach Satz 8.3.4 sind insbesondere reduzierte Gr¨ obner-Basen von Interesse. Mit den bereits eingef¨ uhrten Prozeduren l¨ asst sich eine reduzierte Gr¨obner-Basis eines Ideals IE nun etwa aus E berechnen, indem man hintereinander die Prozeduren Gr¨ obner und RedBas auf E anwendet, also G := RedBas(Gr¨ obner(E)) berechnet. Folgerung: (i) Ist f ∈ K[X] normiert, so ist G = {f } offensichtlich eine Gr¨ obnerBasis des Hauptideals I = f . Zusammen mit dem vorhergehenden Satz heißt das: Ein Ideal I ist genau dann ein Hauptideal, wenn seine reduzierte Gr¨ obner-Basis nur aus einem Element besteht. (ii) Nach der Folgerung zu Satz 8.1.10 haben Polynome f1 , . . . , fr ∈ K[X] genau dann keine gemeinsame Nullstelle in An (L) (L algebraisch abgeschlossen), wenn 1 ∈ f1 , . . . , fr ist, d.h. wenn die Gr¨ obner-Basis von f1 , . . . , fr nur aus der 1 besteht. (iii) Aus dem Beweis des Hilbertschen Nullstellensatzes liest man ab: " obner-Basis von f1 , . . . , fr , 1 − z · f . f ∈ f1 , . . . , fr ⇐⇒ {1} ist Gr¨ 8.3.7 Beispiel: Das Gleichungssystem x2 y + 4y 2 − 17 = 0 2xy − 3y 3 + 8 = 0 xy 2 − 5xy + 1 = 0 hat keine L¨ osung (egal bei welchem Oberk¨ orper) da das von E := {x2 y + 4y 2 − 17, 2xy − 3y 3 + 8, xy 2 − 5xy + 1} erzeugte Ideal die reduzierte Gr¨ obner-Basis {1} besitzt.
324
8 Gr¨ obner-Basen
8.3.8 Beispiel: Gr¨ obner-Basen werden auch dazu verwendet, geometrische Sachverhalte zu beweisen. Als Beispiel soll hier der Satz nachgerechnet werden, dass sich die Diagonalen eines Parallelogramms halbieren.
(u2 , u3 )
(0, 0)
•CCC v• vv CC vv CC v CC vvv CCv(x1 , x2 ) v ◦ vv CCC vv CC vvv CC C vv •v •
(u1 , 0)
Da es sich um ein Parallelogramm handelt, ist die Koordinate des vierten Punktes (u1 + u2 , u3 ) . Da jeweils zwei gegen¨ uberliegende Punkte und der Diagonalenschnittpunkt auf einer Geraden liegen, gilt u3 x2 u3 x2 u1 +u2 = x1 und u1 −u2 = u1 −x1 . Die Behauptung, dass der Diagonalenschnittpunkt die Diagonale durch den Ursprung halbiert lautet als Gleichung formuliert 4(x21 + x22 ) = (u1 + u2 )2 + u23 . Damit wird die Geometrie der Figur beschrieben durch die Gleichungen u3 x1 − x2 (u1 + u2 ) = 0 , u3 (u1 − x1 ) − x2 (u1 − u2 ) = 0 und man fragt sich, ob das Polynom g := 4(x21 + x22 ) − (u1 + u2 )2 − u23 auf allen Punkten der beschriebenen Variet¨ at verschwindet. Um Ausartungsf¨alle zu vermeiden, fordert man u1 = 0 und u3 = 0 . Dies kann man ebenfalls als Gleichungen formulieren, indem man mit den zwei neuen Variablen z1 und z2 schreibt u 3 z1 − 1 = 0 , u 1 z2 − 1 = 0 . Damit lautet also die Frage nach der Richtigkeit des geometrischen Satzes umformuliert: ?" g ∈ u3 x1 − x2 (u1 + u2 ) , u3 (u1 − x1 ) − x2 (u1 − u2 ) , u3 z1 − 1 , u1 z2 − 1 .
Da die reduzierte Gr¨ obner-Basis von u3 x1 −x2 (u1 +u2 ) , u3 (u1 −x1 )−x2 (u1 −u2 ) , u3 z1 −1 , u1 z2 −1 , 1−yg gleich {1} ist, ist dies der Fall, die Behauptung also richtig. Der kritische Punkt an dieser Rechnung sind die beiden Ungleichungen. L¨asst man diese weg, so besteht die Variet¨ at aus drei irreduziblen Variet¨ aten. Eine davon beschreibt den Spezialfall u1 = 0 , die andere den Fall u3 = 0 , weshalb g dann nicht in dem Radikalideal liegt. Im vorliegenden Fall waren die Ungleichungen relativ naheliegend. F¨ ur kompliziertere F¨ alle gibt es Untersuchungen, welche Ungleichungen zu w¨ ahlen sind (vgl. [Kap] oder [Wu]).
8.4 Eliminationsideale
325
8.4 Eliminationsideale Es sei Y ein Teiler des Terms X und K[Y ] der entsprechende Unterring von K[X] . 8.4.1 Definition: Es sei I ⊆ K[X] ein Ideal. Der Schnitt von I mit K[Y ] heißt Eliminationsideal von I bez¨ uglich Y , i.Z.: IY := I ∩ K[Y ].
N
Speziell f¨ ur Y = x+1 · . . . · xn mit ∈ 0 heißt IY das -te Eliminationsideal von I und wird auch mit I bezeichnet werden, also I := Ix+1 ·...·xn = I ∩ K[x+1 , . . . , xn ] . Es ist leicht nachzupr¨ ufen, dass IY bzw. I wirklich Ideale von K[Y ] sind, I0 ist das Ideal I selbst. 8.4.2 Definition: Gilt f¨ ur alle Y J ∈ Term(Y ) und X I ∈ Term(X/Y ) I mit X = 1 , dass Y J < X I ist, so schreibt man Y * X/Y. Zu jedem Teiler Y von X l¨ asst sich sofort eine zul¨ assige Ordnungsrelation < angeben, so dass Y * X/Y ist: man definiere etwa die lexikographische Ordnung auf X so, dass jedes Element von Y kleiner ist als ein beliebiges Element aus X/Y . Speziell f¨ ur Y = xk+1 · . . . · xn und die lexikographische Ordnung mit xn < xn−1 < . . . < x1 gilt also z.B. Y * X/Y . 8.4.3 Satz: Es sei Y ein Teiler von X und < eine zul¨assige Ordnungsrelation mit Y * X/Y . Dann gilt (i) Sind X I ∈ Term(X) und Y J ∈ Term(Y ) mit X I < Y J , so gilt X I ∈ Term(Y ) . g , dann gilt p, g ∈ (ii) Sind f ∈ K[Y ] und p, g ∈ K[X] mit f −→ p K[Y ] . Beweis: (i) Angenommen, X I ∈ Term(Y ) . Dann kann man X I in der Form X I = Y I1 · Z I2 mit Z I2 ∈ Term(X/Y ) \ {1} schreiben. Wegen Y * X/Y ist Y J < Z I2 . Da aber X I < Y J vorausgesetzt ist, folgt Y I1 · Z I2 < Z I2 . Da < eine zul¨ assige Ordnungsrelation ist, gilt Y I1 ≥ 1 und damit auch I1 I2 I2 Y ·Z ≥Z . g ist ein Y I ∈ Term(Y ; f ) Vielfaches von LT(p) , also (ii) Wegen f −→ p LT(p) ∈ Term(Y ) . Da alle Elemente von Term(X; p) bzgl. < kleiner oder gleich LT(p) sind, folgt also Term(X; p) ⊆ Term(Y ) oder p ∈ K[Y ] .
326
8 Gr¨ obner-Basen
8.4.4 Satz: Es sei Y ein Teiler von X und < eine zul¨assige Ordnungsrelation mit Y * X/Y . Sei weiterhin I ⊆ K[X] ein Ideal und G eine Gr¨obner-Basis von I bzgl. < . Dann gilt: GY := G ∩ K[Y ] ist eine Gr¨ obner-Basis von IY . Beweis: Es sei G = {g1 , . . . , gs } . Da IY ein Ideal ist, folgt wegen GY ⊆ IY sogar GY ⊆ IY . Da G eine Gr¨ obner-Basis von I ist, besitzt jedes Element von I bzgl. G die eindeutige Normalform 0 . Insbesondere f¨ ur jedes f ∈ IY gilt ∗ f −→ 0 . Wegen f ∈ K[Y ] und der Voraussetzung Y * X/Y bedeutet G dies nach Punkt (ii) des vorhergehenden Satzes, dass f¨ ur die Einzelschritte ∗ f −→ f −→ f −→ . . . von f −→ 0 gilt gi1 , f , gi2 , f , . . . ∈ K[Y ] . gi gi G 1 2 ur alle Damit sind gi1 , gi2 , . . . ∈ GY und man liest ab f ∈ GY f¨ f ∈ IY . Das zeigt GY ⊇ IY und, weil die andere Inklusion schon gezeigt war, auch GY = IY . GY ist also eine Basis des Ideals GY . Ist f ein beliebiges Element von K[Y ] ⊆ K[X] , so besitzt f bez¨ uglich ∗ g G eine eindeutige Normalform g , d.h. f −→ . Wegen f ∈ K[Y ] kann G G man wie im letzten Abschnitt argumentieren, dass alle Einzelschritte dieser ∗ Vereinfachung sogar mit Elementen aus GY funktionieren, also f −→ gG . GY Y
obner-Basis. Die Idealbasis GY von IY ist also sogar eine Gr¨ Speziell f¨ ur Y = x+1 · . . . · xn und die lexikographische Ordnung mit xn < xn−1 < . . . < x1 gilt wie bereits erw¨ ahnt Y * X/Y . Ist G eine Gr¨obner-Basis von I ⊂ K[x1 , . . . , xn ] , so ist also nach dem vorhergehenden Satz G := G ∩ K[x+1 , . . . , xn ] eine Gr¨obner-Basis des Eliminationsideals I . 8.4.5 Beispiel: Gegeben sei die Basis E := {zx+yx−x+z 2 −2, xy 2 +2zx−3x+z+y−1, 2z 2 +zy 2 −3z+2zy+y 3 −3y} des Ideals I ∈ Q[x, y, z] . Die reduzierte Gr¨ obner-Basis dieses Ideals bez¨ uglich der lexikographischen Ordnung mit x > y > z ist G = {xz 2 − 2x − z 4 + 4z 2 − 4, y + z 4 + 2z 3 − 5z 2 − 3z + 5, z 6 + 2z 5 − 7z 4 − 8z 3 + 15z 2 + 8z − 10} . In Maple l¨ asst sich das etwa je nach Version nach dem Laden des entsprechenden Pakets mit with(Groebner) -oder ¨ alter with(grobner)- mit dem Befehl gbasis(E,[x,y,z],plex) oder gbasis(E,plex(x,y,z)) berechnen. Daraus liest man mit dem vorhergehenden Satz ab: Gyz = {y + z 4 + 2z 3 − 5z 2 − 3z + 5 , z 6 + 2z 5 − 7z 4 − 8z 3 + 15z 2 + 8z − 10} Gz = {z 6 + 2z 5 − 7z 4 − 8z 3 + 15z 2 + 8z − 10} .
8.4 Eliminationsideale
327
Besonders interessant ist vorerst das einzelne Polynom aus Q[z] in Gz . Die vollst¨ andige Faktorisierung dieses Polynoms u ¨ber Q lautet z 6 + 2z 5 − 7z 4 − 8z 3 + 15z 2 + 8z − 10 = (z 2 − 2)(z 4 + 2z 3 − 5z 2 − 4z + 5). Jede z-Koordinate einer Nullstelle von I ist also Wurzel von einem dieser beiden Faktoren. Handelt es sich um eine Nullstelle von z 2 −2 , so kann man die beiden anderen Elemente der Gr¨ obner-Basis durch Substitution von z 2 = 2 entsprechend vereinfachen. Aus z 4 + 2z 3 − 5z 2 + y − 3z + 5 wird so z + y − 1 , aus y + z 4 + 2z 3 − 5z 2 − 3z + 5 wird 0 . Ist die z-Koordinate einer Nullstelle von I dagegen eine Wurzel von z 4 + 2z 3 − 5z 2 − 4z + 5 , so kann man z 4 = −2z 3 + 5z 2 + 4z − 5 in die anderen Polynome einsetzen und erh¨ alt −z 2 + x + 2 und y + z . Damit hat man die Variet¨ at VL (I) in die zwei u ¨ber Q irreduziblen Variet¨aten VL (y + z − 1, z 2 − 2) und VL (x − z 2 + 2, y + z, z 4 + 2z 3 − 5z 2 − 4z + 5) zerlegt. Die Punkte der ersten Variet¨ at kann man nun sehr leicht, von z 2 − 2 ausgehend berechnen. Es gilt √ √ √ √ VL (y + z + 1, z 2 − 2) = {(t, 1 − 2, 2) , (t, 1 + 2, − 2)} mit einem Parameter t ∈ L . Das ist ein paralleles Geradenpaar. Die zweite Variet¨ at ist dagegen endlich. Das Polynom z 4 + 2z 3 − 2 5z − 4z + 5 hat vier komplexe Wurzeln, die sich sogar noch formal berechnen lassen. Die formalen L¨ osungen sollen hier allerdings nicht angegeben werden, da jede von ihnen mehrere Seiten f¨ ullt. Aus diesen Formeln kann man dann numerische L¨ osungen in beliebiger Genauigkeit berechnen. Im vorliegenden Fall stellt sich heraus, dass alle vier L¨ osungen in R liegen, n¨ amlich z1 = −3.034390300 , z2 = −1.320384656 , z3 = 0.805515643 und z4 = 1.549259313 . ur jeEinsetzen dieser vier Werte in x − z 2 + 2 = 0 liefert f¨ den z-Wert genau einen x-Wert, n¨ amlich x1 = 7.207524493 , x2 = −.2565843600 , x3 = −1.351144549 und x4 = 0.400204419 . Einsetzen in y + z = 0 liefert f¨ ur jeden z-Wert genau einen y-Wert, n¨amlich y1 = 3.034390300 , y2 = 1.320384656 , y3 = −.805515643 und y4 = −1.549259313 . Die Variet¨ at besteht also aus den vier Punkten P1 P2 P3 P4
= = = =
( 7.207524493 , 3.034390300 ( − .2565843600 , 1.320384656 ( − 1.351144549 , − 0.805515643 ( 0.400204419 , − 1.549259313
, − 3.034390300 ) , − 1.320384656 ) , 0.805515643 ) , 1.549259313 )
328
8 Gr¨ obner-Basen
8.4.6 Beispiel: Im geben:
R3
sei die Fl¨ ache x(t, u) in Parameterdarstellung ge-
⎞ ⎛ ⎞ x(t, u) t+u x(t, u) = ⎝ y(t, u) ⎠ = ⎝ t2 + 2tu ⎠ . t3 + 3t2 u z(t, u) ⎛
Berechnung einer Gr¨ obner-Basis zu der Idealbasis E := {x − t − u, y − t2 − 2tu, z − t3 − 3t2 u} mit lexikographischer Ordnung und t > u > x > y > z liefert G = {t + u − x, u2 − x2 + y, 2ux2 − 2uy − 2x3 + 3xy − z, uxy − uz − x2 y − xz + 2y 2 , 2uxz − 2uy 2 + 2x2 z − xy 2 − yz, 2uy 3 − 2uz 2 − 4x2 yz + xy 3 − 2xz 2 + 5y 2 z, 4x3 z − 3x2 y 2 − 6xyz + 4y 3 + z 2 } Die Fl¨ ache
x(t, u) f¨ ur −1 ≤ t, u ≤ 1
Die Fl¨ ache 4x3 z − 3x2 y 2 − 6xyz + 4y 3 + z 2 = 0
Nach dem vorhergehenden Satz heißt das Gxyz = {4x3 z − 3x2 y 2 − 6xyz + 4y 3 + z 2 } d.h. 4x3 z − 3x2 y 2 − 6xyz + 4y 3 + z 2 = 0 ist eine implizite Darstellung der Fl¨ache.
A Anhang CA-Systeme
1. Universelle Programme Im folgenden werden einige der großen“ Computeralgebra-Programme mit ” jeweils einer kurzen Beschreibung alphabetisch aufgelistet. Die Liste erhebt keinen Anspruch auf Vollst¨ andigkeit und bei der Schnelllebigkeit von Software und Internet ist sie wahrscheinlich auch bald nicht mehr ganz aktuell. Trotzdem wird sie den Einstieg f¨ ur Neulinge hoffentlich erleichtern. Einige der aufgelisteten Programme sind schon u ¨ber 30 Jahre in der Entwicklung und haben dabei viele verschiedene Stationen durchlaufen, werden also vermutlich auch nicht so schnell aussterben“. ” Axiom Plattformen: Fr¨ uher haupts¨ achlich IBM Maschinen, dann auch Solaris und Windows. Die neueste Debian-Version gibt es f¨ ur Linux auf den u ¨blichen Debian-Plattformen (also arm, hppa, i386, ia64, m68k, mips, mipsel, powerpc, s390, sparc). Den Aldor-Compiler gibt es f¨ ur Intel Linux, Alpha, Sparc (Solaris 7 oder 8) und Windows 9x, NT, 2000 und XP. Autoren: Urspr¨ unglich unter dem Namen Scratchpad in den Forschungszentren der IBM in Yorktown Heights und in Heidelberg entwickelt (J. Griesmer, R. Jenks, D. Yun, J. Grabmeier etc.). Alter: Internes Forschungsprojekt der IBM seit den 70er Jahren, erst ab Ende 1991 unter dem Namen Axiom auf dem Markt. In den Jahren 1991-2002 als Produkt von NAG (http://www.nag.co.uk/) vertrieben. Inzwischen unter einer BSD-¨ ahnlichen Lizenz zu haben. Sp¨ ater kam noch Aldor als Compiler dazu. Ab 1994 war Aldor Teil von Axiom, hat sich jetzt aber zu einer eigenst¨ andigen Sprache weiterentwickelt. Infos: Axiom-Homepage http://www.nongnu.org/axiom/ und Aldor -Homepage http://www.aldor.org/. Preis: Axiom ist jetzt freie Software. Literatur: — J. Griesmer, R. Jenks, D. Yun: Scratchpad User’s Manual, IBM Research Publications RA70, 1974. — R. Jenks, R. Sutor: Axiom, The scientific computation system.
330
A Anhang CA-Systeme
Beschreibung: Urspr¨ unglich in Lisp geschrieben mit eigener m¨ achtiger Programmiersprache. Schon zu Scratchpad-Zeiten war dieses Programm mit mindestens 12 MByte Speicherbedarf das Monster unter den CA-Sprachen (heute 92 MByte Quellcode). Durch das Designkonzept mit abstrakten Datentypen wurde die Realisation mathematischer Kategorien und Datenstrukturen erm¨ oglicht. Dadurch nicht nur die u ¨blichen Routinen universeller CA-Systeme, sondern auch Rechnen mit nichtassoziativen oder -kommutativen Algebren oder Darstellungstheorie endlicher Gruppen m¨ oglich. Derive Plattformen: PCs mit (je nach Version) DOS, Windows 95, 98, Me, NT, XP oder 2000. Lief sogar auf dem PC-kompatiblen HP 95LX Palmtop. Autoren: D. Stoutemyer, A. Rich. Alter: 1988. Infos: Soft Warehouse Europe, Softwarepark, A-4232 Hagenberg, Austria Tel.:(+43) (0) 7236-3297-0, Fax: (+43) (0) 7236-3297-71, Email: [email protected], WWW: http://www.derive-europe.com/. Preis: Die Version f¨ ur Lehrkr¨ afte, Studenten oder Sch¨ uler ist ab ca. 83E zu haben. Eine Testversion gibt es f¨ ur 30 Tage kostenlos. Literatur: Eine aktuelle Sammlung von Derive-B¨ uchern findet sich jeweils auf der Derive-Homepage. Hier seien etwa die folgenden B¨ ucher genannt — Ellis, W. Jr.; Lodi, E.: A Tutorial Introduction to Derive [ELo] — Glynn, J.: Mathematik entdecken mit Derive - von der Algebra bis zur Differentialrechnung [Gly] Beschreibung: Moderner Nachfolger von MuMath (wohl ¨ altestes CAProgramm f¨ ur Micros; nicht mehr verf¨ ugbar) mit Fenstertechnik, PullDown-Men¨ us und Graphik. Anf¨ anglich (bis Version 4) war die Programmierm¨oglichkeit eingeschr¨ ankt. Erstaunlich leistungsstark: Im Vergleich teilweise besser als sehr viel gr¨ oßere Programme. ¨ Das Osterreichische Unterrichts-Ministerium hat Derive f¨ ur alle Gymnasien als Standardwerkzeug f¨ ur den Mathematikunterricht bereits 1991 eingekauft ! Andere L¨ ander bzw. Bundesl¨ander folgten nach, etwa Belgien, Schweden und im Jahr 2000 Brandenburg. Kopplung mit den Computeralgebra-Handhelds TI-89, TI-92+, Voyage 200 von Texas Instruments m¨oglich. Macsyma Plattformen: Symbolics (=spezielle Lisp-Rechner), DEC VAX und MicroVAX, Sun-2 und Sun-3 und jetzt auch auf PC ≥ 386 (DOS- und WIN 3.1.-Versionen) und seit 2000 auch f¨ ur Linux. Autoren: J. Moses, W. Martin und viele andere am Massachusetts Institute of Technology (MIT) zusammen mit der Firma Symbolics (Entwicklungsaufwand ≥ 100 Mann-Jahre !).
1. Universelle Programme
331
Alter: 1968. Infos: Macsyma Inc., 20 Academy Street, Arlington, MA 02476, Tel: +1 781 646 4550, Email: [email protected] , URL: http://www.macsyma.com/. Preis: Lite Version von Macsyma 2.3 f¨ ur Windows beim Springer-Verlag f¨ ur ca. 75E (ISBN 3-540-14703-9) mit Handbuch. Vollversion in den USA um die 250 US $. Literatur: R. H. Rand: Computer Algebra in Applied Mathematics, An Introduction to Macsyma [Ran] Beschreibung: Sehr ausgereiftes und umfassendes Programm; Routinen auch zur Gruppentheorie oder etwa zu Lie-Algebren. In Lisp geschrieben. Zur Zeit mehr als 300000 Zeilen Lisp-Code und u ¨ber 300 Unterroutinen plus große Share-Library. Eigene einfache Sprache ¨ahnlich zu der von Reduce oder Cayley. Trotz des anf¨ anglich recht hohen Preises sehr verbreitet an Universit¨ aten und Forschungseinrichtungen. Es existieren viele Abk¨ ommlinge bzw. Varianten von Macsyma, etwa DOE-Macsyma (Speziell auf reinen LispMaschinen), Vaxima (unter Vax-Unix) oder Aljabr (Macintosh). Unter http://gnuwin.epfl.ch/apps/maxima/de/ kann man inzwischen lesen: Maxima ist eine Common Lisp-Implementation des Macsyma-Systems ” f¨ ur computerbasierte Algebra vom MIT. Maxima wird bald unter der GNU Public License freigegeben.“ Dort kann man bereits jetzt eine Windows-Version von Maxima frei herunterladen. Magma Plattformen: PCs mit Linux oder Windows, Apple Macintosh mit Mac OS X, Suns unter Solaris, DEC Alpha mit OSF/1 oder Linux, IBM Maschinen mit AIX, HP unter HP-UX und SGIs mit IRIX (32-bit and 64-bit). Autoren: Computational Algebra Group an der Universit¨ at von Sydney (J. Cannon, W. Bosma, C. Playoust,. . . ) Alter: Verkauf ab Dezember 1993. Infos: Homepage unter http://magma.maths.usyd.edu.au/. Preis: Studenten-Version f¨ ur PCs (Windows, Linux oder Mac mit OS X) zu 150 US $. Eine Hochschul-Lizenz f¨ ur einen Rechner und 3 Jahre kostet etwa 1150 US $. Literatur: Es gibt zwei Handb¨ ucher zum Programm ([CPl] und [CPB]), die aber im Buchhandel momentan nicht lieferbar sind. Bestandteil von Magma sind aber ca. 3000 Seiten Dokumentation. Weiterhin gibt es — Pecquet, L.: A first course in Magma [Pec]; — Bosma, W.; Cannon, J.; Playoust, C.: The Magma algebra system. I: The user language [BCP]
332
A Anhang CA-Systeme
¨ Beschreibung: Ahnlich wie in Axiom oder auch in MuPAD werden hier mathematische Strukturen sauber, d.h. entsprechend den Schreibweisen der Universellen Algebra oder der Kategorientheorie eingef¨ uhrt. Daher kommt auch der Name des Programms – ein Magma ist eine Menge mit einer inneren Verkn¨ upfung und das Grundkonzept dieser Programmiersprache. Vom Aufbau her ist Magma ¨ ahnlich wie Gap oder Maple: Um einen in C geschriebenen Kern herum gibt es in Magma geschriebene Module. Auch C-Routinen k¨ onnen in Magma eingebracht werden. Es sind bereits Gruppen, Halbgruppen, Ringe, K¨ orper, Algebren, Moduln, Graphen, Codes und endliche Geometrien implementiert. Magma ist der Nachfolger des fr¨ uher von der gleichen Gruppe vertriebenen, auf Gruppentheorie spezialisierten Cayley, das es inzwischen nicht mehr gibt. Außer diesen Quellen enth¨ alt das Programm Algorithmen zur Zahlentheorie von Kant und die reelle Arithmetik basiert auf Pari. Maple Plattformen: Sehr verbreitet: von PC und Macintosh u ¨ber Workstations bis hinauf zu Supercomputern. Autoren: K. Geddes, G. Gonnet mit einem Team an der University of Waterloo in Kanada. Alter: 1985. Infos: Webseite von Maple http://www.maplesoft.com/ bzw. die der deutschen Vertriebsfirma Scientific Computers (Friedlandstrasse 18, 52064 Aachen) unter http://www.scientific.de/. Preis: Eine Studentenversion f¨ ur 189E kann man bei Scientific Computers bestellen (ISBN 1-894511-47-6). Weiterhin gibt es Klassenzimmerlizenzen f¨ ur 1.349E (15 Vollversionen) bis hin zur kommerziellen Einzelplatzversion zu 1.795 US $. Literatur: Eine sehr ausf¨ uhrliche Liste findet man bei Waterloo Maple unter http://www.maplesoft.com/publications/books/. Beschreibung: Der Kern von Maple ist in C geschrieben und umfasst nur“ um die 20000 Zeilen Quellcode. Das ist der einzig geheime“ Teil ” ” von Maple der kompiliert nur ca. 650 KByte umfasst. Der riesige Rest von Maple ist in der eigenen Maple-Sprache geschrieben und zug¨ anglich. Die große Share Library wird ebenfalls im Quellcode mitgeliefert. Sehr umfassendes und ausgereiftes Paket mit Unterpaketen auch zum Rechnen in endlichen K¨ orpern, Gruppentheorie, Geometrie etc. An vielen Hochschulen gibt es Campuslizenzen, Baden-W¨ urttemberg hat Maple landesweit angeschafft (s. http://notes.ikg.rt.bw.schule.de/). Mathematica Plattformen: Sehr verbreitet: von PC (Dos/Win/Linux) und Macintosh u ¨ber Workstations bis hinauf zu Supercomputern wie etwa CONVEX.
1. Universelle Programme
333
Autoren: St. Wolfram. Alter: 1988. Infos: Wolfram Research Inc., 100 Trade Center Drive, Champaign, Ill. 61820-7237, USA, Tel.: +1 217 398 0700, E-Mail: [email protected], URL: http://www.wri.com/. Preis: Mathematica f¨ ur PC, Mac oder Linux gibt es in Deutschland ab ca. 140E (Studentenversion) bis hinauf u ur die professionelle ¨ber 5000E f¨ Einzelplatzlizenzen. Literatur: Wolfram, St.: The Mathematica Book [Wol]. Online-Version der Dokumentation unter http://documents.wolfram.com/v5/. Beschreibung: Das neueste der beschriebenen universellen Systeme. Vollst¨andig in C geschrieben; dadurch nicht ganz so offen wie Maple oder Reduce, wo man fast alle Quellen hat. Sehr gef¨ allige Oberfl¨ ache (Notebook etc.). War lange den anderen Systemen in der Graphik deutlich u ur aber in einigen Punkten im symbolischen Rech¨berlegen, hat daf¨ nen bei den Vergleichstests nicht so gut abgeschnitten. Voll programmierbar in eigener einfacher Sprache. Große Materialsammlung unter http://library.wolfram.com/infocenter MuPAD Plattformen: Sun (Solaris), Macintosh (MacOS 9 oder X), PC (ab 386, Windows und Linux). Autoren: Arbeitsgruppe um B. Fuchssteiner am Institut f¨ ur Automatisierung und instrumentelle Mathematik an der Universit¨ at Paderborn. Den Anfang von MuPAD (= Multi Processing Algebra Data Tool) machten die Diplomarbeiten von K. Morisse, O. Kluge, A. Kemper und H. Naundorf. Alter: Die ersten zwei der genannten Diplomarbeiten wurden bereits 1989 geschrieben. Den Namen MuPAD gibt es seit Ende 1990. Im Jahr 1992 gibt es die erste Release-Nummer mit einer Eins vor dem Komma, die u oßeren Publikum zug¨ anglich gemacht ¨ber anonymous ftp einem gr¨ wird. Anfang 2004 stand die Z¨ ahlung bei Version 3.0. Infos: Im WWW unter http://www.mupad.de/ mit Download-M¨ oglichkeit (Demoversionen f¨ ur 30 Tage und kostenlose Light-Version. ¨ Preis: Uber 230 Schulen in Nordrhein-Westfalen arbeiten bereits mit MuPAD (Projekt MUMM=Mathematik Unterricht mit MuPAD). Im Rahmen dieses Projekts k¨ onnen Sch¨ uler MuPAD bereits ab 10E erwerben. Die Studentenversion gibt es f¨ ur ca. 110E, unbegrenzte Schullizenzen f¨ ur knapp 400E und die Einzellizenz f¨ ur die Industrie f¨ ur 550E. Literatur: Benno Fuchssteiner et al.: MuPAD: Multi Processing Algebra Data Tool (zu MuPAD Version 1.2), Birkh¨ auser Verlag Basel, 1994, ISBN 3-7643-5017-2. W. Oevel, F. Postel, G. R¨ uscher, S. Wehmeier: Das MuPAD Tutorium, SciFace Software, Paderborn (Germany), ISBN 3933764-00-9. Vollst¨ andige Liste unter http://www.mupad.de/BIB/.
334
A Anhang CA-Systeme
Beschreibung: Leistungsf¨ ahiges Programm mit eigener Sprache, Bibliotheken zur Zahlentheorie, linearen Algebra, symbolischen Integration, Gr¨obner-Basen, Graphik etc. Das System ist offen, d.h. Anwender haben vollen Einblick in den Bibliotheks-Code, k¨ onnen nahezu jeden Teil des Systems erweitern und ver¨ andern, neue Routinen und Datentypen definieren und sogar Module in C++ schreiben, die zur Laufzeit zu MuPAD hinzugeladen werden k¨ onnen. Das Programm verf¨ ugt u ¨ber ein tief integriertes Typsystem, das vom Anwender erweitert werden kann. Viele Funktionen des Systems lassen sich f¨ ur Objekte eines bestimmten Typs neu definieren. Ein Quelltext-Debugger geh¨ ort zum Lieferumfang. Pari Plattformen: Da der vollst¨ andige Quellcode verteilt wird, l¨ asst sich Pari auf so ziemlich jedem 32- oder 64-bit Computer mit einem ordentlichen C-Compiler einsetzen. F¨ ur 680x0- und die Intel-Familie ab dem 386er gibt es aber spezielle Assembler-Teile, die das System deutlich schneller machen. Autoren: C. Batut, D. Bernardi, H. Cohen, M. Olivier an der Universit¨ at von Bordeaux, Frankreich. Alter: 1989 Infos: Homepage http://www.parigp-home.de/. Preis: Kostenlos (unter der GPL). Literatur: Ein ca. 160-seitiges Handbuch ist im TEX-Quellcode bei der Distribution mit dabei. Beschreibung: Pari ist ein Programm zur Zahlentheorie und f¨ ur einfache numerische Analysis, das zur Zeit aus mehr als 32000 Zeilen Quellcode besteht. Dazu geh¨ ort ein Paket zur Linearen Algebra ebenso wie der Umgang mit Polynomen, rationalen Funktionen oder elliptischen Kurven. Es handelt sich aber nicht um ein Programm zur symbolischen Manipulation im u ¨blichen Sinne (Eingabe von sin(x) liefert etwa die Taylorentwicklung des Sinus um den Ursprung), der Funktionsumfang l¨asst sich auch nicht mit dem von Maple, Macsyma oder den anderen großen Pakten vergleichen. Wesentliche Vorteile von Pari sind seine Geschwindigkeit und die Verwendbarkeit als Bibliothek zur Verwendung von anderen Programmiersprachen (C, Pascal, Fortran,. . . ) aus. Die Entwickler von Pari geben an, dass ihr Programm je nach Anwendung 5 bis 100 mal schneller als Maple oder Mathematica ist. Verwendet man Pari nicht als Programmbibliothek f¨ ur eigene Programme, so ruft man den GP/PariCalculator auf, in dem man – wie auch bei anderen CA-Systemen u ¨blich – interaktiv arbeiten kann. Arbeitet man mit GNU-Emacs, so ist es m¨oglich und empfehlenswert, Pari als Emacs-Unterprozess laufen zu lassen. Man kann Pari auch so u ur die Langzahla¨bersetzen, dass f¨ rithmetik Gmp verwendet wird.
2. Spezialisierte Programme
335
Reduce Plattformen: Sehr verbreitet: von Atari und PC u ¨ber Workstations bis hinauf zu Großcomputern wie etwa Cray. Autoren: A. C. Hearn. Alter: 1968. Infos: Homepage http://www.zib.de/Symbolik/reduce/ Preis: Je nach Rechner und Ausstattung zwischen 99E und 1300E. Es gibt aber eine freie Demoversion (ohne garbage collection) und einen Testserver zum Online-Rechnen mit Reduce. Literatur: Anthony C. Hearn: Reduce User’s and Contributed Packages Manual, Version 3.7 , February 1999. Lieferbar vom Konrad-ZuseZentrum, Berlin. Eine ausf¨ uhrliche Buchliste zu Reduce findet sich unter http://www.zib.de/Symbolik/reduce/Overview/books.html. Beschreibung: Ein Macsyma-¨ ahnliches Paket (etwas kleiner); sehr ausgereift und umfassend mit eigener Sprache. In einem Algol-¨ ahnlichen Lisp-Dialekt namens RLisp geschrieben. Dadurch leichter zu portieren als Macsyma. Sehr offenes System, alle Quellen werden mitgeliefert. Große Share-Libraries (E-Mail: [email protected]). Sehr verbreitet an Universit¨aten und Forschungseinrichtungen. Von Hans-Gert Gr¨ abe von der Universit¨ at Leipzig gibt es z.B. ein Zusatzpaket namens Cali zur konstruktiven kommutativen Algebra.
2. Spezialisierte Programme Zu den spezialisierten Programmen werden im Folgenden nur einige Kurzinfos gegeben. Gap Spezialgebiet: Gap (=Groups, Algorithms and Programming) ist ein System f¨ ur diskrete Algebra mit dem gr¨ oßten Schwerpunkt auf Gruppentheorie. Herkunft: Die Entwicklung von Gap begann 1986 unter Prof. Neub¨ user an der RWTH Aachen. Seit seiner Emeritierung im Jahr 1997 wird die Gap-Entwicklung von der School of Computer Science an der University of St Andrews in Schottland koordiniert. Kommentar: Gap steht (mit einem Manual von ca. 800 Seiten als LaTeXfile) kostenlos mit allen Quellen zur Verf¨ ugung, s. http://www.gapsystem.org/. Aufbau (kleiner C-Kern und der Rest in der eigenen Sprache geschrieben) wie bei Maple. Auch das Interface erinnert sehr an die Text-Version von Maple.
336
A Anhang CA-Systeme
L¨auft auf so ziemlich jeder Unix-Version, Macintosh und Windows-PCs. Gap enth¨alt eine große Bibliothek mit gruppentheoretischen Daten, Charaktertafeln, den kompletten Cambridge Atlas endlicher Gruppen etc. Der Gap-Server enth¨ alt eine beeindruckende Liste von Ver¨ offentlichungen, die mit Unterst¨ utzung des Programms entstanden sind, bzw. erst durch Gap m¨ oglich waren. CoCoA Spezialgebiet:: Kommutative Algebra, Polynomringe, Gr¨ obnerbasen etc. Herkunft: A. Capani, G. Niesi, L. Robbiano (Universit` a degli studi di Genova) und viele andere ab 1987, Homepage: http://cocoa.dima.unige.it/. Siehe auch [KRo]. Kommentar: Das in C geschriebene Programmpaket ist f¨ ur Forschung und Lehre frei verf¨ ugbar und l¨ auft auf den u ¨blichen Unix-Plattformen, unter Linux (PC und Macintosh PPC), Mac OS X und DOS oder Windows. Je nach Betriebssystem gibt es eine Kommandozeilen-basierte Version, eine graphische Oberfl¨ ache oder auch eine Emacs-Schnittstelle. CoCoA umfasst eine Pascal-¨ ahnliche Programmiersprache namens CoCoAL, mit der man auch die eingebetteten Bibliotheken anpassen und erweitern kann. Die meisten Skripten des alten Macaulay-Systems wurden in CoCoAL u ¨bersetzt. Felix Spezialgebiet: Kommutative Polynomringe, nicht kommutative Algebren und Module u ¨ber diesen. Herkunft: J. Apel und U. Klaus von der Fakult¨ at f¨ ur Mathematik und Informatik der Universit¨ at Leipzig, s. http://felix.hgb-leipzig.de/. Kommentar: Berechnungen in kommutativen und nicht-kommutativen Ringen und Modulen. Verallgemeinerung von Buchbergers Algorithmus auf nichtkommutative Ringe, freie k-Algebren und Algebren vom aufl¨osbaren Typ. Eigene Sprache (interpretiert oder kompiliert). Felix f¨ ur Windows, BSD, Linux oder Solaris kann frei heruntergeladen werden. Es besteht jeweils aus einem maschinenabh¨ angigen Assemblerteil und der darauf aufsetzenden eigenen Felix-Sprache. Kant Spezialgebiet: Kant ist ein m¨ achtiges Werkzeug f¨ ur algebraische Zahlentheorie. Herkunft: Gruppe um M. Pohst, Technische Universit¨ at Berlin (davor Heinrich-Heine-Universit¨ at D¨ usseldorf), Homepage http://www.math.tuberlin.de/˜kant/kash.html Kommentar: Ab 1987 urspr¨ unglich in Fortran entwickelt. Baute auf dem (damals noch Public Domain) Paket Magma auf. Ab 1991 neu in C geschrieben, nach wie vor in enger Kooperation mit der Magma-Gruppe.
2. Spezialisierte Programme
337
F¨ ur nichtkommerzielle Zwecke frei erh¨ altlich f¨ ur Windows und g¨ angige Unixe. F¨ ur diejenigen, die nicht in C programmieren wollen, gibt es eine spezielle Shell namens Kash (basierend auf Gap). Pascal-¨ ahnliche Programmiersprache, erweiterbare Bibliothek, TEX-basiertes Hilfesystem. LiDIA Spezialgebiet: Zahlentheorie Herkunft: Abteilung Theoretische Informatik, Kryptographie und Computeralgebra der Technischen Universit¨ at Darmstadt. Homepage: http://www.informatik.tu-darmstadt.de/TI/LiDIA/. Kommentar: LiDIA ist eine C++ Bibliothek f¨ ur Zahlentheorie mit Schnittstellen zur Arithmetik von Cln (http://www.ginac.de/CLN/), Gmp (http://www.swox.com/gmp/), libI (http://math.arizona.edu/ ˜aprl/math/comp/bigint/), Piologie (http://www.hipilib.de/ piologie.htm). Die St¨ arken von LiDIA liegen z.B. in der ganzzahligen Faktorisierung, der Reduktion ganzzahliger Gitter, linearer Algebra u ¨ber Z und dem Rechnen in Zahlk¨orpern. LiDIA kann f¨ur nichtkommerzielle Zwecke frei verwendet werden. Macaulay 2 Spezialgebiet: Algebraische Geometrie und kommutative Algebra. Herkunft: Das erste Macaulay ab 1977 von D. Bayer (Columbia Univ.) und M. Stillman (Cornell Univ.). Dann v¨ollig neu geschrieben als Macaulay 2 von M. Stillman und D. Grayson (Univ. of Illinois). Homepage: http://www.math.uiuc.edu/Macaulay2/. Kommentar: Der Macaulay 2-C-Kern bietet schnelle Polynom- und Matrixarithmetik, Gr¨ obnerbasen, Syzygien und Hilbert Funktionen. Auf dem Server gibt es (unter der GPL) den Quellcode und bin¨ are Versionen f¨ ur Linux, SunOS, Solaris, Windows und andere Unix-Versionen. Macaulay 2 baut u.a. auf Bibliotheken von Singular und Gmp auf. Mehr zu den mathematischen F¨ ahigkeiten liest man entweder in der OnlineDokumentation nach oder in [EGSS]. Simath Spezialgebiet: Algebraische Zahlentheorie. Herkunft: Anfangs Arbeitsgruppe von G. Zimmer an der Universit¨ at des Saarlandes. Seit 2002 pflegt die Gruppe von K. Nakamula von der Tokyo Metropolitan University das Programm. Homepage: http://simath.info/ ( Si“ im Namen von der langj¨ ahrigen Siemens-Unterst¨ utzung). ” Kommentar: Offenes, in C geschriebenes System mit vielen m¨ achtigen Kommandos zum Umgang mit Zahlk¨ orpern, elliptischen Kurven etc. Interaktiver Rechner Simcalc. L¨ auft unter verschiedenen Unix-Varianten (Solaris, HP-UX, IRIX, Linux, etc.)
338
A Anhang CA-Systeme
Singular Spezialgebiet: Kommutative Algebra, algebraische Geometrie und Singularit¨aten-Theorie. Herkunft: G.M. Greuel, G.Pfister, H. Sch¨ onemann vom Fachbereich Mathematik der Universit¨ at Kaiserslautern (seit 1984). Homepage: http://www.singular.uni-kl.de/. Kommentar: Singular arbeitet haupts¨ achlich mit Polynomen, Idealen und Modulen u ¨ber verschiedenen Ringen. Sehr allgemeine Implementation von Gr¨obner-Basen, Faktorisierung multivariater Polynome, Resultanten etc. Interaktive Shell zur einfachen Verwendung, eigene C-¨ ahnliche Sprache, aber auch Erweiterungsm¨ oglichkeit der Bibliotheken mit C oder C++. Freie Software unter der GPL. Neben dem Quellcode gibt es Bin¨arversionen f¨ ur Windows, verschiedene Unix-Varianten (Linux auf PCs und DEC-Alpha, HP-UX, Solaris, IRIX, AIX, OSF, FreeBSD und MacOS X). Singular kann außer mit sich selbst auch mit Mathematica und MuPAD kommunizieren. Speziell zur Langzahlarithmetik gibt es eine F¨ ulle von Bibliotheken, die angeboten werden. Ein nicht mehr ganz neuer (1994), von M. Riordan zusam¨ mengestellter Uberblick dazu (mit Kommentaren und Quellen oder Bezugsadressen, oft mit den damaligen Quellen im gleichen Verzeichnis), findet sich unter ftp://nic.funet.fi/pub/sci/math/multiplePrecision/BIGNUMS.TXT. Außer den bereits oben bei den einzelnen Beschreibungen erw¨ ahnten Paketen sind dort Mp, Arithmetic in Global Fields, die Arbitrary Precision Math Library, BigNum, zwei namenlose Pakete von Lenstra, Bmp, Spx, Amp, Gennum, Miracl, Ubasic, LongInt und Elliptic Curve Primality Proving aufgef¨ uhrt. Von diesen Paketen hat sich das schon seit 1991 unter der GNU Lesser ” General Public License“ (kurz GPL) ver¨ offentlichte Gmp (=GNU Multiple Precision) immer mehr zum anerkannten Standard entwickelt und ur die inwird jetzt von anderen (teilweise auch kommerziellen) Systemen f¨ terne Langzahlarithmetik verwendet (z.B. Maple, Pari, LiDIA, Kaffee, siehe die Projekt-Homepage unter http://swox.com/gmp/). Trotz der vielen großen, und schon lange eingef¨ uhrten ComputeralgebraSysteme, trauen sich auch Neuentwicklungen auf den Markt, so etwa Yacas (=yet another computer algebra system, s. http://yacas.sourceforge.net/). Yacas wird von einer Gruppe Interessierter entwickelt und unter der GPL mit allen Quellen angeboten. Nachdem die meisten anderen universellen Programme kommerzieller Natur sind, ist dies nat¨ urlich f¨ ur Einsteiger besonders interessant, auch wenn das Programm (noch?) nicht den großen Funktionsumfang dieser Pakete beinhaltet. Auch Yacas besteht aus einem kleinen C-Kern (mit Gmp als Rechenmaschine f¨ ur die Langzahlarithmetik) und einer eigenen Sprache, in der der Rest des Systems geschrieben ist.
2. Spezialisierte Programme
339
In diesem Zusammenhang sei auch TeXmacs (http://www.texmacs.org/) genannt. GNU TeXmacs ist ein freier wissenschaftlicher wysiwyg-Texteditor (what-you-see-is-what-you-get), der auf der mathematischen Textverarbeitung TEX aufsetzt und dabei viele M¨ oglichkeiten des Editors Emacs bietet. TeXmacs besitzt Plugins f¨ ur viele der genannten ComputeralgebraSysteme (momentan Axiom, Macaulay 2, Maxima, Pari und Yacas), so dass man Ausgaben dieser Programme direkt in seine Textdokumente u ¨bernehmen und ansprechend setzen kann. TeXmacs-Konverter existieren f¨ ur TEX und LATEX, Konverter f¨ ur Html und MathML sind in der Entwicklung.
B Anhang Beispielsitzungen
1. Maple Die folgende Beispielsitzung zeigt einige wenige M¨ oglichkeiten des sehr umfangreichen Computeralgebra-Systems Maple Bei den meisten verwendeten Befehlen d¨ urfte sp¨ atestens nach Vergleich mit der Ausgabe klar sein, was sie tun. In anderen Computeralgebra-Sprachen gibt es viele dieser Befehle nat¨ urlich auch und in teilweise fast der gleichen Syntax. Wer Genaueres zu Maple wissen m¨ ochte, sollte sich eines der vielen B¨ ucher zu diesem leistungsf¨ ahigen Programm besorgen, auch wenn die, wie so oft bei Software, etwas den aktuellen Versionen hinterherhinken. Die neuesten B¨ ucher u ¨ber Maple beschreiben Maple 7, viele andere sogar Maple V obwohl es seit Anfang 2003 bereits Maple 9 gibt. Trotzdem sind diese B¨ ucher sicher wertvoll und f¨ ur den Einstieg in dieses große Programmpaket geeignet. Die Unterschiede zwischen den verschiedenen Releases fallen dem Anf¨ anger sowieso oft gar nicht auf. Die folgende Liste zeigt eine Auswahl der aktuellsten Handb¨ ucher: — Robert M. Corless: Essential Maple 7 [Cor] — Alexander Walz: Maple 7 - Rechnen und Programmieren [Wal] — Andr´e Heck: Introduction to Maple [Hec] Nachdem Maple u uhrliche Online-Hilfe verf¨ ugt, kann man ¨ber eine ausf¨ auch ohne eines dieser B¨ ucher recht gut zurechtkommen. Mit dem Befehl ?? (= Gib mir Hilfe zur Online-Hilfe) kann man sich N¨ aheres erkl¨ aren lassen. Jeder eingegebene Befehl wird bei Maple sofort interpretiert und ausgef¨ uhrt. Jeder Befehl muss mit einem Semikolon oder einem Doppelpunkt abgeschlossen werden. Beim Semikolon wird das Ergebnis angezeigt, beim Doppelpunkt wird die Anzeige unterdr¨ uckt. Meist wird man Maple u ache (Motif ¨ber seine graphische Benutzeroberfl¨ bei Unix, MS Windows oder Macintosh-Oberfl¨ ache) verwenden. Hier kann man interaktiv sogenannte Worksheets erstellen und speichern.
342
B Anhang Beispielsitzungen
Die gespeicherten Worksheets tragen u ¨blicherweise die Endung ‘.mws’, sind reine Textdateien und zwischen den verschiedenen Plattformen, auf denen Maple verf¨ ugbar ist, frei austauschbar. Das gezeigte Beispiel zeigt solch ein Worksheet. Zum Ausf¨ uhren des Worksheets l¨ adt man es mit u u File ¨ber das Men¨ und den dort enthaltenen Open-Befehl in die Benutzeroberfl¨ ache und kann dann Zeile f¨ ur Zeile durch Dr¨ ucken von Return die einzelnen enthaltenen Befehle ausf¨ uhren, oder das ganze Worksheet mit dem Befehl Execute Worksheet aus dem Edit-Men¨ u wie ein Programm ablaufen lassen. Der restart-Befehl am Anfang bewirkt, dass Maple seinen internen Speicher wieder freigibt und alle Variablen, Prozeduren etc., die vielleicht von einem anderen Worksheet oder einem fr¨ uheren Lauf des gleichen Worksheets hinterlassen wurden, zur¨ ucksetzt. Zuweisungen geschehen mit :=, mit % bezieht man sich auf das letzte berechnete Ergebnis, spart sich also dieses nochmals abzutippen. Entsprechend greift man mit %% bzw. %%% auf den vor- und vorvorletzten Ausdruck zur¨ uck. Maple verf¨ ugt u ¨ber eine solide Grundausstattung an Befehlen, hat aber nicht gleich f¨ ur alle Spezialit¨ aten Befehle parat. M¨ ochte man etwa mit Permutationsgruppen arbeiten, so muss man erst das Paket groups mit dem Befehl with(groups) nachladen. Auf einem 1GHz Pentium-PC unter Linux ben¨ otigt Maple f¨ ur das gezeigt 22-seitige Beispiel etwas mehr als 4 Sekunden CPU-Zeit!
1. Maple
343
344
B Anhang Beispielsitzungen
1. Maple
345
346
B Anhang Beispielsitzungen
1. Maple
347
348
B Anhang Beispielsitzungen
1. Maple
349
350
B Anhang Beispielsitzungen
1. Maple
351
352
B Anhang Beispielsitzungen
1. Maple
353
354
B Anhang Beispielsitzungen
1. Maple
355
356
B Anhang Beispielsitzungen
1. Maple
357
358
B Anhang Beispielsitzungen
1. Maple
359
360
B Anhang Beispielsitzungen
1. Maple
361
362
B Anhang Beispielsitzungen
1. Maple
363
Neben dem u ¨blichen Benutzerinterface bietet Maple u ¨ber so genannte Maplets auch die M¨ oglichkeit, f¨ ur Nicht-Programmierer geeignete visuelle Interfaces zu programmieren. Hier ein Beispiel aus dem Student Package.
364
B Anhang Beispielsitzungen
2. Mathematica Ein anderes Computeralgebrapaket ist Mathematica (f¨ ur eine genauere Beschreibung und Bezugsquellen siehe Anhang A). Neben den m¨ achtigen mathematischen Funktionen stehen hier ¨ ahnlich wie in LATEX verschiedene Styles zur Verf¨ ugung, die es einem erlauben Ein- und Ausgaben ansprechend zu formatieren und so ganze Artikel mit der eingebauten Computeralgebra zu schreiben. Ein typisches Mathematica-Notebook (mit einem mathematisch interessanten Beispiel) sieht etwa wie folgt aus:
3. Gap
365
3. Gap Ein haupts¨achlich auf Gruppentheorie spezialisiertes Computeralgebra-Programm ist z.B. Gap (f¨ ur eine genauere Beschreibung und Bezugsquellen siehe Anhang A). In Gap kann man zus¨ atzlich zu den Grundoperationen mit endlichen K¨orpern oder Permutationsgruppen, die ja wie gezeigt teilweise auch in Maple angeboten werden, etwa auch mit Homomorphismen verschiedener Strukturen arbeiten. Die Syntax ist der von Maple sehr ¨ahnlich. Das Eingabeprompt ist gap>, der Rest ist Ausgabe.
366
B Anhang Beispielsitzungen
gap> g := Group((1,2,3,4), (2,4), (5,6,7));; g.name:="g";; gap> p4 := MappingByFunction( g, g, x -> x^4 ); MappingByFunction( g, g, function ( x ) return x ^ 4; end ) gap> IsHomomorphism( p4 ); true gap> p6 := MappingByFunction( g, g, x -> x^6 ); MappingByFunction( g, g, function ( x ) return x ^ 6; end ) gap> IsHomomorphism( p6 ); false Da Gap sehr offen gehalten ist, gibt es auch einige von Anwendern geschriebene Zus¨atze, so etwa das Paket Guava zur algebraischen Codierungstheorie, das haupts¨achlich an der TU Delft entwickelt wurde. Zwei Beispiele mit Guava vermitteln einen Einblick in diese Paket. gap> B := BinaryGolayCode(); A perfect cyclic [23,12,7] code over GF(2) gap> c := CodewordNr(B, 4); x^22 + x^20 + x^17 + x^14 + x^13 + x^12 + x^11 + x^10 gap> TreatAsVector(c); gap> c; [ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 1 0 1 ] gap> R := ReedMullerCode( 3, 1 ); a linear [8,4,4] Reed-Muller (3,1) code over GF(2) gap> w := [ 1, 1, 1, 1 ] * R; [ 1 0 0 1 0 1 1 0 ] gap> Decode( R, w ); [ 1 1 1 1 ] gap> Decode( R, w + "10000000" ); # Error in first position [ 1 1 1 1 ] # Corrected by Guava
Bibliographie
1. Bu ¨ cher und Zeitschriften Die hier verwendeten Abk¨ urzungen, wie etwa EUROSAM-84“, stehen f¨ ur Prodee” dingsb¨ ande von Konferenzen und werden in Abschnitt 2 dieser Bibliographie genauer erl¨ autert. [ABV] [AGL]
[AHU]
[Aig] [ALo] [ASt] [Akr] [And] [AVL] [Bac] [BaCL] [Bch] [BCL]
[BCM]
Ash, D.W.; Blake, I.F.; Vanstone, S.A.: Low complexity normal bases. Discrete Applied Mathematics 25, Nr. 3, 1989, 191-210. Atkins, D.; Graff, M.; Lenstra, A. K.; Leyland, P. C.: The magic words are squeamish ossifrage. Advances in cryptology - ASIACRYPT ’94. 4th international conference on the theory and applications of cryptology, Wollongong, Australia, 28. Nov.-1. Dez. 1994, Proceedings. Berlin: SpringerVerlag. Lect. Notes Comput. Sci. 917, 1995, 263-277. [Herausgeber: Pieprzyk, J.; ISBN 3-540-59339-X; ISSN 0302-9743] Aho, A.V.; Hopcroft, J.E.; Ullman, J.D.: The design and analysis of computer algorithms. Addison-Wesley, 1974. [Addison-Wesley Series in Computer Science and Information Processing, Zentralblatt 0326.68005] Aigner, M.: Diskrete Mathematik. Vieweg Studium, Aufbaukurs Mathematik, 1993. [ISBN 3-528-07268-7] Adams, W.W.; Loustaunau, P.: An Introduction to Gr¨ obner Bases. Graduate Studies in Mathematics, AMS 3, 1994. [ISBN 0-8218-3804-0] Abramowitz, W.; Stegun, I.A.: Handbook of Mathematical Functions. Dover Publ. Inc. (New York), 1968. Akritas, A.G.: Elements of computer algebra with applications. John Wiley & Sons, Inc. (New York), 1989. Anderson, W.M.: A Survey of Polynomial Factorisation Algorithms. M. Phil. Thesis, Univ. of Edinburgh, CST-73-91, 1991. Adelson-Velskii, G.M.; Landis, E.M.: . Doklady Nauk SSSR 146, 1962, ¨ 263-266. [Englische Ubersetzung in Soviet Math 3, S. 1259-1263] Bach, E.: Toward a Theory of Pollard’s Rho Method. Information and Computation 90, 1991, 139-155. Barth´ elemy, J.-P., Cohen, G., Lobstein, A.: Algorithmic Complexity. University College London Press Limited, 1996. [ISBN 1-85728-451-8] Bachmann, P.: Die analytische Zahlentheorie. Teubner, Bibliotheca mathematica Teubneriana, 1894. Buchberger, B.; Collins, G.E.; Loos, R. (Herausgeber): Computer Algebra, Symbolic and Algebraic Computation. Computing Supplementum 4, Springer (Wien, New York), 1982. [Inzwischen ist eine 2. Auflage erschienen (wieder beim Springer-Verlag, allerdings nicht mehr in der Reihe Computing Supplementum)] Bosma, W.; Cannon, J.; Matthews, G.: Programming with algebraic structures: Design of the Magma language. ISSAC-94, 1994, 52-57.
368
[BCP]
[Be1] [Be2] [Ber] [Bre] [Brn] [Br1] [Br2] [BTr] [BPo] [Buc]
[Bue] [BWe]
[CAk] [Cas]
[Cav] [CCa]
[CEP] [CFa] [CL1] [CL2] [CLO] [CMu] [Coh]
[Cor]
Bibliographie
Bosma, W.; Cannon, J.; Playoust, C.: The Magma algebra system. I: The user language. J. Symb. Comput. 24, No.3-4, 1997, 235-265. [ISSN 0747-7171] Berlekamp, E.R.: Factoring Polynomials over Finite Fields. Bell System Tech. J. 46, 1967, 1853-1859. Berlekamp, E.R.: Factoring Polynomials over Large Finite Fields. Math. Comput. 24, 1970, 713-735. [ISSN 0025-5718] Bernstein, D.: Proving Primality after Agrawal-Kayal-Saxena. Online unter http://cr.yp.to/papers/aks.pdf, 2003, 15 S.. Bressoud, D.M.: Factorization and Primality Testing. Springer (New York), 1989. Brent, R.P.: An Improved Monte Carlo Factorization Algorithm. Nordisk Tidskrift for Informationsbehangling (BIT) Vol. 20, 1980, 176-184. Bronstein, M.: The Transcendental Risch Differential Equation. J. Symb. Comput. 9, 1990, 49-60. Bronstein, M.: Integration of Elementary Functions. J. Symb. Comput. 9, 1990, 117-173. Brown, W.S.; Traub, J.F.: On Euclid’s algorithm and the theory of subresultants. J. ACM, 18, 4, 1971. 505-514 Brent, R.P.; Pollard, J.M.: Factorization of the eighth Fermat Number. Math. Comput. Vol. 36, 1981, 627-630. Buchberger, B.: Ein Algorithmus zum Auffinden der Basiselemente des Restklassenringes nach einem nulldimensionalen Polynomideal. Promotionsschrift, Univ. Innsbruck, 1965. Buell, D.A.: Binary Quadratic Forms. Classical Theory and Modern Computations. Springer (New York), 1989. Becker, Th.; Weispfenning, V.: Gr¨ obner Bases. A Computational Approach to Commutative Algebra. Graduate Texts in Mathematics 141, Springer (New York, Berlin . . . ), 1993. [In Kooperation mit H. Kredel] Collins, G.E.; Akritas, A.G.: Polynomial real root isolation using Descartes’ rule of signs. SYMSAC-76, 1976, 272-275. Cassels, J.W.S.: An Introduction to the Geometry of Numbers. Die Grundlehren der Mathematischen Wissenschaften, Band 99, Springer (Berlin, G¨ ottingen, Heidelberg), 1959. Caviness, B.F.: On canonical forms and simplification. J. Assoc. Comput. Mach. 17, 1970, 385-396. Cherry, G.W.; Caviness, B. F.: Integration in Finite Terms with Special Functions: A Progress Report. Lect. Notes Comput. Sci. 174, 1984, 351-358. os, P.; Pomerance C.: On a problem of Oppenheim Canfield, E.R., Erd¨ concerning ‘Factorisatio Numerorum’. J. Number Theory 17, 1983, 1-28. Caviness, V.S.; Fateman, R.J.: Simplification of Radical Expressions. SYMSAC-76, 1976, 329-338. Collins, G.E.; Loos, R.: Polynomial real root isolation by differentiation. SYMSAC-76, 1976, 15-25. Collins, G.E.; Loos, R.: ALDES/SAC-2 now available. SIGSAM Bulletin, 1982. Cox, D.; Little, J.; O’Shea, D.: Ideals, Varieties and Algorithms. Springer (New York, Berlin . . . ), 1992. Collins, G.E.; Musser, D.R.: Analysis of the Pope-Stein Division Algorithm. Inf. Process. Lett. 6, 1977, 151-155. Cohen, H.: A Course in Computational Algebraic Number Theory. Springer (Berlin, Heidelberg, New York), 1997. [ISBN 3-540-55640-0 und 0-38755640-0] Corless, R.: Essential Maple 7. Springer-Verlag New York, 2002. [ISBN: 0-387-95352-3]
1. B¨ ucher und Zeitschriften
[CoW]
[Co1] [Co2] [CPl]
[CPB]
[CZa] [Da1] [Da2] [Da3] [DHR] [DTr] [DST]
[ELo] [EGSS]
[FGP]
[FWH]
[vGG] [Gau] [GCL] [GGr]
[GHLV]
[GKW]
[Gly]
369
Coppersmith, D.; Winograd, S.: Matrix multiplication via arithmetic progressions. J. Symb. Comput. 9, 3, 1990, 251-280. [ISSN 0747-7171, Zentralblatt 0702.65046] Collins, G.E.: Subresultants and reduced polynomial remainder sequences. J. ACM 14, 1, 1967, 128-142. Collins, G.E.: The Calculation of Multivariate Polynomial Resultants. J. ACM 18, 4, 1971, 515-532. Cannon, J.; Playoust, C.: Algebraic Programming with Magma I: An Introduction to the Magma Language. Springer (Berlin, Heidelberg, New York), 1997. [ISBN 3-540-62746-4] Cannon, J.; Playoust, C.; Wieb, B.: Algebraic Programming with Magma II: An Introduction to the Magma Categories. Springer (Berlin, Heidelberg, New York), 1997. [ISBN 3-540-62747-2] Cantor, D.G.; Zassenhaus, H.: A new Algorithm for Factoring Polynomials over a Finite Field. Math. Comp. 36, 1981, 587-592. Davenport, J.H.: The Parallel Risch Algorithm (I). EUROCAM-82, 1982, 144-157. Davenport, J.H.: y + f y = g . EUROSAM-84, 1984, 341-350. Davenport, J.H.: The Risch Differential Equation Problem. SIAM J. Comput. 15, 1986, 903-918. Deprit, A.; Henrard, J.; Rom, A.: Lunar Ephemeris: Delaunay’s Theory Revisited. Science 168, 1970, 1569-1570. Davenport, J.H., Trager, B.M.: The Parallel Risch Algorithm (II). ACM Trans. Math. Software 11, 1985, 356-362. Davenport, J.H.; Siret, Y.; Tournier, E.: Computer Algebra. Academic Press (London . . . ), 1988. [Franz¨ osisches Original: Calcul Formel, syst`emes et algorithmes de manipulation alg´ebriques, Masson (Paris).] Ellis, W. Jr.; Lodi, E.: A Tutorial Introduction to Derive. Brooks, Cole, Pacific Grove (USA), 1991. [94 Seiten, ISBN 0-534-15522-7] Eisenbud, D.; Grayson, D.; Stillman, M.; Sturmfels, B.: Computations in algebraic geometry with Macaulay 2. Springer-Verlag, 2001. [Nummer 8 in der Serie Algorithms and Computations in Mathematics“, ISBN 3-540” 42230-7] Flajolet, Ph.; Gourdon, X.; Panario, D.: The Complete Analysis of a Polynomial Factorization Algorithm over Finite Fields. J. Algorithms 40, No. 1, 2001, 37-81. [ISSN 0196-6774] Fuchssteiner, B; Wiwianka, W.; Hering, K. (Redaktion): . mathPAD journal Vol. 1, Heft 3, 1991. [Online verf¨ ugbar: ftp://ftp.mupad.de/MuPAD/mathpad/mathPAD] von zur Gathen, J.; Gerhard, J.: Modern Computer Algebra. Cambridge University Press (Cambridge), 2003. [2. Auflage, ISBN 0-521-82646-2] Disquisitiones Aritmeticae: Neuauflage bei Yale University Press (New Haven). 1966, . Geddes, K.O.; Czapor, S.R.; Labahn, G.: Algorithms for Computer Algebra. Kluwer (Boston, Dordrecht, London), 1992. Gonnet, G.H.; Gruntz, D.W.: Algebraic Manipulation: Systems. Technical Report 153, ETH Z¨ urich, Institute of Scientific Comp., 1991. [http://www.inf.ethz.ch/research/wr/publications/tr.html] Geddes, K.O.; Heal, K.M.; Labahn, G.; Vorkoetter, S.M.; Monagan M.B. (Editor): Maple V Programming Guide (Version A): Release 5. Springer Verlag, 1998. [2. Auflage, 379 Seiten, ISBN 0-387-98398-8] Grabmeier, J.; Kaltofen, E.; Weispfennig, V.: Computer Algebra Handbook, Foundations, Applications, Systems. Springer, Berlin, 2003. [637 Seiten, mit CD-Rom, ISBN 3-540-65466-6] Glynn, J.: Mathematik entdecken mit DERIVE - von der Algebra bis zur Differentialrechnung. Birkh¨ auser (Basel), 1995. [ISBN 3-7643-5001-6, u ¨bersetzt von Daniela Treichel]
370
[Gon]
[Gua] [Hec] [Hen] [HHR]
[Hor] [HQ]
[HSA]
[HWH] [HWr] [Je1] [Je2]
[Jun]
[Jor]
[Kah] [Kal] [Kap] [KBe] [KBK]
[Kl1] [Kl2] [KLL]
[Kne] [Kn1]
Bibliographie Gonzalo, T.: Square Roots Modulo p . Proceedings der LATIN 2002: Theoretical Informatics : 5th Latin American Symposium, Cancun, Mexico, April 3-6, Lecture Notes in Computer Science (LNCS), Springer-Verlag Heidelberg 2286, 2002. [Herausgeber: Rajsbaum, S., ISSN: 0302-9743] Guan, D. J.: Experience in Factoring Large Integers Using Quadratic Sieve. , 2003. [Online Folien http://guan.cse.nsysu.edu.tw/] Heck, A.: Introduction to Maple. Springer-Verlag, New York, 2003. [3. Auflage, ISBN 0-387-00230-8] Hensel, K.: Theorie der Algebraischen Zahlen. Teubner (Leipzig), 1908. Heal, K.M.; Hansen, M.L.; Rickard, K.M.: Maple V Learning Guide (Version A): Release 5. Springer Verlag, 1998. [2. Auflage, 296 Seiten, ISBN 0-387-98397-X] Horowitz, E.: A sorting algorithm for polynomial multiplication. J. Assoc. Comput. Machin. 22, 1975, 450-462. Heise, W.; Quattrocchi, P.: Informations- und Codierungstheorie. SpringerVerlag (Berlin, Heidelberg, New York, 1995. [ISBN 3-540-57477-8; Dritte, neubearbeitete Auflage] Horowitz, E.; Sahni, S.; Anderson-Freed, S.: Grundlagen von Datenstrukturen in C. International Thomson Publishing (Bonn, Albany, . . . ), 1994. [ISBN 3-929821-00-1] Harper, D.; Wooff, C.; Hodgkinson, D.: A Guide to computer algebra systems. John Wiley & Sons (Chichester), 1991. Hardy, G.H.; Wright, E.M.: Einf¨ uhrung in die Zahlentheorie. Oldenbourg ¨ Verlag, M¨ unchen, 1985. Ubersetzung der 3. Auflage Jebelean, T.: Practical Integer Division with Karatsuba Complexity. ISSAC-97, 1997, 339-341. [ISBN 0-89791-875-4] Jebelean, T.: A Double-Digit Lehmer-Euclid Algorithm for Finding the GCD of Long Integers. J. Symb. Comp. Vol. 19, 1997, 145-157. [ISSN: 0747-7171] Jungnickel, D.: Finite Fields – Structure and Arithmetics. B.I.-Wissenschaftsverlag (Mannheim), 1993. [Zentralblatt 0779.11058, ISBN 3-41116111-6] Jordan, C.: Calculus of finite differences. Chelsea Publishing Company (New York), 1965. [ISBN 0-828-40033-4, Zentralblatt 0154.33901, 3. Auflage] Kahrimanian, H.: Analytic differentiation by a digital computer. MA Thesis, Temple University, Philadelphia, 1953. Kaltofen, E.: A Note on the Risch Differential Equation. Lect. Notes Comput. Sci. 174, 1984, 359-366. Kapur, D.: Geometry Theorem Proving Using Hilbert’s Nullstellensatz. SYMSAC-86, 1986, 202-208. Knuth, D.E., Bendix, P.B.: Simple Word Problems in Universal Algebras. OXFORD-67, 1967, 263-298. Kofler, M.; Bitsch, G.; Komma, M.: Maple: Einf¨ uhrung, Anwendung, Referenz. Addison-Wesley, Scientific Computing, 2001. [4., u ¨berarbeitete Auflage, 557 Seiten plus CD-Rom, ISBN 3-8273-1732-0] Klip, D.A.: A comparative study of algorithms for sparse polynomial multiplication. SIGSAM Bull. 12, No. 3, 1978, 12-19. Klip, D.A.: New algorithms for polynomial multiplication. SIAM J. Comput. 8, , 1979. 326-343 Kannan, R.; Lenstra, A.K.; Lov´ asz, L.: Polynomial Factorization and Nonrandomness of Bits of Algebraic and some Transcendental Numbers. Math. Comput. 50, Nr. 181, 1988, 235-250. Kneser, M.: Lineare Abh¨ angigkeit von Wurzeln. Acta Arith. 26, 307-308, 1975. [ISSN 0065-1036, Zbl 0314.12001] Knuth, D.E.: The Art of Computer Programming - Volume 1: Fundamental Algorithms. Addison Wesley (Reading, Massachusetts . . . ), 1968.
1. B¨ ucher und Zeitschriften
[Kn2] [KOf]
[Kol] [KRo] [Kre] [KrJ] [Kro]
[KRSW]
[Lan] [LRi]
[Leh] [Le1] [Le2] [Le3]
[Le4] [Le5] [Le6] [Le7]
[Lo2] [LLL] [LMP]
[LNi] [LSc] [Loo]
371
Knuth, D.E.: The Art of Computer Programming - Volume 2: Seminumerical Algorithms. Addison Wesley (Reading, Massachusetts . . . ), 1969. Karatsuba, A.A.; Ofman, Y.: Multiplication of Multidigit Numbers on Automata. Soviet Physics-Doklady 7, 1963, 595-596. [Russisches Original in Dokl. Akad. Nauk SSSR 145, 1962, 293-294.] Kolchin, E.R.: Differential Algebra and Algebraic Groups. Pure and Applied Mathematics Vol. 54, 1973. Kreuzer, M.; Robbiano, L.: Computational Commutative Algebra I. Springer Verlag, 2000. [ISBN 3-540-67733-X] Kredel, H.: MAS Modula-2 Algebra System. DISCO-90, 1990, 270-271. Krandick, W.; Jebelean, T.: Bidirectional Exact Integer Division. J. Symb. Comput. 21, 1996, 441-455. [ISSN 0747-7171] Kronecker, L.: Vorlesungen u ¨ ber Zahlentheorie. Springer-Verlag (Berlin, Heidelberg, New York), 1978. [1. Bd.: 1. - 33. Vorlesung. Bearb. u. herausg. von Kurt Hensel. Reprint der Erstaufl. beim Teubner-Verlag, Leipzig, 1901] Klein, G.; Rott, M.; Sch¨ afler, S.; Wimmer, S.: Schnelle Algorithmen f¨ ur d¨ unnbesetzte Polynome. Technische Universit¨ at M¨ unchen; Fakult¨ at f¨ ur Mathematik; Interdisziplin¨ ares Projekt Informatik - Mathematik, 1997. [Die Dokumentation zu Spock gibt es im WWW unter http://www.ma.tum.de/˜kaplan/ca/spock/] Landau, S.: Factoring Polynomials over Algebraic Number Fields. SIAM J. Comput. 14, 1985, 184-195. Lazard, D.; Rioboo, R.: Integration of Rational Functions: Rational Computation of the Logarithmic Part. J. Symb. Comp. 9, Nr. 2, 1990, 113-115. Lehmer, D.H.: Euclid’s Algorithm for Large Numbers. Am. Math. Mon. 45, 1938, 227-233. [ISSN 0001-0782] Lenstra, A.K.: Lattices and Factorization of Polynomials over Algebraic Number Fields. EUROCAM-82, 1982, 32-39. Lenstra, A.K.: Factoring Polynomials over Algebraic Number Fields. EUROCAL-83, 1983, 245-254. Lenstra, A.K.: Factoring Multivariate Polynomials over Algebraic Number Fields. Proc. of the 11th Symp. on Mathematical foundations (Prag) of computer science in LNCS 176, 1984, 389-396. Lenstra, A.K.: Factoring Multivariate Polynomials over Algebraic Number Fields. SIAM J. Comput. 16, 1987, 591-598. Lenstra, H.W.: Algorithms for finite fields. London Mathematical Society Lecture Note Series 154, 1990, 76-85. Lenstra, H.W.: Factoring integers with elliptic curves. Annals of Mathematics Vol. 126, 1987, 649-673. Lenstra, A.K.: Factorization of polynomials. Computational methods in number theory, Part I, Math. Cent. Tracts Vol. 154/155, 1982, 169-198. [Mathematisch Centrum Amsterdam, Zentralblatt 0509.12002] Lorenz, F.: Lineare Algebra II. Wissenschaftsverlag (Mannheim, Wien, Z¨ urich), 1989. [2. Auflage] Lenstra, A.K.; Lenstra, H.W.; Lov´ asz, L.: Factoring Polynomials with Rational Coefficients. Math. Ann. 261, 1982, 515-534. Lenstra, A.K.; Lenstra, H.W.jun.; Manasse, M.S.; Pollard, J.M.: The factorization of the ninth Fermat number. Math. Comput. 61, No.203, 1993, 319-349. [ISSN 0025-5718, Zentralblatt 0792.11055] Lidl, R.; Niederreiter, H.: Introduction to finite fields and their applications. University Press (Cambridge), 1986. Lenstra, H.W.; Schoof, R.J.: Primitive normal bases for finite fields. Math. Comput. 48, 1987, 217-231. Loos, R.G.K.: The Algorithm Description Language ALDES. SIGSAM Bulletin 14, Number 1, 1976, 15-39.
372
Bibliographie
[Mat]
[MBr] [Men]
[Me1] [Me2] [Mi1] [Mi2] [Mi3] [Mo1] [Mo2] [Mo3] [MOm] [Mon] [Mor] [MOVW] [Mu1] [Mu2] [Nar] [Nol] [Nor] [NZe] [Par] [Pec] [Pin] [Po1] [Po2] [Po3]
Matiyasevich, Y.V.: Diophantine representation of recursively enumerable predicates. Actes Congr. internat. Math. 1, 1971, 235-238. [Je nach Transskription auch Matijasevic geschrieben] Morrison, M. A.; Brillhart M.: A Method of Factoring and the Factorization of F7 . Math. Comput. 29, 1975, 183-205. Menezes, A.J. (Editor); Blake, I.F.; Gao, X.; Mullin, R.C.; Vanstone, S.A.: Applications of finite fields. Kluwer Academic Publishers (Boston/USA), 1993. [ISBN 0-7923-9282-5] Meyberg, K.: Algebra, Teil 1. Carl Hanser (M¨ unchen, Wien), 1975. Meyberg, K.: Algebra, Teil 2. Carl Hanser (M¨ unchen, Wien), 1976. Mignotte, M.: An Inequality about Factors of Polynomials. Math. Comput. 28, 1974, 1152-1157. Mignotte, M.: Some Inequalities About Univariate Polynomials. SYMSAC-81, 1981, 195-199. Mignotte, M.: Mathematics for Computer Algebra. Springer (New York, Berlin . . . ), 1991. Moenck, R.T.: Studies in Fast Algebraic Algorithms. Ph.D. Thesis, Univ. of Toronto, 1973. Moenck, R.T.: Practical fast polynomial multiplication. SYMSAC-76, 1976, 136-148. Moenck, R.T.: On Computing Closed Forms for Summations. MACSYMA77, 1977, 225-236. Massey, J.; Omura, J.: Computational method and apparatus for finite field arithmetic. U.S.patent #4.587.627, 1986. Montgomery, P.L.: Speeding the Pollard and elliptic curve methods of factorization. Math. Comput. Vol. 48, 1987, 243-264. Mordell, L.J.: On the linear independence of algebraic numbers. Pac. J. Math. 3, 625-630, 1953. [ISSN 0030-8730, Zbl 0051.26801] Mullin, R.C.; Onyszchuk, J.M; Vanstone, S.A.; Wilson, R.M.: Optimal normal bases in GF (pn ) . Discrete Appl. Math. 22, No. 2, 1989, 149-161. Musser, D.R.: Multivariate polynomial factorization. J. ACM 22, 1975, 291-308. [ISSN 0004-5411] Musser, D.R.: On the efficiency of a polynomial irreducibility test. J. ACM 25, 1978, 271-282. Narkiewicz, W.: Elementary and Analytic Theory of Algebraic Numbers. Panstwowe Wydawnictwo Naukowe (Warschau), 1974. Nolan, J.: Analytic differentiation on a digital computer. Thesis, Massachusetts Institute of Technology (Cambridge, USA), 1953. Norman, A. C.: Integration in Finite Terms. Computing Suppl. 4, 1982, 57-69. Najid-Zejli, H.: Computation in Radical Extensions. EUROSAM-84, 1984, 115-122. Parberry, I.: Problems on Algorithms. Prentice-Hall, Inc., 1995. [ISBN 013-433558-9] Pecquet, L.: A first course in Magma. The computer algebra system. Springer-Verlag Berlin Heidelberg, 2001. [ISBN: 3-540-65885-8] Pinch, R.G.E.: Some Primality Testing Algorithms. Department of Pure Mathemetics and Mathematical Statistics, University of Cambridge, 1993. Pollard, J.M.: Theorems on Factorization and Primality Testing. Proc. Cambridge Philo. Soc. Vol. 76, 1974, 521-528. Pollard, J.M.: A Monte Carlo Method for Factorization. Nordisk Tidskrift for Informationsbehangling (BIT) Vol. 15, 1975, 331-334. Pomerance, C.: Analysis and Comparison of some Integer Factoring Algorithms. Computational Methods in Number Theory Part I, 1982, 89-139. in: Mathematical Centre Tract #154, Mathematisch Centrum, Amsterdam, Herausgeber: Lenstra, H.W.; Tijdeman, R.
1. B¨ ucher und Zeitschriften
[Po4] [Pri] [PSt] [Ran]
[Re1] [Ric] [Rie] [Ris] [Ri1] [Ri2] [Ri3] [Rob] [Ro1] [Ro2] [Ro3] [Ro4]
[RSA] [RSc] [Sch] [Sc¨ o] [ScS] [Scw] [Sca] [SFl] [Sha]
[Si1] [Si2]
373
Pomerance, C.: The Quadratic Sieve Factoring Algorithm. EUROCRYPT84, 1985, 169-182. Pritchard, P.: A Sublinear Additive Sieve for Finding Prime Numbers. Comm. ACM 24, 1981, 18-23. Pope, D.A.; Stein, M.L.: Multiple Precision Arithmetic. Commun. ACM 3, 1960, 652-654. Rand, R.H.: Computer Algebra in Applied Mathematics, An Introduction to Macsyma. Research Notes in Mathematics 94, 1984. Pitman (BostonLondon-Melbourne) Redfern, D.: Maple V Handbook - Release 4. Springer-Verlag, 1996. [3. Auflage, ISBN 0-387-94538-5] Richardson, D.: Some undecidable problems involving elementary functions of a real variable. J. Symb. Logic 33, 1968, 514-520. Riesel, H.: Prime Numbers and Computer Methods for Factorization. Birkh¨ auser (Boston), 1994. [zweite Auflage] Risch, R.H.: The Problem of Integration in Finite Terms. Trans. Am. Math. Soc. 139, 1969, 167-189. Risch, R.H.: The Problem of Integration in Finite Terms. Trans. Am. Math. Soc. 139, 1969, 167-189. Risch, R.H.: The Solution of the Problem of Integration in Finite Terms. Bull. Am. Math. Soc. 76, 1970, 605-608. Risch, R.H.: Algebraic Properties of the Elementary Functions of Analysis. Amer. Jour. of Math. 101, 1979, 743-759. Robbiano, L.: Term Orderings on the Polynomial Ring. EUROCAL-85, 1985, 513-517. Rosenlicht, M.: Liouville’s Theorem on Functions with Elementary Integrals. Pacific J. Math. 24, 1968, 153-161. Rosenlicht, M.: Integration in Finite Terms. Amer. Math. Monthly 79, 1972, 963-972. Rosenlicht, M.: On Liouville’s Theory of Elementary Functions. Pacific Journal of Mathematics Vol. 65, Nr. 2, 1976, 485-493. Rothstein, M.: Aspects of Symbolic Integration and Simplification of Exponential and Primitive Functions. Ph. D. Thesis, Univ. of Wisconsins, Madison, 1976. Rivest, R.L.; Shamir, A.; Adleman, L.: A method for obtaining digital signatures and public-key cryptosystems. Commun. ACM 21, 1978, 120-126. Rosser, J. Barkley; Schoenfeld, L.: Approximate Formulas for some Functions of Prime Numbers. Ill. J. Math. 6, 1962, 64-69. Schinzel, A.: On Linear Dependence of Roots. Acta arithmetica 28, 1975, 161-175. Sch¨ onhage, A.: The Fundamental Theorem of Algebra in Terms of Computational Complexity. Technical Report, Math. Inst. Univ. T¨ ubingen, 1982. Sch¨ onhage, A.; Strassen, V.: Schnelle Multiplikation großer Zahlen. Computing 7, 1971, 281-292. [ISSN 0010-485X] Schwardmann, U.: Computeralgebra-Systeme, Programme f¨ ur Mathematik mit dem Computer. Addison-Wesley, 1995. [ISBN 3-89319-682-X] Schwartz, D. I.: Introduction to Maple. Prentice Hall, 1999. [ISBN 0-13095133-1] Sedgewick, R., Flajolet, Ph.: Analysis of Algorithms. Addison-Wesley, 1996. [ISBN 0-201-40009-X] Shamir, A.: A Polynomial Time Algorithm for Breaking the MerkleHellman Cryptosystem. Proc. 23rd IEEE Symposium on the Foundations of Computer Science, 1982. Silverman, J.J.: The Arithmetic of Elliptic Curves. Graduate Texts in Math. 106, 1986. [Springer-Verlag] Silverman, R.: The Multiple Polynomial Quadratic Sieve Method of Computation. Math. Comput.Vol. 48, No. 177, 1987, 329-340.
374
[Si3] [Si4]
[Sie] [SSh]
[Str] [SSC]
[Til]
[Too]
[Tra] [Vi1] [Vi2] [Vi3]
[Wal] [Wa1] [Wa2] [Wes] [Wg1] [Wg2] [Wan] [WaR] [Wat] [Wei] [Wie] [Wir] [Wol]
[WRo]
Bibliographie
Simon, B.: Comparative CAS Reviews. Notices of the American Mathematical SocietyVolume 39, Number 7, September 1992, 700-710. Simon, B.: Symbolic Magic. The Desktop Engineering Magazine Volume 3, Issue 8, April 1998. [ISSN 1085-0422, http://www.deskeng.com/articles/98/April/symbolic/] Siegel, C.L.: Algebraische Abh¨ angigkeit von Wurzeln. Acta Arith. 21, 5964, 1972. [ISSN 0065-1036, Zbl 0254.10030] Stepanov, S.A.; Shparlinskij, I. .: On the construction of a primitive normal basis in a finite field. Mathematics of the USSR-Sbornik 67 Nr. 2, 1990, 527-533. Strassen, V.: Gaussian elimination is not optimal. Numer. Math. 13, 1969, 354-356. [ISSN 0029-599X, Zbl 0185.40101] Singer, M.F.; Saunders, B.D.; Caviness, B.F.: An Extension of Liouville’s Theorem of Integration in Finite Terms. SIAM J. Comput. 14, Nr. 4, 1985, 966-990. van Tilborg, H.C.A.: An Introduction to Cryptology. Kluwer International Series in Engineering and Computer Science, 52 (Kluwer Academic Publishers), 1988. [ISBN 0-89838-271-8] Toom, A.L.: The Complexity of a Scheme of Functional Elements Simulating the Multiplication of Integers. Dokl. Akad. Nauk SSSR 150, 1963, ¨ 496-498. [Englische Ubersetzung in: Soviet Mathematics 3, 1963.] Trager, B.: Integration of Algebraic Functions. Ph. D. Thesis, Dept. of EECS, M.I.T., 1984. Viry, G.: Factorisation des polynˆ omes ` a plusieurs variables ` a coefficients entiers. RAIRO, Inf. Theor. 12, 1978, 305-318. [ISSN 0296-1598] Viry, G.: Factorisation des polynomes ` a plusieurs variables. RAIRO, Inf. Theor. 14, 1980, 209-223. [ISSN 0296-1598] Viry, G.: Factorisation sur Z[X] des polynomes de degr´e elev´ e a l’aide d’un monomorphisme. RAIRO, Inform. Theor. Appl. 24, No.4, 1990, 387-407. [ISSN 0988-3754] Walz, A.: Maple 7 - Rechnen und Programmieren. R. Oldenbourg Verlag GmbH (M¨ unchen), 2002. [ISBN 3-486-25542-8] Waerden, B.L. van der: Algebra I. Springer (Berlin), 1993. [9. Auflage] Waerden, B.L. van der: Algebra II. Springer (Berlin), 1993. [6. Auflage] Wester, M.J. (ed.): Computer Algebra Systems: A Practical Guide. John Wiley & Sons (Chichester), 1999. [436 Seiten, ISBN: 0-471-98353-5] Wang, P.S.: Factoring multivariate polynomials over algebraic number fields. Math. Comput. 30, 1976, 324–336. Wang, P.S.: An improved multivariate polynomial factoring algorithm. Math. Comput. 32, 1978, 1215-1231. [ISSN 0025-5718] Wan, D.: Factoring multivariate polynomials over large finite fields. Math. Comput. 54, No.190, 1990, 755-770. [ISSN 0025-5718] Wang, P.S.; Rothschild, L.P.: Factoring multivariate polynomials over the integers. Math. Comput. Vol. 29, 1975, 935–950. [ISSN 0025-5718] Waterhouse, W.C.: Abelian varieties over finite fields. Ann. Sci. Ecole Norm. Sup. (4) 2, 1969, 521-560. Weispfenning, V.: Admissible Orders and Linear Forms. SIGSAM Bulletin 21, Number 2, 1987. Wiedemann, D. H.: Solving sparse linear equations over finite fields. IEEE Transactions on Information Theory 32, 1, 1986, 54-62. [ISSN:0018-9448] Wirth, N.: Programming in Modula-2. Springer (Berlin, Heidelberg, New York), 1985. Wolfram, St.: The Mathematica Book. Wolfram Media, Inc., 2003. [5. Auflage, ISBN 1-57955-022-5, 1488 Seiten, die deutsche Version Das Mathe” ¨ matica Buch“ von Addison-Wesley mit ISBN 3-8273-1036-9 ist die Ubersetzung der 3. Auflage] Weinberger, P.J.; Rothschild, L.P.: Factoring Polynomials over Algebraic Number Fields. ACM Trans. on Mathematical Software 2, 1976, 335-350.
2. Konferenzen und zugeh¨ origen Proceedingsb¨ ande
[Wu] [Yun] [Zay]
[Zi1] [Zi2] [Zi3] [Zas]
375
Wu, W.: Basic Principles of Mechanical Theorem Proving in Elementary Geometries. J. Syst. Sci. and Math. Sci. 4(3), 1984, 207-235. Yun, D.Y.Y.: On Squarefree Decomposition Algorithms. SYMSAC-76, 1976, 26-35. Zayer, J.: Faktorisieren mit dem Number Field Sieve. Dissertation an der Universitt des Saarlandes, 1995. [http://www.informatik.tudarmstadt.de/ftp/pub/TI/reports/zayer.diss.ps.gz] Zippel, R.E.: Probabilistic Algorithms for Sparse Polynomials. PhD thesis, Massachusetts Institute of Technology (Cambridge, USA), 1979. Zippel, R.E.: Probabilistic Algorithms for Sparse Polynomials. EUROSAM79, 1979, 216-226. Zippel, R.E.: Effective Polynomial Computation. Kluwer (Boston, Dordrecht, London), 1993. [ISBN 0-7923-9375-9] Zassenhaus, H.: On Hensel Factorisation I. J. Number Theory 1, 1969, 291-331.
2. Konferenzen und zugeho ande ¨rigen Proceedingsb¨ AAECC-2
AAECC-3
AAECC-4
AAECC-5
AAECC-6
AAECC-7
AAECC-8
AAECC-9
Applied Algebra, Algorithmics and Error-Correcting Codes; 2nd International Conference, Toulouse (Frankreich), 1.-5. Oktober 1984. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 228, SpringerVerlag Berlin etc. [Herausgeber: Poli, A.; ISBN 3-540-16767-6] Algebraic Algorithms and Error-Correcting Codes; 3rd International Conference, Grenoble (Frankreich), 15.-19. Juli 1985. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 229, Springer-Verlag Berlin etc. [Herausgeber: Calmet, J.; ISBN 3-540-16776-5] Applicable Algebra, Error-Correcting Codes, Combinatorics and Computer Algebra; 4th International Conference, Karlsruhe (Deutschland), 23.-26. September 1986. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 307, Springer-Verlag Berlin etc. [Herausgeber: Beth, T.; Clausen, M.; ISBN 3-540-19200-X] Applied Algebra, Algebraic Algorithms and Error-Correcting Codes; 5th International Conference, Menorca (Spanien), 15.-19. Juni 1987. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 356, SpringerVerlag Berlin etc. [Herausgeber: Huguet, L.; Poli, A.; ISBN 3-54051082-6] Applied Algebra, Algebraic Algorithms and Error-Correcting Codes; 6th International Conference, Rom (Italien), 4.-8. Juli 1988. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 357, Springer-Verlag Berlin etc. [Herausgeber: Mora, T.; ISBN 3-540-51083-4] Applied Algebra, Algebraic Algorithms and Error-Correcting Codes; 7th International symposium, Toulouse (Frankreich), 1989. Ver¨ offentlicht North-Holland, Amsterdam. Applied Algebra, Algebraic Algorithms and Error-Correcting Codes; 8th International Symposium bzw. 2. International Joint Conference (IJC-2) zusammen mit International Symposium on Symbolic Algebraic Computation (ISSAC-90) , Tokyo (Japan), 20.-24. August 1990. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 508, SpringerVerlag Berlin etc. [Herausgeber: Sakata, S; ISBN 3-540-54195-0] Applied Algebra, Algebraic Algorithms and Error-Correcting Codes; 9th International symposium, New Orleans/LA (USA), 7.-11. Oktober 1991. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 539, Springer-Verlag Berlin etc. [Herausgeber: Mattson, H.F.; Mora, T.; Rao, T.R.N.; ISBN 3-540-54522-0 oder 0-387-54522-0]
376
Bibliographie
AAECC-10
AAECC-11
AAECC-12
AAECC-13
AAECC-14
AAECC-15
DISCO-90
DISCO-92
DISCO-93
DISCO-96
EUROCAL-83
EUROCAL-85
EUROCAL-85
EUROCAL-87
Applied Algebra, Algebraic Algorithms and Error-Correcting Codes; 10th International Symposium, San Juan de Puerto Rico (Puerto Rico), 10.-14. Mai 1993. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 673, Springer-Verlag Berlin etc. [Herausgeber: Cohen, G.; Mora, T.; Moreno, O.; ISBN 3-540-56686-4] Applied Algebra, Algebraic Algorithms and Error-Correcting Codes; 11th International Symposium, Paris (Frankreich), Juli 1995. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 948, SpringerVerlag Berlin etc. [Herausgeber: Cohen, G.; Giusti M.; Mora, T.; ISBN 3-540-60114-7] Applied Algebra, Algebraic Algorithms and Error-Correcting Codes, Toulouse (Frankreich), 23.-27. Juni 1997. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 1255, Springer-Verlag Berlin etc. [Herausgeber: Mora, T.; Mattson, H.; ISBN 3-540-63163-1] Applied Algebra, Algebraic Algorithms and Error-Correcting Codes, Honolulu, Hawaii (USA), 15.-19. November 1999. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 1719, Springer-Verlag Berlin etc. [Herausgeber: Fossorier, M.; Hideki Imai; Shu Lin; Poli, A; ISBN 3-540-66723-7] Applied Algebra, Algebraic Algorithms and Error-Correcting Codes, Melbourne (Australia), 26.-30. November 2001. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 2227, Springer-Verlag Berlin etc. [Herausgeber: Boztas, S.; Shparlinski, I.; ISBN 3-540-40111-3] Applied Algebra, Algebraic Algorithms and Error-Correcting Codes, Toulouse (Frankreich), 12.-16. Mai 2003. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 2643, Springer-Verlag Berlin etc. [Herausgeber: Fossorier, M.; Hoeholdt, T.; Poli, A.; ISBN 3-540-40111-3] Design and implementation of symbolic computation systems, Capri (Italien), 10.-12. April 1990. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 429, Springer-Verlag Berlin etc. [Herausgeber: Miola A.; ISBN: 3-540-52531-9] Design and implementation of symbolic computation systems, Bath (Großbritannien), 13.-15. April 1992. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 721, Springer-Verlag Berlin etc. [Herausgeber: Fitch J.P.; ISBN 3-540-57272-4] Design and implementation of symbolic computation systems, Gmunden ¨ (Osterreich), 15.-17. September 1993. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 722, Springer-Verlag Berlin etc. [Herausgeber: Miola, A.; ISBN 3-540-57235-X] Design and implementation of symbolic computation systems, Karlsoffentlicht in Lecture ruhe (Deutschland), 18.-20. September 1996. Ver¨ Notes in Computer Science (LNCS) 1128, Springer-Verlag Berlin etc. [Herausgeber: Calmet, J.; Limongelli, C.; ISBN 3-540-61697-7] European Conference on Computer Algebra, Symbolic and Algebraic Computation, London (England), 28.-30. M¨ arz 1983. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 162, Springer-Verlag Berlin etc. European Conference on Computer Algebra, Volume 1: Invited Lectu¨ res, Linz (Osterreich), 1.-3. April 1985. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 203, Springer-Verlag Berlin etc. [Herausgeber: Buchberger, B.; ISBN 3-540-15983-5] European Conference on Computer Algebra, Volume 2: Research Con¨ tributions, Linz (Osterreich), 1.-3. April 1985. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 204, Springer-Verlag Berlin etc. [Herausgeber: Caviness, B.F.; ISBN 3-540-15984-3] European Conference on Computer Algebra, Leipzig, 2.-5.Juni 1987. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 378, Springer-Verlag Berlin etc. [Herausgeber: Davenport, J.H.; ISBN 3-54051517-8
2. Konferenzen und zugeh¨ origen Proceedingsb¨ ande
377
EUROCRYPT European Workshop on the Theory and Application of Cryptographic 84 Techniques, Paris (Frankreich), 9.-11. April 1984. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 209, Springer-Verlag Berlin etc. [Herausgeber: Beth, Th.; Cot, N.; Ingemarsson, I.; 491 S.; ISBN 3-540-16076-0] EUROCAM-82 European Computer Algebra Conference, Marseille (Frankreich), 5.7. April 1982. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 144, Springer-Verlag Berlin etc. [Herausgeber: Calmet, J.; ISBN 3-540-11607-9] EUROSAM-74 European Symposium on Symbolic and Algebraic Manipulation der SIGSAM, Stockholm (Schweden), 1.-2. August 1974. Ver¨ offentlicht im SIGSAM Bulletin. EUROSAM-79 European Symposium on Symbolic and Algebraic Manipulation, Marseille (Frankreich), 1979. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 72, Springer-Verlag Berlin etc. [Herausgeber: Ng; ISBN 3-540-09519-5] EUROSAM-84 International Symposium on Symbolic and Algebraic Computation, Cambridge (England), 9.-11. Juli 1984. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 174, Springer-Verlag Berlin etc. [Herausgeber: Fitch, J.; ISBN 3-540-13350-X] ISSAC-88 International Symposium on Symbolic and Algebraic Computation der ACM, Rom (Italien), 4.-8. Juli 1988. Ver¨ offentlicht in Lecture Notes in Computer Science (LNCS) 358, Springer-Verlag Berlin etc. [Herausgeber: Gianni, P.; ISBN 3-540-51084-2] ISSAC-89 International Symposium on Symbolic and Algebraic Computation der ACM, Portland (Oregon,USA), 17.-19. Juli 1989. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [ISBN 0-89791-325-6] ISSAC-90 International Symposium on Symbolic and Algebraic Computation bzw. 2. International Joint Conference (IJC-2) zusammen mit Applied algebra, algebraic algorithms and error-correcting codes (AAECC-8) der ACM, Tokyo (Japan), 20.-24 August 1990. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: Watanabe, S.; Nagata, M.; ISBN 0-89791-401-5] ISSAC-91 International Symposium on Symbolic and Algebraic Computation der ACM, Bonn (Deutschland), 15.-17. Juli 1991. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: Watt, S.M.; ISBN 0-89791437-6] ISSAC-92 International Symposium on Symbolic and Algebraic Computation der ACM, Berkeley (California, USA), 27.-29 Juli 1992. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: Wang, P.; ISBN 089791-489-9] ISSAC-93 International Symposium on Symbolic and Algebraic Computation der offentlicht als ProceedingsACM, Kiew (Ukraine), 6.-8 Juli 1993. Ver¨ Band bei ACM-Press. [Herausgeber: Bronstein, M.; ISBN 0-89791-6042] ISSAC-94 International Symposium on Symbolic and Algebraic Computation der ACM, Oxford (Großbrittannien), 20.-22 Juli 1994. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: von zur Gathen, J. et al., ISBN 0-89791-638-7] ISSAC-95 International Symposium on Symbolic and Algebraic Computation der ACM, Montreal (Kanada), 10.-12. Juli 1995. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: Levelt, A.; ISBN 0-89791699-9] ISSAC-96 International Symposium on Symbolic and Algebraic Computation der ACM, Z¨ urich (Schweiz), 24.-26. Juli 1996. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: Lakshman, Y.N.; ISBN 089791-796-0]
378
Bibliographie
ISSAC-97
International Symposium on Symbolic and Algebraic Computation der ACM, Maui (HI, USA), 21.-23. Juli 1997. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: K¨ uchlin, W.; ISBN 0-89791875-4] ISSAC-98 International Symposium on Symbolic and Algebraic Computation der ACM, Rostock (Deutschland), 13.-15. August 1998. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: Gloor, O.; ISBN 158113-002-3]) ISSAC-99 International Symposium on Symbolic and Algebraic Computation der ACM, Vancouver (Kanada), 28.-31. Juli. Ver¨ offentlicht als ProceedingsBand bei ACM-Press. [Herausgeber: Dooley, S.; ISBN 1-58113-073-2]) ISSAC-2000 International Symposium on Symbolic and Algebraic Computation der ACM, St. Andrews (Schottland), 2000. Ver¨ offentlicht als ProceedingsBand bei ACM-Press. [Herausgeber: Traverso, C.; ISBN 1-58113-218-2]) ISSAC-2001 International Symposium on Symbolic and Algebraic Computation der ACM, London (Ontario, Kanada), 2001. Ver¨ offentlicht als ProceedingsBand bei ACM-Press. [Herausgeber: Kaltofen, E.; Villard, G.; ISBN 1-58113-417-7]) ISSAC-2002 International Symposium on Symbolic and Algebraic Computation der ACM, Lille (Frankreich), 7.-10. Juli 2002. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: Giusti, M.; ISBN 1-58113484-3]) ISSAC-2003 International Symposium on Symbolic and Algebraic Computation der ACM, Philadelphia (USA), 3.-6. August 2003. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: Hoon Hong; ISBN 1-58113641-2]) MACSYMA-77 MACSYMA Users’ Conference, Berkeley (California, USA), 27.-29. Juli 1977. Ver¨ offentlicht vom MIT.[Herausgeber: Fateman R.J. et al. MACSYMA-79 MACSYMA Users’ Conference, Washington (D.C, USA), 20.-22. Juni 1979. Ver¨ offentlicht vom MIT.[Herausgeber: Lewis, V.E.] MACSYMA-84 MACSYMA Users’ Conference, New York (USA), 23.-25. Juli 1984. Veroffentlicht vom MIT.[Herausgeber: Golden, V.E.; Hussain, M.A.] ¨ OXFORD-67 Conference on Computational Problems in Abstract Algebra (Leech, J. ed.), Oxford, England, 29. August-2. September 1967. Ver¨ offentlicht Pergamon Press, Oxford. SYMSAC-66 Symposium on Symbolic and Algebraic Computation der ACM, , 1966. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. SYMSAC-71 Symposium on Symbolic and Algebraic Computation der ACM, Los Angeles (USA), 23.-25. M¨ arz 1971. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: Petrick, S.R.] SYMSAC-76 Symposium on Symbolic and Algebraic Computation der ACM, Yorktown Heights (New York, USA), 10.-12. August 1976. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: Jenks, R.D.] SYMSAC-81 Symposium on Symbolic and Algebraic Computation der ACM, Snowbird (Utah, USA), 5.-8. August 1981. Ver¨ offentlicht als ProceedingsBand bei ACM-Press. [Herausgeber: Wang, P.S.; ISBN 0-89791-047-8] SYMSAC-86 Symposium on Symbolic and Algebraic Computation der ACM, Waterloo (Kanada), 21.-23. Juli 1986. Ver¨ offentlicht als Proceedings-Band bei ACM-Press. [Herausgeber: Char, B.W.; ISBN 0-89791-199-7]
Index
Mathematische Abk¨ urzungen, wie etwa Mon(X; p) , die sich alphabetisch einsortieren lassen, finden sich unter dem entsprechenden Buchstaben. Nicht alphabetisch einzusortierende Symbole. wie etwa −→ sind unter dem Stichpunkt Symbole aufgelistet. Die Seitenzahlen von Algorithmen sind durch den Schrifttyp typewriter gekennzeichnet, die von mathematischen Symbolen sind schr¨aggestellt.
A Ableitung –, formale 51 230 –, partielle 180 Abschluss –, Zariski- 306 Additionsformeln 189 190 192 adjungiert 89 Adleman 167 ahnlich 28 ¨ ¨ Ahnlichkeitskoeffizienten 28 algebraisch –, abh¨ angig 305 –, unabh¨ angig 305 Algol 4 Algorithmus 7 –, Berlekamp- 271 –, –, f¨ ur kleine K¨ orper 239 –, Brent- 172 –, CFRAC 215 –, deterministischer 7 –, ECM 215 –, erweiterter euklidischer 24 194 –, –, Berlekamps Version 87
–, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –,
euklidischer 23 57 –, Anzahl Divisionsschritte 81 –, erweiterter 24 50 98 194 –, Verbesserung nach Lehmer 85 exponentieller 11 Floyd- 169 Gosper 298 Gr¨ obnerbasis 20 Knuth-Bendix 20 Komplexit¨ at eines 7 Kronecker- 227 logarithmischer 11 Morrison-Brillhart- 197 215 Normalform- 314 315 Pollard- (p − 1) - 176 179 Pollard- ρ - 169 215 polynomialer 11 Pope-Stein- 75 –, Komplexit¨ at 78 probabilistischer 7 PRS- 139 –, erweiterter 165 –, nach Brown 159 –, nach Collins 154 Shanks 215 Shanks-Tonelli- 219
380
Index
–, squfof 215 –, terminierender 7 –, verbesserte Subresultanten 162 –, von Caviness und Fateman 98 –, von Karatsuba, Aufwand 67 –, –, Grundidee 66 –, –, Komplexit¨ at 69 70 73 –, von Massey und Omura 109 –, von Strassen 73 Aljabr 331 Amp 338 AND-Schalter 110 111 Anteil –, primitiver 28 –, strikt antisymmetrischer, einer Relation 15 antisymmetrisch 15 Arbitrary Precision Math Library 338 Arithmetica Universalis 227 Arithmetic in Global Fields 338 Array –, dynamisches 59 assoziiert 28 –, s. Ring 230 asymptotisch gleich 10 Auswahlaxiom 16 AVL-B¨ aume 121 127 131 Axiom 329 338
B Bach 176 Bahn –, Ceres- 1 –, Mond- 2 Balanced Trees 120 Basis –, Gr¨ obner- 315 –, Ideal- 315 –, –, reduzierte 315 –, polynomiale 110 –, Standard- 315 B¨ aume –, ausgeglichene 121 –, AVL- 121 Bendix 20
Berlekamp 239 271 –, Algorithmus von 242 –, –, ‘Big Prime’-Variante 254 261 –, –, f¨ ur kleine K¨ orper 239 –, –, Komplexit¨ at 246 249 –, –, Variante f¨ ur große K¨ orper 112 249 Berlekamp-Matrix 241 247 254 260 261 Bernstein 168 β - L¨ ange 60 B´ezout 23 144 267 B´ezout-Gleichung 267 BigNum 338 Big Prime Berlekamp 254 Bilinearform 109 Binary-Mult 130 131 Binomialkoeffizienten 277 Binomialsatz 278 Bmp 338 break even point 12 Brent 174 –, Algorithmus von 172 Bressoud 168 Brillhart 168 197 Brown 157 Buchberger 315
C C 59 Cali 335 Canfield 195 212 Cauchy 40 Caviness 14 98 107 Ceres –, Bahn 1 CFRAC 216 217 Charakteristik 91 Chinesischer Restsatz 224 241 Chinesisches Restproblem 48 –, Lagrangesche L¨ osung 48 –, L¨ osung in euklidischen Ringen 50 –, Newtonsche L¨ osung 48 Church-Rosser-Eigenschaft 17 CoCoA 336 CoCoAL 336
Index
Collins 154 Computeralgebra-Programme 4 Computerwort 58 Inh(f ) 28 230 Continued Fraction Algorithm (CFRAC) 197 CRP –, s. Chinesisches Restproblem 48
D Darstellung –, euklidische 80 Datenexplosion 57 degi 115 degxi 115 Delaunay 1 Derive 5 330 Diagonalordnungen 114 Differentialk¨ orper 102 Differentialrechnung 277 Differenzenrechnung 277 Differenzieren –, symbolisches 4 Digamma 288 Digamma-Funktion 287 Diophantos von Alexandria 267 Diskreter Logarithmus 108 Distinct Degree Factorization 259 Division –, nach Pope-Stein 75 DOE-Macsyma 331 dominiert 9 Duplikationsformeln 189 190 192
E
Z
Ea,b ( p ) 184 –, inverse Elemente 185 –, neutrales Element 185 Ea,b ( ) 183 –, inverse Elemente 183 –, neutrales Element 183 Ebene –, projektive 184 ECM 180 Eigenwert 39 Einheit 21 Einheitengruppe 21
Q
381
Element –, exponentielles 103 –, logarithmisches 102 –, primitives 89 91 108 274 –, –, Berechnung 91 –, –, Minimalpolynom 92 Eliminationsideal 325 Elliptic Curve Method 180 Elliptic Curve Primality Proving 338 Emacs 334 Entwicklung –, Newton- oder MacLaurin- 282 Epimorphismus 48 Equal Degree Factorization 262 Erd¨ os 195 212 Erzeugendensystem 21 Euler 260 Euler-Konstante 246 Euler-Kriterium 205 218 Eulersche Konstante 260 Exponentenmatrix 130 Exponent –, faktorieller 284 exponentiell 103
F Fachgruppe Computeralgebra der GI –, DMV und GAMM 5 Faktorenbasis 205 217 Faktoren –, mehrfache 230 Faktorielle –, k -te 284 faktorielle Polynome 282 Faktorisierung –, ganzer Zahlen 167 –, nach Graden 259 –, quadratfreie 230 –, shiftfreie 290 –, vollst¨ andig shiftfreie 290 –, von Polynomen, nach Kronecker 227 Faktorring 27 107 Fakult¨ at 288 Fateman 98 Felix 336
382
Index
Fermat 176 179 185 197 239 Fermatsche Zahl –, F7 197 –, F8 174 FFT 73 Fibonacci 80 Fibonacci-Zahlen 80 Floyd –, Algorithmus von 169 172 Fortran 4 Fourier-Transformationen 178 Fourier-Transformation –, schnelle 73 Frobenius 240 –, Abbildung 240 Funktion –, Digamma- 287 –, Gamma- 287 –, M¨ obius- µ 246 –, Polygamma- 287 –, Psi- 288 –, Trigamma- 288
Goldener Schnitt 81 Gosper 298 Grad 115 –, einer K¨ orpererweiterung 90 Gradfunktion 74 Gradsatz 90 92 Grammatrix 40 Graph –, einer elliptischen Kurve 180 Gr¨ obner 20 315 Gr¨ obner-Basen 14 Gr¨ obner –, Basis 315 Gr¨ obner-Basis –, reduzierte 315 Grundoperationen 7 Gruppe –, abelsche 183 185 Gruppenordnung 117 Gruppe –, zyklische 108
G
Hadamard 40 Halbgruppe 113 Hash-Tabelle 131 Hash-Tabellen 121 127 Hash Tables 120 Hasse 185 –, Satz von 192 Hauptideal 21 Hauptidealring 22 23 Hensel 21 51 266 Hensel-Lifting 222 224 271 –, lineares 52 –, quadratisches 52 54 267 Hensel –, Satz von 266 Hilbert 305 hilbertscher Basissatz 22 Horowitz 129 130
Gammafunktion 287 –, Funktionalgleichung der 287 107 p Gap 331 335 365 Gauß 1 23 29 136 215 227 gaußscher Ring 22 Gen-Mult 131 Gennum 338 Gesamtgrad 115 GF(q) 107 ggT –, und Resultante 32 Gleichung –, B´ezout- 267 –, diophantische 267 GMP 66 73 174 Gmp 338 GNFS –, Aufwand 216 –, siehe verallgemeinertes Zahlk¨ orperSieb 216 GNU Multiple Precision 338
Z
H
I Ideal 21 –, Basis 21 Idealbasis 315 Ideal
Index
–, Basis, minimale 21 –, Eliminations- 325 –, –, -tes 325 –, endlich erzeugtes 21 Ideale –, paarweise erzeugende 47 241 Ideal –, Erzeugendensystem 21 –, Haupt- 21 –, maximales 22 27 –, Prim- 22 –, zu einer Variet¨ at 306 Induktion –, noethersche 18 Inhalt –, eines Polynoms 28 230 Integral –, eulersches 287 Integrit¨ atsbereich 22 23 Integrit¨ atsring 22 27 31 Interpolationspolynom –, Lagrange- 50 –, Newton- 50 irreduzibel 22 –, bzgl. einer Reduktionsrelation 15 Irreduzibilit¨ atstest –, mit Berlekamp 242 Iterator 121
J Jacobi 108 Jakobi-Matrix 51
K Kahrimanian 4 Kant 332 336 Karatsuba 66 Kash 336 Kettenbruch –, einfacher 198 Kettenbruchentwicklung –, einer Wurzel 201 –, periodische 201 202 Kettenbruch –, m -ter N¨ aherungsbruch 199 Kettenregel 230 Knoten 59
383
Knuth 20 80 kodominant 8 10 Komplexit¨ at 7 –, asymptotische 7 –, der Langzahladdition 62 –, der Langzahlmultiplikation 70 –, der Langzahlsubtraktion 62 –, des Berlekamp Algorithmus, f¨ ur große K¨ orper 249 –, des Berlekamp-Algorithmus, Grundversion 246 –, des Massey-Omura Multiplizierers 109 –, erwartete zeitliche 7 –, maximale zeitliche 7 –, zeitliche 7 konfluent 17 314 315 316 –, lokal 17 316 Konfluenz –, lokale 317 Konklusion 15 Konstante –, Eulersche 260 Konstantenk¨ orper 102 Koordinaten –, rationale 182 K¨ orper –, der rationalen Funktionen 90 –, Differential- 102 –, endlicher 91 107 239 K¨ orpererweiterung 89 –, algebraische 89 –, –, einfache 91 –, einfache 89 –, einfach elementare 102 –, elementare 103 –, elementar transzendente 103 –, Grad einer 90 K¨ orpererweiterung –, primitives Element 89 K¨ orpererweiterung –, transzendente 101 K¨ orper –, Konstanten- 102 –, Universal- 308 –, vollkommener 231 265
384
Index
Kosequenzen 147 Kosequenz –, erste 144 –, zweite 144 Kra¨ı tchik 197 kritisches Paar 317 Kronecker 264 281 –, Leopold 227 Kronecker-Symbol 281 Kurve –, elliptische 180 –, –, alternative Parametrisierung 192 –, –, modulo p 184 –, Graph einer elliptischen 180
L Lagrange 48 Lam´e 80 Landau 42 L¨ ange –, β - 60 Lβ (I) 60 Legendre 168 173 289 Legendre-Symbol 205 218 Lehmer 83 173 176 197 Leibniz 1 281 Leibnizsche Produktregel 281 Leitkoeffizient 28 115 –, bei der Faktorisierung 272 Leitmonom 115 Leitterm 28 115 Lemma –, von Gauß 29 137 Lenstra 107 108 180 193 196 275 –, Annahme von 196 level 129 L(I) 60 LiDIA 337 Lisp 4 59 60 Liste –, verkettete 59 121 logarithmisch 102 Logarithmus –, diskreter 108 110 –, Jacobi- 108
–, Zech- 108 110 lokal konfluent 316 LongInt 338 long integer 57 Lov´ asz 275 Lucas 173 Lucas-Lehmer-Test 173
M Macaulay 336 337 Macaulay 2 338 MacLaurin 282 MacLaurin-Entwicklung 282 Macsyma 5 330 Magma 216 331 Mannigfaltigkeit –, algebraische 305 Maple 5 12 14 60 65 66 79 97 115 116 123 124 129 139 168 179 192 215 216 302 303 331 332 341 Maple-Befehle –, plex 115 –, sort 116 –, tdeg 116 –, termorder 116 Maple –, PROD 123 –, SUM 123 Massey 109 Massey-Omura Matrix 111 Mathematica 5 Mathematica 215 216 332 Matiyasevich 14 107 Matrix –, Gram- 40 –, hermitesche 39 –, Jakobi- 51 –, Massey-Omura 109 110 –, Multiplikation nach Strassen 73 –, positiv definite 39 –, Rechtsinverse einer 51 –, skalare 40 –, Sylvester- 30 34 Maxima 338 Mignotte 42 270 272 –, Schranke von 272
Index
–, Ungleichungen von 270 Minimalpolynom 89 Miracl 338 Mittel –, arithmetisches 39 –, geometrisches 39 M¨ obius –, µ -Funktion 246 modp1 124 129 Mond –, Bahn 2 Monoid –, abelsches 113 –, geordnetes 114 Monom 103 Monte-Carlo-Methode 169 Montgomery 178 192 Mon(X; p) 114 Morrison 168 197 Morrison-Brillhart –, Kettenbruchalgorithmus 197 Mp 338 m(r, d) 123 Multiindizes 114 Multiplikation –, Matrix-, nach Strassen 73 –, von Punkten elliptischer Kurven mit Skalaren 185 MuMath 330 MuPAD 333
N Nachfolger –, gemeinsamer 15 Najid-Zejli 95 Newman 18 Newton 1 48 282 Newton-Entwicklung 282 Newton –, Isaac 227 NFS 216 217 –, Aufwand 216 –, siehe Zahlk¨ orper-Sieb 216 Nichtquadrat 253 261 Nolan 4 Normalbasis 108
385
–, geringer Komplexit¨ at 109 –, optimale 109 111 –, primitive 108 110 –, –, Berechnung 108 Normalform-Algorithmus 16 315 Normalform –, bzgl. einer Reduktionsrelation 15 –, kanonische 13 312 Normierung –, eines ganzzahligen Polynoms 265 Norm –, r - 41 n -te harmonische Zahl 246 Nullpunkt –, einer elliptischen Kurve 184 Nullstelle 305 –, allgemeine 309 Nullstellensatz –, Hilbertscher 310 –, schwacher 310 –, starker 311 Nullteiler 95 number field sieve 216
O Ofman 66 Ω(g(n)) 176 Omura 109 OpGF(q) [y ← A(x)] 8 Op[y ← A(x)] 7 Ordnung –, Diagonal- 114 –, elliptischer Kurven 185 –, invers lexikographische 114 –, lexikographische 114 Ordnung nach Gesamtgrad 115 Ordnungsmatrix 116 Ordnungsrelation –, zul¨ assige 94 312
P (P1) 117 (P2) 117 Paar –, kritisches 20 317 paarweise erzeugend 47 241
386
Index
Pari 174 332 334 338 Partialbruchzerlegung 35 –, quadratfreie 36 –, shiftfreie 36 291 –, vollst¨ andige 38 –, vollst¨ andig shiftfreie 291 Pascal 59 Perl 66 Pinch 168 π(x) 168 PMPQS 216 Pointer 59 118 –, nil- 59 Pollard 169 173 174 175 176 178 –, Monte-Carlo-Methode (s. ρ -Algorithmus) 169 –, (p − 1) -Algorithmus 176 179 –, –, Aufwand 179 –, –, zweite Stufe 178 –, ρ -Algorithmus 169 –, –, aperiodischer Teil 169 –, –, Aufwand 176 –, –, Erwartungswert aperiodischer Teil 175 –, –, Erwartungswert Iterationen 175 –, –, Erwartungswert periodischer Teil 175 –, –, periodischer Teil 169 Pollard- (p − 1) 191 Polygamma-Funktion 287 Polynom ¨ –, Ahnlichkeit 28 –, Anzahl irreduzible Faktoren 246 –, binomisches 277 –, Darstellung, dense 119 –, –, dicht 119 –, –, dicht distributiv 120 –, –, dicht rekursiv 120 –, –, distributiv 118 –, –, d¨ unn 118 –, –, d¨ unn distributiv 120 –, –, d¨ unn rekursiv 120 –, –, rekursiv 119 –, –, sparse 118 –, d¨ unnbesiedelt 118
–, faktorielles 282 –, Faktorisierung, in [x] 264 –, f -reduzierendes 240 –, ganzzahliges, Normierung 265 Polynomideale 315 Polynom –, Inhalt 28 230 –, irreduzibel, Anzahl 246 –, primitiver Anteil 28 –, quadratfreies 230 240 –, reines 90 Polynom-Restfolge –, s. PRS 136 Polynom –, S- 317 –, Swinnerton-Dyer 273 Pomerance 195 211 212 Pope 75 Positivit¨ atsbereich 116 Potenzprodukt 113 Powers 197 pA(f ) 28 230 PPQuo(f, g) 132 PPRest(f, g) 132 PQuo(f, g) 132 Pr¨ amisse 15 PRest(f, g) 132 prim 22 Primelement 22 Primfaktorisierungen 23 Primideal 22 Primitives Element 91 108 –, Berechnung 91 –, Minimalpolynom 92 Primzahlen –, Anzahl ≤ x 168 –, Mersenne- 173 Primzahl –, ungl¨ uckliche 265 Probedivisionen –, zur Faktorisierung ganzer Zahlen 168 Produktregel 230 –, leibnizsche 281 Produktsatz
Z
Index
–, f¨ ur binomische Polynome 277 Prozeduren –, Berle (Berlekamp-Algorithmus f¨ ur kleines“ GF(q) ) 244 ” –, bezout2 (B´ezout-Gleichung, zwei Terme mod p ) 267 –, bezout2l (B´ezout-Gleichung, zwei Terme mod pt ) 267 –, bezoutm (B´ezout-Gleichung, mehrere Terme mod pt ) 268 –, ComPosInt (Vergleich positiver ganzer Zahlen) 61 –, DDF (Faktorisierung nach Graden, Distinct Degree Factorization) 259 –, Dif (Differenz ganzer Zahlen) 63 –, DifPosInt (Differenz positiver ganzer Zahlen) 62 –, Div (Ganzzahlige Division mit Rest) 78 –, ECM (Lenstras Elliptic Curve Method) 192 –, EDF (Faktorisierung eines Produkts aus gleichen Graden, q ungerade) 262 –, Gcdex (Gr¨ oßter Gemeinsamer Teiler, erweiterte Version) 24 –, Gcd (Gr¨ oßter Gemeinsamer Teiler ganzer Zahlen, Grundversion) 82 oßter Gemeinsa–, Gcd Lehmer (Gr¨ mer Teiler ganzer Zahlen nach Lehmer) 85 –, Gr¨ obner (Berechnung einer Gr¨ obnerBasis, Buchberger-Algorithmus) 321 –, henlin (Hensel-Lifting, nach Berlekamp 269 –, henqu (Hensel-Lifting, nach Berlekamp 270 –, KetBru (Kettenbruchentwicklung) 198 –, ModPot (große modulare Potenzen) 174 249 –, ModPot (Potenzen mod N ) 177 –, ModPot (Potenzen mod N ) 179 –, MorBril (Kettenbruchmethode von Morrison und Brillhart, CFRAC) 207
387
–, MulSkal (Multiplikation mit Skalaren auf elliptischen Kurven) 190 195 –, PDiv (Polynomdivision) 133 –, –, Aufwand 133 –, PggTK[x] ( ggT von Polynomen) 134 –, PggT K[x] (Polynom- ggT ), Aufwand 134 ur R0 [X] = –, PggTnR0 [X] (Basis-ggT f¨ R[x] ) 139 –, PggT R0 [X] (g1 , g2 ) 138 –, PolP1 (Pollard- (p−1) -Algorithmus) 177 –, PolRho (Pollard- ρ -Algorithmus) 170 –, PPDiv (Pseudodivision) 134 –, Prod 1 (Produkt ganzer Zahlen, Schulmethode) 64 –, Prod 2 (Produkt ganzer Zahlen nach Karatsuba) 70 –, PRS EXT (erweiterter Subresultantenalgorithmus) 165 –, PRSBrown−Sres (f1 , f2 ) 159 –, PRSCollins (PRS nach Collins) 154 –, PRSSres−V1 (Subresultanten-PRS, Version 1) 161 –, PRSSres−V2 (Subresultanten-PRS, Version 2) 162 –, PRSSres−V3 162 –, PRSSres−V4 (Subresultanten-PRS, Version 4) 163 –, PSum (Summe von Polynomen) 125 –, RedBas (Reduktion eine Idealbasis) 315 –, RedPolBas (Reduktion eines Polynoms bzgl. einer Idealbasis) 315 320 –, RedPolPol (Reduktion eines Polynoms bzgl eines anderen) 314 –, ShanksTonelli (Wurzel aus a modulo einer Primzahl p ) 220 –, Shift (Produkt mit einer Potenz der Zahlbasis) 71 –, SQFp (Quadratfreie Faktorisierung im Fall char(R) = p ) 237
388
Index
–, SQF (Quadratfreie Faktorisierung im Fall char(R) = 0 ) 233 –, SQFYun (Quadratfreie Faktorisierung im Fall char(R) = 0 nach Yun) 235 –, SumPosInt (Summe positiver ganzer Zahlen) 61 –, Sum (Summe ganzer Zahlen) 63 PRS 136 138 144 –, euklidische 139 –, normale 136 139 –, primitive 139 –, reduzierte 154 –, Subresultanten 156 157 –, –, erweiterte 165 Pseudodivision 57 132 Psi-Funktion 288 Punkt –, singul¨ arer 180
Q QS –, Aufwand 216 –, siehe quadratisches Sieb 216 Quadrat 253 261 quadratfrei 240 –, s. Polynom 230 Quadrat –, Nicht- 253 261 Quadratwurzel –, mod p 219 Quotientenk¨ orper 232 Quotientenregel 280
R Radikal 90 Radikalideal 311 Radikalschreibweise 95 Rational machen des Nenners 97 Rechtsinverse 51 Reduce 4 14 101 335 Reduktionsrelation 15 Reduktionssystem 15 Relation –, antisymmetrischer Anteil, strikt 15 –, noethersche 15
–, Reduktions- 15 res(f, g) 30 Restklassenring 27 Rest –, quadratischer 205 Resultante 30 180 290 Resultanten 265 Resultante –, und ggT 32 Richardson 14 107 Riesel 168 Ring –, -elemente, assoziierte 28 230 –, euklidischer 22 23 74 132 –, faktorieller 22 132 230 –, gaußscher 22 –, Hauptideal- 22 23 –, Integrit¨ ats- 22 27 –, irreduzibles Element 22 –, noetherscher 22 305 –, nullteilerfreier 230 232 –, Primelement 22 –, ZPE- 22 Risch 102 Rivest 167 RSA-129 225 r -Norm 41 r -shiftfrei 290
S (S1) 13 16 (S2) 13 16 Satz –, binomischer 51 –, Grad- 90 –, hilbertscher Basis- 22 –, u ¨ber das primitive Element 91 –, von B´ezout 23 144 –, von Brown 157 –, von Canfield Erd¨ os und Pomerance 212 –, von Collins 154 –, von Gauß 227 –, von Hasse 185 –, von Hensel 51 222 –, von Lam´e 80
Index
–, von Legendre (Primteiler von N = an ± bn ) 173 –, von Newman 18 –, von Risch 102 104 –, von Schinzel 96 –, von Taylor, f¨ ur kommutative Ringe 51 Schieberegister –, zyklisches 109 Schinzel 95 Schnitt –, goldener 81 –, von Gerade und elliptischer Kurve 181 Schoof 108 Schubert –, Friedrich von 227 Schwellenwert 12 Scratchpad 329 Shamir 167 Shanks 168 215 219 Shanks-Tonelli-Algorithmus 219 224 shiftfrei 290 –, vollst¨ andig 290 Shparlinsky 108 Siebintervall 217 Sieb –, quadratisches 216 –, Zahlk¨ orper- 216 –, –, verallgemeinertes 216 sieve –, number field 216 –, quadratic 216 –, –, multiple polynomial 216 Simath 337 Simcalc 337 Simplifikator –, kanonischer 13 314 315 Singular 337 O “-Notation 8 Sort-Mult 130 131 Spock 121 122 131 S-Polynom 317 Spx 338 sresj (f, g) 145 –, Grad 146
Stack 129 Stammfunktion –, diskrete 285 Standardbasis 315 Stein 75 Stepanov 108 Strassen 73 Struktursatz –, von Risch 102 104 Subresultante –, j -te 145 Subresultanten –, erweiterter Algorithmus 165 –, Hauptsatz 147 151 Subresultanten-Kette 58 147 Subresultanten –, Polynom-Restfolge 157 Subresultanten PRS 156 Summationsregeln 285 summierbar –, in endlich vielen Termen 285 Swinnerton-Dyer 273 –, Polynome 273 Sylvester-Matrix 30 31 Sylvestermatrix 34 Symbole –, (a/p) 205 –, A(p, q) 126 –, ∆ (Differenzenoperator) 279 –, ∆ 279 x,h
–, –, –, –, –, –, –, –, –, –, –, –, –, –, –,
↓ 15 ↓E 313 28 .r 41 (∞, ∞) 183 K(A) 89 L : K 89 ∗ 313 ←− E ma (x) 89 M(p, q) 128 n ∗ (X : Z) 190 O(f (n)) 9 O (f (n)) 9 Ω(f (n)) 9 ≺ 10
389
390
–, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –, –,
Index
! 9
–, –, –, –, –,
g E 313 sU 15 (X, Y, Z) 183 (X : Y : Z) 184 (X : Z) 190
T (T1) 115 (T2) 115 128 130 Taylor 51 277 Teilbarkeit 23 Teiler –, gemeinsamer 23 –, gr¨ oßter gemeinsamer 23 –, –, Berechnung im Fall euklidischer Ringe 23 –, –, Berechnung im Fall faktorieller Ringe 23 Teile und Herrsche 66 Teilnenner 198 Term 113 Termordnung 115 Term∗ (X; p) –, Betrag von 123 Term(X) 113 Term(X; p) 114 –, Betrag von 125 TeXmacs 338
Tonelli 219 Toom 72 Topologi –, Zariski- 306 tp 125 tp·q 126 tp∗q 126 t∗p 123 tp 124 trade-off point 12 Translationsoperator 279 transzendent 101 transzendent 308 Transzendenzbasis 308 Transzendenzgrad 308 Traub 157 Trigamma-Funktion 288 Tripel –, ¨ aquivalente 184
U Ubasic 338 Umformungssystem 15 313 unabh¨ angig –, algebraisch 305 Ungleichung –, von Cauchy 40 –, von Hadamard 40 –, von Landau 42 43 –, von Mignotte 42 –, zwischen dem arithmetischen und geometrischen Mittel 39 Universalk¨ orper 308 Untergruppe 21 Unterring 21
V Variet¨ at 305 –, eines Ideals 305 Variet¨ aten –, Schnitt von 305 –, Vereinigung von 306 Variet¨ at –, irreduzible 306 –, reduzible 306 –, zugeh¨ origes Ideal 306 Vaxima 331
Index
Vielfaches –, eines Terms 312 –, kleinstes gemeinsames, von Termen 317 vollkommen 265 –, s. K¨ orper 231 Vorw¨ artsdifferenz 279
W Waterhouse 185 Weierstraß 180 Weierstraß-Gleichung 180 Weispfenning 116
X XOR-Schalter 110 111
Y Yacas 338
Yun 234 264 –, Algorithmus von 264
Z (Z1) 114 (Z2) 114 Zahlk¨ orper-Sieb 216 Zariski 306 Zariski-Abschluss 306 Zariski-Topologie 306 Zech 108 Zeiger 59 ZPE-Ring 22 ZQuo 74 ZRest 74 Zweier-Komplement 58
391
Druck: Mercedes-Druck, Berlin Verarbeitung: Stein + Lehmann, Berlin