• Non ci sono risultati.

LABORATORIO DI ALGORITMI DISPENSE

N/A
N/A
Protected

Academic year: 2021

Condividi "LABORATORIO DI ALGORITMI DISPENSE"

Copied!
3
0
0

Testo completo

(1)

LABORATORIO DI ALGORITMI

DISPENSE

(2)

2

Capitolo 1: Introduzione

Consideriamo la seguente successione { }a di numeri razionali in cui i a0 =1 e

1 1

1

i i 2 i

i

i i i

m m n

a n m n

+ + +

= = +

+ :

(1) 1 3 7 17 41 99

, , , , , ,

1 2 5 12 29 70 K

Confrontiamo i valori così ottenuti con 2 .

Non solo sono una buona approssimazione ma la successione (1) fornisce una approssimazione estremamente precisa: infatti 1

2 2

i

i

a − < n .

Questo algoritmo era già noto ai tempi dell’antica Grecia. Invece un algoritmo assai più recente, che ha meno di 150 anni per intenderci, è il seguente test atto a verificare se, dato un intero dispari n>1, il numero m=2n −1 è primo oppure no.

Si ponga S=4 e si ripeta n−2 volte il seguente ciclo di operazioni: calcolare S2−2, dividere il risultato per m e assegnare a S il resto della divisione.

Alla fine dei cicli si ispezioni il valore assunto da S : se è nullo allora m è primo, viceversa no.

Nel 1999 questo algoritmo è stato utilizzato per verificare se 26.972.593−1 è primo battendo così il record per il più grande numero primo conosciuto sulla Terra.

Questi due algoritmi, appartenenti a due epoche lontane tra loro, sono due tra gli algoritmi di teoria dei numeri.

Ma che cos’è la Teoria dei Numeri? Teoria dei Numeri è quella disciplina della Matematica che si occupa dello studio delle proprietà dei numeri interi ed è da lungo tempo inseparabile dagli algoritmi: per individuare degli algoritmi efficienti è indispensabile comprendere la struttura degli interi e tale esplorazione è facilitata dallo studio degli algoritmi già noti.

La fattorizzazione di numeri interi molto grandi offre un esempio della necessità di comprendere tale struttura.

Si pensi che, grazie ai recenti algoritmi, oggi è possibile fattorizzare numeri interi costituiti da un centinaio di cifre in maniera ordinaria.

A prima vista sembrerebbe banale, sfruttando un approccio metodologico e un congruo numero di elaboratori potenti, procedere con l’elencazione dei numeri primi inferiori al numero da fattorizzare e poi semplicemente proseguire per tentativi dividendo il numero per ogni primo della lista nella speranza di pervenire a un resto nullo.

(3)

3

Come vedremo generare la lista dei potenziali fattori primi non è compito arduo. Il problema è che di potenziali divisori ce ne sono una quantità enorme!

Ad esempio se il più piccolo divisore primo del nostro numero è costituito da 50 cifre (e oggigiorno un numero siffatto non è considerato poi così grande) allora un teorema sui numeri primi afferma che dovremo effettuare circa 8.7 10× 47 tentativi prima di individuare un fattore!

Immaginando un processore ideale che sia in grado di elaborare 10 divisioni al 12 secondo, se mettessimo in parallelo 10 di questi processori, noi saremmo in grado di 6 testare 10 primi differenti al secondo. 18

Sembrerebbe interessante... ma non è così!

Infatti ci sono circa 3.2 10× 7 secondi in un anno dunque sarebbero necessari più di 10 22 anni per completare la fattorizzazione!

Tanto per dare un’idea, si stima che l’universo abbia poco meno di 2 10× 10 anni...

Riferimenti

Documenti correlati

12.13 Un anello a fattorizzazione unica ` e un anello con la propriet` a che ogni elemento si pu` o scrivere in modo unico come prodotto di elementi irriducibili.. Per trattare

Nelle attività introduttive abbiamo incontrato alcune situazioni nelle quali i numeri naturali non sono più sufficienti. Essi formano l’insieme dei numeri interi relativi

[r]

Una funzione si dice discontinua se esiste almeno un punto del suo dominio dove la funzione non ` e continua.. Tipiche funzioni discontinue sono le funzioni che presentano dei

Nonostante molti dei risultati che presenteremo si applichino agli interi relativi ¢ , per gli scopi della fattorizzazione trascureremo gli interi negativi e quindi, parlando

PER ADDIZIONE ALGEBRICA ( O SOMMA ALGEBRICA) SI INTENDE L’OPERAZIONE CHE PRENDE IN CONSIDERAZIONE SIA LA SOMMA CHE LA DIFFERENZA. NB: OGNI NUMERO INTERO PUO’ ESSERE

Negli algoritmi efficienti , al crescere della lunghezza x dell’input, il tempo di esecuzione cresce molto meno velocemente che negli altri algoritmi: tuttavia è utile osservare

L’algoritmo di prodotto si può eseguire con gli stessi metodi “scolastici” che si usano per moltiplicare numeri naturali rappresentati in base 10: