AKS-Primzahltest
Der AKS-Primzahltest (auch bekannt unter dem Namen Agrawal-Kayal-Saxena-Primzahltest) ist ein deterministischer Algorithmus, der für eine natürliche Zahl in polynomieller Laufzeit feststellt, ob sie prim ist oder nicht. Er wurde von den drei indischen Wissenschaftlern Manindra Agrawal, Neeraj Kayal und Nitin Saxena entwickelt und 2002 in einer Abhandlung mit dem Titel PRIMES is in P (deutsch sinngemäß: Das Primzahl-Problem gehört zur Komplexitätsklasse P) veröffentlicht. Für ihre Arbeit wurden die Forscher 2006 mit dem Gödel- und dem Fulkerson-Preis ausgezeichnet.
Der später von anderen verbesserte Algorithmus unterscheidet sich wesentlich
von allen vorher bekannten polynomiellen Primalitätsbeweis-Algorithmen: Er baut
für den Nachweis der – bezogen auf die Länge der Eingangswerte –
polynomiellen Laufzeit auf keinen unbewiesenen Hypothesen
(wie beispielsweise der verallgemeinerten Riemannschen
Vermutung) auf. Die asymptotische
Laufzeit des ursprünglichen Algorithmus ist ,
wobei
die zu testende Zahl ist,
für das Landau-Symbol
und
für eine beliebig kleine positive Zahl steht.
Entstehungsgeschichte
1999 arbeitete Manindra Agrawal mit seinem Doktorvater Somenath Biswas an einer probabilistischen Methode, um die Gleichheit von Polynomen zu zeigen. Die beiden erarbeiteten daraus eine Methode für einen probabilistischen Primzahltest. Die Idee, die dahintersteckt und die sich später als sinnvoll herausstellte, ist folgender Hilfssatz:
- Sei
und
. Dann ist
eine Primzahl genau dann, wenn
.
Dabei ist
keine konkrete Zahl, sondern eine freie Variable. Die Koeffizienten der Potenzen
von
sind zu vergleichen:
ist genau dann keine Primzahl, wenn deren kleinster Teiler
erfüllt; dann ist aber
keine ganze Zahl und es gilt
.
Für den so entstandenen Primzahltest galt, dass er nicht mit den aktuellen mithalten konnte. Im schlimmsten Falle musste man alle Koeffizienten berechnen, was ziemlich aufwendig sein konnte. Deshalb wurde die Idee zunächst nicht weiter verfolgt.
2001 nahmen die Studenten Rajat Bhattarcharjee und Prashant Pandey in ihrer
Bachelorarbeit Primality Testing die Idee wieder auf. Sie erweiterten die
Idee, die Polynome nicht nur modulo
,
sondern auch modulo
für ein
in der Größenordnung von
zu berechnen. Dies hat den Vorteil, dass man
in polynomieller Zeit berechnen kann. Nun gilt für eine Primzahl
,
dass sie diese Kongruenz erfüllt, aber es erfüllen sie nun auch Zahlen, die
keine Primzahlen sind.
Die beiden untersuchten diese Kongruenz für bestimmte
und
,
um Bedingungen an
und
zu stellen, damit diese Kongruenz nur noch für Primzahlen gilt. Sie stellten
nach einer Versuchsreihe die folgende Vermutung auf:
Ist
kein Teiler von
und
,
dann ist
entweder prim oder
.
2002 arbeiteten die beiden Studenten Neeraj Kayal und Nitin Saxena an ihrer Bachelorarbeit. Sie führten die Überlegungen ihrer Vorreiter weiter. Unter der Annahme, dass die Riemannsche Vermutung korrekt ist, konnten sie den obigen Satz beweisen. In einer leichten Vorahnung nannten sie dann ihre Bachelorarbeit Towards a deterministic polynomial-time Primality Test.
Danach brachten sie den Algorithmus mit Manindra Agrawal in seine endgültige Form. Die dann veröffentlichte Schrift erfreute sich ziemlich schnell einer großen Beliebtheit. So wurde die Korrektheit innerhalb einer Woche bestätigt und die Webseite hatte über zwei Millionen Besucher in der ersten Woche.
Der Algorithmus
Im Folgenden seien
natürliche Zahlen. Die Eingabe sei die Zahl
.
1. if n=ab für ein a und ein b > 1: 2. return ZUSAMMENGESETZT 3. finde das kleinste r mit ordr(n) > log(n)2 4. if 1 < ggT(a,n) < n für ein a ≤ r: 5. return ZUSAMMENGESETZT 6. if n ≤ r: 7. return PRIM 8. for a=1 to sqrt(phi(r))*log(n) do 9. if (x+a)n ≠ xn+a (mod (xr−1,n)): 10. return ZUSAMMENGESETZT 11. return PRIM
Erläuterungen:
ordr(n)
ist die Ordnung vonmodulo
; das ist die kleinste Zahl
, für die
gilt.
phi(r)
ist die Eulersche Phi-Funktion oder Totient, das ist die Anzahl der zuteilerfremden Zahlen im Bereich von 1 bis
.
ist die Basis des Polynomringes und keine konkrete Zahl.
Nach Agrawal, Kayal und Saxena
In den folgenden Monaten nach der Entdeckung erschienen neue Varianten (Hendrik Lenstra 2002, Carl Pomerance 2002, Berrizbeitia 2003, Cheng 2003, Daniel J. Bernstein 2003a/b, Lenstra und Pomerance 2003), die die AKS-Geschwindigkeit um Größenordnungen verbesserten. Wegen der großen Anzahl an Varianten sprechen Crandall und Papadopoulos in ihrem Aufsatz On the implementation of AKS-class primality tests (dt.: Über die Implementation von Primzahltests der AKS-Klasse) von März 2003 von der Klasse der AKS-Algorithmen, statt vom AKS-Algorithmus.
Der Algorithmus von Lenstra und Pomerance terminiert in .
Die Laufzeit des AKS-Algorithmus bewegt sich in der Praxis jedoch in ähnlichen
Größenordnungen, da der Parameter
meist wenig oberhalb von
gefunden werden kann.
Agrawal, Kayal und Saxena haben mit der obigen Vermutung einen ähnlichen Algorithmus aufgestellt:
Man suche zuerst ein
mit
(so ein
liegt im Intervall
).
Mit diesem Algorithmus erhält man eine Laufzeit von
.
Lenstra und Pomerance haben zu dieser Vermutung in Remarks on Agrawal’s
Conjecture eine Heuristik zum Finden von möglichen Gegenbeispielen
angegeben. Ob es Zahlen wie die in deren Vermutung angenommenen gibt, ist jedoch
bisher nicht bekannt.



© biancahoegel.de
Datum der letzten Änderung: Jena, den: 05.08. 2022