• Non ci sono risultati.

(r) è lafunzione di Eulero) si abbia: (x+a)

N/A
N/A
Protected

Academic year: 2021

Condividi "(r) è lafunzione di Eulero) si abbia: (x+a)"

Copied!
1
0
0

Testo completo

(1)

Teoria dei numeri

Lezione del giorno 14 maggio 2009

Il test di primalità AKS si basa sul seguente risultato (di cui diamo solo l’enunciato):

Teorema AKS.

Siano n un intero >2, ed r un naturale coprimo con n, tale che ord

r

n>log

22

n (dove ord

r

n indica il periodo di [n] nel gruppo Z

r

*) e tale che per ogni intero a con 1a

(r)log2n

(dove

(r)

è la funzione di Eulero) si abbia:

(x+a)

n

x

n

+a (mod x

r

-1, n)

Allora: se n ha un fattore primo p>

(r)log2n

, n è necessariamente una potenza di p.

Il test AKS si implementa nel modo seguente, dato in input un naturale n>2:

1) si testa se n è una potenza di base naturale con opportuno esponente naturale >1: in caso affermativo si esce con output “n è composto”, altrimenti si prosegue al passo successivo

2) Si cerca un naturale r coprimo con n tale che ord

r

n>log

22

n

3) Se esiste un divisore d di n, con d<n, nell’intervallo [2,

(r)log2n

] si esce con output “n è composto”

4) Se per ogni naturale a con 1a

(r)log2n

si ha (x+a)

n

x

n

+a (mod x

r

-1, n) si esce con output

“n è primo”, altrimenti si esce con output “n è composto”.

Verifichiamo prima di tutto che il test AKS è un test di primalità deterministico, quindi che un input n supera il test se e solo se n è primo.

Sia dunque n primo. Il passo 1) viene superato da n, in quanto n, essendo primo, non è potenza di base naturale con esponente naturale opportuno >1.

Il passo 3) viene superato da n in quanto n non ha divisori propri diversi da 1 e da n.

Infine nel passo 4) si esce certamente con output “n è primo” come conseguenza dell’implicazione () dell’ultimo teorema dimostrato (prima del Teorema AKS) in cui l’ipotesi a,n coprimi era superflua: infatti da tale implicazione segue (x+a)

n

x

n

+a (mod n) e dunque a maggior ragione (x+a)

n

x

n

+a (mod x

r

-1, n).

Viceversa se n è un input che fornisce output “n è primo”, dimostriamo che n è primo.

Per assurdo supponiamo che n superi il test AKS ma n non sia primo, e sia p un divisore primo di n, con p<n.

Poiché n supera il passo 1), si ha che n non è potenza di base naturale con esponente naturale >1.

Poiché n supera il passo 3), il divisore primo p è >

(r)log2n

e per il Teorema AKS si conclude che n è potenza di p, con esponente naturale >1 (perché p<n), in contraddizione con il superamento del passo 1).

Il problema della complessità di calcolo del test AKS è interamente legato al naturale r trovato nel passo 2) (della cui esistenza ancora non siamo neanche formalmente certi).

Sarà utile il seguente risultato (di cui diamo solo l’enunciato):

Lemma AKS.

Se n>2 è un numero naturale, esiste un naturale rlog

25

n+1 coprimo con n, tale che ord

r

n>log

22

n (dove ord

r

n è il periodo di [n] nel gruppo moltiplicativo Z

r

*).

Dunque r esiste certamente, e inoltre il minimo r con le proprietà richieste è di ordine polinomiale

rispetto alla lunghezza binaria k dell’input n (perché n<2

k

, log

2

n<k, esiste rk

5

+1, e il minimo r è

dunque di ordine O(k

5

)).

(2)

Dimostriamo allora che il test di primalità AKS ha globalmente complessità polinomiale nella lunghezza binaria k dell’input n.

Abbiamo già visto in una lezione precedente che il passo 1) si esegue con complessità polinomiale, con un test che verifica se n è potenza di opportuna base naturale ed opportuno esponente >1.

La ricerca di r nel passo 2) si effettua facendo assumere ad r i valori successivi r=2,3…. e ad ogni valore testando se r,n sono coprimi (algoritmo Euclideo), e se il periodo di [n] nel gruppo Z

r

* è

>log

22

n (calcolando le potenze [n]

i

con 1ilog

22

n e verificando che nessuna coincida con [1]):

poiché come visto il numero di valori di r da testare (per trovare quello utile) è di ordine O(k

5

), anche questo passo 2) ha complessità polinomiale.

Nel passo 3), l’esistenza di un divisore d di n, con d<n, nell’intervallo [2,

(r)log2n

] si effettua facendo assumere al naturale d tutti i valori in [2,

(r)log2n

] e per ognuno testando se d é un divisore di n con d<n (il numero dei valori d da testare è <

(r)log2n

<rlog

2

n<rk, quindi di ordine O(k

6

)).

Nel passo 4), per ogni naturale a con 1a

(r)log2n

si testa se (x+a)

n

x

n

+a (mod x

r

-1, n) (il numero dei valori a da testare è come sopra di ordine O(k

6

)): tale congruenza si verifica calcolando le riduzioni modulo (x

r

-1, n) di ambo i membri (per il primo membro (x+a)

n

si usa l’esponenziazione modulare per i polinomi, di complessità polinomiale) e confrontando le riduzioni ottenute.

Poiché tutti i passi dell’algoritmo AKS sono di complessità polinomiale, lo stesso si può dire per

l’intero algoritmo.

Riferimenti

Documenti correlati

Nota: realisticamente, andrebbero considerati solo i residui più recenti (che sono più piccoli), che darebbero bande un po’ più strette. APPROFONDIMENTI SULL’INCERTEZZA

Infatti basta calcolare con l’algoritmo precedente la parte intera y k della radice n-esima di x, ed verificare se essa coincide esattamente con la radice n-esima

Poiché la dimostrazione del Teorema di Rabin è molto complicata, ci limiteremo ad una forma semplificata in cui però la maggiorazione ottenuta per la probabilità è 1/2 (come nel test

Più esplicitamente, dobbiamo mostrare che ogni combinazione lineare delle componenti di X è una variabile aleatoria normale.. Le traiettorie di Z

Sia n un numero naturale... Formula

Perch´ e la complessit` a delle operazioni su Tabelle Hash viene studiata al caso medio e non al

[r]

(b) Stabilire quali dei seguenti reticoli sono isomorfi tra loro: A, D 60 , D 72 e, in caso di reticoli isomorfi, stabilire quanti sono gli isomorfismi ed esibirne esplicitamente