Risposta rapida: mai, per scopi pratici. Al momento non è di alcuna utilità pratica.
![Tempi di primalità misurati](https://i.stack.imgur.com/IOuiJ.png)
Innanzitutto, separiamo i test di "pratica" compositeness dalle prove di primalità. Il primo è abbastanza buono per quasi tutti gli scopi, anche se ci sono diversi livelli di test che la gente ritiene adeguati. Per numeri inferiori a 2 ^ 64, non è necessario più di 7 test di Miller-Rabin o un test BPSW per una risposta deterministica. Questo sarà molto più veloce di AKS e sarà altrettanto corretto in tutti i casi. Per numeri superiori a 2 ^ 64, BPSW è una buona scelta, con alcuni test Miller-Rabin su base casuale che aggiungono un po 'di confidenza in più a costi molto bassi. Quasi tutti i metodi di prova inizieranno (o dovrebbero) con un test come questo perché è economico e significa che facciamo solo il duro lavoro su numeri che sono quasi certamente primi.
Passando alle prove. In ogni caso la dimostrazione risultante non richiede congetture, quindi queste possono essere confrontate funzionalmente. Il "gotcha" di APR-CL è che non è abbastanza polinomiale, e il "gotcha" di ECPP / fastECPP è che potrebbero esistere numeri che richiedono più tempo del previsto.
Nel grafico, vediamo due implementazioni AKS open source: la prima tratta dal documento v6, la seconda che include miglioramenti da Bernstein e Voloch e una bella euristica r / s da Bornemann. Questi usano la segmentazione binaria in GMP per i moltiplicatori polinomiali, quindi sono piuttosto efficienti e l'uso della memoria non è un problema per le dimensioni considerate qui. Producono belle linee rette con una pendenza di ~ 6,4 sul grafico log-log, il che è fantastico. Ma estrapolare fino a 1000 cifre arriva a tempi stimati tra le centinaia di migliaia a milioni di anni, rispetto a pochi minuti per APR-CL ed ECPP. Ci sono ulteriori ottimizzazioni che potrebbero essere fatte dal documento di Bernstein del 2002, ma non credo che ciò cambierà materialmente la situazione (anche se fino a quando ciò non sarà dimostrato).
Alla fine AKS batte la divisione di prova. Il metodo del teorema BLS75 5 (ad es. Prova n-1) richiede il factoring parziale di n-1. Funziona alla grande con piccole dimensioni, e anche quando siamo fortunati e n-1 è facile da considerare, ma alla fine resteremo bloccati a dover considerare alcuni semi-primi di grandi dimensioni. Ci sono implementazioni più efficienti, ma in realtà non scala oltre 100 cifre a prescindere. Possiamo vedere che AKS passerà questo metodo. Quindi, se ponevi la domanda nel 1975 (e allora aveva l'algoritmo AKS), potremmo calcolare il crossover per cui AKS era l'algoritmo più pratico. Ma alla fine degli anni '80, l'APR-CL e altri metodi ciclotomici erano il confronto corretto e alla metà degli anni '90 avremmo dovuto includere l'ECPP.
I metodi APR-CL ed ECPP sono entrambe implementazioni open source. Primo (ECPP gratuito ma non open source) sarà più veloce per cifre di dimensioni maggiori e sono sicuro che abbia una curva più bella (non ho ancora fatto nuovi benchmark). APR-CL è non polinomiale, ma l'esponente ha un fattore logloglogn che, come qualcuno ha scherzato "va all'infinito, ma non è mai stato osservato per farlo". Questo ci porta a credere che in teoria le linee non si incrociassero per nessun valore di n dove AKS sarebbe finito prima che il nostro sole si esaurisse. ECPP è un algoritmo di Las Vegas, in quanto quando riceviamo una risposta è corretta al 100%, ci aspettiamo un risultato in congetture O ( log5 + ϵ( n ) ) (ECPP) oO ( log4 + ϵ( n ) ) ("fastECPP") tempo, ma potrebbero esserci numeri che richiedono più tempo. Quindi la nostra aspettativa è che l'AKS standard sarà sempre più lento dell'ECPP per quasi tutti i numeri (certamente lo ha dimostrato per numeri fino a 25k).
O ( log4 + ϵ( n ) )( lgn )4 + o ( 1 )( lgn )4 + o ( 1 )
Alcuni di questi algoritmi possono essere facilmente parallelizzati o distribuiti. AKS molto facilmente (ciascuno dei test è indipendente). L'ECPP non è troppo difficile. Non sono sicuro di APR-CL.
I metodi ECPP e BLS75 producono certificati che possono essere verificati in modo indipendente e rapido. Questo è un enorme vantaggio rispetto a AKS e APR-CL, dove dobbiamo solo fidarci dell'implementazione e del computer che lo ha prodotto.