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

Sia 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 n = 2 s t + 1 {\displaystyle n=2^{s}*t+1} , con t dispari. Il test T 1 {\displaystyle _{1}} si sintetizza nei seguenti:

  1. scegliamo a caso un intero b 1 {\displaystyle _{1}} , con 1<b 1 {\displaystyle _{1}} <n, e calcoliamo M.C.D.(b 1 {\displaystyle _{1}} , n);
  2. se M.C.D.(b 1 {\displaystyle _{1}} , n) > 1, allora n non è primo, ed abbiamo finito;
  3. se M.C.D.(b 1 {\displaystyle _{1}} , n) = 1, calcoliamo b 1 t {\displaystyle _{1}^{t}} (mod n). Se b 1 t {\displaystyle _{1}^{t}} ≡ +1 (mod n) oppure b 1 t {\displaystyle _{1}^{t}} ≡ -1 (mod n), n è primo oppure è pseudoprimo forte in base b 1 {\displaystyle _{1}} ;
  4. se non vale che b 1 t {\displaystyle _{1}^{t}} ≡ +1 (mod n) oppure b 1 t {\displaystyle _{1}^{t}} ≡ -1 (mod n), calcoliamo b 1 2 t {\displaystyle _{1}^{2t}} (mod n). Se b 1 2 t {\displaystyle _{1}^{2t}} ≡ -1 (mod n), allora n è pseudoprimo forte in base b 1 {\displaystyle _{1}} ;
  5. se non vale che b 1 2 t {\displaystyle _{1}^{2t}} ≡ -1 (mod n), passiamo a b 1 4 t {\displaystyle _{1}^{4t}} , e a tutte le altre potenze di 2, moltiplicate per t. Se tutti i b 1 2 r t {\displaystyle _{1}^{2^{r}*t}} , per r=1,..., s-1, non sono mai congrui a -1 modulo n, allora n {\displaystyle n} non è un primo. Altrimenti n è uno pseudoprimo forte in base b 1 {\displaystyle _{1}} .

Per tutti gli altri test {T m {\displaystyle _{m}} } m {\displaystyle _{m}} , m∈ N {\displaystyle \mathbb {N} } , la definizione è analoga:

  1. scegliamo a caso un intero b m {\displaystyle _{m}} , con 1<b m {\displaystyle _{m}} <n, e calcoliamo M.C.D.(b m {\displaystyle _{m}} , n);
  2. se M.C.D.(b m {\displaystyle _{m}} , n) > 1, allora n non è primo, ed abbiamo finito;
  3. se M.C.D.(b m {\displaystyle _{m}} , n) = 1, calcoliamo b m t {\displaystyle _{m}^{t}} (mod n), e procediamo come nel primo test. In questo modo troviamo che n non è primo, oppure che n è pseudoprimo forte in base b m {\displaystyle _{m}} .

Considerazioni finali sul test

Si 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 m {\displaystyle _{m}} , sappiamo che la probabilità che n non sia primo e sia uno pseudoprimo forte in base b m {\displaystyle _{m}} è minore di 1/4, e, quindi, la probabilità che n non sia primo ma passi i test T 1 {\displaystyle _{1}} , T 2 {\displaystyle _{2}} , ... , T m {\displaystyle _{m}} è minore di ( 1 4 m ) {\displaystyle \left({\frac {1}{4^{m}}}\right)} , 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 O ( ( log n ) 4 log log log n ) {\displaystyle O((\log n)^{4}\log \log \log n)} [1].

Note

  1. ^ (EN) Gary Miller, Riemann's Hypothesis and Tests for Primality, in J. Comput. System Sci., vol. 13, n. 3, 1976, pp. 300-317. (PDF)

Voci correlate

  • Numero primo
  • Pseudoprimo
  • Test di Fermat
  • Test di Lucas-Lehmer
  • Test di Wilson

Altri progetti

Altri progetti

  • Wikibooks
  • Collabora a Wikibooks Wikibooks contiene testi o manuali su Test di Miller-Rabin

Collegamenti esterni

  • (EN) Miller-Rabin test, su Enciclopedia Britannica, Encyclopædia Britannica, Inc. Modifica su Wikidata
  • (EN) Eric W. Weisstein, Test di Miller-Rabin, su MathWorld, Wolfram Research. Modifica su Wikidata
  Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica