giovedì 6 dicembre 2018

Minacce aliene — Parte 4

“Bene, quindi il problema diventa: se ciascuno dei numeri da 1 a n viene colorato di rosso o di blu, qual è il minimo valore di n per ottenere una progressione aritmetica monocromatica composta da 3, oppure 4, oppure k termini?”.

“Oh, due variabili?”.

“Eh, le cose si complicano”.

“Già mi pare un ottimo risultato affermare che un valore di n che risolve il problema esiste sempre”.

“E hai ragione, questo è il primo passo notevole. Dopo aver dimostrato l’esistenza di un tale n, van der Waerden ha provato anche a stabilirne un valore minimo. Il fatto è che questo valore minimo è enorme, così grande da non poter essere espresso nelle usuali notazioni a cui siamo abituati”.

“Eh? Come è possibile? La notazione scientifica permette di esprimere numeri enormi”.

“Che però sono ridicolmente piccoli se confrontati col numero trovato da van Der Waerden”.

“Incredibile”.

“Per definire il numero ha usato una successione di funzioni, che crescono sempre più velocemente”.

“Uhm, non capisco”.

“Aspetta, partiamo dal semplice. Non avrai difficoltà a immaginare la funzione DOPPIO(x), che raddoppia il suo ingresso”.

“Stai dicendo che DOPPIO(x) = 2x?”.

“Esatto”.

“E c’è bisogno di una funzione apposita?”.

“Per calcolare il doppio, certamente no. Per capire come è fatta la nostra successione di funzioni, invece, sì. Lasciami andare avanti”.

“Ok, vai”.

“Ora definisco la funzione ESPONENTE(x), che calcola il valore di 2 elevato a esponente x”.

“Una funzione esponenziale”.

“Sì, la cosa interessante è che questa funzione è definibile a partire da DOPPIO(x)”.

“In che modo?”.

“Cosa succede se calcoli per x volte il doppio di 1?”.

“Aspetta, allora… se calcolo 1 volta il doppio di 1, ottengo 2, e fin qua è facile. Se calcolo 2 volte il doppio di 1, ottengo 2 per 2, cioè 4. Se calcolo 3 volte il doppio di 1, ottengo 2 per 2 per 2… ah! Certo, se calcolo x volte il doppio di 1, ottengo 2 elevato a x, cioè ESPONENTE(x)”.

“Quindi possiamo dire che ESPONENTE(x) = DOPPIO(DOPPIO(...DOPPIO(1))), dove la funzione DOPPIO compare x volte”.

“Bello, comincio a capire”.

“Ora facciamo un altro passo, definiamo la funzione TORRE(x)”.

“Che immagino sia fatta dall'applicazione di x volte della funzione ESPONENTE”.

“Infatti.”.

“Da dove viene il nome TORRE?”.

“Prova a calcolare TORRE(3)”.

“Vediamo, TORRE(3) = ESPONENTE(ESPONENTE(ESPONENTE(1)))”.

“Ok, quindi partiamo da ESPONENTE(1)”.

ESPONENTE(1) = DOPPIO(1), no?”.

“Certo”.

“E DOPPIO(1) = 2”.

“Giusto anche questo. Quindi TORRE(3) = ESPONENTE(ESPONENTE(2))”.

“Bene, allora adesso devo calcolare ESPONENTE(2), che è uguale a DOPPIO(DOPPIO(1)), cioè DOPPIO(2), cioè 4”.

“Infatti avevamo visto che ESPONENTE(2) calcola 2 elevato a 2, cioè 4”.

“Ah, ecco, vero. Quindi mi rimane da calcolare ESPONENTE(4)”.

“Si capisce meglio se calcoli ESPONENTE(22), applicando direttamente l’esponenziale”.

“Applicando direttamente la definizione di ESPONENTE, verrebbe 222”.

“”Una torre di potenze. Ecco perché questa funzione si chiama TORRE: calcola torri di potenze.

“Non è come fare una potenza di una potenza?”.

“Eh, no, qui non ci sono parentesi: per calcolare una torre di potenze, si parte dall'alto. Per esempio, TORRE(4) è 2222 = 224 = 216, mentre ((22)2)2, che è la cosiddetta potenza di potenza, è uguale a 28.

“Ok, ci sono”.

“Ora andiamo avanti, definiamo una nuova funzione, WOW(x). Ti anticipo che WOW non ha nessun significato se non quello di stupore, per quanto veloce cresce questa funzione”.

“Non ci posso credere”.

“Eh, in mancanza di nomi migliori… I numeri calcolati da WOW sono enormi. Naturalmente, WOW(x) è definita come TORRE(TORRE(…TORRE(1))), dove la funzione TORRE compare x volte”.

“Gulp. Chissà quanto vale WOW(4)”.

“Un numero enorme. WOW(4) = TORRE(TORRE(TORRE(TORRE(1))))”.

“Uhm, TORRE(1) è uguale a 2, fin qua è facile. Quindi mi rimane da calcolare TORRE(TORRE(TORRE(2)))”.

“Anche TORRE(2) è facile, no?”.

“Certo, è uguale a 22, cioè 4”.

“Ok, quindi ora devi calcolare TORRE(TORRE(4))”.

TORRE(4) è una torre di 2 composta da 4 elementi, cioè 2222, che è uguale a 65536”.

“Bene, ultimo passo, devi calcolare TORRE(65536)”.

“Argh”.

“O anche wow!”.

“Una torre di potenze composta da 65536 esponenti, una cosa impossibile da immaginare”.

“Esattamente”.

“E questo numero è quello trovato da van der Waerden?”.

“Oh, no, questo è ancora piccolo se confrontato con quello”.

“Cosa?”.

“Eh, sì. Per arrivare al numero trovato da van der Waerden, occorre immaginare questa successione di funzioni:”.

DOPPIO(1)
ESPONENTE(2)
TORRE(3)
WOW(4)
eccetera

“Ogni volta applichiamo tante volte la funzione precedente?”.

“Esattamente”.

“E dopo WOW che funzioni ci sono?”.

“Non sono stati definiti nomi per le funzioni successive. Sai come si fa, si definisce una regola e poi si va avanti così. Per scrivere i termini successivi si usa un nome generico, che è ACKERMANN”.

“Questo è un nome proprio, suppongo?”.

“Esatto, dal nome di chi l’ha definita. Una volta capito che a ogni passo si deve applicare la funzione precedente un certo numero di volte, possiamo definire la funzione ACKERMANN in questo modo:”.

ACKERMANN(1) = DOPPIO(1)
ACKERMANN(2) = ESPONENTE(2)
ACKERMANN(3) = TORRE(3)
ACKERMANN(4) = WOW(4)
eccetera

“Quell'eccetera fa paura”.

“Ed eccoci arrivati alla soluzione del problema proposto da van der Waerden”.

“Se ciascuno dei numeri da 1 a n viene colorato di rosso o di blu, qual è il minimo valore di n per ottenere una progressione aritmetica monocromatica composta da k termini?”.

“E la risposta è: ACKERMANN(k)”.

“Quindi, tornando al quesito iniziale, quello delle progressioni aritmetiche composte da 3 numeri dello stesso colore, siamo sicuri di trovarne se prendiamo i numeri che vanno da 1 a ACKERMANN(3), giusto?”.

“Giusto”.

“E ACKERMANN(3) è uguale a TORRE(3), cioè 16. Uhm, non avevo dimostrato che anche solo prendendo i numeri da 1 a 9 troverò sempre una progressione aritmetica monocolore?”.

“Sì, certo. La stima ACKERMANN(k) è una condizione sufficiente per essere sicuri di trovare la progressione monocolore. Non è detto che, con ulteriori studi, non si possa migliorare la stima. Anzi, un miglioramento è già stato fatto: nella dimostrazione originale di van der Waerden compare il numero ACKERMANN(k), ma successivamente, nel 1987, il matematico israeliano Sharon Shelah ha dimostrato che ci si può fermare a WOW(k)”.

“Ah, ecco. Rimane comunque un numero colossale”.

“E, per quanto riguarda il quesito iniziale, ancora più inutile: WOW(3) è uguale a 65536”.

“Se k aumenta, però, WOW(k) rimane a un livello inferiore rispetto a ACKERMANN(k), vero?”.

“Esatto. Sappi che Graham, un altro matematico che ha lavorato alla teoria di Ramsey, ha offerto un premio di 1000 dollari per chiunque sia in grado di dimostrare che, al posto di WOW(k), si può usare TORRE(k). O a chi sia in grado di dimostrare il contrario, cioè che TORRE(k) è un numero troppo basso”.

“Anche in questo campo, quindi, ci sono molti problemi aperti”.

“Già. Quella di Ramsey è una teoria affascinante, proprio perché si occupa di trovare strutture ordinate all'interno di strutture apparentemente casuali. Un articolo divulgativo di Graham e Spencer, comparso su Le Scienze nel 1990, si concludeva con questa domanda: oggi, grazie alla teoria di Ramsey, siamo in grado di riconoscere con facilità le costellazioni del cielo notturno. Quali configurazioni potremmo mai trovare in insiemi che sono ACKERMANN(9) volte più grandi?”.

“Speriamo di non trovare alieni cattivi, però”.



Questa è l'ultima parte di un articolo uscito sulla rivista Archimede, numero 4, del 2017. La prima parte è qua, la seconda qua, la terza qua.

venerdì 9 novembre 2018

Minacce aliene — Parte 3

Come disse il matematico Theodore Motzkin descrivendo la teoria di Ramsey: complete disorder is impossible”.

“Uh, chissà cosa ne pensano i filosofi”.

“Eh, non è un’affermazione da poco: se l’insieme è abbastanza grande, emergeranno sempre strutture ordinate. Prima ancora che Ramsey sviluppasse tutta la sua teoria, i matematici hanno studiato strutture emergenti non solo in ambito geometrico, ma anche in ambito aritmetico”.

“Per esempio?”.

“Per esempio, nel 1926 un matematico olandese, Bartel van der Waerden, si mise a studiare strutture presenti all’interno di successioni aritmetiche ”.

“Che, ehm, sarebbero?”.

“Le successioni aritmetiche sono successioni di numeri in cui la differenza tra due termini consecutivi è sempre costante. Detto in un altro modo, ogni termine della successione si ottiene dal precedente aggiungendo sempre la stessa costante. Per esempio, la successione 4, 7, 10, 13, 16 è una successione aritmetica”.

“Vero, ogni volta aggiungi 3”.

“Sì: per definire una successione aritmetica serve il punto di partenza, che nel nostro caso è 4, e la costante, che i Veri Matematici chiamano ragione”.

“Che nel nostro caso è 3”.

“Sì. Ora, i problema che studiava van der Waerden è questo: scriviamo tutti i numeri da 1 a 9 in rosso oppure in blu. È sempre vero che possiamo trovare tre numeri rossi o tre numeri blu che formano una progressione aritmetica?”.

“Uhm, con così pochi numeri non mi sembra un problema difficile”.

“Hai ragione, questo è un esempio, giusto per capire come funziona il problema, Puoi risolvere il quesito senza sapere nulla della teoria di Ramsey”.

“Allora ci provo. Vediamo un momento, mi sembra utile partire dal centro della successione. Provo a vedere cosa succede se i numeri 4 e 6 sono colorati di rosso”.

1, 2, 3, 4, 5, 6, 7, 8, 9

“Molto bene”.

“Devo sicuramente evitare la progressione 4, 5, 6. E quindi devo colorare 5 di blu”.

1, 2, 3, 4, 56, 7, 8, 9

“Pefetto”.

“Però così non ho escluso tutte le possibili progressioni. Per esempio, potrebbe esserci 2, 4, 6. Oppure anche 4, 6, 8. Ok, coloro di blu anche 2 e 8”.

1, 2, 3, 456, 7, 8, 9

“Uhm”.

“Cosa succede? Ah! Ho colorato di blu 2, 5, 8, che sono in progressione aritmetica!”.

“E quindi la tua supposizione iniziale non funziona”.

“Hai ragione. Allora 4 e 6 non possono essere colorati entrambi di rosso. E, simmetricamente, nemmeno di blu. Significa che devono avere due colori diversi!”.

“Forse”.

“Giusto, se hanno colori diversi posso sperare di evitare progressioni monocromatiche, ma devo capire se ci riesco. Allora, proviamo. Coloro 4 di rosso e 6 di blu”.

“Senza perdita di generalità”.

wlog!”.

“Già”.

“Ahh, ho usato wlog anche io, come fanno i Veri Matematici! Allora, parto da qua:”.

1, 2, 3, 4, 5, 6, 7, 8, 9

“Bene”.

“Direi di poter colorare il 5 come voglio, anche qui non perdo di generalità se lo coloro di rosso o di blu: in ogni caso non ottengo una progressione aritmetica monocromatica”.

“Giusto”.

“Quindi lo coloro di rosso. Ora la situazione è questa:”.

1, 2, 3, 4, 56, 7, 8, 9

“Se 5 fosse blu, la situazione sarebbe simmetrica”.

“Sì, vedo. Con questa configurazione, mi devo preoccupare di non avere il 3 rosso. Se invece 5 fosse blu, mi dovrei preoccupare di non avere il 7 blu. Ho capito. E allora coloro di blu il 3”.

1, 2, 3456, 7, 8, 9

“E così hai evitato la progressione rossa di ragione 1. Come prosegui?”.

“Ho già due numeri blu, devo evitare di avere il terzo in progressione. Direi quindi che 9 debba essere rosso”.

1, 2, 3456, 7, 8, 9

“Bene, così hai evitato di avere 3, 6, 9 monocolore. Hai altre possibilità?”.

“Uhm. Sì, bisogna evitare che 1, 5, 9 sia tutta rossa, quindi 1 va colorato di blu”.

1, 2, 3456, 7, 8, 9

“Bene, vai avanti”.

“Vedo che 5, 7, 9 rischia di essere tutta rossa, quindi coloro 7 di blu. Però devo evitare che 6, 7, 8 sia blu, quindi coloro 8 di rosso”.

1, 2, 3456, 7, 89

“Ormai è fatta”.

“Per evitare che 1, 2, 3 sia tutta blu, devo colorare 2 di rosso. Ehi, ma se 2 è rosso dopo ho 2, 5, 8 tutta rossa!”.

“E quindi?”.

“E quindi non ce la faccio a colorare i numeri da 1 a 9 con due colori in modo da non ottenere successioni aritmetiche monocromatiche”.

“Ancora una volta, emerge un ordine”.

“Già. Bell’esercizio, ma van der Waerden non avrà studiato questo problema, vero?”.

“Beh, questo era un esempio semplice. Sai come fanno i Veri Matematici quando risolvono un problema: partendo dal caso semplice, guardano se possono...”.

“...generalizzarlo, ormai ho capito”.



Questa è la terza parte di un articolo uscito sulla rivista Archimede, numero 4, del 2017. La prima parte è qua, la seconda qua.

giovedì 11 ottobre 2018

Minacce aliene — Parte 2

Ora, naturalmente ai matematici piace generalizzare”.

“Capirai”.

“Eh, è nella loro natura. Si sono posti quindi questa domanda: se su un grafo formato dai lati e dalle diagonali di un esagono si trova sempre un triangolo monocromatico, che succede con un pentagono? Un quadrilatero? Qual è il numero minimo di vertici che deve avere un grafo completo affinché, colorando i suoi spigoli con due colori, si possa essere certi di formare sempre un triangolo monocromatico?”.

“Beh, certamente non più di 6, no?”.

“Infatti. Se riusciamo a trovare un triangolo che ci piace in un grafo con 6 vertici, aumentando i vertici aumentano anche gli spigoli, e quindi aumentano le possibilità di trovare triangoli monocromatici”.

“Quindi la domanda diventa: potrebbe essere 5, o meno ancora?”.

“Ed ecco la risposta:”.



“Uhm. Un pentagono”.

“Un pentagono con 5 spigoli colorati di rosso e 5 colorati di blu. Osservalo bene: ci sono triangoli monocromatici?”.

“Eh, no”.

“Quindi esiste almeno una colorazione di questo grafo che non produce triangoli monocromatici”.

“E quindi la nostra ricerca è finita: il numero minimo di vertici per avere i triangoli monocromatici è 6. Ottimo, fine della generalizzazione”.

“Non c’è mai fine alle generalizzazioni”.

“Capirai”.

“Per esempio: troverò triangoli anche se uso tre colori? Quattro? Di più?”.

“Ah. Non sembra facile”.

“Non lo è. Ma si può generalizzare anche in un altro modo: posso colorare con 2 colori in modo da trovare triangoli del primo o quadrati del secondo?”.

“Uh, che delirio”.

“E trovare le risposte a queste domande è difficilissimo. Anzi, alcune di queste risposte non le conosciamo ancora”.

“Davvero?”.

“Eh, sì. Il numero che abbiamo calcolato poco fa, il minimo numero di vertici che deve avere un grafo perché si possa sempre trovare al suo interno un triangolo blu o un triangolo rosso, si chiama numero di Ramsey per tre rosso e tre blu, e si indica con R(3,3). Erdős ha detto, una volta: supponete che gli alieni invadano la Terra e che minaccino di annientarla se entro un anno gli uomini non riusciranno a trovare il numero di Ramsey per cinque rosso e cinque blu. Potremmo far scendere in campo le menti migliori e i calcolatori più veloci del pianeta e probabilmente entro un anno riusciremmo a calcolare quel valore. Se tuttavia gli alieni volessero il numero di Ramsey per sei rosso e sei blu. non avremmo altra scelta se non un attacco preventivo.”.

“Eh eh, non credevo fosse così difficile”.

“Lo è, eccome se lo è. I matematici sono riusciti a dimostrare che un numero di Ramsey esiste sempre, qualunque sia il numero di colori e il numero di lati da colorare. Il problema è che non sappiamo quali siano, questi numeri, se non in pochi casi”.

“Ma pensa”.

“Già: per quanto riguarda il famoso R(5,5) di Erdős, nel 1989 si è scoperto che questo numero deve essere almeno 43. Mentre nel 2017, l'anno scorso, si è capito che non può essere più grande di 48”.

“Una scoperta recentissima!”.

“Eh, sì. E, dato che fregiarsi del titolo di potenziale salvatore dagli alieni dovrebbe essere uno stimolo enorme per un Vero Matematico, puoi renderti conto della difficoltà del problema”.

“Quindi di pensare a risolvere R(6,6) non se ne parla proprio, suppongo. Meglio sviluppare la tecnologia per combattere gli alieni?”.

“Le ultime stime per R(6,6) sono del 1965. Da allora, nessuno è riuscito a fare meglio. Sappiamo solo che R(6,6) è un numero compreso tra 102 e 165”.

“Eppure non sono numeri così grandi, come è possibile che non si riescano a migliorare le stime?”.

“Ricordati che i numeri di cui stiamo parlando sono i vertici. Sai quanti spigoli ha un grafo completo con 100 vertici?”.

“Eh, al momento no...”.

“Prova a pensare: quanti spigoli partono da ogni vertice?”.

“Eh, direi 99, uno per ogni vertice, tranne quello da cui parto”.

“E dato che ci sono 100 vertici...”.

“Ho 100×99 spigoli?”.

“Non esattamente. In questo modo, ogni spigolo verrebbe contato due volte, una per il vertice di partenza e una per quello di arrivo”.

“Ah, allora devo dividere per due il risultato!”.

“Già. Quindi un grafo con 100 vertici ha 50×99 spigoli, cioè 4950”.

“Anche questo non è un numero così esagerato, magari con un computer si può fare qualche stima, no?”.

“Eh, sai quante possibili colorazioni si possono fare, anche soltanto con due colori?”.

“Uhm, non saprei come calcolarle”.

“Non è difficile: per ogni spigolo hai due scelte, o lo colori di blu o di rosso. Quindi due scelte per il primo spigolo, moltiplicate per altre due scelte per il secondo, e così via”.

“Gulp, devo moltiplicare 2 per sé stesso 4950 volte”.

“Esatto. Un numero composto da 1491 cifre. Se passi a un grafo con 120 vertici ti risulta un numero di configurazioni da provare composto da 2150 cifre”.

“Comincia a diventare lunghetta”.

“E non è finita: in ognuna delle configurazioni devi cercare degli esagoni”.

“Argh”.

“In un grafo completo sei vertici scelti a caso sono sempre collegati da sei spigoli, quindi per calcolare il numero di esagoni ti basta calcolare il numero di possibili scelte di sei vertici”.

“E come faccio?”.

“Beh, il primo vertice lo puoi scegliere in 100 modi diversi, il secondo in 99, il terzo in 98, e così via, fino al sesto vertice, che puoi scegliere in 95 modi. In realtà queste scelte non sono tutte diverse, puoi mescolare i sei lati in 6! modi, come se fossero le lettere di un anagramma”.

“Totale: 100×99×98×97×96×95. Poi divido per il fattoriale di 6, vediamo… fa 1 miliardo e rotti. E dovrei controllarli tutti per ognuno dei grafi? Roba da matti”.

“Come vedi, non esiste ancora la potenza di calcolo necessaria per poter affrontare questo problema con la forza bruta. Meglio attaccare gli alieni”.

“Ma allora come hanno fatto a fare quelle stime di cui parlavi? ”.

“Erdős è stato il primo a farle, e ha escogitato un metodo che, a prima vista, è spiazzante. I Veri Matematici lo chiamano metodo probabilistico”.

“Uhm, usa la probabilità? Si può dimostrare un teorema con considerazioni di probabilità? Mi pareva che i teoremi dessero certezze”.

“Eh, è proprio per questo che il metodo è spiazzante: Erdős ha usato la probabilità per arrivare a una vera dimostrazione”.

“Uh”.

“Erdős partiva da questa idea: supponiamo di colorare gli spigoli di un grafo in maniera casuale, tirando una moneta. Se viene testa coloro lo spigolo di rosso, se viene croce lo coloro di blu”.

“Va bene”.

“Ora, supponiamo di voler fare una stima dal basso di R(34,34)”.

“Un numero impossibile da calcolare, se già R(6,6) è intrattabile”.

“Esattamente: questo esempio serve per capire la potenza del metodo probabilistico. Ci chiediamo, ad esempio, se un grafo con un milione di vertici potrebbe essere sufficiente per garantire la presenza di poligoni di 34 lati monocromatici”.

“Mi immagino il disegno”.

“Eh eh. Ora, un grafo completo con 34 vertici ha 561 spigoli”.

“Vediamo se ho capito: per ogni spigolo posso scegliere il primo vertice in 34 modi, e il secondo in 33, però così facendo conto gli spigoli due volte, quindi dopo aver moltiplicato 34 per 33 devo dividere per 2. Sì, risulta 561”.

“Esattamente. Ora la probabilità che questi 561 vertici siano tutti dello stesso colore”.

“Ho probabilità un mezzo per ogni lato, quindi dovrebbe essere (1/2)561”.

“Bene, però i colori sono due”.

“Quindi moltiplico per due, e mi viene (1/2)560”.

“Ok. Quanti poligoni di 34 lati abbiamo in un grafo di un milione di vertici?”.

“Oh, tanti. Avevamo visto che già il calcolo con 100 dava un numero molto grande”.

“Eh, sì. Procedendo allo stesso modo, risulta che il numero di combinazioni è circa 3×10165. A questo punto, possiamo chiederci quanto vale la probabilità di trovare un poligono di 34 lati monocromatico”.

“Devo moltiplicare la probabilità che un singolo poligono sia monocromatico con il numero dei poligoni, no?”.

“Vero”.

“Quindi devo moltiplicare (1/2)560 per 3×10165”.

“Quanto viene?”.

“Poco meno di un millesimo”.

“Non importa il valore esatto, ciò che conta è che il risultato sia minore di 1”.

“Perché?”.

“Perché se tutte le possibili colorazioni di spigoli contenessero poligoni di 34 lati monocromatici, allora questa probabilità dovrebbe essere uguale a 1”.

“Ah, vero: avremmo la certezza di trovare un poligono monocromatico”.

“Dunque, se la probabilità è minore di uno, ciò significa che esiste almeno una colorazione che non ci dà poligoni monocromatici”.

“E quindi?”.

“E quindi un milione di vertici sono troppo pochi: abbiamo trovato una limitazione inferiore per R(34,34)”.

“Ah. Non è stato così difficile”.

“Per questo il metodo è potente: permette di capire qualcosa in un universo di calcoli proibitivi”.

“Ordine nel caos”.

“Proprio così. Come disse il matematico Theodore Motzkin descrivendo la teoria di Ramsey: complete disorder is impossible”.






Questa è la seconda parte di un articolo uscito sulla rivista Archimede, numero 4, del 2017. La prima parte è qua.

venerdì 7 settembre 2018

Minacce aliene — Parte 1

Gli alieni invadono la Terra e minacciano di annientarla se entro un anno gli uomini non riusciranno a trovare il numero di Ramsey per cinque rosso e cinque blu. Potremmo far scendere in campo le menti migliori e i calcolatori più veloci del pianeta e probabilmente entro un anno riusciremmo a calcolare quel valore. Se tuttavia gli alieni volessero il numero di Ramsey per sei rosso e sei blu, non avremmo altra scelta se non un attacco preventivo.


“Com’è questa faccenda degli alieni?”.

“Te lo spiego con un gioco”.

“Oh, bene!”.

“Abbiamo questo schema. A turno dobbiamo colorare i segmenti che collegano i punti: io uso il rosso, tu usi il blu. Naturalmente se uno di noi ha colorato un segmento, l’altro non può colorarlo di nuovo”.



“Ok”.

“Perde il primo che forma un triangolo. Comincia tu ”.

“Uhm”.

“Cosa c’è?”.

“Di solito, quando un Vero Matematico propone un gioco, è sicuro di vincere”.

“Eh, c’è del vero in quello che dici”.

“E quindi, se le cose stanno così, io non ho nemmeno la speranza di riuscire a pareggiare. Figuriamoci se posso pensare di vincere”.

“In effetti in questo gioco non è possibile pareggiare, nemmeno giocando male”.

“Davvero? E come è possibile? Non dirmi che, anche colorando i lati a caso, si riesce sempre a creare un triangolo”.

“E invece è proprio così. In questo gioco è impossibile non avere un triangolo. Prova: colora a caso alternativamente di rosso e di blu i segmenti, e guarda come va a finire”.




“Uh, è vero. Però, se non sbaglio, un caso favorevole non dimostra un’affermazione, no?”.

“Molto bene, vedo che i miei sforzi hanno prodotto qualche risultato”.

“Eh, so che i Veri Matematici tengono molto alle loro dimostrazioni, e so che questa non lo è. E mi è venuta anche la curiosità di sapere come si possa affermare che è sempre possibile trovare un triangolo colorato”.

“Bene, bene. La dimostrazione non è difficile: il campo di gara di questo gioco...”.

“A proposito: ha un nome?”.

“Sì, si chiama Sim. Dicevo, il campo di gara è quello che i Veri Matematici chiamano grafo completo composto da 6 vertici”.

“Un esagono con tutte le sue diagonali”.

“Esatto. Qui trattiamo le diagonali vere e proprie e i lati dell’esagono allo stesso modo: li chiamiamo spigoli. Da ogni vertice escono naturalmente cinque spigoli”.

“Naturalmente”.

“Quindi almeno tre verranno colorati allo stesso modo”.

“Uhm, perché?”.

“Vuoi assegnare ogni diagonale a un colore: è come se tu dovessi distribuire cinque maglie in due cassetti, quello rosso e quello blu”.

“Cosa c’entrano le maglie?”.

“E’ un esempio: distribuisci cinque maglie in due cassetti. Quante maglie andranno in ogni cassetto?”.

“Boh, dipende”.

“Mettere una maglia in un cassetto corrisponde a colorare uno dei cinque spigoli. Riesci a fare in modo che nessuno dei due cassetti contenga tre maglie?”.

“Eh, no, è impossibile: posso mettere due maglie in ogni cassetto, per un totale di quattro maglie. Poi però mi rimane la quinta, e da qualche parte devo mettere pure quella”.

“Quindi uno dei due cassetti avrà almeno tre maglie”.

“Perché almeno?”.

“Perché potresti anche mettere tutte le maglie nello stesso cassetto. Qualunque cosa tu faccia, un cassetto conterrà certamente più di due maglie”.

“Va bene”.

“E quindi, comunque tu scelga una colorazione dei cinque spigoli che partono da un vertice dell’esagono, almeno tre di essi avranno lo stesso colore”.

“D’accordo”.

“Supponiamo che sia il blu”.

“Immagino che la dimostrazione con tre spigoli rossi sia simmetrica a questa”.

“Esattamente. I Veri Matematici usano così spesso queste simmetrie che hanno coniato un acronimo apposta: invece di scrivere che la scelta che hanno fatto non fa perdere di generalità al problema, scrivono wlog”.

“Una funzione? Una specie di logaritmo? Che roba è?”.

“Un acronimo: without loss of generality. Alcuni lo usano anche quando parlano”.

“Sono pazzi”.

“Eh, un po’. Ma andiamo avanti: chiamiamo V il vertice che abbiamo scelto. V è connesso con altri tre vertici, che possiamo chiamare R, S e T. Se uno qualsiasi degli spigoli RS, ST o RT è blu, allora abbiamo trovato un triangolo blu. Se nessuno dei tre invece è blu...”.

“...allora abbiamo un triangolo rosso!”.

“Quello di vertici R, S e T, esatto.”.

“E quindi è vero che in una qualsiasi colorazione degli spigoli di questo grafo troviamo sempre un triangolo con i lati dello stesso colore”.

“Una qualsiasi colorazione fatta con due soli colori, naturalmente”.

“Ah, sì, certo. Dunque, al gioco del Sim non si può pareggiare”.

“Proprio così. Ora, naturalmente ai matematici piace generalizzare”.

“Capirai”.




Questa è la prima parte di un articolo uscito sulla rivista Archimede, numero 4, del 2017.

domenica 19 agosto 2018

Come di consueto, classifiche (questa volta non olimpiche)

Ecco la classifica definitiva dei campionati europei 2018, ordinata come al solito secondo la proposta di Simon Tatham.

Uno stato X è stato migliore di un altro stato Y se il medagliere di Y può essere trasformato nel medagliere di X mediante una sequenza di aggiunte di medaglie oppure di sostituzione di medaglie basse con medaglie alte.





sabato 2 giugno 2018

L'inverso del teorema di Pitagora

“L'inverso del teorema di Pitagora?”.

“Eh, sì”.

“Ma cosa significa inverso?”.

“Ti giro la domanda: cosa dice il teorema di Pitagora?”.

“Dice che il quadrato costruito sull'ipotenusa è equivalente alla somma dei quadrati costruiti sui cateti”.

“No”.

“Come no?”.

“No: prendi un triangolo equilatero di lato 1 e dimmi se è vero che 1 + 1 = 1”.

“Ma cosa c'entra un triangolo equilatero? Il triangolo deve essere… Ok, non l'ho detto”.

“Già”.

“Riprovo: il teorema di Pitagora dice che in un triangolo rettangolo il quadrato costruito sull'ipotenusa è equivalente alla somma dei quadrati costruiti sui cateti”.

“Ottimo. Qual era l'errore, quindi?”.

“Avevo dimenticato di specificare il contesto in cui si applica il teorema”.

“Sì, avevi dimenticato l'ipotesi: il teorema di Pitagora vale se il triangolo è rettangolo”.

“E l'inverso, allora?”.

“L'inverso risponde a quest'altra domanda: è vero o no che il quadrato costruito sull'ipotenusa è equivalente alla somma dei quadrati costruiti sui cateti solo se il triangolo è rettangolo?”.

“Ovvio”.

“Mica tanto ovvio: prendi un triangolo, indica con a, b e c i suoi tre lati, sai che vale la relazione a2 + b2 = c2. Puoi dire che il triangolo è rettangolo?”.

“Ma per forza, no?”.

“NO! NON ESISTONO DIMOSTRAZIONI PER FORZA!”.

“Ok, ok, mamma mia che brutto carattere”.

“Scusa eh, ma se tu sai che il verificarsi di qualcosa implica il verificarsi di qualcos'altro, puoi dire che automaticamente il verificarsi della seconda cosa implica il verificarsi della prima?”.

“Fino a pochi secondi fa avrei detto di sì, ma mi pare di capire che invece non sia così. Ho un po' paura a chiedere perché, però”.

“Prendi un numero divisibile per 4: puoi dire che è divisibile anche per 2?”.

“Certo”.

“Perché?”.

“Perché se contiene 4 contiene anche 2, dato che 4 è divisibile per 2”.

“Questa proprietà vale per tutti i numeri divisibili per 4?”.

“Certo”.

“Puoi dire il contrario? Puoi dire che ogni numero divisibile per 2 è divisibile anche per 4?”.

“Eh, no, non tutti. Se prendo 8 va bene, se prendo 6 no”.

“Quindi questo è un esempio di teorema che funziona in una sola direzione: il suo inverso non è un teorema”.

“Ah”.

“È vero che un quadrato ha quattro angoli retti?”.

“Certo”.

“È vero il contrario? Che se un quadrilatero ha quattro angoli retti allora è un quadrato?”.

“Eh, no, un rettangolo ha quattro angoli retti ma non è un quadrato”.

“Non è detto che lo sia, volendo essere precisi”.

“Può esserlo?”.

“Beh, sì. Se la definizione di rettangolo è quadrilatero con quattro angoli retti, allora esso potrebbe anche essere un quadrato. Ma non è vero che ogni rettangolo è un quadrato”.

“Va bene, ho capito”.

“Tornando al teorema di Pitagora: è vero che se in un triangolo il quadrato di un lato è equivalente alla somma dei quadrati degli altri due lati, allora quel triangolo è rettangolo”.

“A questo punto non so più quale sia la risposta. Direi di sì, ma non so perché”.

“La risposta è sì, anche se ormai il motivo per cui quella risposta è affermativa è sparito dai libri scolastici”.

“Perché?”.

“Non ne ho idea. Pigrizia? Poca voglia di spiegare? Chissà”.

“Ma è una dimostrazione difficile?”.

“No, non direi. Te la mostro, nella versione di Euclide. Cominciamo da un triangolo ABC per il quale vale la relazione AB2 + AC2 = BC2. Eccolo qua”.



“Ok. Quindi non sappiamo se è rettangolo, e vogliamo dimostrarlo”.

“Esatto: vogliamo dimostrare che l'angolo in A è retto”.

“Va bene, cominciamo”.

“Dobbiamo fare una costruzione: costruiamo un segmento DA che forma un angolo retto con CA”.

“Quindi prolunghiamo AB? Ma non sappiamo se l'angolo A è retto oppure no”.

“Esatto, ottimo: non prolunghiamo, ma costruiamo noi un angolo che sia retto. Questo vuol dire che ancora non possiamo sapere se i tre punti D, A e B sono allineati oppure no”.

“Ho capito. Quanto deve essere lungo il segmento DA?”.

“Tanto quanto AB”.

“Perfetto, eccolo qua”.



“Poi congiungiamo D con C e formiamo un triangolo”.

“E, questa volta, sappiamo che è un triangolo rettangolo”.

“Proprio così, ecco la figura completa”.



“Ora che si fa?”.

“Scriviamo un po' di uguaglianze. La prima è questa, sei d'accordo? DA2 = AB2”.

“Eh, beh, sì, se DA è uguale a AB lo saranno anche i loro quadrati”.

“Già. Ora aggiungiamo, a destra e a sinistra dell'uguale, la stessa quantità, cioè AC2”.

“Così? DA2 + AC2 = AB2 + AC2”.

“Esatto. Ora guarda cosa c'è a sinistra dell'uguale”.

“C'è la somma dei quadrati di DA e AC… Ah! Il triangolo DAC è rettangolo, quindi per quello posso applicare il teorema di Pitagora, vero?”.

“Certo: questa dimostrazione si appoggia su quel teorema. Prima dimostri il teorema diretto, poi questo”.

“Ah. Ma si può?”.

“Certo, non stai facendo le cose in modo circolare: prima dimostri il teorema di Pitagora, senza usare questo teorema, poi dimostri questo usando quello che hai appena dimostrato”.

“Ok, mi piace. Quindi siamo arrivati al fatto che a sinistra dell'uguale si può applicare il teorema di Pitagora: lo facciamo?”.

“Sì, e quindi possiamo sostituire, al posto di DA2 + AC2, il quadrato dell'ipotenusa, cioè DC2”.

“A destra dell'uguale, però, non posso farlo, perché non so se il triangolo sia rettangolo oppure no”.

“No, ma non ti serve saperlo: per la parte di destra puoi usare direttamente l'ipotesi. Tu sai già quanto vale quella somma”.

“Ehi, ma è vero, è proprio l'ipotesi! So che AB2 + AC2 è uguale a BC2”.

“Certo, e quindi l'uguaglianza è diventata DC2 = BC2”.

“Ma allora posso dire che DC e BC sono uguali”.

“Proprio così: quindi i due triangoli ABC e ACD hanno i tre lati ordinatamente congruenti”.

“E allora sono triangoli congruenti, no?”.

“Sì, è così, per il cosiddetto terzo criterio di congruenza dei triangoli. A questo punto, abbiamo concluso: se i due angoli DAC e CAB sono congruenti…”.

“…dato che DAC è retto, dovrà esserlo anche CAB!”.

“Ed ecco fatto”.

“Avevi ragione, non era difficile. Dicevi che sui libri di scuola non si trova più questa dimostrazione, ma perché? Non è difficile, mi sembra un peccato non metterla”.

“Anche a me”.

giovedì 10 maggio 2018

Come fanno i computer a calcolare le radici quadrate? — Parte 2: l'algoritmo Karatsuba

“La volta scorsa abbiamo visto come si calcola a mano una radice quadrata”.

“Ricordo. Una radice quadrata con resto, se ben ricordo”.

“Esatto. Per essere precisi: dato un numero m, diciamo che s è la sua radice quadrata e r è il resto se valgono queste relazioni:”.

s2m = s2 + r < (s + 1)2

“E abbiamo detto che i computer seguono un algoritmo simile”.

“Ancora esatto: adattano questo algoritmo alle loro caratteristiche, sfruttano la base 2 invece della base 10, e sfruttano soprattutto il fatto di essere molto bravi a compiere operazioni ripetitive. In sostanza imparano a fare i calcoli con un caso relativamente facile, e se poi i numeri diventano troppo grossi allora li spezzettano in modo da ridurre il caso difficile a tanti casi facili”.

“Bello”.

“Posso farti vedere un programmino che simula quello che viene fatto effettivamente dall'algoritmo”.

“Perché dici simula?”.

“Perché le vere implementazioni sono al solito complicate da casi particolari relativi a quanto sono lunghi i gruppi di bit che ogni macchina riesce a gestire velocemente, e quindi i veri sorgenti sono pieni di controlli del tipo se lavori con 32 bit allora fai questo, se invece lavori con 64 allora fai quest'altro, e cose così”.

“Roba da informatici”.

“Già. E poi, per semplicità, il mio programmino funziona in base 10”.

“Ok”.

“L'algoritmo si chiama SqrtRem”.

“Bel nome, molto evocativo”.

“Non l'ho scelto io: è il nome che gli autori della libreria GMP hanno scelto; la prima parte, Sqrt, significa Square Root, cioè radice quadrata, e la seconda, Rem, sta per remainder, cioè resto”.

“Va bene, non critico più i nomi scelti dagli informatici”.

“Meglio così. Ora, abbiamo detto che l'algoritmo riconduce i casi difficili a casi più facili. Si dice che opera ricorsivamente, cioè chiama più volte sé stesso fino a che non è arrivato a un caso gestibile”.

“E qual è questo caso gestibile?”.

“Il caso è gestibile quando il numero di cui dobbiamo calcolare la radice quadrata è composto da al massimo tre cifre”.

“E perché è gestibile?”.

“Perché i quadrati composti da al più tre cifre non sono così tanti, e ce li possiamo calcolare a mano”.

“Cosa?”.

“Sì, hai capito bene: quando arriviamo a un numero composto da tre cifre o meno, diciamo al computer quale risultato deve dare”.

“Questo è barare, però”.

“Anche imparare le tabelline a memoria lo è, allora”.

“Uhm”.

“Rassegnati: inseriamo nel computer la lista di alcuni quadrati e, per loro, non ci poniamo più il problema di estrarre la radice quadrata”.

“Va bene, mi rassegno”.

“Ottimo. Ecco dunque una funzione, che si chiama BaseSqrtRem, che calcola le radici dei numeri composti da al massimo 3 cifre”.




“Oh, molto bene, cerco di capire cosa fa. Vedo intanto un controllo su m: deve effettivamente essere un numero di tre cifre”.

“Esatto”.

“Poi vedo che costruisci un dizionario in cui a ogni quadrato perfetto associ la sua radice”.

“Sì, come vedi non sono tanti. E anche nella realtà si fa così, eh. L'algoritmo memorizza una tabella di valori a cui fare riferimento: serve per terminare il ciclo ricorsivo”.

“Ok, mi fido, immagino che dopo si vedrà questo ciclo. Poi, vediamo che succede: fai un ciclo in cui esplori il dizionario ordinato. Perché lo ordini?”.

“Perché non è detto che i valori dentro a un dizionario python siano ordinati, e a noi invece interessa che lo siano. Per esempio, se vuoi calcolare la radice quadrata di 420 devi cominciare a guardare i valori che sono nella lista dei quadrati, e continui a scorrere la lista finché non trovi un numero che supera 420. Nel frattempo, memorizza l'ultimo valore che hai trovato”.

“In questo caso troverei 441”.

“Sì: il ciclo si blocca non appena trova 441, e in quel momento all'interno della variabile k è memorizzato il valore trovato al passo precedente, cioè 400”.

“Sì, vedo: il ciclo si blocca prima della assegnazione k = i”.

“Perfetto. Ora vedi che si esce dal ciclo e che si memorizza in s il valore di d[400], cioè 20”.

“Questa è la radice di 420, vero?”.

“Sì. Poi viene calcolato il resto sottraendo da 420 il quadrato di s, cioè 400. Risultato: 20”.

“Quindi la radice quadrata di 420 è 20 col resto di 20”.

“Perfetto, e questo è il caso base: quando arriviamo qui sappiamo fare il calcolo”.

“Perché nella lista c'è anche 1024?”.

“Perché se vuoi calcolare la radice di un numero maggiore o uguale a 961 il ciclo deve arrivare a considerare 1024, per poi bloccarsi”.

“Ok, chiaro. E adesso?”.

“Adesso arriva la parte seria: la funzione SqrtRem. L'idea è questa: se ho un numero composto da 4 cifre o più, lo prendo e divido le cifre in quattro gruppetti”.

“Anche nel calcolo a mano facevamo così? Non mi pare”.

“No, facevamo una cosa analoga ma non identica: dividevamo il numero a gruppetti composti da 2 cifre: tenevamo fisso il numero di cifre di cui era composto ogni gruppetto, e in questo modo avevamo un numero di gruppetti variabile”.

“Qui invece teniamo fisso il numero di gruppetti, mentre facciamo variare il numero di cifre che li compongono?”.

“Proprio così. Ti faccio vedere la parte di funzione che si occupa di questa suddivisione:”.



“Ah, ma usi le stringhe?”.

“Sì, ti ho detto che questo programma è un esempio, che in realtà non si fa così, no?”.

“Sì, ma non capisco le stringhe”.

“Immagina di fare i conti a mano: quando dividi un numero in 4 gruppi, lo fai contando le cifre. Tu, operatore manuale, usi le stringhe in questa fase, non ragioni sui valori numerici. Il programma ti copia”.

“Ah, va bene”.

“Quindi, arrivati alla fine di questa parte, nelle quattro variabili a0, a1, a2 e a3 sono contenuti i quattro gruppetti di cifre”.

“E che succede se la divisione non è esatta?”.

“Le cifre in più vanno a finire in a0. Mi spiego meglio: se il numero di cui vuoi calcolare la radice è 12345, i gruppi vengono composti in questo modo: 12|3|4|5. Se invece fosse 123456, i gruppi diventerebbero 123|4|5|6”.

“Ah, ok. Diventano tutti di 2 cifre quando si arriva a 12345678, suppongo”.

“Proprio così. Ora si parte con l'algoritmo vero e proprio, usando la filosofia divide and conquer”.

“Cioè?”.

“Cioè calcoliamo la radice quadrata del numero composto solo dai primi due gruppetti, che sono a0 e a1”.

“E come facciamo?”.

“Richiamiamo la funzione con quel numero”.

“Roba da matti. E funziona?”.

“Certo che funziona: ogni volta accorci il numero di cui vuoi calcolare la radice, e a un certo punto arrivi a un numero composto da al massimo 3 cifre. E di quello sai calcolare la radice. Il difficile è poi tornare indietro e ricomporre, da tutti i pezzettini, la radice del numero iniziale”.

“Ah, ecco”.

“Ecco quindi il nucleo della funzione che calcola la radice quadrata”.



“Oh, qua non si capisce niente”.

“Allora, la prima riga è la chiamata ricorsiva: vedi che viene chiamata nuovamente SqrtRem passandole, però, il numero a3*10^l+a2, cioè il numero composto dai primi due gruppetti di cifre”.

“Perché elevi alla l?”.

“Perché l è il numero di cifre di cui è composto ogni gruppetto: moltiplicare per 10l significa spostare di l cifre a sinistra il numero moltiplicato”.

“Ah, ok. Immagino che nella realtà al posto di 10 ci sia un 2, vero?”.

“Esatto”.

“Quindi dentro a s1 e r1 ci finiranno la radice quadrata e il resto di quel numero”.

“Sì, e ora bisogna mettere a posto i conti, perché così facendo non hai considerato le cifre contenute in a1 e a0”.

“E come si fa?”.

“Forse è meglio seguire i calcoli con un esempio: diciamo che vogliamo calcolare la radice di 12345”.

“Oh, bene, un esempio con dei numeri veri! Allora, divido in quattro gruppetti, che dovrebbero essere questi: 12|3|4|5”.

“Giusto. Ora prendiamo soltanto i primi due, cioè il numero 123, e riapplichiamo di nuovo l'algoritmo”.

“Questa volta però il numero è di 3 cifre, quindi dovremmo trovare il risultato direttamente, vero?”.

“Certo: prova a farlo a mente. Qual è il più grande quadrato minore di 123?”.

“121, il quadrato di 11”.

“Bene, quindi 123 = 112 + 2”.

“Ah, quindi ho trovato s1 = 11 e r1 = 2, vero?”.

“Sì, questo è il primo passo: quello che hai fatto è scrivere 12300 = 12100 + 200. Ma tu vuoi trovare un'espressione simile per 12345”.

“Ho completamente trascurato le cifre 4 e 5”.

“Già. Ora procediamo come si farebbe a mano: se ricordi, c'era un calcolo apparentemente magico che diceva di raddoppiare il risultato parziale trovato fino a questo momento per la radice, per poi eseguire altri calcoli che avevano lo scopo di trovare la cifra successiva”.

“Mi ricordo, avevi spiegato anche il perché”.

“Ottimo. Partiamo sempre dalla stessa idea: una prima stima della radice che stiamo calcolando è 110, ma è soggetta a errore perché siamo partiti da 12300. Magari il numero che vogliamo non è 110 ma 111, o 112”.

“Allora modifichiamo un po' quel 110”.

“Esatto: immagina che sia (110 + q). Se lo elevi al quadrato ottieni 12100 + 220q + q2”.

“E quindi 220q + q2 dovrebbe essere uguale a 12345”.

“Ma tu hai già scritto 12345 come 12100 + 200 + un errore, che è 45. Ora si procede in modo un po' diverso rispetto a quello che si farebbe a mano: si corregge 200 non aggiungendo 45 ma solo 40. Cioè, in realtà non si fa il confronto tra 245 e 220q ma tra 24 e 22q, buttando via l'ultima cifra”.

“Perché? Non considero nemmeno q2? Nel calcolo a mano lo facevamo”.

“Hai ragione, qua non si fa, e non ho trovato una spiegazione sul motivo. Alla fine l'errore che si commette trascurando quel termine viene corretto, ma non so perché si preferisca fare così. Sospetto per la velocità di esecuzione: se confrontiamo 240 con 220q vediamo che ci basta fare una divisione per trovare q, senza procedere per tentativi. Se si commette un errore, alla fine lo si corregge”.

“Ah, ok, quindi avremmo che q = 24/22, cioè 1”.

“Sì, con resto di 2. Questi due valori vengono memorizzati in q e u”.

“Ah, ecco il motivo di quelle due righe di codice. E poi che succede?”.

“Le due righe successive aggiungono la cifra q al risultato, e ricalcolano il resto”.

“E quel controllo sul resto negativo?”.

“Eh, è la correzione di cui ti parlavo prima: i calcoli fatti per q potrebbero, in alcuni casi, dare un resto negativo. Se così fosse, allora diminuiamo s di 1 e aggiorniamo il resto”.

“Non capisco bene l'aggiornamento del resto”.

“Supponi di aver sbagliato per eccesso il calcolo di una radice, cioè come se tu scrivessi A = B2r”.

“Ah, ok, devo sottrarre il resto invece di aggiungerlo”.

“Esatto. Ora, che succede se al posto di B metti B − 1? Come devi correggere l'uguaglianza?”.

“Provo a fare i calcoli: se sviluppo il quadrato del binomio ottengo (B − 1)2 = B2 − 2B + 1”.

“E quindi A = (B − 1)2 + 2B − 1 + r”.

“Ah, ecco, vedo: al vecchio resto devo aggiungere 2B e togliere 1, ho capito”.

“Perfetto. Ecco qua la funzione completa che calcola la radice quadrata di un numero col resto”.

“Ottimo. Ancora una vittoria per la carta e la penna”.