![]() Diofanto di Alessandria 200 - 284 |
![]() Hypatia di Alessandria 370 - 415 |
Diofanto fu un grande e prolifico matematico dell'antichità. Tra l'altro scrisse un trattato sui numeri poligonali, argomento assai caro a Pitagora. Diofanto è rimasto nella storia soprattutto per i suoi 13 libri dell'Arithmetica. Non ci sono noti gli originali, ma soltanto trascrizioni successive dei primi 6 libri. Si ritiene probabile che questi testi siano pervenuti sino a noi grazie all'interesse suscitato dai commentari di Hypatia, anche questi purtroppo perduti.
Le equazioni diofantine sono equazioni polinomiali in un numero qualsiasi di indeterminate: ciò che le rende particolari è che di esse si cercano soltanto le soluzioni intere.
Le equazioni diofantine di grado maggiore di uno sono spesso difficilissime da risolvere. Non solo: è sovente impossibile persino sapere se hanno soluzioni.
Per esempio stabilire se l'equazione Ax2 + By = C ha soluzioni intere (assegati gli interi A, B e C) e uno dei problemi più ardui!
Durante il Secondo Congresso Internazionale del 1900, a Parigi, Hilbert propose ai suoi colleghi matematici 23 problemi. Nel decimo si chiedeva:
Esiste un algoritmo che, data una generica equazione diofantina F, sia in grado di decidere - in tempo finito - se F possiede o meno soluzioni intere?
Nel 1970 Yuri Matiyasevich dimostrò che un tale algoritmo non può esistere, il 10° Problema di Hilbert è indecidibile, proprio come il famoso problema dell'arresto.
Nel seguito ci occuperemo delle più semplici, ma non banali, equazioni diofantine, quelle di grado 1 in due indeterminate, e impareremo a risoverle!

Malgrado la sua venerabile età, l'algoritmo di Euclide (AE) per il calcolo del massimo comun divisore di una coppia di interi rimane uno degli strumenti assolutamente necessari nell'ambito della teoria dei numeri.
Ricordo che, quando ero bambino, a scuola ci insegnarono a calcolare il massimo comun divisore di due interi partendo dalla loro fattorizzazione.
Questo metodo è ineccepibile su un piano teorico, ma in pratica è inapplicabile, perché a tutt'oggi nessuno è in grado di fattorizzare interi grandi.
Utilizzando AE si può, in maniera efficiente anche con numeri di migliaia di cifre, trovare il più grande intero d che divide due numeri dati a, b senza conoscere i divisori di a e di b.
In quanto segue supponiamo che a, b siano interi tali che a > b > 0.
Denotiamo con MCD(a, b) il massimo comun divisore di a e b. L'osservazione fondamentale di Euclide è stata questa:
| (1) MCD(a, b) = MCD(b, a - b) |
Questo risulta dal fatto che l'insieme dei divisori comuni di {a, b} è identico all'insieme dei divisori comuni di {b, a - b}.
Se a - b è maggiore di b si può continuare a sottrarre b.
Ad un certo punto si otterrà il resto r della divisione di a per b, r = a - qb, dove q è il quoziente.
Scriveremo a mod b per denotare il resto r.
Esempio 1Le considerazioni fatte portano ad una espressione più efficiente della (1):10 mod 3 = 1
10 mod 4 = 2
10 mod 5 = 0
| (2) MCD(a, b) = MCD(b, a mod b) |
Si noti che, se b > 0, il passaggio dalla coppia (a, b) alla coppia (b, a mod b) è sempre conveniente perché
b < aIn un numero finito di passi la successione dei resti arriverà a 0, e si avrà:
a mob b ≤ b - 1 < b
| (3) MCD(a, b) = MCD(d, 0) = d |
dove d è l'ultimo resto non nullo.
Vediamo in dettaglio l'algoritmo AE:
Per convenzione inizializziamo la sucessione dei resti con:Nella tavola sottostante vediamo come esempio il calcolo di MCD(90, 17). Nella prima colonna c'è il numero del passo k, da -1 a n, nella seconda c'è il resto rk e nella terza il quoziente qk.r-1 = a
r0 = bSeguono:
r1 = a mod b = r-1 mod r0
r2 = b mod r1 = r0 mod r1
r3 = r2 mod r1...
rk = rk-1 mod rk-2
...
0 = rn = rn-1 mod rn-2
Giunti a resto 0 AE termina, e si ha:
d = rn-1 è MCD(a, b).
Per k ≥ 1 viene sempre mantenuta la relazione
| (4) rk = rk-2 - qk-1rk-1 |
All'n-esimo passo si ha rn = 0. Si noti che q-1 e qn non sono definiti.
| PASSO k | RESTO rk | QUOZIENTE qk |
| -1 | 90 | *** |
| 0 | 17 | 5 |
| 1 | 5 | 3 |
| 2 | 2 | 2 |
| 3 | 1 | 2 |
| 4 | 0 | *** |
In questo esempio n = 4, r3 = 1 = MCD(90, 17).
Per la (4) ogni resto è combinazione lineare, con coefficienti interi, dei due resti precedenti.
Quindi, risalendo all'indietro a partire da d = rn-1, si otterrà d = MCD(a, b) come combinazione lineare, con coefficienti interi, dei numeri a, b. Pertanto esistono sempre due interi u, v tali che vale
| (5) d = ua + vb |
La (5) viene detta identità di Bezout.
Esiste una semplice estensione dell'algoritmo di Euclide, estensione che chiamiamo AEE, che permette di calcolare i coefficienti u, v parallelamente al calcolo di MCD(a, b).
E' sufficiente aggiungere due colonne alla Tavola 1, nelle quali si pongono uk e vk ad ogni passo k, mantenedo sempre vera la condizione
| (6) rk = uka + vkb |
Allora quando k = n-1 si ottiene la (5).
Come creare e mantenere le relazioni (6) per k che varia da -1 a n-1?
La fase di inzializzazione è ovvia, basta porre
u-1 = 1, v-1 = 0In questo modo si hau0 = 0, v0 = 1
a = r-1 = u-1a + v-1bA questo punto le (4) stesse ci dicono come calcolare le coppie (uk, vk), per k ≥ 1b = r0 = u0a + v0b
| (7) (uk, vk) = (uk-2, vk-2) - qk-1(uk-1, vk-1) |
Nella sottostante Tavola 2 vediamo AEE all'opera, per esprimere 1 nella forma u × 90 + v × 17
| PASSO k | RESTO rk | QUOZIENTE qk | uk | vk |
| -1 | 90 | *** | 1 | 0 |
| 0 | 17 | 5 | 0 | 1 |
| 1 | 5 | 3 | 1 | -5 |
| 2 | 2 | 2 | -3 | 16 |
| 3 | 1 | 2 | 7 | -37 |
| 4 | 0 | *** | -17 | 90 |
Per capire bene come si utilizzano le (7) vediamo un esempio
Esempio 2Nella Tavola 2 il risultato è contenuto nella penultima riga: 7 × 90 - 37 × 17 = 1.Calcoliamo (u3, v3) nella Tavola 2, utilizzando le (7).
(u3, v3) = (u1, v1) - q2 (u2, v2) =
(1, -5) - 2 × (-3, 16) = (1, -5) + (6, -32) = (7, -37)
Siamo ora in grado di risolvere, come promesso, le equazioni diofantine di tipo più semplice, quelle della forma
Disponiamo infatti, attraverso AEE, di un potente algoritmo per trovare le soluzioni della (°).
ALGORITMOPer capire bene un algoritmo c'è un solo modo: applicarlo più volte.Vogliamo risolvere la (°), dove a, b, c sono interi positivi qualsiasi.
Calcoliamo con AEE gli interi d, u, v dove d = MCD(a, b) e vale la
(°°) ua + vb = d.
Se la (°) ha soluzioni intere, ogni numero che divide sia a che b divide c. Pertanto
se d non divide c non ci sono soluzioni.
Supponiamo allora che d divida c, c = hd.
Moltiplicando la (°°) per h troviamo (hu)a + (hv)b = hd = c.
Pertanto la coppia (x0, y0) è una soluzione di (°), dove si è posto x0 = hu, y0 = hv.
Sia (x, y) una qualsiasi soluzione di (°). Allora si ha
ax + by = c = ax0 + by0, ovvero
(°°°) a(x - x0) = b(y0 - y).
Dividiamo a, b per il loro MCD d. Troviamo a1 = a/d, b1 = b/d. Ovviamente a1 e b1 sono coprimi tra di loro.
Dividendo la (°°°) per d otteniamo:(°°°°) a1(x - x0) = b1(y0 - y).
La (°°°°) ci dice che a1 divide il prodotto a destra. Poiché a1 è coprimo con b1, a1 deve dividere (y0 - y). Per lo stesso motivo b1 deve dividere (x - x0).
Esistono allora k, k' tali che y = y0 - ka1, x = x0 + k'b1.
Ricordiamo ora che la coppia (x, y) è soluzione della (°):
(*) c = ax + by = a(x0 + k'b1) + b(y0 - ka1) = c + ak'b1 - bka1
perché ax0 + by0 = c.
Poiché a1 = a/d, b1 = b/d, la (*) diventa:
c = c + k'ab/d - kab/d, il ché implica k = k'.
Concludendo, se ha soluzioni, la (°) ha infinite soluzioni. Le soluzioni sono date dalle coppie (x, y) :
x = x0 + kb/d, y = y0 - ka/d dove k è un intero qualsiasi.Si noti bene che la coppia iniziale (x0, y0) non ha nulla di speciale. Qualsiasi soluzione (x, y) può essere messa al posto di (x0, y0).
Esempio 3(1) 10625x + 39457y = 44
Calcoliamo MCD(10625, 39457) = 17. Poiché 17 non divide 44, l'equazione (1) non ha soluzioni.
(2)10625x + 39457y = 34
Usiamo AEE ottenendo MCD(10625, 39457) = 17 = -765 × 10625 + 206 × 39457.
Utilizzando le notazioni dell Algoritmo si ha: h = 2, a1 = 625, b1 = 2321, x0 = -1530, y0 = 412.
Le soluzioni sono tutte e sole le coppie (xk, yk) con xk = -1530 + 2321k yk = 412 - 625k.
Per esempio una soluzione è (x1, y1) = (791, -213)(3) 1024x - 15625y = 11529
Risolviamo prima la
(#) 1024x + 15625y = 11529.
Usiamo AEE ottenendo MCD(1024, 15625) = 1 = -4776 × 1024 + 313 × 15625.
Poiché d = 1 divide 11529 la (#) ha infinite soluzioni. In questo caso a1 = a = 1024 e b1 = b = 15625.
h = 11529, x0 = hu = 11529 × (-4776) y0 = hv = 11529 × 313.
Pertanto una soluzione della (#) è (x0, y0) = (-55062504, 3608577).
Sappiamo allora che le soluzioni della (#) sono le coppie (xk, yk), con xk = -55062504 + 15625k yk = 3608577 - 1024k.Chiaramente (x, y) è una soluzione della (3) se e solo se (x, -y) è una soluzione della (#). Quindi
le soluzioni della (3) sono le coppie (Xk, Yk), con Xk = -55062504 + 15625k Yk = -3608577 + 1024k.Supponiamo ora di dover trovare il minimo X positivo per cui (X, Y) è una soluzione della (3).
Poiché la parte intera di 55062504/15625 è 3524, il minimo k per avere X positivo è 3525. Infine si ha:
(X3525, Y3525) = (15621, 1023)
Esercitazione 1.1 Faccio compravendita di giacche di un sol tipo. Acquisto una giacca a 27 euro e la rivendo a 40 euro. All'inizio della giornata ho in cassa 30 euro. Alla fine ne ho 130. Qual è il minimo numero di giacche che ho venduto?
Tempo fa cinque marinai naufragarono su un'isola. Passarono tutto il giorno a raccogliere noci di cocco, e andarono a dormire. Nella notte uno di loro si alzò e, non fidandosi troppo degli altri, pensò di prendere subito quanto gli spettava. Una scimma curiosa si era avvicinata, e il marinaio le gettò una noce. Le noci rimaste vennero divise in cinque mucchi uguali, senza che avanzasse nulla. Il marinaio prese la sua parte, un quinto giusto, rifece un gran mucchio e tornò a dormire. Gli altri quattro marinai fecero esattamente la stessa cosa, uno dopo l'altro, senza accorgersi di nulla. E ogni volta arrivò la scimmia, cui venne data una noce, proprio come nel primo caso.
Arrivato il mattino i cinque si alzarono e, con incredibile faccia tosta, divisero il mucchio rimasto in cinque parti uguali, ovviamente dopo avere lanciato una noce all'immancabile scimmia.
Domanda: quante erano le noci di cocco?
x = 5a1 + 1Il primo marinaio prende a1 noci e rimangono 4a1 noci. Se denotiamo con a2, a3, a4, a5, y, rispettivamente, il numero di noci prese dal secondo, terzo, quarto, quinto marinaio e da ogni marinaio il mattino seguente si ha:
x = 5a1 + 1Sostituendo dal basso verso l'alto si ottiene:
4a1 = 5a2 + 1
4a2 = 5a3 + 1
4a3 = 5a4 + 1
4a4 = 5a5 + 1
4a5 = 5y + 1
a5 = (5y + 1)/4Abbiamo già visto in Esempio 3 (3) come si risolve questa equazione. La soluzione minima è x = 15621. Si ricordi che x è il numero iniziale delle noci.a4 = (5a5 + 1)/4 =(5((5y + 1)/4) + 1)/4 = (25y + 9)/16
a3 = (5a4 + 1)/4 = (5((25y + 9)/16) + 1)/4 = (125y + 61)/64
a2 = (5a3 + 1)/4 = (5((125y + 61)/64) + 1)/4 = (625y + 369)/256
a1 = (5a2 + 1)/4 = (5((625y + 369)/256) + 1)/4 = (3125y + 2101)/1024
Infine:
x = 5a1 + 1 = 5(3125y + 2101)/1024 + 1 = (15625y + 11529)/1024
da cui si ricava l'equazione diofantea
1024x - 15625y = 11529
|
|
|
|
|
Esercitazione 1.2 Verificare la (12).
|
|
|
|
|
|
|
|
|
Esercitazione 1.3
1.3.1 Risolvere il problema della pesca utilizzando i metodi che abbiamo visto.
(Come ricorderete il problema della pesca è stato posto dal Professor Beppe Di Domenico)
1.3.2 Determinare un x e un k tali che quando si svegliano (t = 6) i nostri 5 marinai
non trovano nessuna noce.
1.3.3 Qual è il significato di rim(x, k, n, t) per k negativo?
1.3.4 Ammettiamo valori negativi di k.
Esistono x, k, n tali che rim(x, k, n, t) rimane costante per ogni t?
1.3.5 Determinare x, k positivi tali che rim(x, k, 4, 7) = 3.
Nota
Il problema della "Scimmia e le noci di cocco" ha una interessante storia, e possiede soluzioni e varianti sorprendenti.
Si veda il Capitolo 9 (pagg. 82 - 87) di:
Martin Gardner
Enigmi e giochi matematici 2
Sansoni, 1973