Pojam algoritma
4.1 Pojam algoritma
Algoritam je striktno definirani postupak koji daje rjeˇsenje nekog problema. Iako se pojam al- goritma koristi intenzivno u posljednje vrijeme, odnosno od pojave raˇcunala, on je nastao mnogo ranije, prvenstveno u matematici. Prvi znaˇcajni algoritam, koji se joˇs i danas koristi, nastao je joˇs u 3. st. prije naˇse ere. Taj je algoritam poz- nat kao Euklidov algoritam jer ga je prvi opisao grˇcki matematiˇcar Euklid u svojoj knjizi ”Ele- menti” (Στ oιχεια). Sam naziv dolazi od imena Iranskog matematiˇcara Abu Ja’far Mohammed ibn Mˆ usˆa al-Khowˆ arizmˆı koji je 825. godine napisao knjigu pod nazivom ”Pravila restoracije i reduk- Slika 4.1: Donald Erwin cije”.
Knuth
D.E. Knuth (1938-) je dao pet svojstava koja algoritam mora zadovoljavati:
1. Konaˇ cnost. Algoritam mora zavrˇsiti nakon izvrˇsenih konaˇcno mnogo koraka. Takoder, algoritam mora biti opisan pomo´cu konaˇcnog broja operacija, a i svaka operacija mora biti konaˇcne duljine.
2. Definitnost. Svaki korak algoritma mora sadrˇzavati nedvosmislene, rigorozno definirane operacije.
4.1. POJAM ALGORITMA
3. Ulaz. Svaki algoritam mora imati 0 ili viˇse ulaza.
4. Izlaz. Svaki algoritam mora imati 1 ili viˇse izlaza.
5. Efektivnost. Algoritam mora biti efektivan, tj. mora biti takav da se moˇze izvesti samo uz pomo´c olovke i papira u konaˇcno vrijeme.
Treba napomenuti da je algoritam intuitivni pojam te da ga ve´c go- dinama matematiˇcari pokuˇsavaju striktno defini- rati. Postoji ˇcitav niz razliˇcitih pokuˇsaja formali- zacije pojma algoritma. Medutim, do danas nije dokazano da li je ijedna od tih formalizacija ko- rektna. Postoji tek tvrdnja, poznata kao Chur- chova teza ili Churchova hipoteza koja kaˇze da su λ-raˇcun, Turingov stroj, logika Hornovih klauzula itd, dobro definirani modeli algoritma. Ova tvrd- nja, medutim, nikada nije dokazana. Bez obzira na to, moˇze se re´ci da je algoritam postupak za rjeˇsavanje nekog masovnog problema.
Slika 4.2: Alonzo Church Masovni problem je op´cenito pitanje na koje je potrebno na´ci odgovor, a koje obiˇcno ima parametre koji kod zadavnja pro-
blema ostaju neodredeni. Upravo zbog toga ˇsto parametri masovnog pro- blema ostaju neodredeni, za problem kaˇzemo da je masovan. Pri definiciji masovnog problema potrebno je zadati:
1. generalni opis svih parametara,
2. ograniˇcenja koja rjeˇsenje masovnog problema mora zadovoljavati. Specificiranjem svih parametara masovnog problema dobivamo instancu
problema. Za algoritam kaˇzemo da rjeˇsava masovni problem ako daje rjeˇsenje za svaku pojedinu instancu problema. Kao primjer opiˇsimo jedan od najstarijih i najpoznatijih algoritama, ve´c ranije spomenuti Euklidov algoritam za pronalaˇzenje najve´ce zajedniˇcke mjere dvaju prirodnih brojeva.
Algoritam 4.1 (Euklidov algoritam) ULAZ: Dva prirodna broja a i b. IZLAZ: Najve´ca zajedniˇcka mjera M (a, b) brojeva a i b.
1. Ako je a < b zamijeni a i b.
2. r := a mod b.
3. a := b, b := r.
POGLAVLJE 4. ALGORITMI 127
4. Ako je r 6= 0 idi na 2.
5. Vrati a. Postavlja se pitanje kako moˇzemo biti sigurni da je algoritam ispravan?
Potrebno je formalno dokazati da je ovaj algoritam korektan. To znaˇci da treba dokazati da ´ce za svaka dva broja ovaj algoritam dati rjeˇsenje nakon konaˇcnog broja koraka, a da ´ce dano rjeˇsenje zaista biti najve´ca zajedniˇcka mjera tih dvaju brojeva.
Lema 4.1 Neka su a, b, r ∈ N. Ako je a = b·q+r, onda je M(a, b) = M(b, r). Dokaz. Napomenimo na poˇcetku da brojevi a i b moraju biti razliˇciti
od 0, jer u suprotnom njihova najve´ca zajedniˇcka mjera nije definirana. M (b, r) mora biti djeljivo s b i s r po definiciji zajedniˇcke mjere. No onda je M (b, r) djeljivo s bq+r = a. Dakle, M (b, r) je zajedniˇcka mjera brojeva a i
b. Op´cenito, kako je M (a, b) najve´ca zajedniˇcka mjera brojeva a i b, a M (b, r) je takoder zajedniˇcka mjera tih brojeva, sigurno je M (a, b) ≥ M(b, r). S druge strane, M (a, b) dijeli a i b, pa onda dijeli i a − qb = r. Dakle, M (a, b) je zajedniˇcka mjera brojeva b i r. No kako je M (b, r) najve´ca mjera tih dvaju brojeva, onda je M (a, b) ≤ M(b, r).
Zajedno izlazi da je M (a, b) = M (b, r) ˇsto je i trebalo dokazati. Propozicija 4.1 Algoritam 4.1 ´ce uvijek zavrˇsiti, a kada zavrˇsi vratit ´ce
najve´cu zajedniˇcku mjeru brojeva s ulaza. Dokaz. Prvo dokaˇzimo da algoritam zavrˇsava. Primijetimo da je ostatak
od dijeljenja uvijek manji od djelitelja. Stoga je r uvijek manji od b, tako
da se b uvijek smanjuje barem za 1. S druge strane, ostatak kod dijeljenja uvijek je prirodan broj ili 0. Zbog ove dvije ˇcinjenice nakon najviˇse b koraka r mora postati 0 i u tom trenutku algoritam ´ce stati.
Drugo ˇsto trebamo dokazati jest toˇcnost rjeˇsenja koje algoritam daje. Ovaj dokaz ide indukcijom po broju prolaza kroz korake od 2 do 4. Baza indukcije: ako je u prvom koraku r = 0, onda broj a djeljiv s b, pa je njihova najve´ca zajedniˇcka mjera broj b, a to je upravo ono ˇsto ´ce algoritam vratiti u ovom sluˇcaju.
Korak indukcije: pretpostavimo da tvrdnja vrijedi kada se do rjeˇsenja dode u najviˇse k prolaza. Pretpostavimo da je algoritam zavrˇsio u k + 1 prolazu. Prema lemi 4.1
(4.1) No, prema pretpostavci indukcije, kako je mjera od b i r nadena u k
M (a, b) = M (b, r), a = q · b + r.
prolaza, vrijedi da je algoritam pronaˇsao mjeru brojeva b i r, a onda prema tvrdnji 4.1 vrijedi da je nadeni broj ujedno i najve´ca zajedniˇcka mjera bro- jeva a i b.
4.1. POJAM ALGORITMA
Primijetimo da svaka dva prirodna broja imaju jedinstvenu najve´cu za- jedniˇcku mjeru.
Zadatak 4.1 Dokaˇzite postojanje i jedinstvenost najve´ce zajedniˇcke mjere dvaju prirodnih brojeva.
Najve´ca zajedniˇcka mjera se, na isti naˇcin kao ˇsto je definirana za pri- rodne brojeve, moˇze definirati i za polinome. ˇ Stoviˇse, tom sluˇcaju za njeno pronalaˇzenje moˇzemo primijeniti algoritam analogan Euklidovom algoritmu za brojeve. Viˇse o tome moˇze se na´ci u [8]
Sljede´ci algoritam, koji ´cemo ovdje obraditi jest Hornerov algoritam ili Hornerova shema. To je algoritam koji izraˇcunava vrijednost polinoma u zadanoj toˇcki. Prije negoli zapiˇsemo ovaj algoritam, dokazat ´cemo nje- govu ispravnost. Nas Hornerov algoritam prvenstveno zanima s aspekta izraˇcunavanja vrijednosti polinoma u zadanoj toˇcki, no sam Hornerov algo- ritam ima i druge aspekte. Viˇse o tome moˇzete na´ci u [8].
Polinom n-tog stupnja je funkcija oblika
P n n (x) = a n x +a n −1 x −1 +...+a 1 x+a 0 . Izluˇcimo li iz prvih n pribrojnika gornjeg polinoma x, dobit ´cemo
P n n (x) = (a n x +a n −1 x −2 +...+a 1 )x + a 0 . Ponovimo li ovaj postupak na prvih n − 1 pribrojnika unutar zagrade,
n −1
imat ´cemo P n
n −1 x −3 +...+a 2 )x + a 1 )x + a 0 . Ponovimo li ovaj postupak joˇs n − 3 puta konaˇcno dobivamo
n (x) = ((a n x −2
+a n
P n (x) = ((. . . ((a n x+a n −1 )x + a n −2 )+...+a 2 )x + a 1 )x + a 0 . Ovaj se oblik polinoma naziva Hornerova shema. Sljede´ci algoritam
izraˇcunava vrijednost polinoma P n (x) u toˇcki x koriste´ci posljednji oblik polinoma.
Algoritam 4.2 (Hornerov algoritam) ULAZ: Broj x ∈R
IZLAZ: Vrijednost P (x) = a n n x +a n −1 x −1 +...+a 1 x+a 0
1. i := n − 1, p := a n .
2. p := p ·x+a i .
3. i := i − 1.
POGLAVLJE 4. ALGORITMI 129
4. Ako je i ≥ 0 idi na 2.
5. Vrati p. Postavlja se pitanje ˇcemu koristiti Hornerov algoritam kada se vrijed-
nost polinoma moˇze izraˇcunati i iz njegovog uobiˇcajenog oblika sljede´cim algoritmom:
Algoritam 4.3 ULAZ: Broj x ∈R
IZLAZ: Vrijednost P (x) = a n x n +a n x n −1 −1 +...+a 1 x+a 0
5. Vrati p. Korektnost ovog algoritma je oˇcita. Usporedimo sada ova dva algo-
ritma za pronalaˇzenje vrijednosti polinoma. Usporedivat ´cemo ih po broju raˇcunskih operacija koje trebaju izvesti da bi izraˇcunali rjeˇsenje. Pri tome ne´cemo uraˇcunavati raˇcunske operacije potrebne za pove´canje, odnosno sma- njenje brojaˇca i. To i tako nije vaˇzno, jer prvi algoritam ima n smanjenja,
a drugi n + 1 pove´canje brojaˇca i, ˇsto je zanemariva razlika. Algoritam 4.2 prolazi kroz korake od 2 do 4 toˇcno n puta. U svakom prolazu on u koraku 2 napravi jedno zbrajanje i jedno mnoˇzenje. To ukupno daje n zbrajanja i n mnoˇzenja.
Algoritam 4.3 pak prolazi n + 1 puta kroz korake 2 do 4. U svakom pro- lazu on u koraku 2 napravi jedno zbrajanje, jedno mnoˇzenje i jedno poten- ciranje. Bez ve´ce pogreˇske, potenciranje se moˇze shvatiti kao niz uzastopnih
mnoˇzenja. Pri tome izraˇcunavanje x 0 ix 1 ne zahtjeva nijedno mnoˇzenje,
P −1 dok za i > 1 x zahtjeva i − 1 mnoˇzenje. To ukupno daje
ni
i= (n−1)n
mnoˇzenja. Dakle, algoritam 4.3 zahtijeva n + 1 zbrajanje i (n + 1) + (n−1)n 2 mnoˇzenja. Broj mnoˇzenja u ovom algoritmu raste kvadratno i ve´ci je od broja mnoˇzenja u Hornerovu algoritmu za svaki n ∈ N.
Primijetimo da se u algoritmu 4.3 izraˇcunavaju sve ve´ce i ve´ce poten- cije istog broja x. Jasno je da se svaka sljede´ca potencija moˇze izraˇcunati mnoˇzenjem potencije dobivene u prethodnom koraku s x, tj. x i =x i −1 · x. Ovakav ´ce pristup znatno smanjiti broj mnoˇzenja u algoritmu. Ugradiva- njem ove ideje u algoritam 4.3 dobit ´cemo sljede´ci algoritam:
4.2. SLO ˇ ZENOST ALGORITAMA Algoritam 4.4
ULAZ: Broj x ∈R
IZLAZ: Vrijednost P (x) = a n n x +a n x −1 −1 +...+a 1 x+a 0
5. Vrati p. Pogledajmo sada broj mnoˇzenja i zbrajanja u ovom algoritmu. I opet
broj prolaza kroz korake 2 do 4 bit ´ce n + 1. U svakom prolazu imamo jedno zbrajanje u koraku 2. Isto tako imamo jedno mnoˇzenje u koraku 2, ali i jedno mnoˇzenje u koraku 3. To daje ukupno n + 1 zbrajanja i 2n + 2 mnoˇzenja, ˇsto je daleko bolje nego kod algoritma 4.3, ali joˇs uvijek viˇse nego dvostruko loˇsije nego kod algoritma 4.2.
Cilj ove analize jest prona´ci broj operacija koje algoritam mora izvesti kako bi izraˇcunao rjeˇsenje. Smatrat ´cemo da je bolji onaj algoritam koji izvodi manje operacija, jer ´ce on i brˇze zavrˇsiti. Stoga je Hornerov algoritam superioran nad preostala dva, i to je razlog zbog ˇcega se on koristi.
Ova nas analiza uvodi u sljede´ce poglavlje koje ´ce se baviti sloˇzenoˇs´cu al- goritama, tj. mjerom pomo´cu koje ´ce se mo´ci usporedivati razliˇciti algoritmi koji rjeˇsavaju isti problem.