13.07.2015 Views

Matematici discrete pentru CS - Departamentul Automatica ...

Matematici discrete pentru CS - Departamentul Automatica ...

Matematici discrete pentru CS - Departamentul Automatica ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

(În literaturǎ se scrie uneori ≡ în loc de = si partea cu mod m se pune întreparanteze). Aceste ecuatii se pot citi în douǎ moduri. Unul constǎ în luarea înconsiderarea a operatiilor aritmetice obisnuite care se încheie de fiecare datǎ culuarea valorii “mod m” atât <strong>pentru</strong> partea stângǎ cât si <strong>pentru</strong> partea dreaptǎ,înainte de verificare.Modul celǎlalt este ceva mai sofisticat. Dacǎ m este un întreg (de pildǎ 7), sedefineste o relatie între întregi: numerele x si y se zice cǎ sunt congruentemodulo m, scris x = y mod m, dacǎ si numai dacǎ ele diferǎ printr-un multiplu allui m, adicǎ x – y = k.m <strong>pentru</strong> un k întreg (posibil negativ). Într-o formularediferitǎ, x si y sunt congruente modulo m dacǎ au acelasi rest modulo m. Relatia“congruent modulo m” este o relatie de echivalentǎ: ea partitioneazǎ multimeaîntregilor în m clase de echivalentǎ 0, 1, 2, …, m – 1.Teorema 9.2. Dacǎ a = c mod m si b = d mod m atunci a + b = c + d mod m sia.b = c.d mod m.Demonstratie. Se stie cǎ c = a + k.m si d = b + l.m, asa cǎ c + d = a + b + (k +l).m, ceea ce însemanǎ a + b = c + d mod m. Demonstratia <strong>pentru</strong> produs estesimilarǎ (exercitiu).□Ce spune aceastǎ teoremǎ este cǎ orice expresie aritmeticǎ modulo m poate fitotdeauna redusǎ la un numǎr natural mai mic decât m. Ca exemplu, fie expresia(13 + 11).18 mod 7. Uzând de teorema 9.2 de mai multe ori se poate scriesuccesiv:(13 + 11).18 = (6 + 4).4 mod 7= 10.4 mod 7= 3.4 mod 7= 12 mod 7= 5 mod 7Recapitulând, se pot face totdeauna calcule modulo m prin reducerea modulo ma rezultatelor intermediare.ExponentiereaO operatie standard în algoritmii aritmetici (inclusiv verificarea primalitǎtii sicriptarea RSA) este ridicarea unui numǎr la o putere modulo un alt numǎr. Cualte cuvinte, cum se calculeazǎ x y mod m când x, y, m sunt numere naturale si m> 0? O tratare naivǎ ar consta în a calcula secventa x mod m, x 2 mod m, x 3 modm, …, pânǎ la termenul al y-lea, dar asta ar consuma un timp exponential înnumǎrul de biti în y. Aceeasi treabǎ se poate face mai bine dacǎ se utilizeazǎ“trucul” ridicǎrii la pǎtrat repetate.algorithm mod-exp(x, y, m)if y = 0 then return(1)elsez = mod-exp(x, y div 2, m)if y mod 2 = 0 then return(z*z mod m)else return(x*z*z mod m)81

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!