Test di Miller-Rabin
Il test di primalità di Miller-Rabin è un test di primalità, ossia un algoritmo per determinare se un numero intero è primo. La sua versione originale, dovuta a Gary Miller, è deterministica, ma dipende dall'ipotesi di Riemann generalizzata, un'importante congettura matematica tuttora aperta. L'algoritmo è stato successivamente modificato da Michael Rabin che ne ha ottenuto una versione probabilistica simile al test di Fermat e al test di Solovay-Strassen.
Definizione
modificaSia n un numero intero positivo dispari e non primo. I numeri positivi b<n tali che M.C.D.(b,n)=1, e tali che n sia uno pseudoprimo di Eulero forte in base b sono non più di un quarto di tutti i numeri positivi b<n tali che M.C.D.(b,n)=1.
Questo è il test di primalità che stavamo presentando:
Se fisso un intero dispari n>1, lo posso scrivere come , con t dispari. Il test T si sintetizza nei seguenti:
- scegliamo a caso un intero b , con 1<b <n, e calcoliamo M.C.D.(b , n);
- se M.C.D.(b , n) > 1, allora n non è primo, ed abbiamo finito;
- se M.C.D.(b , n) = 1, calcoliamo b (mod n). Se b ≡ +1 (mod n) oppure b ≡ -1 (mod n), n è primo oppure è pseudoprimo forte in base b ;
- se non vale che b ≡ +1 (mod n) oppure b ≡ -1 (mod n), calcoliamo b (mod n). Se b ≡ -1 (mod n), allora n è pseudoprimo forte in base b ;
- se non vale che b ≡ -1 (mod n), passiamo a b , e a tutte le altre potenze di 2, moltiplicate per t. Se tutti i b , per r=1,..., s-1, non sono mai congrui a -1 modulo n, allora non è un primo. Altrimenti n è uno pseudoprimo forte in base b .
Per tutti gli altri test {T } , m∈ , la definizione è analoga:
- scegliamo a caso un intero b , con 1<b <n, e calcoliamo M.C.D.(b , n);
- se M.C.D.(b , n) > 1, allora n non è primo, ed abbiamo finito;
- se M.C.D.(b , n) = 1, calcoliamo b (mod n), e procediamo come nel primo test. In questo modo troviamo che n non è primo, oppure che n è pseudoprimo forte in base b .
Considerazioni finali sul test
modificaSi può subito notare che, a differenza dei Test di Fermat e Test di Wilson, qui i calcoli sono minori in numero e molto più semplici, e si può dimostrare che il livello di complessità computazionale è polinomiale, mentre gli altri due presentano una difficoltà computazionale esponenziale. Per quanto riguarda l'affidabilità, anch'essa è molto buona in questo test. Infatti, nonostante sia un test probabilistico, quando effettuiamo il test T , sappiamo che la probabilità che n non sia primo e sia uno pseudoprimo forte in base b è minore di 1/4, e, quindi, la probabilità che n non sia primo ma passi i test T , T , ... , T è minore di , ossia piccolissima rispetto a quella del Test di Fermat.
Assumendo l'Ipotesi di Riemann generalizzata, il test di Miller-Rabin si può facilmente modificare in modo da diventare un vero test di primalità e l'algoritmo ad esso associato avrebbe costo [1].
Note
modificaVoci correlate
modificaAltri progetti
modifica- Wikibooks contiene testi o manuali su Test di Miller-Rabin
Collegamenti esterni
modifica- (EN) Miller-Rabin test, su Enciclopedia Britannica, Encyclopædia Britannica, Inc.
- (EN) Eric W. Weisstein, Test di Miller-Rabin, su MathWorld, Wolfram Research.