Inden for matematik og datalogi er et certifikat for primalitet et strengt bevis på, at et tal er primtal . At have et primalitetscertifikat giver dig mulighed for at kontrollere, at et tal er primtal uden at ty til primalitetstest .
I teorien om beregningskompleksitet er det som regel underforstået, at størrelsen af certifikatet, såvel som den tid, der kræves til at verificere det, afhænger polynomielt af længden af nummerindtastningen, det vil sige antallet af cifre i det.
Eksistensen af polynomielle primalitetscertifikater viser, at problemer såsom primalitetstest og faktorisering af heltal tilhører NP-klassen , da disse ifølge en af de ækvivalente definitioner af denne klasse er problemer, hvis løsning kan verificeres i polynomiets tid, hvis en yderligere certifikat leveres. Derudover ligger disse problemer i co-NP- klassen , som følger af dens definition som en klasse af komplementer til problemer fra NP - ja, enhver af dens ikke-trivielle divisorer kan være et polynomielt certifikat for, at et tal er sammensat.
Primalitetscertifikater var således en af de første indikationer på, at primalitetstestning ikke var NP-komplet , da hvis det var, ville det følge, at en NP-klasse er indlejret i en co-NP, hvilket igen normalt er[ afklare ] overvejet[ af hvem? ] er forkert. Derudover gjorde opdagelsen af polynomielle certifikater primalitetstestning til det første problem, der vides at tilhøre både NP og co-NP, men ikke kendt for at være i klasse P. Med fremkomsten af Agrawal-Kayal-Saxena-testen i 2002, var den første (og i øjeblikket den eneste[ hvornår? ] ) af den deterministiske polynomiale primalitetstest, blev det fundet, at problemet stadig ligger i P.
Historisk set blev begrebet primalitetscertifikater introduceret med fremkomsten af Pratt-certifikatet , som blev opnået i 1975 af Vaughan Pratt [1] , som beskrev dets struktur og beviste, at størrelsen af et certifikat afhænger polynomisk af længden af en nummerpost , og også at det kan verificeres for en polynomisk tid. Certifikatet er baseret på Lucas-testen , som igen følger af Fermats lille teorem :
(Lucs sætning) Et tal er primtal, hvis og kun hvis der er et element i modulo-ringen af rester , således at:
|
De skrevne betingelser betyder præcis, at rækkefølgen af elementet er .
Hvis du har et sådant tal (kaldet et vidne om enkelhed ) og opdeler i primfaktorer, kan du hurtigt kontrollere ovenstående betingelser - du skal udføre eksponentieringer modulo, hvilket kan gøres for multiplikationer ved hjælp af binær eksponentiering . Selve multiplikationerne i den naive implementering ("i en kolonne") udføres i , hvilket giver et samlet estimat af køretiden i .
Samtidig skal man huske på, at det udover ovenstående betingelser også er nødvendigt at kontrollere, at de tal, der fremlægges i attesten som primtal, virkelig er sådanne - altså udover vidnet om primalitet og opdeling i primtalsfaktorer, skal et nummers primalitetsbevis også indeholde certifikater for primalitet for alle de faktorer, der er angivet i det. Det er således praktisk at repræsentere et certifikat i form af et træ, i hvis knudepunkter der er primtal og deres tilsvarende primalitetsvidner, og efterkommerne af den knude, hvor tallet er gemt , er primtalsdelere af tallet . Derfor svarer tallet til træets blade .
Det kan påvises ved induktion, at der højst er interne knudepunkter i et sådant træ , det vil sige dem, der indeholder et ulige primtal. I betragtning af, at hver knude i træet gemmer en smule til at skrive tal i det, kan vi konkludere, at træets samlede størrelse ikke overstiger . Den samlede kontroltid kan til gengæld estimeres til , da det er nødvendigt at udføre handlinger i hver af knudepunkterne.
Mens Pratts certifikater er nyttige i teorien og nemme at verificere, kræver det faktorisering og andre potentielt store tal at finde et certifikat for et tal. Dette er let at gøre i nogle specielle tilfælde, for eksempel for Fermat-primtal , men i det generelle tilfælde er denne opgave nu meget vanskeligere end den sædvanlige test af et tal for primehed.
Artiklen "PRIMES is in P" [2] var et gennembrud inden for teoretisk datalogi . Dette papir, udgivet af Manindra Agrawal og hans to elever Niraj Kayal og Nitin Saxena i august 2002, beviser, at det berømte primalitetsproblem kan løses deterministisk i polynomisk tid. Forfatterne blev tildelt Gödel-prisen , som er $5.000 [3] , og 2006 Fulkerson-prisen for deres arbejde.
Fordi primalitetstesten nu kan udføres i polynomisk tid ved hjælp af AKS-testen , kan et primtal ses som et certifikat for sin egen primalitet. Denne test afsluttes i tide , hvilket gør en sådan verifikation dyrere end at bruge Pratt-certifikatet, men det kræver ikke at finde selve certifikatet.
Talteoretiske algoritmer | |
---|---|
Enkelthedstest | |
At finde primtal | |
Faktorisering |
|
Diskret logaritme | |
Finder GCD | |
Modulo aritmetik | |
Multiplikation og division af tal | |
Beregning af kvadratroden |