Archivi categoria: 2024

Ma a che serve calcolare i primi di Mersenne?

La scorsa settimana vi ho raccontato della scoperta di un nuovo numero primo di Mersenne. Mi è stato chiesto se queste ricerche servano a qualcosa, anche solo a verificare che le CPU (e ora le GPU) funzionino correttamente.

La risposta, mi spiace dirvelo, è no. Certo, è utile far fare dei conti pesanti a un processore, soprattutto se nuovo: ma innanzitutto non si cercano nuovi record, che sarebbero da verificare indipendentemente, e in secondo luogo conviene computare un po’ di cifre di pi greco, che possono essere statisticamente verificate con la formula BBP. La ricerca di nuovi primi di Mersenne può verificare se ci sono strani scostamenti dalla distribuzione prevista (con una quantità di primi inferiori a n che dovrebbe essere proporzionale a log log n), ma chiunque abbia avuto a che fare con i numeri primi sa che gli scostamenti sono sempre all’ordine del giorno.

E allora perché si cercano questi numeri? Perché ci si diverte a farlo: non credo nemmeno sia per poter dire di avere stabilito un record. Non è poi una delle peggiori cose da fare, secondo me, anche rispetto ad altre ricerche come quella sulla congettura di Goldbach o di quella di Collatz. Poi c’è sempre un certo qual fascino, almeno per me, nel pensare che ci sono strutture (molto ben) nascoste tra i numeri: in fin dei conti è la stessa cosa che abbiamo con i teoremi di incompletezza di Gödel, che ci dicono che se appena cominciamo a mettere un po’ di struttura tra i numeri, nemmeno poi troppa visto che chiediamo solo l’aritmetica di base, la complessità scoppia a punto tale che non possiamo più verificare tutto. Non ci sono dubbi che Gödel fosse un platonista: come è possibile che questa complessità sia solo un prodotto della nostra mente? :-)

Trovato un nuovo primo di Mersenne!

Ci sono voluti sei anni e un nuovo algoritmo che sfrutta le GPU, ma lunedì 21 ottobre 2024 il progetto GIMPS ha annunciato che 2136279841−1 è un numero primo, il 52.mo di Mersenne. Ok, potrebbe essercene qualcun altro, perché non tutti gli esponenti inferiori sono stati testati; ma la cosa è abbastanza improbabile.
I numeri primi di Mersenne si chiamano così perché l’abate Marin Mersenne aveva stilato una lista – non molto precisa, a dire il vero – di quali numeri della forma 2p−1 sono primi. Perché tanto interesse da parte di Mersenne? Perché se 2p−1 è primo allora 2p−1(2p−1) è un numero perfetto. (Eulero dimostrò poi che tutti i numeri perfetti pari sono di questa forma; nessuno sa se esista un numero perfetto dispari, ma non credo che siano molti i matematici che scommetterebbero sulla sua esistenza). E perché c’è tanto interesse in questi decenni? Perché esiste un algoritmo “relativamente” rapido (di Lucas-Lehmer, dal nome degli scopritori) per verificare se un numero di questo formato è primo. Relativamente rispetto a un numero generico, ovvio: però resta il fatto che se dobbiamo cercare numeri primi grandi tanto vale provare con questi.
E in effetti il GIMPS (Great Internet Mersenne Prime Search, il sito citato all’inizio del post) fa proprio quello. Come dicevo, il vecchio programma Prime95 che era stato quello usato finora per trovare i primi di Mersenne è stato spodestato da un nuovo programma nato per sfruttare le GPU in modo diverso dal fare una ricerca con ChatGPT. Lo scopritore, Luke Durant, è un trentaseienne che ha lavorato in NVIDIA (ma va?) e ha cominciato la sua ricerca solo da un anno, con un cluster di migliaia di GPU sparse su 17 nazioni. Naturalmente la primalità del numero trovato da Durant è stata verificata in modo indipendente da vari programmi diversi tra loro, fatti girare su architetture hardware e tipi di CPU diversa: in questi casi è sempre meglio essere molto attenti a evitare errori invisibili.
Si troveranno altri primi di Mersenne? Chi lo può sapere. Io tra l’altro faccio parte della minoranza convinta che essi siano finiti, anche se non ho nessuna idea di quanti ce ne possano essere…

Un’ultima curiosità: in esadecimale il numero si scrive con un 1 seguito da 34069960 F. Chiaramente tutti i primi di Mersenne sono della forma xFFF…FFF, dove x può valere 1, 3, 7 oppure F.

Partizioni egizie – continua

l'inizio della tabella di GrahamMercoledì avevo raccontato di come Ron Graham avesse dimostrato che tutti i numeri maggiori di 77 erano strettamente egizi, cioè possono essere scritti come somma di numeri tutti distinti i cui inversi hanno somma 1. Come l’ha dimostrato? Basta leggere il suo papero, no? Riporto qua il suo ragionamento, che parte dal fatto che D. H. Lehmer aveva dimostrato che 77 non era strettamente egizio.

Graham ha calcolato una tabellona contenente una partizione per ciascun numero da 78 a 166, e ciascun numero dispari da 167 a 333. L’inizio di questa tabella è mostrato in figura. Ma perché proprio questi numeri? Perché gli servivano per costruire tutti gli altri. Per la precisione, chiaramente $\tfrac{1}{2}+\tfrac{1}{2} = 1$. Ma se allora abbiamo una partizione con $1 = \tfrac{1}{d_1} + \tfrac{1}{d_2} + \cdots + \tfrac{1}{d_k}$ e $\sum_1^k d_i = n$, possiamo costruirne una del tipo $1 = \tfrac{1}{2} + \tfrac{1}{2d_1} + \tfrac{1}{2d_2} + \cdots + \tfrac{1}{2d_k}$; tutti i termini sono distinti, perché nessun $d_i$ può essere 1, e la somma dei denominatori è 2$n$ + 2. Questo significa che prendendo i numeri da 78 a 166 nella tabella (l’articolo ha un refuso, tra l’altro) e applicando questo trucco otteniamo tutti i numeri pari da 168 a 334. Quindi sappiamo che tutti i numeri da 78 a 334 sono strettamente egizi. A questo punto Graham, da buon prestigiatore, tira fuori dal cappello un’altra somma che dà $\tfrac{1}{2}$, cioè $\tfrac{1}{3} + \tfrac{1}{7} + \tfrac{1}{78} + \tfrac{1}{91}$. Notate che tutti i denominatori sono dispari tranne il 78, e quindi raddoppiare i denominatori di un numero strettamente egizio non può creare doppioni… E per quanto riguarda il 78, “casualmente” non ci sono denominatori 39 nella tabella e quindi non può essere generato. In questo caso abbiamo che la nuova somma dei denominatori è 2$n$ + 179. Usando entrambe queste formule possiamo ora estendere la nostra tabella da 2·78 + 179 a 2·334 + 2, cioè da 335 a 670; e anche qui continuiamo a non avere denominatori 39 che ci rovinerebbero il gioco. Da qui possiamo estenderla a 1340 (raddoppiando tutti i numeri fino a 670 e notando che i numeri fino a 570 con la seconda formula ci fanno arrivare a 1339) e così via. Quod erat demonstrandum :-)

La dimostrazione non è bella, concordo con voi; la tabella è troppo grande per essere accettabile esteticamente. Ma meglio una tabella e un po’ di teoria che nessun teorema. Tra l’altro, costruire la tabella oggi non sarebbe chissà quale problema, e anzi potremmo facilmente calcolare tutte le possibili partizioni per quei numeri in pochi secondi; ma ricordo che l’articolo è stato pubblicato nel 1963, e anche se Graham lavorava ai Bell Labs che probabilmente aveva computer all’avanguardia non è che ci fosse così tanta potenza di calcolo. Immagino che per parecchi numeri abbia usato la prima delle uguaglianze qui mostrate, e poi abbia usato alcuni trucchi partendo dalle partizioni “piccole”; ma comunque deve essere stato un lavoraccio. Ma ancora peggio deve essere stata la fatica di Lehmer per dimostrare che 77 non era strettamente egizio, visto che in questo caso non si possono trovare controesempi… di quello sì che mi piacerebbe vedere la dimostrazione!

Ultimo aggiornamento: 2024-10-18 14:48

Partizioni egizie

L'occhio di Horus e le sue frazioni corrispondenti Gli antichi egizi scrivevano i numeri frazionari come somma di frazioni con numeratore 1 e denominatori tutti diversi tra loro: per esempio 5/14 = 1/3 + 1/42 e 9/11 = 1/2 + 1/4 + 1/15 + 1/660. Per scrivere una frazione come egizia si può usare il metodo “greedy”, togliendo a ogni passo la frazione più grande possibile; non è detto però che esso porti alla somma con il minor numero di addendi. L’occhio di Horus, mostrato qui in figura e che magari vi ricorda l’album dell’Alan Parsons Project Eye in the Sky, contiene appunto alcuni geroglifici corrispondenti a frazioni egizie la cui somma è quasi 1. (Il “quasi” è stato completato da Toth, o Hathor secondo altre tradizioni, per mezzo della magia.)

Ma non è direttamente delle frazioni egizie che voglio parlarvi oggi. Luca Rovelli ha scritto di un tema leggermente diverso, ma correlato. Diciamo che un numero è strettamente egizio se può essere scritto come somma di numeri tutti distinti i cui inversi hanno somma 1. Il più piccolo numero strettamente egizio è 11: infatti 1 = 1/2 + 1/3 + 1/6, e 2 + 3 + 6 = 11. Nel 1963 Ron Graham studiò questi numeri e scoprì che esiste un numero finito di numeri che non sono strettamente egizi: il maggiore di essi è 77, e il loro elenco si trova (ovviamente…) su OEIS.

(immagine di Kompak, Benoît Stella e Ignacio Icke da Wikimedia Commons)

Ultimo aggiornamento: 2024-12-06 12:14

Quando la fisica ha bisogno della matematica

i due premi Nobel 2024 per la fisicaAnche gli Accademici di Stoccolma che assegnano i Nobel scientifici seguono spesso le mode, anche se non a livello di quelli del premio per la letteratura che secondo me ogni tanto si divertono. Così quest’anno il premio per la fisica è andato a John Hopfield e Geoffrey Hinton “per le scoperte e invenzioni di base che hanno permesso il machine learning con le reti neurali artificiali”. Ora che l’AI è tornata di moda, evidentemente, anche il comitato ha deciso di salire sul carro del vincitore.

Da un punto di vista genericamente scientifico l’attribuzione ha senso. Dopo l’Inverno dell’Intelligenza Artifiale arrivato alla fine degli anni ’60 quando Minsky e Papert dimostrarono che il percettrone di Rosenblatt non avrebbe mai potuto funzionare in pratica non essendo neppure in grado di calcolare uno XOR, avere il coraggio di proporre un nuovo modello non era facile, soprattutto considerando che non c’erano potenza di calcolo e basi dati di addestramento che permettessero di mettere in pratica la teoria. Quello che io – ma penso anche altri – mi sono chiesto è cosa tutto questo ha a che fare con la fisica, oltre al fatto che Hopfield è fisico. (Hinton nemmeno questo, tra l’altro: ho scoperto che è psicologo con dottorato in intelligenza artificiale, oltre che avere parentele illustri…) E anche il comitato se lo deve essere chiesto, se nella pagina che spiega a noi comuni mortali le loro ricerche cominciano con lo scrivere “I premiati di quest’anno hanno usato strumenti della fisica per costruire sistemi che hanno aiutato a porre le basi per il machine learning oggi così potente”, seguito dal titolone “They used physics to find patterns in information”. Continuando a leggere, scopriamo che il modello di Hopfield parte da un’analogia con i neuroni biologici più precisa di quella di Rosenblatt e poi usa una formula simile a quella usata nel caso di un reticolo di spin, per trovare lo stato di energia minore che dovrebbe corrispondere all’immagine del dataset più vicina a quella distorta fornitagli in fase di test. Il modello di Hinton, invece, ha introdotto lo strato di neuroni nascosti – il vero valore aggiunto rispetto al percettrone – e usato tecniche di massimizzazione dell’entropia per trovare la configurazione più probabile a cui assegnare la figura presentata nei test e non vista in fase di addestramento: non per niente il suo modello si chiama Boltzmann Machine. Hinton ha anche continuato a lavorare per decenni ai suoi modelli, il che gli ha permesso di farli funzionare anche in pratica e non solo in teoria: troppe connessioni infatti confondono il modello; è stato necessario ridurle, non solo per ridurre la quantità di calcoli necessari ma proprio per non rischiare di fissarsi su caratteristiche non importanti delle immagini.

Detto tutto questo, continuo a restare della mia idea: è vero che le idee alla base delle ricerche dei nuovi Nobel arrivano dalla fisica, ma poi di altra fisica non ce n’è molta, e abbiamo più che altro matematica. Ma lasciamo crogiolarsi i fisici al pensiero che sia tutta fisica ;-)

(Ritratti dei Nobel John Hopfield e Geoffrey Hinton di Niklas Elmehed, © Nobel Prize Outreach)

Dal caso all’ellisse

un poligono casuale Quello che vedete qui a sinistra è un poligono (intrecciato) di 100 lati. D’accordo, assomiglia più a uno scarabocchio, ma tecnicamente è un poligono. Supponiamo di costruire un nuovo poligono i cui vertici siano i punti di mezzo dei cento lati, e ripetere l’operazione a piacere. Cosa otterremo come limite? Beh, sempre un poligono di cento lati, mi direte: ma non è esattamente così. Il poligono ottenuto sarà sempre più piccolo, e il limite dei vari poligoni sarà un singolo punto, il baricentro di quelli iniziali.

Questo non è poi così interessante: cambiamo allora leggermente il nostro esperimento. Dopo ciascun passo scaliamo il poligono ottenuto in modo che i due vettori formati dalle coordinate $x$ e dalle coordinate $y$ dei punti abbiano norma 1, e il baricentro del poligono sia l’origine degli assi: ingrandiamo insomma man mano il poligono, e non pensiamo di arrivare all’infinito ma solo a un numero abbastanza alto di iterazioni. Quello che succede è che i vertici dei poligoni man mano ottenuti tenderanno a essere parte di un’ellisse, inclinata di 45 gradi rispetto agli assi cartesiani. Potete vedere all’opera l'”ellissizzazione” in questa pagina di Jason Davies.

Attenzione: i punti non tendono a una posizione fissa. Lo si vede bene se prendete un poligono di 10 lati e vi fate mostrare solo una posizione ogni due, per smussare il disegno: in pratica si nota una lenta rotazione dei punti. Come mai? Adam N. Elmachtoub e Charles F. Van Loan lo spiegano in questo articolo, dove vengono calcolati i semiassi dell’ellisse partendo dai vettori $x$ e $y$. Ma anche senza studiare la matematica, vedere “sbrogliarsi” il poligono e poi aggiustarsi lentamente è piuttosto ipnotico!

Approssimare il perimetro di un’ellisse

un'ellisse Se abbiamo un cerchio di raggio $r$, la sua circonferenza è $2\pi r$. Questo è facile. Se abbiamo un’ellisse di semiassi $a$ e $b$, il suo perimetro è $P(a,b) = 4aE(e^2)$, dove l’eccentricità $e$ è data da $\sqrt{a^2-b^2}/a$ ed $E$ è l’integrale $E(x) = \int_{0}^{\pi/2}(1-x \sin^2\theta)^{1/2}d\theta$. Un po’ meno facile, considerato poi che quell’integrale è un integrale ellittico del secondo tipo (poca fantasia nei nomi, concordo) e non è risolubile se non con metodi numerici.
Che si può fare, allora? Si può provare a cercare un’approssimazione e accontentarsi di quella. Il solito Ramanujan trovò questa formula:

$P = \pi(a+b)\left( 1 + \frac{3 \lambda^2}{10 + \sqrt{4-e\lambda^2}} \right)$

dove $\lambda = (a-b)/(a+b)$. Io non ho idea se questa formula sia davvero venuta a Ramanujan in sogno, ma è di una precisione incredibile. Tenete conto che queste formule in genere sono sempre meno precise man mano che l’eccentricità $e$ aumenta; John D. Cook mostra che se prendiamo l’orbita del pianeta nano Sedna che ha un’eccentricità 0,8549 (Plutone, per confronto, ha 0,2488 e la terra 0,0167) e un semiasse maggiore di 76 miliardi di chilometri, l’errore commesso con questa formula è di 53 chilometri.
La cosa ancora più bella di questa approssimazione è che l’errore relativo è limitato, e resta sempre sotto lo 0,0051% anche con un’eccentricità massima. Direi che ci si può accontentare!

(figura di ZetaZeti, da Wikimedia Commons)

Ultimo aggiornamento: 2024-09-25 19:35

OpenAI o1 saprà davvero “ragionare matematicamente”?

Mi pare che la notizia secondo cui OpenAI ha creato un chatbot che “sa fare ragionamenti matematici e scientifici” non abbia avuto grande eco. Può darsi che ciò sia dovuto al fatto che OpenAI o1 – questo è il nome in codice del nuovo progetto – è disponibile solo per un selezionato gruppo di utenti, oppure perché a nessuno interessa davvero avere un sistema che sappia risolvere problemi matematici.

Devo dire che l’articolo del NYT è parco di informazioni. Pare che OpenAI o1 usi l’apprendimento per rinforzo, quindi “premiando” le successioni di passi logici rispetto a un risultato ottenuto di colpo. L’idea degli sviluppatori è che in questo modo ci si avvicinerebbe di più al pensiero umano. Io personalmente non sono molto convinto di questo approccio, che continua a nascondere sotto il tappeto il problema di base degli LLM: non è che avere un approccio passo passo faccia sì che il computer abbia un’idea di quello che sta facendo: per lui continua a trattarsi di un’emissione di simboli secondo una certa logica sintattica e non semantica. Certo, è vero che fare passi più brevi aumenta la probabilità che l’output del singolo passo sia corretta: ma visto che il numero di passi aumenta alla fine la probabilità di un’allucinazione è la stessa.

Il modo migliore per far risolvere problemi di matematica è quello di accorgersi che si parla di matematica e passare a un altro sistema “classico”: se la domanda è “quanto fa 48 per 75?” ci dovrebbe essere un metasistema che si accorge di star facendo un’operazione aritmetica e quindi buttare via tutto l’apprendimento standard, facendo piuttosto partire un sistema classico. Perché è vero che probabilmente ChatGPT ha visto quell’espressione in fase di addestramento e quindi ha la risposta, ma è anche vero che alla domanda “quanto fa 10048 per 13275?” i risultati non possono essere che sbagliati. Eppure il pattern dovrebbe essere chiaro, e quindi passare a un sistema aritmetico dovrebbe essere possibile senza troppe difficoltà: il chatbot continuerebbe a non “pensare”, qualunque significato si dia a questa parola nel caso degli esseri umani, e si troverebbe in difficoltà con un testo del tipo “ci sono 10000 soldati e 48 comandanti, ciascuno dei quali pattuglia una zona rettangolare di lati 59 e 225 metri. Se le zone non si sovrappongono, qual è la superficie totale pattugliata?” (Ho appena provato: ChatGPT 4o si dimentica i 10000 soldati…)

In definitiva, questi chatbot saranno anche più bravi di noi, ma ne hanno ancora di strada da fare.

Ultimo aggiornamento: 2024-09-18 22:19