Agrawal-Kayal-Saxena-testen ( AKS-testen ) er den eneste aktuelt kendte universelle (dvs. gældende for alle tal) polynomiske , deterministiske og ubetingede (det vil sige ikke afhængige af ubeviste hypoteser) test af tallenes primalitet, baseret på en generalisering af Fermats lille sætning om polynomier.
Hvis der eksisterer sådan, at og for nogen fra 1 til , så er enten et primtal eller en potens af et primtal.
|
Her og nedenfor , betegner eksponenten modulo , er den binære logaritme og er Euler-funktionen [1] .
Sammenligning af to moduler af formularen
for polynomier betyder, at der eksisterer sådan, at alle koefficienter af polynomiet er multipla af , hvor er ringen af polynomier fra over heltal [1] .
AKS-testen blev foreslået af den indiske videnskabsmand Manindra Agrawal og hans to elever Niraj Kayal og Nitin Saxena fra Indian Institute of Technology Kanpur og blev først offentliggjort den 6. august , 2002 [2] . Før denne publikation var tilhørsforholdet mellem problemet med anerkendelse af primalitet til klassen P et åbent problem .
Beregningskompleksiteten af den oprindelige algoritme estimeres til . Forudsat at Artins formodning er sand , forbedres køretiden til . Hvis man antager rigtigheden af Sophie Germains hypotese , har tiden også en tendens til at [2] .
I 2005 udgav Lenstra og Pomerance en forbedret version af algoritmen med beregningsmæssig kompleksitet , hvor er det tal, der skal kontrolleres af testen [3] [4] .
Ifølge Agrawals formodning er der en variant af algoritmen med runtime , men Lenstra og Pomerans præsenterede et heuristisk argument, der bekræfter falskheden af denne hypotese [2] .
Denne algoritme er af stor teoretisk betydning, men bruges ikke i praksis, da dens beregningsmæssige kompleksitet er meget højere end den for de bedste probabilistiske algoritmer [5] . For deres opdagelse modtog forfatterne Gödel -prisen og Fulkerson-prisen i 2006 [6] .
Algoritmens hovedegenskab er, at den på én gang er universel , polynomiel , deterministisk og ubetinget [5] , tidligere algoritmer havde maksimalt kun tre af disse fire egenskaber.
Testens universalitet betyder, at den kan bruges til at teste primaaliteten af ethvert tal. Mange hurtige test er designet til at teste tal fra et begrænset sæt. For eksempel virker Lucas-Lehmer-testen kun for Mersenne-numre , mens Pepins test kun virker for Fermat-numre [6] .
Polynomium betyder, at den maksimale køretid for algoritmen er begrænset af et polynomium i antallet af cifre i det tal, der kontrolleres. Samtidig kan test som den elliptiske kurvetest (ECPP) og Adlemann-Pomerance-Rumeli-testen (APR) bevise eller modbevise et tals enkelthed, men det er ikke bevist, at køretiden vil være polynomium for ethvert inputnummer [6] .
Determinisme garanterer et unikt foruddefineret resultat. Probabilistiske test , såsom Miller-Rabin-testen og Bailey-Pomeranz-Selfridge-Wagstaff-testen , kan teste om et tal er primtal i polynomisk tid, men giver kun et sandsynlighedssvar [6] .
Ubetingelse er den egenskab, at rigtigheden af en algoritme ikke afhænger af nogen ubeviste hypoteser. For eksempel har Miller-testen ikke denne egenskab , som selvom den er deterministisk og fungerer i polynomisk tid for et hvilket som helst inputtal, afhænger dens rigtighed af den ubeviste generaliserede Riemann-hypotese [6] .
Hovedideen med algoritmen er en generalisering af Fermats lille sætning til polynomier, der siger, at for alle (hvor ringen tages uden invers ved multiplikation og nul-element) og , er enkel, hvis og kun hvis [2] [7] [8] :
|
|
en |
Med andre ord, hvis , , og gcd , så er prime, hvis og kun hvis betingelse (1) er opfyldt .
Dette udtryk tager tid at teste, estimeret til , fordi i værste fald bør koefficienterne på venstre side evalueres. For at reducere antallet af koefficienter og kompleksiteten af beregninger, blev det valgt at bruge udtrykket [2] som en test for enkelhed :
som opnås ved at dividere begge dele af det oprindelige udtryk med [7] .
Her er antallet af værdier, der skal kontrolleres, og værdien allerede begrænset af polynomiet fra [8] .
I dette tilfælde betragter vi i stedet for en kvotientring feltet , hvor er en irreducerbar divisor over et endeligt felt , forskellig fra . Antallet af polynomier i dette felt, som sammenligning udføres for, er estimeret:
Agrawal, Kayal og Saxena beviste, at algoritmen vil returnere et "primtal" , hvis og kun hvis er et primtal.
Lenstra og Pomerance udgav en forbedret version af algoritmen [8] [4] :
Input: ,Her er funktionen den samme, det er et polynomium af grad større end , sådan at under nogle yderligere betingelser [1] [8] .
Den beregningsmæssige kompleksitet af denne algoritme er .
Begrundelsen bruger en gruppe - en gruppe af alle tal, der er modulo-rester for tal fra mængden [9] :
Denne undergruppe, lad os kalde den gruppen , indeholder allerede . Gruppen er genereret modulo , og siden da .
Den anden gruppe brugt i beviset, , er mængden af alle polynomierester i (prime rum) modulo og . Denne gruppe er genereret af elementer i feltet og er en undergruppe af feltets multiplikative gruppe [9] .
De vigtigste mellemliggende lemmaer og definitioner brugt i begrundelsen af algoritmen [2] :
Når en parameter evalueres, kræver algoritmen 1.000.000.000 GB ( gigabyte ) hukommelse for tal på 1024 bit. For moderne operativsystemer er dette for meget information. Hvis man antager rigtigheden af Artins hypotese og Sophie Germains hypotese om tætheden af sættet af primtal, vil værdien af parameteren estimeret til være tilstrækkelig for algoritmen . I dette tilfælde vil 1 GB hukommelse være nok. Men indtil rigtigheden af disse hypoteser er bevist, anvendes algoritmen ikke på grund af den komplekse udførelse. Donald Knuth , som placerede algoritmen i andet bind af The Art of Programming (Vol. 3), bemærkede i privat korrespondance dens rent teoretiske karakter [6] .
Talteoretiske algoritmer | |
---|---|
Enkelthedstest | |
At finde primtal | |
Faktorisering |
|
Diskret logaritme | |
Finder GCD | |
Modulo aritmetik | |
Multiplikation og division af tal | |
Beregning af kvadratroden |