Matematica Discreta Lezione dei giorni 1,4,8,11,15,18 aprile 2011 Teorema. Una classe [a] del monoide Zm , con il rappresentante a scelto fra 1,.......,m-1, é simmetrizzabile rispetto al prodotto fra classi il rappresentante a della classe é coprimo con il modulo m (ossia mcd(a,m)=1). Dimostrazione: (): Se [a] é simmetrizzabile, esiste il suo simmetrico [b] tale che [a][b]=[ab]=[1], dunque si ha la congruenza: ab1 (mod m) ossia m è un divisore della differenza (ab-1) dunque esiste un intero k tale che (ab-1)=mk, ossia: 1=ab-(mk)=ab+m(-k) Si ottiene che 1 é combinazione lineare di a,m con coefficienti interi relativi b,-m, e ricordando che il mcd(a,m) é la minima combinazione lineare positiva di a,m (si ricava dalla dimostrazione del Teorema di esistenza del massimo comune divisore) si deduce che 1=mcd(a,m) e si ha la tesi. (): Se 1=mcd(a,m), allora, per una proprietà del massimo comune divisore, 1 é combinazione lineare di a,m a con opportuni coefficienti interi relativi x,y 1=ax+my Da ciò si ha ax-1=m(-y), dunque m é divisore della differenza (ax-1), ossia si ha la congruenza: ax1 (mod m) dunque in Zm sono uguali le classi [ax]=[1] da cui [a][x]=[1]=elemento neutro, e si conclude che [a] é simmetrizzabile (con simmetrico [x]) cioé la tesi. Il Teorema precedente risolve non solo il problema di caratterizzare quali sono gli elementi simmetrizzabili del monoide Zm rispetto al prodotto di classi, ma per ognuno di essi illustra un algoritmo per calcolare l’inverso (cioè il simmetrico): 1) data una classe [a][0] in Zm si calcola (con l’algoritmo Euclideo) il mcd(a,m) 2) se mcd(a.m)>1 allora si conclude che [a] non é simmetrizzabile 3) se mcd(a,m)=1, allora [a] è simmetrizzabile, ed il suo simmetrico è [x] dove x è il coefficiente di a nella rappresentazione di 1 come combinazione lineare di a,m a coefficienti interi relativi: 1 = ax+my [a]-1=[x] Per il calcolo del coefficiente x (e quindi dell’inverso di [a]) si può usare egualmente l’algoritmo Euclideo delle divisioni successive. Sappiamo che, dato un qualunque monoide A (rispetto ad una operazione *), il suo sottoinsieme A*, contenente gli elementi simmetrizzabili, è un gruppo rispetto alla stessa operazione. In particolare, dato il monoide Zm={[0], [1], …., [m-1]} delle classi di congruenza modulo m (rispetto all’operazione di prodotto di classi), abbiamo dimostrato che gli elementi simmetrizzabili sono le classi con rappresentante a compreso fra 1,2,…..,m-1, tali che a,m siano coprimi. Dunque il sottoinsieme degli elementi simmetrizzabile di Zm : Zm* = {[a] Zm / a=1,2,….,m-1; a,m coprimi} È un gruppo, rispetto all’operazione di prodotto di classi: ovviamente la sua cardinalità coincide con la funzione di Eulero (m) del modulo m: Zm* = (m) Esempio. Dato il monoide Z9 delle classi di congruenza modulo 9 rispetto all’operazione di prodotto di classi: Z9 = {[0],[1],[2],[3],[4],[5],[6],[7],[8]} (di cardinalità 9) il gruppo degli elementi simmetrizzabile contiene le classi con rappresentante compreso fra 1 e 8 e coprimo con 9 ossia: Z9*= {[1],[2],[4],[5],[7]} (di cardinalità (9)=6) Ricordiamo i dettagli dell’algoritmo Euclideo delle divisioni successive (che, come detto, si può utilizzare anche per calcolare il simmetrico nel caso di un elemento simmetrizzabile del monoide Zm rispetto all’operazione di prodotto di classi). Siano dati i numeri naturali a,b (con a>b): si effettua una prima divisione di a (dividendo) per b (divisore) ottenendo quoziente q1 e resto r1, dove q1, r1 sono interi 0, con r1<b; si effettuano poi successive divisioni con la regola seguente: effettuata la divisione numero k, se il resto è 0 l’algoritmo si arresta, mentre se il resto è >0 si effettua un’ulteriore divisione numero k+1, in cui il dividendo e il divisore sono rispettivamente il divisore e il resto della divisione numero k; l’ultimo resto non nullo è il mcd(a,b). Schematizzando: a=bq1+r1 (q10, 0<r1<b) b=r1q2+r2 (q20, 0<r2<r1) r1=r2q3+r3 (q30, 0<r3<r2) . . rn-3=rn-2qn-1+rn-1 (qn-10, 0<rn-1<rn-2) rn-2=rn-1qn+rn (qn0, rn=0) rn-1=mcd(a,b) Parallelamente si possono calcolare i coefficienti interi relativi x,y tali che mcd(a,b)=ax+by nel modo seguente: si costruiscono le 2 successioni di numeri interi relativi s0 ,s1,…..,sn ; t0,t1,….,tn (dove n é il numero di divisioni dell’algoritmo Euclideo) ponendo s0=1, s1=0, si=si-2-si-1qi-1 (per ogni i>1); t0=0, t1=0, ti=ti-2-ti-1qi-1 (per ogni i>1) dove qi-1 è il quoziente della divisione numero (i-1) nell’algoritmo Euclideo. Basta poi porre x=sn ,y=tn per avere i coefficienti x, y (x è il coefficiente di a; y quello di b). Esempio. Verifichiamo se [33] è simmetrizzabile nel monoide Z89 (rispetto al prodotto di classi) e in caso affermativo calcoliamone il simmetrico. Calcoliamo il mcd(89,33). Utilizzando l’algoritmo Euclideo si effettuano n=5 divisioni con i seguenti valori di quoziente e resto: q1=2, r2=23; q2=1, r2=10; q3=2, r3=3; q4=3, r4=1; q5=3, r5=0 Si conclude che mcd(89,33)=r4=1, dunque [33] è simmetrizzabile in Z89 . Calcolando le successioni si, ti si ottiene s5=-10, t5=27, dunque la rappresentazione di 1 come combinazione lineare di 89,33 è 1=89x+33y, con x= -10, y=27. In particolare si ottiene che [33] è simmetrizzabile in Z89 con simmetrico [27] (perché 27 è il coefficiente di 33 nella combinazione lineare). Facendo in effetti i calcoli si ottiene [33][27]=[3327]=[891]=[1] (perché 1 è il resto della divisione di 891 per il modulo 89). Leggi di cancellazione in un gruppo Sia A un gruppo rispetto all’operazione *. Affermiamo che: dati comunque gli elementi a,b,cA tali che a*c=b*c allora si ha necessariamente a=b (è la cosiddetta legge di cancellazione a destra, perché il secondo operando c viene “cancellato a destra” in ambo i membri dell’eguaglianza). Dimostriamo tale legge di cancellazione: se eA è l’elemento neutro di A, e se c’A è il simmetrico di c in A, si ha (utilizzando la proprietà associativa insieme con l’ipotesi a*c=b*c ): a=a*e=a*(c*c’)=(a*c)*c’=(b*c)*c’=b*(c*c’)=b*e=b dunque a=b (tesi). Con ragionamento analogo si ottiene la cosiddetta legge di cancellazione a sinistra valida in ogni gruppo A: dati comunque gli elementi a,b,cA tali che c*a=c*b allora si ha necessariamente a=b. Notare che se A non è gruppo, tali leggi di cancellazione possono anche non valere. Per esempio nel monoide Z4 delle classi di congruenza modulo 4 rispetto al prodotto di classi si ha: [2][3]=[6]=[2]=[2][1] eppure non è vero che [3]=[1] (quindi non si può “cancellare” l’operando [2] nei due membri dell’eguaglianza). Una conseguenza delle leggi di cancellazione è la seguente: se A é un gruppo finito di cardinalità n, la tavola dell’operazione di A forma un quadrato latino di ordine n. Infatti sappiamo che se gli n elementi distinti di A sono ordinati come segue A = {a1,a2,......,an} allora la tavola dell’operazione di A é una matrice nxn in cui nella generica casella all’incrocio fra riga i e colonna j vi é il risultato ai*aj . Se per assurdo non si ottenesse in tal modo un quadrato latino, vi sarebbero 2 elementi uguali nella stessa riga o nella stessa colonna. Ma se per esempio per assudo vi fossero 2 elementi uguali nella stessa riga i (in due diverse colonne j,k) allora si avrebbe la seguente eguaglianza: ai*aj = ai*ak e per la legge di cancellazione a sinistra si concluderebbe che aj=ak (contraddizione perché gli elementi a1,a2,......,an sono distinti). Con ragionamento analogo, se vi fossero invece per assurdo 2 elementi uguali nella stessa colonna, si otterrebbe una contraddizione (utilizzando stavolta la legge di cancellazione a destra). Dunque un modo per ottenere un quadrato latino di ordine n é per esempio quello di costruire la tavola dell’operazione di un qualunque gruppo di cardinalità n. Notiamo anche che per ogni numero naturale n abbiamo a disposizione gruppi di cardinalità n: per esempio il gruppo Zn delle classi di congruenza modulo n rispetto all’operazione di somma di classi. Potenza di un elemento di un gruppo ad esponente intero non negativo. Siano A un gruppo rispetto all’operazione * ed aA un elemento fissato. Vogliamo definire il concetto di potenza di base a ed esponente intero non negativo, in modo analogo a quanto si fa per le ordinarie potenze numeriche. Per ogni numero naturale kN definiamo la potenza ak di a con esponente k nel modo seguente: ak = a*a*….*a (dove il numero degli operandi coincide con l’esponente k) Dunque: a1=a, a2=a*a, a3=a*a*a etc… (notare che la validità della proprietà associativa ci permette di non specificare come si associano gli operandi: per esempio a3=(a*a)*a = a*(a*a)). Estendiamo poi convenzionalmente la definizione di potenza anche al caso di un esponente nullo, definendo: a0 = e (elemento neutro di A). Esempio: Consideriamo il gruppo delle classi di congruenza modulo 20 rispetto all’operazione di somma di classi: Z20 = { [0],[1],[2],[3],….,[19] } e fissiamo a=[3]. Allora per esempio: [3]3=[3]+[3]+[3]=[3+3+3]=[9] [3]8=[3]+[3]+[3]+[3]+[3]+[3]+[3]+[3]=[3+3+3+3+3+3+3+3]=[24]=[4] (perché 4 è il resto della divisione di 24 per 20) [3]0=[0] (perché [0] è l’elemento neutro). Consideriamo invece il gruppo delle classi di congruenza modulo 20 che sono simmetrizzabili rispetto all’operazione di prodotto di classi (sappiamo che sono le classi [a] con a=1,2,…..,19 e tali che mcd(a,20)=1): Z20* = {[1],[3],[7],[9],[11],[13],[17],[19]} e fissiamo di nuovo a=[3]. Allora per esempio: [3]3=[3][3][3]=[333]=[27]=[7] (perché 7 è il resto della divisione di 27 per 20). [3]0=[1] (perché [1] è l’elemento neutro). Esempio: Consideriamo il gruppo F(X)* delle funzioni biunivoche da un insieme X in sé stesso, dove X={a,b,c} ha cardinalità 3, rispetto all’operazione di composizione di funzioni. Fissiamo la funzione biunivoca f: X X definita da f(a)=b, f(b)=c, f(c)=a: dunque f è elemento del gruppo F(X)*. Si ha allora, per esempio: f0=iX=funzione identica di X (perché è l’elemento neutro rispetto alla composizione di funzioni) f2=ff dove ff: X X è la funzione biunivoca definita da: (ff)(a)=f(f(a))=f(b)=c, (ff)(b)=f(f(b))=f(c)=a, (ff)(c)=f(f(c))=f(a)=b Per le potenze di un elemento a di un gruppo A valgono le analoghe proprietà delle potenze numeriche. Comunque presi gli interi non negativi h,k si ha: 1) (ah)*(ak)=ah+k 2) (ah)k=ahk Dimostriamo per esempio la 1), distinguendo 3 casi e in ognuno di essi dimostrando la tesi: caso 1: h=0; allora (indicato con eA il neutro di A) (ah)*(ak)=(a0)*(ak)=e*(ak)=ak=a0+k=ah+k; caso 2: k=0 (dimostrazione simile) caso 3: h,k>0; allora (ah)*(ak)=(a*a*…*a)*(a*a*…*a) (dove nella prima parentesi vi sono h operandi, nella seconda k operandi), dunque (ah)*(ak)=a*a*…*a (con un totale di h+k operandi) e si conclude che (ah)*(ak)=ah+k anche in questo caso. La dimostrazione della 2) segue uno schema simile. Teorema. Se A è un gruppo finito di cardinalità n con elemento neutro eA, fissato un elemento aA esiste sempre qualche intero k>0, k≤n tale che ak = e. Dimostrazione: Consideriamo le seguenti potenze di a: a0, a1, ……….., an Tali elementi di A non sono tutti distinti (se così fosse sarebbero n+1 elementi distinti di A, in contraddizione con l’ipotesi che n è la cardinalità di A), dunque esistono almeno 2 interi t,s tali che ts, 0t,sn, at = as. Supponiamo per esempio t>s (se t<s si ragiona in modo analogo). Se s=0 si ha la tesi, perché allora at = a0 = e, con t>0, tn, e il valore di k cercato è k=t. Supponiamo dunque s>0. Allora da at = as segue at = e*as, e poiché at = a*a*……*a (con t operandi), as = a*a*……*a (con s operandi), applicando s volte la legge di cancellazione a destra (valida nel gruppo A): at-s = e con t-s>0, t-stn Si ottiene anche in questo caso la tesi, scegliendo k=t-s. Se A è un gruppo finito di cardinalità n con elemento neutro eA, e se fissiamo un elemento aA, per il Teorema precedente esistono esponenti positivi kn tali che ak=e, dunque (per l’Assioma del minimo) possiamo considerare il più piccolo intero positivo kn tale che ak = e, detto periodo dell’elemento a. Notiamo anche che ovviamente il periodo dell’elemento neutro è sempre k=1 perché e1 = e. Esempio. Consideriamo il gruppo delle classi di congruenza modulo 18 che sono simmetrizzabili rispetto all’operazione di prodotto di classi ([a] con a=1,2,…..,17 e tali che mcd(a,18)=1): Z18* = {[1],[5],[7],[11],[13],[17]} e calcoliamo per esempio il periodo dell’elemento a=[7], cioè il minimo intero positivo k tale che [7]k = [1] (perché [1] è in questo caso l’elemento neutro del gruppo). Si ha: [7]1 = [7]; [7]2 = [7][7] = [77] = [49] = [13] (perché 13 è il resto della divisione di 49 per 18); [7]3 = [7]2[7]1 = [13][7] = [137] = [91] = [1] (perché 1 è il resto della divisione di 91 per 18) Dunque k=3 è il periodo dell’elemento a=[7] nel gruppo Z18*. Facendo i calcoli per tutti gli elementi di Z18* si ottengono i seguenti risultati: [1] ha periodo 1; [17] ha periodo 2; [7], [13] hanno periodo 3; [5], [11] hanno periodo 6. Si può notare in questo esempio che non solo il periodo di ogni elemento è della cardinalità 6 del gruppo, ma è anche divisore della cardinalità 6 del gruppo (dimostreremo in seguito che ciò non è casuale). Se A è un gruppo finito di cardinalità n con elemento neutro eA, abbiamo definito periodo di un elemento aA il minimo intero positivo kn tale che ak=e. Ovviamente possono esistere altri esponenti h (oltre il periodo k) tali che ah=e, ma essi dipendono dal periodo k, come afferma il prossimo risultato: Teorema. Sia A un gruppo finito con elemento neutro eA, e sia aA un elemento di periodo k. Per ogni intero h0 si ha: ah = e h è multiplo del periodo k Dimostrazione: (): Se h=0 è ovvio che h è multiplo di k. Sia dunque h>0, e dividiamo h per k mediante l’algoritmo della divisione per i numeri naturali: esistono interi q,r0 tali che h=kq+r con r<k. Se per assurdo h non fosse multiplo di k, sarebbe r0, dunque r>0, ed inoltre: e = ah = akq+r =(ak)q*ar = eq*ar = e*ar = ar con 0<r<k contraddizione perché k è il minimo intero positivo tale che ak = e. (): Per ipotesi esiste un intero t0 tale che h=kt, da cui ah = akt = (ak)t = et = e. Teorema (Lagrange). Sia A un gruppo commutativo finito di cardinalità n, con elemento neutro eA. Allora per ogni elemento aA si ha: 1) an = e 2) il periodo k di a è divisore della cardinalità n del gruppo. Dimostrazione: 1) Fissato aA, si definisca la funzione f: A A ponendo f(x)=a*x per ogni xA. La funzione f è iniettiva: infatti se per assurdo esistessero b,cA, bc, tali che f(b)=f(c) si avrebbe a*b=a*c, e per la legge di cancellazione a sinistra si otterrebbe b=c, contraddizione. Essendo dominio e codominio finiti di eguale cardinalità, f è anche surgettiva (dunque biunivoca). Se a1,a2,…,an sono gli n elementi distinti di G, le immagini degli elementi a1,a2,…,an di A: f(a1)=a*a1, f(a2)=a*a2,…, f(an)=a*an sono tutti gli elementi di A (per la surgettività di f). Dunque (dal punto di vista insiemistico): A = { a*a1, a*a2,…, a*an } = {a1,a2,…,an } (sono elenchi degli stessi elementi anche se non necessariamente nello stesso ordine). Per la proprietà commutativa si ha: (a*a1)*(a*a2)*……*(a*an) = a1*a2*……*an = e*a1*a2*……*an Di nuovo per la proprietà commutativa (applicata al primo membro): (an)*(a1*a2*……*an) = e*(a1*a2*……*an) e per la legge di cancellazione a destra si ha la tesi an = e. 2) Per la 1) si ha an=e: per il Teorema precedente ciò implica che il periodo k di a è divisore dell’esponente n. Nota: Si può dimostrare, con altre tecniche, che la tesi del Teorema vale anche nel caso di un gruppo (finito) non commutativo. Quindi in tutti i gruppi finiti elevando qualunque elemento alla cardinalità del gruppo si ottiene sempre l’elemento neutro ed il periodo di ogni elemento è divisore della cardinalità del gruppo. Vedremo ora una importante conseguenza di questi risultati sull’aritmetica dei numeri naturali. Teorema di Eulero-Fermat. Siano a,n due numeri naturali, con n>1, e supponiamo a,n coprimi (quindi mcd(a,n)=1). Allora, se (n) è la funzione di Eulero di n, si ha: a(n)1 (mod n). Dimostrazione: Sappiamo che il gruppo commutativo finito A = Zn* (contenente le classi di congruenza modulo n simmetrizzabili rispetto al prodotto di classi) ha cardinalità (n) perché contiene le classi [a] con il rappresentante a coprimo con n. In particolare, essendo a,n coprimi per ipotesi, si ha [a]A. Per il Teorema precedente, ogni elemento di un gruppo finito commutativo elevato alla cardinalità del gruppo dà come risultato l’elemento neutro: nel nostro caso si ha [1]=[a](n)=[a][a]….[a]=[aa….a]=[a(n)], da cui la tesi a(n)1 (mod n). Corollario (Piccolo Teorema di Fermat). Siano a,n due numeri naturali, e supponiamo che n sia un numero primo ed n non sia divisore di a. Allora si ha: an-11 (mod n). Dimostrazione: Notiamo che i numeri a,n sono coprimi (perché le uniche possibilità per il mcd(a,n) sono 1, n, e la possibilità mcd(a,n)=n è da escludere essendo n non divisore di a per ipotesi). Poiché (n)=n-1 (perché n è primo) la tesi segue immediatamente dal Teorema di Eulero-Fermat. Risoluzione di congruenze lineari Una congruenza lineare nell’incognita x è un’equazione della forma ax b(mod n ) con a,b,n numeri naturali,.vogliamo trovare, se esistono, interi che verificano questa congruenza. Osserviamo che: 1) una congruenza lineare può non avere soluzioni, come per esempio le congruenze 2x 1(mod4) o 2x 3 (mod 4) (non hanno soluzioni perché 1,3 sono numeri dispari); 2) se la congruenza ax b(mod n) ha una soluzione xo, ne ha infinite: infatti per ogni k numero intero xo+ kn è una soluzione della stessa congruenza , perché a(xo + kn) axo b(mod n); per questo motivo quando si contano le eventuali soluzioni della congruenza ax b (mod n) si contano solo quelle che non sono congrue tra loro modulo n, per esempio la congruenza 2x 0 (mod 4) ha x = 0 e x = 2 come soluzioni e dimostreremo che sono solo queste; 3) data la congruenza ax b(mod n), possiamo pensare a e b ridotti modulo n perché se a’= amod n e b’ = bmod n la congruenza a’x b’ (mod n) è equivalente a quella data( nel senso che ha le stesse soluzioni): infatti se x 0 è un intero tale che a’x0 b’ (modn), si ha a’x0 ax0 b’ b(mod n); per esempio la congruenza 24x 21 (mod 9) è equivalente alla congruenza 6x 3(mod 9) che come dimostreremo ha soltanto le soluzioni 2,5,8 modulo 9; 4) trovare una soluzione x0 della congruenza ax b (mod n) ha come conseguenza di trovare una soluzione negli interi dell’equazione in due variabili ax + ny = b: infatti da ax0 b(mod n) segue ax0 = b+ kn cioè ax0 + n(-k) = b (- k si trova dall’equazione di primo grado in y ax0 + ny = b); 5) se a,b,n sono divisibili per uno stesso numero naturale d, la congruenza ax b (mod n) è equivalente alla congruenza a/dx b/d (mod n/d). Teorema La congruenza lineare ax = b (mod n) ha soluzioni se e solo se mcd(a,n ) è un divisore di b. Dimostrazione. Se x0 è una soluzione della congruenza data , si ha ax0 = b + kn con k intero, cioè b = ax0 + (-k)n e da questa uguaglianza si ricava che mcd(a,n) deve dividere b. Viceversa supponiamo che d = mcd(a,n) sia un divisore di b,allora a = d a/d , b = d b/d, n = d n/d. Poichè mcd(a/d, n/d) = 1, [a/d] ha inverso nel gruppo Zn/d* , quindi esiste [c] tale che [a/d] [c] = [1] cioè (a/d) c 1(mod n/d). Per l’osservazione 5) la congruenza data è equivalente alla congruenza (a/d) x b/d(mod n/d) e si ha a/d ( c (b/d)) b/d(mod n/d) ,quindi x0 = c (b/d) è una soluzione della congruenza data. Esempi 1) La congruenza 4x 6 (mod 10) ha soluzioni perché mcd(4,10) è un divisore di 6 ed è equivalente alla congruenza 2x 3 (mod 5),come nella dimostrazione del teorema calcoliamo l’inverso di [2] in Z5 che è [3] , una soluzione è x0 =9 ( si noti che 4,9 sono due soluzioni della congruenza data che non sono congrue modulo 10). 2) La congruenza 6x 9 (mod15) ha soluzioni ed è equivalente alla stessa congruenza dell’esercizio 1) 2x 3 (mod 5),in questo caso si noti che 4,9,14 sono soluzioni della congruenza data non congrue modulo 15. Nel prossimo teorema si determinano tutte le soluzioni (se esistono ) della congruenza lineare ax b (modn ),contando quelle non congrue modulo n. Teorema Se la congruenza lineare ax b(modn ) ha una soluzione x0, tutte le altre soluzioni sono i numeri x0 + k n/d per ogni k intero, d = mcd (a,n). Tra queste soluzioni i numeri x0 , x0 + n/d, x0 + 2n/d, x0 + 3n/d,….., x0 + (d-1)n/d non sono congrui modulo n e ogni altra soluzione è congrua a una di queste modulo n,quindi la congruenza data ha d soluzioni distinte modulo n. Dimostrazione. Se ax0 b(mod n),allora per ogni k numero intero a(x0 + k n/d) ax0 +( k a/d) n ax0 b(mod n). Per dimostrare che ogni soluzione è di questo tipo , supponiamo che x0’ sia un’altra soluzione della congruenza data, allora ax0 = b + hn e ax0’ = b + kn , sottraendo si ottiene a( x0’ – x0 ) = ( k-h)n, dividendo per d = mcd (a,n) si ha a/d (x0’ – x0) = (k- h) n/d. Da questa uguaglianza si ha che n/d divide il prodotto a/d ( x0’ – x0) e poiché mcd (n/d,a/d) = 1 n/d deve dividere (x0’ – x0) cioè x0’ x0 (mod n/d). Dimostriamo adesso che due soluzioni x0 + h n/d e x0 + k n/d con h,k scelti fra 0 e d-1 non sono congrue modulo n, se per assurdo lo fossero avremmo ( supponendo h maggiore di k) (h-k) n/d = t n con t0 e dividendo per n/d avremmo l’uguaglianza assurda (h-k) = t d essendo h-k hd. Per finire consideriamo una soluzione x0 + h n/d con h d, dividendo h per d abbiamo h = d q + r con 0 r d e sostituendo x0 + h n/d x0 + (qd + r ) n/d x0 + qn + r n/d x0 + r n/d (modulo n). Come conseguenza di questo teorema si ha che la congruenza ax b (modn) ha una sola soluzione se e solo se mcd(a,n) = 1. Crittografia. E’ la scienza che studia la possibilità che un soggetto A (mittente) spedisca un messaggio ad un utente B (destinatario) attraverso un canale di comunicazione non sicuro, in modo che per un soggetto C (intruso), che sia in grado di intercettare il messaggio, sia “difficile” conoscere le informazioni in esso contenuto. In un sistema crittografico il messaggio originale (detto messaggio in chiaro) prima di essere trasmesso dal mittente A viene opportunamente modificato (la cosiddetta cifratura che trasforma il messaggio in chiaro in un messaggio cifrato); è il messaggio cifrato che viene trasmesso lungo il canale di comunicazione: quando il destinatario B lo riceve, ne effettua una opportuna modifica (la cosiddetta decifratura) che fornisce come risultato il messaggio in chiaro originale. Anticamente il concetto di ”messaggio” era ristretto ad un messaggio di tipo “testuale”, cioè costituito da caratteri alfabetici. Poiché il messaggio può sempre essere suddiviso in “blocchi” (che poi il destinatario dovrà “incollare” per riottenere l’intera informazione originale) potremo anche in certi casi identificare il concetto di messaggio con il singolo carattere alfabetico: la cifratura e la decifratura opereranno in questo caso sulle singole lettere del testo. Se vogliamo formalizzare la struttura di un sistema crittografico, servendoci della teoria degli insiemi, possiamo dire che si possono individuare un insieme finito X dei messaggi in chiaro, un insieme finito Y dei messaggi cifrati (in molti casi concreti gli insiemi X,Y saranno uguali), una funzione di cifratura f : X Y (che trasforma ogni messaggio in chiaro xX in un messaggio cifrato y=f(x)Y) e in una funzione di decifratura g : Y X (che ritrasforma il messaggio cifrato y=f(x)Y nel messaggio in chiaro x=g(y)X). Dal punto di vista insiemistico, la proprietà della funzione di decifratura g si traduce nel fatto che per ogni messaggio in chiaro xX si deve avere g(f(x))=x, dunque la composizione gf deve coincidere con la funzione identica iX dell’insieme X. Vedremo dagli esempi che la funzione di cifratura e la funzione di decifratura si servono di elementi ausiliari (detti rispettivamente chiavi di cifratura e chiavi di decifratura) che sono utilizzati nella trasformazione di un messaggio in chiaro in messaggio cifrato e nella ritrasformazione di un messaggio cifrato nel messaggio in chiaro da cui esso proveniva. Il sistema crittografico di Cesare. E’ un sistema crittografico molto semplice (ma poco sicuro) che pare fosse utilizzato dagli antichi Romani. Supponiamo che l’insieme dei messaggi in chiaro X e quello dei messaggi cifrati Y coincidano entrambi con l’insieme delle 21 lettere dell’alfabeto italiano: X = Y = {A,B,C,D,E,F,G,H,I,L,M,N,O,P,Q,R,S,T,U,V,Z} Diamo un valore numerico intero compreso fra 0 e 20 alle lettere: A=0, B=1, C=2,…., Z=20. Fissiamo una lettera dell’alfabeto (sarà la chiave di cifratura del nostro sistema crittografico) e calcoliamo il suo valore numerico a con 0a20 (tale valore numerico è detto offset); definiamo poi la funzione di cifratura f : X Y nel modo seguente: disponiamo in modo “circolare” gli elementi di X (in modo che la lettera successiva alla Z sia la A), e per ogni messaggio in chiaro xX (dunque x è una delle 21 lettere dell’alfabeto) definiamo il messaggio cifrato y=f(x) uguale a quella lettera che si trova (a partire dalla lettera x) spostandosi di a posizioni lungo l’alfabeto in verso orario. Per esempio se la chiave di cifratura è la lettera D con valore numerico a=3, e se x=E allora f(E)=H (la lettera H si trova 3 posizioni più avanti rispetto alla lettera E). Ovviamente non ha molto senso scegliere come chiave di cifratura la lettera A con offset a=0, in quanto la cifratura di ogni lettera la lascerebbe invariata. La funzione di decifratura g : Y X utilizza una chiave di decifratura uguale a quella di cifratura, ed è definita nel modo seguente: dato yY (quindi y è una delle 21 lettere dell’alfabeto) si definisce g(y) uguale a quella lettera che si trova (a partire dalla lettera y) spostandosi di a posizioni lungo l’alfabeto in verso antiorario. E’ ovvio che, se y=g(x) è la cifratura del messaggio in chiaro x, g(y) coincide con il messaggio in chiaro originale x. Per rendere operativamente più semplice la cifratura, il mittente scrive, sotto la successione delle lettere dell’alfabeto, la stessa successione “shiftata” verso destra di a posizioni (se a è l’offset cioè il valore numerico della chiave di cifratura) sempre pensando ad una struttura “circolare”: sotto ogni lettera x si trova la sua cifratura f(x). Per esempio nel caso a=3 (chiave di cifratura è la lettera D): A B C D E F G H I L M N O P Q R S T U V Z D E F G H I L M N O P Q R S T U V Z A B C In questo caso, per cifrare il testo in chiaro “ATTACCATESUBITO” applicando ad ogni lettera del testo la funzione f di cifratura, si ottiene il seguente testo cifrato (da trasmettere lungo il canale di comunicazione): “DZZDFFDZHVAENZR” Analogamente, per rendere operativamente più semplice la decifratura, il destinatario scrive, sotto la successione delle lettere dell’alfabeto, la stessa successione “shiftata” verso sinistra di a posizioni: sotto ogni lettera y si trova la sua decifratura g(y). Nell’esempio precedente (con a=3): A B C D E F G H I L M N O P Q R S T U V Z U V Z A B C D E F G H I L M N O P Q R S T Decifrando il testo ricevuto “DZZDFFDZHVAENZR” (lettera per lettera) si riottiene il testo originale “ATTACCATESUBITO”. Come abbiamo visto, nel sistema crittografico di Cesare la chiave di cifratura coincide con quella di decifratura, e ovviamente deve essere concordata in anticipo fra il mittente e il destinatario. Il sistema di Cesare è poco sicuro: l’intruso che intercetti il messaggio cifrato, potrebbe cercare di risalire al messaggio in chiaro con il metodo della “forza bruta”, provando a decifrare il messaggio con tutte le possibili chiavi (che sono in tutto 21) fino ad ottenere un messaggio che abbia un senso compiuto.