3 Algebarski algoritmi

Uvek kada izvršavamo neku algebarsku operaciju, kao što je recimo množenje dva broja ili njihovo stepenovanje, mi, u stvari, izvršavamo neki algoritam. Takve operacije koristimo kao gradivne elemente prilikom izvođenja složenijih algoritama i često ne zalazimo dublje u analizu njihove složenosti. Međutim, i sami algoritmi sabiranja, oduzimanja, množenja, deljenja i stepenovanja brojeva (posebno ako su brojevi dati nizovima svojih cifara) predstavljaju važne algebarske algoritme. U algebarske algoritme spadaju i mnogi algoritmi sa kojima smo se ranije susretali, kao što su izračunavanje vrednosti broja na osnovu datih cifara (u nekoj osnovi) ili, nasuprot tome, određivanje cifara broja na osnovu njegove vrednosti, računanje najvećeg zajedničkog delioca dva data broja, zatim razni algoritmi nad polinomima kao što su izračunavanje vrednosti polinoma i množenje polinoma. U ovom poglavlju bavićemo se algebarskim algoritmima sa kojima se do sada nismo susreli. Mnogi od njih igraju važnu ulogu u oblasti kriptografije, ali i u drugim oblastima, poput algebarske teorije brojeva i kvantnog računarstva.

Algebarski algoritmi koji se razmatraju u ovom materijalu rade sa prirodnim brojevima i u velikoj meri se zasnivaju na osobinama deljivosti prirodnih brojeva (npr. pojmu prostog broja).

U ovom poglavlju bavićemo se temama iz teorije brojeva, poput računanja najvećeg zajedničkog delioca dva broja, faktorizacije broja, svojstvima i načinima računanja multiplikativnih funkcija, kao i osnovama modularne aritmetike. Uvedene koncepte i algoritme ćemo ilustrovati na primeru algoritma RSA, koji ima primenu u kriptografiji. Konačno, predstavićemo algoritam FFT koji predstavlja jedan od najznačajnih algoritama današnjice i ilustrovati kako se on može primeniti na brzo množenje polinoma.

Poglavlja: