h2. Scurta istorie
<p>Se considera un numar de obiecte. Impartindu-le in grupuri de cate trei, raman doua negrupate. Impartindu-le in grupuri de cate cinci, raman trei. Impartindu-le in grupuri de cate sapte, raman doua. Cate obiecte sunt? Aceasta este problema enuntata de matematicianul chinez Sun-Tsu in secolul al IV-lea al erei noastre. El a demonstrat ca toate numerele naturale de forma $23 + 105 {*} k$ reprezinta solutiile acestei probleme. Din pacate nu putem sti daca a dezvoltat o metoda generala pentru a rezolva astfel de sisteme de ecuatii modulare. Aceasta este tema tratata in articolul care urmeaza.</p>
Se considera un numar de obiecte. Impartindu-le in grupuri de cate trei, raman doua negrupate. Impartindu-le in grupuri de cate cinci, raman trei. Impartindu-le in grupuri de cate sapte, raman doua. Cate obiecte sunt? Aceasta este problema enuntata de matematicianul chinez Sun-Tsu in secolul al IV-lea al erei noastre. El a demonstrat ca toate numerele naturale de forma $23 + 105 {*} k$ reprezinta solutiile acestei probleme. Din pacate nu putem sti daca a dezvoltat o metoda generala pentru a rezolva astfel de sisteme de ecuatii modulare. Aceasta este tema tratata in articolul care urmeaza.
h2. Definitie
<p>Pentru inceput, sa consideram sirul $n = n{~1~}, n{~2~}, ..., n{~k~}$ ale carui elemente sunt, luate doua cate doua, prime intre ele. *Teorema chineza a restului* (t.c.r.) afirma ca exista o corespondenta biunivoca intre orice numar $a$ <tex>\in</tex> $Z{~n~}$ si multimea ordonata de resturi ale lui a modulo $n{~i~}$, $i$ <tex>\in</tex> ${1, 2, ..., k}$. Cu alte cuvinte, operatiile in $Z{~n~}$ pot fi aplicate echivalent atat pe numere cat si pe multimile ordonate corespunzatoare resturilor modulo $n{~i~}$. Pentru orice $a$, $b$ <tex>\in</tex> $Z{~n~}$, notam $a{~i~} = a mod n$, respectiv $b{~i~} = b mod n$, generand corespondentele $a$ <tex>\leftrightarrow</tex> ${a{~1~} , a{~2~} , ..., a{~k~}}$ respectiv $b$ <tex>\leftrightarrow</tex> ${ b{~1~}, b{~2~}, ..., b{~k~}}$. Conform teoremei chineze a restului, pentru orice operator <tex>\circ</tex> <tex>\in</tex> {+, -, * }, $a$ <tex>\circ</tex> $b$ <tex>\leftrightarrow</tex> ${(a{~1~}$ <tex>\circ</tex> $b{~1~}) mod n{~1~}$ , $( a{~2~}$<tex>\circ</tex> $b{~2~})mod n{~2~}$ , ..., $(a{~k~}$ <tex>\circ</tex> $b{~k~}) mod n{~k~}}$ ramane o corespondenta valida.</p>
<p>Problema care se iveste imediat este conversia dintr-o forma in alta. Transformarea unui numar in multimea corespunzatoare este imediata. Partea mai dificila este operatia inversa, iar aceasta este problema care va fi tratata in continuare. Pentru determinarea numarului $x$ <tex>\in</tex> $Z{~n~}$, corespunzator multimii ${ a{~1~}, a{~2~}, ..., a{~k~}}$, este suficienta rezolvarea sistemului de ecuatii modulare:</p>
Pentru inceput, sa consideram sirul $n = n{~1~}, n{~2~}, ..., n{~k~}$ ale carui elemente sunt, luate doua cate doua, prime intre ele. *Teorema chineza a restului* (t.c.r.) afirma ca exista o corespondenta biunivoca intre orice numar $a$ <tex>\in</tex> $Z{~n~}$ si multimea ordonata de resturi ale lui a modulo $n{~i~}$, $i$ <tex>\in</tex> ${1, 2, ..., k}$. Cu alte cuvinte, operatiile in $Z{~n~}$ pot fi aplicate echivalent atat pe numere cat si pe multimile ordonate corespunzatoare resturilor modulo $n{~i~}$. Pentru orice $a$, $b$ <tex>\in</tex> $Z{~n~}$, notam $a{~i~} = a mod n$, respectiv $b{~i~} = b mod n$, generand corespondentele $a$ <tex>\leftrightarrow</tex> ${a{~1~} , a{~2~} , ..., a{~k~}}$ respectiv $b$ <tex>\leftrightarrow</tex> ${ b{~1~}, b{~2~}, ..., b{~k~}}$. Conform teoremei chineze a restului, pentru orice operator <tex>\circ</tex> <tex>\in</tex> {+, -, * }, $a$ <tex>\circ</tex> $b$ <tex>\leftrightarrow</tex> ${(a{~1~}$ <tex>\circ</tex> $b{~1~}) mod n{~1~}$ , $( a{~2~}$<tex>\circ</tex> $b{~2~})mod n{~2~}$ , ..., $(a{~k~}$ <tex>\circ</tex> $b{~k~}) mod n{~k~}}$ ramane o corespondenta valida.
Problema care se iveste imediat este conversia dintr-o forma in alta. Transformarea unui numar in multimea corespunzatoare este imediata. Partea mai dificila este operatia inversa, iar aceasta este problema care va fi tratata in continuare. Pentru determinarea numarului $x$ <tex>\in</tex> $Z{~n~}$, corespunzator multimii ${ a{~1~}, a{~2~}, ..., a{~k~}}$, este suficienta rezolvarea sistemului de ecuatii modulare:
<p> $x$ <tex>\equiv</tex> $a{~1~}(mod n{~1~})$
$x$ <tex>\equiv</tex> $a{~1~}(mod n{~1~})$
$x$ <tex>\equiv</tex> $a{~2~}(mod n{~2~})$
...
$x$ <tex>\equiv</tex> $a{~k~}(mod n{~k~})$
</p>
<p>Deoarece avem de a face cu o corespondenta biunivoca, conform teoremei, exista un singur $x$ <tex>\in</tex> $Z{~n~}$ care satisface sistemul de mai sus. Procedeul prin care se determina aceasta valoare nu este deosebit de complicat:
</p>
Deoarece avem de a face cu o corespondenta biunivoca, conform teoremei, exista un singur $x$ <tex>\in</tex> $Z{~n~}$ care satisface sistemul de mai sus. Procedeul prin care se determina aceasta valoare nu este deosebit de complicat:
* se noteaza $n = n{~1~}{*} n{~2~} {*} ... {*} n{~k~}$ si $M{~i~}= n / n{~i~}$ (deoarece oricare doua valori $n{~i~}$ si $n{~j~}$ sunt prime intre ele, avem intotdeauna $cmmdc(M ~i~, n{~i~}) = 1)$;
* se calculeaza $x{~i~}$ , $i$ <tex>\in</tex> ${1, 2, ..., k}$ cu proprietatea $M{~i~}{*} x{~i~}$ <tex>\equiv</tex> $1 (mod n{~i~})$; cu alte cuvinte, avem $x{~i~}= M{~i~}-1 mod n{~i~}$ ;
* se determina $x = (a{~1~} {*} M{~1~}{*} x{~1~}+ a{~2~}{*} M{~2~}{*} x{~2~}+ ... + a{~k~}{*} M{~k~}{*} x{~k~}) mod n$.
<p>Sa demonstram mai intai ca acesta valoare $x$ satisface sistemul. Este necesar ca pentru orice $i$ <tex>\in</tex>${1, 2, ..., k}$, $x$ <tex>\equiv</tex> $a{~i~}(mod n{~i~})$. Mai exact, trebuie sa fie satisfacuta egalitatea $((a{~1~}{*} M{~1~}{*} x{~1~}+ a{~2~}{*} M{~2~}{*} x{~2~}+ ... + a{~k~}{*} M{~k~}{*} x{~k~}) mod n) mod n{~i~}= a{~i~}$ , <tex>\forall</tex> $i$ <tex>\in</tex> ${1, 2, ..., k}$. Datorita faptului ca $n{~i~}| n$, avem $(a{~1~}{*} M{~1~}{*} x{~1~}+ a{~2~}{*} M{~2~}{*} x{~2~}+ ... + a{~k~}{*} M{~k~}{*} x{~k~}) mod n{~i~}= a{~i~}$ . Stim ca $M{~i~}= n / n{~i~}$ , <tex>\forall</tex> $j$ <tex>\neq</tex> $i$ , $M{~j~} mod n{~i~}= 0$, deci <tex>\forall</tex> $j$ <tex>\neq</tex>$i$, $(a{~j~} {*} M{~j~}{*} x{~j~}) mod n{~i~}= 0$. Este suficient sa demonstram ca $(a{~i~}{*} M{~i~}{*} x{~i~}) mod n{~i~}= a{~i~}$ <tex>\Leftrightarrow</tex>$(a{~i~}{*} (M{~i~}{*} x{~i~}) mod n{~i~}) mod n{~i~}= a{~i~}$ . Folosind $M{~i~}{*} x{~i~}$ <tex>\equiv</tex> $1 (mod n{~i~})$ ajungem la egalitatea evidenta
$a{~i~}= a{~i~}$ (q.e.d.)</p>
Sa demonstram mai intai ca acesta valoare $x$ satisface sistemul. Este necesar ca pentru orice $i$ <tex>\in</tex>${1, 2, ..., k}$, $x$ <tex>\equiv</tex> $a{~i~}(mod n{~i~})$. Mai exact, trebuie sa fie satisfacuta egalitatea $((a{~1~}{*} M{~1~}{*} x{~1~}+ a{~2~}{*} M{~2~}{*} x{~2~}+ ... + a{~k~}{*} M{~k~}{*} x{~k~}) mod n) mod n{~i~}= a{~i~}$ , <tex>\forall</tex> $i$ <tex>\in</tex> ${1, 2, ..., k}$. Datorita faptului ca $n{~i~}| n$, avem $(a{~1~}{*} M{~1~}{*} x{~1~}+ a{~2~}{*} M{~2~}{*} x{~2~}+ ... + a{~k~}{*} M{~k~}{*} x{~k~}) mod n{~i~}= a{~i~}$ . Stim ca $M{~i~}= n / n{~i~}$ , <tex>\forall</tex> $j$ <tex>\neq</tex> $i$ , $M{~j~} mod n{~i~}= 0$, deci <tex>\forall</tex> $j$ <tex>\neq</tex>$i$, $(a{~j~} {*} M{~j~}{*} x{~j~}) mod n{~i~}= 0$. Este suficient sa demonstram ca $(a{~i~}{*} M{~i~}{*} x{~i~}) mod n{~i~}= a{~i~}$ <tex>\Leftrightarrow</tex>$(a{~i~}{*} (M{~i~}{*} x{~i~}) mod n{~i~}) mod n{~i~}= a{~i~}$ . Folosind $M{~i~}{*} x{~i~}$ <tex>\equiv</tex> $1 (mod n{~i~})$ ajungem la egalitatea evidenta
$a{~i~}= a{~i~}$ (q.e.d.)
Mai ramane de verificat daca valoarea $x$ este unica. Fie $x^'^$ o alta solutie; avem $x < n$ si $x^'^ < n$. Daca {$x$} <tex>\equiv</tex> $a{~i~}(mod n{~i~})$ si $x^'^$ <tex>\equiv</tex> $a{~i~}(mod n{~i~})$, <tex>\forall</tex> $i$ <tex>\in</tex> ${1, 2, ..., k}$, presupunand ca $x^'^ < x$, avem $x^'^ - x$ <tex>\equiv</tex> $0 (mod n{~i~})$, <tex>\forall</tex> $i$ <tex>\in</tex> ${1, 2, ... k}$. Datorita faptului ca numerele $n{~i~}$ sunt relativ prime, rezulta ca $x^'^ - x = k {*} n$, $k$ <tex>\in</tex> $Z^*^$ , deci $x^'^ - x$ <tex>\geq</tex>$n$, ceea ce contrazice ipoteza initiala. Asadar, solutia este unica, asa cum poate fi dedus si din t.c.r. Mai mult, verificand daca se pastreaza corespondenta in cazul aplicarii operatorilor, demonstrarea t.c.r. poate fi usor incheiata.
<p>Mai ramane de verificat daca valoarea $x$ este unica. Fie $x^'^$ o alta solutie; avem $x < n$ si $x^'^ < n$. Daca {$x$} <tex>\equiv</tex> $a{~i~}(mod n{~i~})$ si $x^'^$ <tex>\equiv</tex> $a{~i~}(mod n{~i~})$, <tex>\forall</tex> $i$ <tex>\in</tex> ${1, 2, ..., k}$, presupunand ca $x^'^ < x$, avem $x^'^ - x$ <tex>\equiv</tex> $0 (mod n{~i~})$, <tex>\forall</tex> $i$ <tex>\in</tex> ${1, 2, ... k}$. Datorita faptului ca numerele $n{~i~}$ sunt relativ prime, rezulta ca $x^'^ - x = k {*} n$, $k$ <tex>\in</tex> $Z^*^$ , deci $x^'^ - x$ <tex>\geq</tex>$n$, ceea ce contrazice ipoteza initiala. Asadar, solutia este unica, asa cum poate fi dedus si din t.c.r. Mai mult, verificand daca se pastreaza corespondenta in cazul aplicarii operatorilor, demonstrarea t.c.r. poate fi usor incheiata.</p>
<p>
Pentru calcularea inversului modular al unui numar din $Z{~n~}$ , de obicei se foloseste "algoritmul extins al lui Euclid":http://infoarena.ro/Algoritmul-lui-Euclid. Evident, pentru ca acest invers sa existe, trebuie sa avem $cmmdc(a, n) = 1$. Aplicam algoritmul extins al lui Euclid si determinam $x$ si $y$ astfel incat $a {*} x + n {*} y = 1$ si obtinem $a^-1^ = x mod n$; pentru a verifica observam ca egalitatea $a^-1^ = x mod n$ este echivalenta cu $a {*} (x mod n)$ <tex>\equiv</tex> $1 (mod n)$ care, la randul sau, este echivalenta cu $a {*} x$ <tex>\equiv</tex> $1 (mod n)$. Aceasta ultima afirmatie este evident adevarata deoarece avem $a {*} x + n {*} y = 1$.
Pentru valori mici ale lui $n$, este recomandata preprocesarea "bruta" a inverselor tuturor
numerelor a din $Z{~n~}$ prime cu $n$, folosind doua structuri repetitive imbricate.
</p>
h2. Rezolvarea sistemelor de ecuatii modulare liniare generale
<p>
O problema mai generala care ne-ar putea interesa este rezolvarea sistemelor de ecuatii modulare
$x$ <tex>\equiv</tex> $a{~1~}(mod n{~1~})$
$x$ <tex>\equiv</tex> $a{~2~}(mod n{~2~})$