Upload
lynguyet
View
212
Download
0
Embed Size (px)
Citation preview
Sveuciliste J. J. Strossmayera u Osijeku
Odjel za matematiku
Tea Fijacko
Pogled u povijest razvoja algoritama
Diplomski rad
Osijek, 2011.
Sveuciliste J. J. Strossmayera u Osijeku
Odjel za matematiku
Tea Fijacko
Pogled u povijest razvoja algoritama
Diplomski rad
Mentor: doc. dr. sc. Tomislav Marosevic
Osijek, 2011.
Sadrzaj
1. Uvod 4
2. O pojmu algoritma 5
2.1 Definicija algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Karakterizacija algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. Razvoj sustava za zapisivanje brojeva 7
3.1 Zapis brojeva u starim kulturama . . . . . . . . . . . . . . . . . . . . . 7
3.1.1 Egipatski brojevni sustav . . . . . . . . . . . . . . . . . . . . . . 7
3.1.2 Babilonski brojevni sustav . . . . . . . . . . . . . . . . . . . . . 8
3.1.3 Grcki brojevni sustav . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.4 Rimski brojevni sustav . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.5 Indijsko-arapski brojevni sustav . . . . . . . . . . . . . . . . . . 11
3.2 Euklidov algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Otkrice prostih brojeva . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4. Kratak pregled povijesti razvoja racunala 18
4.1 Mehanicka pomagala za racunanje . . . . . . . . . . . . . . . . . . . . . 18
4.2 Elektronicka racunala i razvoj preciznog zapisa algoritama . . . . . . . 22
4.2.1 Vrste algoritama u racunarstvu . . . . . . . . . . . . . . . . . . 25
5. Neki poznati algoritmi u matematici 27
5.1 Razvoj egipatskog algoritma mnozenja . . . . . . . . . . . . . . . . . . 27
5.2 Hornerov algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.3 Gaussova metoda eliminacije za sustave linearnih jednadzbi . . . . . . . 34
5.4 Neki znacajni algoritmi u drugoj polovini XX. stoljeca . . . . . . . . . 36
5.4.1 Monte Carlo metoda (Metropolis algoritam) . . . . . . . . . . . 36
5.4.2 Simplex algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.4.3 Aproksimacije iz Krylovljevih potprostora . . . . . . . . . . . . 38
5.4.4 LU faktorizacija . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.4.5 FORTRAN kompajler . . . . . . . . . . . . . . . . . . . . . . . 39
5.4.6 QR faktorizacija . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.4.7 QuickSort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Sazetak 43
Summary 44
Literatura 46
Zivotopis 47
1. Uvod
U svakodnevnom zivotu cesto postupamo po algoritmima, iako toga nismo niti sv-
jesni. Algoritmi u sirem smislu su temelj naseg djelovanja i stvaranja. Ako zelimo
sastaviti djecju igracku, skuhati omiljeno jelo ili uciniti nesto slicno, postupit cemo
po odredenom algoritmu. Iako korisnici algoritama ne moraju biti matematicari, sami
algoritmi su matematicki objekti. Pod pojmom algoritam podrazumijevamo konacan
skup elementarnih operacija i postupaka pomocu kojih se rjesavaju svi zadaci istog tipa
i to za konacno vrijeme.
Obzirom da je ova tema zaista opsirna, u radu su navedena samo najbitnija saz-
nanja i dostignuca.
U drugom poglavlju je objasnjen pojam i karakterizacija algoritma.
U poglavlju 3. dan je pregled razvoja brojevnih sustava u drevnim kulturama sve do
indijsko-arapskog dekadskog brojevnog sustava. Pored toga, u ovom poglavlju naveden
je i objasnjen Euklidov algoritam.
Zatim, u cetvrtom poglavlju promatramo ukratko razvoj racunala jer je to dovelo
do potrebe za tvorbom novih numerickih algoritama. Takoder, ovdje su navedeni i
primjeri algoritama u racunarstvu.
U petom poglavlju razmatra se nekoliko algoritama koji spadaju u najpoznatije
matematicke algoritme. Pored toga, ovdje se nalazi i kratak opis najznacajnijih algo-
ritama XX. stoljeca.
4
2. O pojmu algoritma
Rijec ”algoritam” potjece od perzijskog matematicara al-Khwarizmija iz 9. stoljeca
(puno ime u engleskom prijevodu glasi Muhammed ibn Musa al-Khwarizmi). Napisao
je knjigu u kojoj je opisao postupke za racunanje u indijskom brojevnom sustavu.
Izvorno izdanje knjige, napisano na arapskom jeziku, nije sacuvano, a latinski se pri-
jevod prosirio Europom pod naslovom ”Algoritmi de numero Indorum” (”Al-Khwarizmi
o indijskim brojevima”). Prema tom naslovu postupke za sustavno rjesavanje problema
danas nazivamo algoritmima.
Slika 1: Muhammed ibn Musa al-Khwarizmi
2.1 Definicija algoritma
Pod pojmom algoritam podrazumijevamo konacan skup elementarnih operacija i
postupaka pomocu kojih se rjesavaju svi zadaci istog tipa i to za konacno vrijeme.
Algoritam, kao postupak za dobivanje rjesenja, sastoji se od konacnog niza koraka tzv.
instrukcija, naredbi ili operacija, koje treba izvrsiti (izvesti) da bi se dobilo rjesenje.
Algoritam je elementarni matematicki pojam (kao sto su npr. tocka, pravac, skup itd.)
i zato ga nije moguce definirati pomocu drugih jednostavnijih pojmova1.
Klasicni primjeri algoritma su, primjerice, Euklidov algoritam (za nalazenje najvece
zajednicke mjere dva cijela broja), kao prvi formalni algoritam u povijesti i Hornerov
algoritam za izracunavanje vrijednosti polinoma.
1S. Znam i dr., Pogled u povijest matematike, Tehnicka knjiga Zagreb, 1986.
5
2.2 Karakterizacija algoritma
Algoritam mozemo karakterizirati pomocu njegovih svojstava. Osnovna svojstva algo-
ritma su:
1. Elementarnost : algoritam se sastoji od konacnog broja jednostavnih, lako ost-
varivih radnji (koraka algoritma).
2. Determiniranost : nakon izvrsavanja svakog pojedinog koraka algoritma, mozemo
zakljuciti je li realizacija algoritma zavrsila ili nije, te ako nije, koji korak je potrebno
uciniti kao sljedeci.
3. Konacnost : svaki korak algoritma mora biti takav da bi ga, u principu, mogao
izvesti covjek koristeci papir i olovku, za konacno vrijeme. Odnosno, algoritam se mora
zaustaviti u konacnom vremenu nakon konacnog broja koraka, a vrijeme izvrsavanja
algoritma mora biti razumno kratko.
4. Rezultativnost : pri zavrsetku rada algoritma mora postojati mogucnost da se us-
tanovi je li algoritam postigao svoj cilj ili nije. Drugim rijecima, je li algoritam dosao
do nekog rezultata.
Obzirom na metodologiju tvorbe algoritama, moze se govoriti o ”brute force” algo-
ritmima, ”podijeli i vladaj” algoritmima, dinamickim algoritmima, pohlepnim algorit-
mima, itd.
6
3. Razvoj sustava za zapisivanje brojeva
3.1 Zapis brojeva u starim kulturama
3.1.1 Egipatski brojevni sustav
Razvoj sustava za zapisivanje brojeva mozemo smatrati pocetkom matematike.
Najstariji matematicki izvori potjecu iz staroegipatske drzave. Sacuvana su dva glavna
izvora o egipatskoj matematici, to su: Rhindov papirus i Moskovski papirus. Rhindov
papirus je dug oko pet i pol metara i sirok oko pola metra. Napisao ga je oko 1650.
pr. Kr. pisac Ahmes (oko 1680. - 1620.q pr. Kr.), a Moskovski papirus potjece iz 1850.
pr. Kr. U oba papirusa nalaze se zadaci vezani za prakticne probleme, razine cetiri
elementarne operacije, rjesavanja linearnih jednadzbi, racunanja volumena i slicno.
Slika 2: Rhindov i Moskovski papirus
Iz navedenih izvora pretpostavlja se da Egipcani brojeve nisu smatrali apstraktnim
vrijednostima, nego su pri upotrebi nekog broja zapravo mislili na broj zivotinja ili
biljaka. Tako su pri upotrebi broja 7 zapravo mislili, primjerice, na 7 ptica ili 7 jabuka.
Koristili su matematicke simbole hijeratskog pisma, izvedenog iz hijeroglifa.
Slika 3: Hijeroglifski i hijeratski brojevi
7
Egipcani su koristili dekadski brojevni sustav. Za brojeve 1, 10, 100, 1000, 10000,
100000 i 1000000 koristili su posebne znakove prikazane na slici 3. Svaki simbol se
u zapisu broja ponavlja najvise devet puta. Poznavali su cetiri osnovne racunske op-
eracije. Na sljedecem primjeru objasnjeno je kako su oduzimali prirodne brojeve, a na
slican nacin su provodili i zbrajanje. Algoritam mnozenja starih Egipcana naveden je
u 5. poglavlju. Egipcani su oduzimali brojeve tako da se odmicao odredeni broj istih
simbola. To je znalo biti i komplicirano kada se moralo oduzeti vise simbola, nego sto
ih je bilo prisutno u prikazu.
Na primjer, pri oduzimanju od broja 63 broj 38, postupali su ovako:
Slika 4: Postupak oduzimanja brojeva
Od 6 desetica potrebno je oduzeti 3 desetice, ali moguce je ukloniti samo 3 jedinice.
Jos preostaje 5 jedinica za oduzimanje. Jedna od preostalih desetica potrebna je da se
omoguci oduzimanje sljedecih 5 jedinica, jer
1 desetica - 5 jedinica = 10 jedinica - 5 jedinica = 5 jedinica.
Tocan mehanizam oduzimanja koji su koristili nije bio sasvim jasan, iako ova ilustracija
pokazuje kojim se redoslijedom moglo provesti oduzimanje.
3.1.2 Babilonski brojevni sustav
Pored Egipcana, vrlo znacajne rezultate u matematici dali su i Babilonci (oko 2000.
g. pr. Kr.). Babilonska matematika je u mnogim aspektima naprednija od egipatske.
Babilonci su koristili brojevni sustav s bazom 60 (seksagezimalni brojevni sustav). To
je bio prvi sustav u kojem je jedan te isti znak, tj. jedna te ista znamenka, mogla
oznacavati razlicite brojeve vec prema mjestu, odnosno prema poziciji koju zauzima.
Babilonci nisu imali sezdeset razlicitih znakova za brojeve od nule do 59, vec su svaki
takav broj ispisali sa samo dvije vrste znakova: po jedan vertikalni, uski otisak klina
za svaku jedinicu: ”∨” i po jedan tupi otisak klina za svaku deseticu ”<”. Oznaka
za nulu pojavila se tek u kasnijem razdoblju (oko 5. st. pr. Kr.) pa zapis brojeva nije
mogao biti jedinstven.
Babilonski seksagezimalni brojevni sustav koristi se i u danasnje vrijeme za racunanje
vremena i kuteva. Babilonci su znacajni i po tome sto su prvi podijelili godinu na
8
dvanaest mjeseci po trideset dana, dan na 24 sata, sat na 60 minuta, te minutu na 60
sekundi.
Slika 5: Brojevni sustav s bazom sezdeset u babilonskoj matematici
Osim toga, vrlo je zanimljiv babilonski nacin mnozenja brojeva. Koristili su tzv.
babilonske matematicke tablice koje su sadrzavale kvadrate brojeva do 59 i kubove
brojeva do 32. Mnozenje su provodili pomocu formula iz kojih se moze zakljuciti da je
za mnozenje brojeva potrebna samo tablica kvadrata:
ab =(a+ b)2 − a2 − b2
2
ili
ab =(a+ b)2
2− (a− b)2
4.
3.1.3 Grcki brojevni sustav
Suvremenici anticke Grcke (oko 900. pr. Kr. - 200. n. e.) koristili su dva usporedna
dekadska brojevna sustava. Prvi je bio zasnovan na pocetnim slovima imena brojeva.
Slika 6: Grcki brojevni sustav zasnovan na pocetnim slovima imena brojeva
9
Primjerice, broj 229 bi zapisivali ovako: HH ∆ ∆ Γ IIII. U ovom primjeru mozemo
primijetiti pravilo da se isti znak moze koristiti uzastopno najvise cetiri puta.
Drugi brojevni sustav upotrebljavao je sva slova grckog alfabeta.
Slika 7: Grcki brojevni sustav s alfabetskom notacijom
Broj iz prethodnog primjera, 229, u ovom brojevnom sustavu pisali bi ovako: Σ K Θ.
3.1.4 Rimski brojevni sustav
Jedan od najpoznatijih nepozicijskih brojevnih sustava je rimski brojevni sustav u
kojemu nalazimo sljedece oznake:
Znamenka Vrijednost
I 1V 5X 10L 50C 100D 500M 1000
Tablica 1. Znamenke u rimskom brojevnom sustavu
Postoji nekoliko bitnih pravila za zapisivanje rimskih brojeva:
• Za zapisivanje brojeva uobicajeno je koristiti uzastopno najvise tri ista znaka;
• Ako nekoliko jednakih znamenki stoji jedna uz drugu, onda im se vrijednosti
zbrajaju (npr. III znaci I + I + I, tj. time je zapisan broj 3);
• Ako su uzastopno zapisane dvije razlicite znamenke od kojih lijevo stoji ona
znamenka s vecom vrijednoscu, onda se njihove vrijednosti zbrajaju (npr. XV
znaci X + V, tj. time je zapisan broj 15);
10
• Ako su uzastopno zapisane dvije razlicite znamenke od kojih lijevo stoji ona
znamenka s manjom vrijednoscu, onda se njezina vrijednost oduzima od desno
napisane znamenke (npr. XL znaci L−X, tj. time je zapisan broj 40).
Racunanje je zbog takvog zapisa brojeva bilo vrlo nespretno. Rimski brojevni sustav
se u Europi primjenjivao sve do 12. stoljeca.
3.1.5 Indijsko-arapski brojevni sustav
Danasnji nacin zapisivanja brojeva potjece iz Indije i vjerojatno je nastao krajem
6. stoljeca. Indijci su koristili dekadski brojevni sustav. To je bio prvi pravi pozicijski
brojevni sustav. Oznaku za nulu koristili su od 9. stoljeca.
Slika 8: Znamenke u indijskom brojevnom sustavu
Indijci su znacajni i po uvodenju negativnih brojeva i njihovoj pravilnoj inter-
pretaciji. Osim toga, otkrili su i postojanje pozitivnog i negativnog kvadratnog kori-
jena, te nemogucnost vadenja kvadratnog korijena iz negativnog broja.
Brojke koje danas koristimo nazivaju se ”arapskim brojkama”. Arapi su takoder
koristili indijski dekadski sustav. Na slici 9 moze se uociti slicnost s danasnjim zapisom
znamenaka.
Slika 9: Primjeri razlicitih znakova za brojeve i mijenjanje njihovih oblika
11
Pretpostavlja se da su jos oko 1000. godine postojale dvije arapske skole koje su se
veoma razlikovale u stavovima. Jedna skola je bila upoznata s indijskim algoritmima,
dok je druga djelovala na strogo znanstvenom stavu Euklida, te se pretpostavlja da je
odbijala koristenje znamenaka.
3.2 Euklidov algoritam
Euklid (330. - 275. pr. Kr.) je bio najznacajniji grcki matematicar. Djelovao
je u doba helenizma koje se po njemu naziva jos i Euklidovo doba. Najznacajnije
Euklidovo djelo su Elementi koji se sastoje od trinaest knjiga velicine poglavlja. Iako
su u Elementima prikazani vecinom rezultati drugih matematicara, Euklidov doprinos
kroz logicki slijed organiziranja sadrzaja Elemenata postao je vrlo bitan za daljnji
razvoj matematike. Vecina rezultata pripisuje se pitagorejcima (knjige I, II, VI-IX i
XI). Knjige VII, VIII i IX bave se teorijom brojeva. Jedan od najvaznijih Euklidovih
rezultata, navedenih u knjizi VII, je tzv. Euklidov algoritam za odredivanje najvece
zajednicke mjere dva cijela broja.
Prije navodenja algoritma potrebno je dokazati sljedeci teorem:
Teorem 3.2.1 (Teorem o dijeljenju s ostatkom) Za proizvoljan prirodan broj a i
cijeli broj b postoje jedinstveni cijeli brojevi q i r takvi da je b = aq + r, 0 ≤ r < |a|.
Dokaz: Promotrimo skup A = {m ∈ Z : b − am ≥ 0}. Najmanji nenegativni
clan ovog skupa oznacimo sa r. Stavimo da je q = maxA i r = b − aq. Tada vrijedi
b = qa + r. Imamo da je q ∈ A, tj. b − aq ≥ 0. Prema tome, vrijedi r = b − aq ≥ 0.
Kada bi bilo r ≥ a, imali bismo
b = qa+ r = qa+ r + a− a = a(q + 1) + (r − a) ≥ a(q + 1),
pa bi slijedilo b − a(q + 1) ≥ 0, tj. q + 1 ∈ A, sto je nemoguce, jer je q = maxA.
Zakljucujemo da je r < a. Dakle, b = qa+ r, 0 ≤ r < a.
Time je dokazana egzistencija.
Preostaje jos dokazati jedinstvenost od q i r. Pretpostavimo da su q1, q2, r1, r2 ∈ Ztakvi da je
b = aq1 + r1 = aq2 + r2, 0 ≤ r1 < |a|, 0 ≤ r2 < |a|.
Tada je
a(q1 − q2) = r2 − r1.
Iz 0 ≤ r1 < |a| i 0 ≤ r2 < |a| slijedi |r2 − r1| < |a|. No, zbog prethodne jednakosti
je |r2 − r1| = |a| · |q1 − q2|, pa je |r2 − r1| < |a| moguce samo ako je |r2 − r1| = 0,
tj. r1 = r2. slijedi aq1 = b − r1 = b − r2 = aq2, dakle, q1 = q2. Time je dokazana i
jedinstvenost. 2
12
Broj r iz iskaza prethodnog teorema naziva se ostatak pri dijeljenju broja b s bro-
jem a.
Definicija 3.2.1 Neka su a, b ∈ Z cijeli brojevi koji nisu oba jednaki nuli. Najveca
zajednicka mjera brojeva a i b je najveci broj d ∈ N takav da d|a i d|b. Dakle,
d = max M , gdje je M = {k ∈ N; k|a, k|b}.
Najvecu zajednicku mjeru oznacavamo kraticom GCD (iz engleskog jezika the greatest
common divisor). Stoga, d = GCD(a, b).
Teorem 3.2.2 (Euklidov algoritam) Neka su a, b ∈ Z i b 6= 0. Pretpostavimo da je
uzastopnom primjenom prethodnog teorema dobiven niz jednakosti:
a = bq1 + r1, 0 < r1 < |b|,b = r1q2 + r2, 0 < r2 < r1,r1 = r2q3 + r3, 0 < r3 < r2,
...rn−2 = rn−1qn + rn, 0 < rn < rn−1,rn−1 = rnqn+1.
Tada je GCD(a, b) = rn, odnosno najveca zajednicka mjera brojeva a i b je jednaka
posljednjem ostatku razlicitom od nule u Euklidovom algoritmu.
Dokaz: Dokaz cemo provesti u tri dijela.
(i) Najprije cemo dokazati da rn|a i rn|b. Stavimo r0 = b i r−1 = a. Tada prvih n
jednakosti u algoritmu poprimaju oblik:
rk−2 = rk−1qk + rk, 1 ≤ k ≤ n. (1)
Iz posljednje jednakosti, rn−1 = rnqn+1, vidi se da rn|rn−1. Sada iz n-te jednakosti,
rn−2 = rn−1qn + rn, slijedi da rn|rn−2. Neka je k ≤ n i pretpostavimo da smo dokazali
da rn|rk i rn|rk−1. Tada iz k-te jednakosti, rk−2 = rk−1qk +rk, slijedi da rn|rk−2. Na taj
nacin silaznom matematickom indukcijom zakljucujemo da rn|rk, ∀k ≥ −1. Posebno,
rn|r−1 i rn|r0, tj. rn|a i rn|b.
(ii) Dokazat cemo da postoje x, y ∈ Z takvi da je rn = ax + by, tj. da se rn moze
prikazati kao linearna kombinacija od brojeva a i b. Upotrebom uzlazne matematicke
indukcije i uz oznake iz (i) treba dokazati da ∀k ≥ −1 postoje x, y ∈ Z takvi da je
rn = ax+ by.
To je trivijalno za k = −1 i k = 0:
r−1 = a = 1 · a+ 0 · b, r0 = b = 0 · a+ 1 · b.
13
Provedimo sada korak indukcije: pretpostavimo da je 1 ≤ k < n i da je dokazano da
postoje x1, x2, y1, y2 ∈ Z takvi da je
rk−2 = ax2 + by2 i rk−1 = ax1 + by1.
Tada iz (1) dobivamo:
rk = rk−2 − rk−1qk = ax2 + by2 − (ax1 + by1)qk = a(x2 − qkx1) + b(y2 − qky1),
dakle, uz oznake x = x2 − qkx1 i y = y2 − qky1 imamo rk = ax + by. Time je korak
indukcije proveden.
(iii) Prema (1) vrijedi rn|a i rn|b. Ako je c ∈ Z takav da c|a i c|b, tada pomocu
(ii) dobivamo da c|rn. Posebno, c ≤ rn, pa zakljucujemo da je rn najveca zajednicka
mjera brojeva a i b, dakle rn = d. 2
Mozemo primijetiti da je pri svakom dijeljenju ostatak strogo manji od ostatka pri
prethodnom dijeljenju. Stoga, Euklidov algoritam sigurno zavrsava: nakon konacno
mnogo dijeljenja s ostatkom doci cemo do djeljivosti, tj. do dijeljenja bez ostatka.
Primjer 3.2.1 Odredite d =GCD (3655, 2057) i nadite cijele brojeve x, y tako da zado-
voljavaju jednakost 3655x+ 2057y = d.
Rjesenje
Prvo cemo odrediti najvecu zajednicku mjeru brojeva 3655 i 2057 koristeci Euklidov
algoritam.
3655 = 2057 · 1 + 1598
2057 = 1598 · 1 + 459
1598 = 459 · 3 + 221
459 = 221 · 2 + 17
221 = 17 · 13
d = GCD(3655, 2057) = 17.
Napomena 3.2.1 Pri rjesavanju problema izrazavanja najvece zajednicke mjere bro-
jeva a i b kao linearne kombinacije tih brojeva cesto se primjenjuje tzv. tablicna
metoda pri cemu se koristi niz brojeva iz Euklidovog algoritma.
Dakle, rjesenja jednadzbe GCD(a, b) = ax + by mogu se efikasno dobiti na sljedeci
nacin: ako je
14
r−1 = a, r0 = b, ri = ri−2 − qiri−1,x−1 = 1, x0 = 0, xi = xi−2 − qixi−1,y−1 = 0, y0 = 1, yi = yi−2 − qiyi−1,onda je axi + byi = ri za i = −1, 0, 1, ..., n+ 1.
Ova metoda je tocna za i = −1, 0 pa tvrdnja slijedi induktivno.
Posebno vrijedi:
axn + byn = GCD(a, b).
Rijesimo sada drugi dio zadatka, tj. pronadimo cijele brojeve x, y koji zadovoljavaju
jednakost 3655x+ 2057y = d.
x1 = x−1 − q1x0 = 1− 1 · 0 = 1
x2 = x0 − q2x1 = 0− 1 · 1 = −1
x3 = x1 − q3x2 = 1− 3 · (−1) = 4
x4 = x2 − q4x3 = −1− 2 · 4 = −9
y1 = y−1 − q1y0 = 0− 1 · 1 = −1
y2 = y0 − q2y1 = 1− 1 · (−1) = 1 + 1 = 2
y3 = y1 − q3y2 = −1− 3 · 2 = −7
y4 = y2 − q4y3 = 2− 2 · (−7) = 2 + 14 = 16
Dobivene brojeve zbog preglednosti zapisujemo u tablicu:
i -1 0 1 2 3 4qi 1 1 3 2xi 1 0 1 -1 4 -9yi 0 1 -1 2 -7 16
Dakle, x4 = −9, a y4 = 16 pa slijedi:
3655 · (−9) + 2057 · 16 = −32895 + 32912 = 17.
3.3 Otkrice prostih brojeva
Osim Euklidovog algoritma, u knjigama VII, VIII i IX Euklidovih Elemenata nave-
deni su i brojni rezultati o prostim brojevima. U knjizi VII se prvi puta spominje
definicija prostog broja, te razne zanimljive propozicije o prostim brojevima. Knjiga
IX se takoder bavi teorijom brojeva u kojoj se nalazi teorem o jedinstvenoj faktorizaciji
za brojeve koji su produkt razlicitih prostih brojeva. Obzirom na taj rezultat, Gauss
je tek 1801. godine dokazao opcu verziju osnovnog teorema aritmetike. U danasnjoj
formulaciji taj teorem glasi:
15
Teorem 3.3.1 (Osnovni teorem aritmetike) Faktorizacija svakog prirodnog broja
n > 1 na proste faktore je jedinstvena do na poredak prostih faktora.
U knjizi IX se moze naci jos jedan vrlo bitan rezultat koji se pripisuje Euklidu:
Teorem 3.3.2 (Euklid) Skup svih prostih brojeva je beskonacan.
Dokaz: Pretpostavimo suprotno, tj. da su p1, p2, ..., pk svi prosti brojevi. Tada
medu njima postoji najveci, oznacimo ga s pk. Neka je P produkt svih tih prostih
brojeva uvecan za 1,
P = p1 · p2 · ... · pk + 1.
Tada je P > pk , dakle slozen je, pa je djeljiv s nekim prostim brojem. No, P ocito
nije djeljiv niti s jednim od prostih brojeva p1, p2, ..., pk, pa bi morao postojati prost
broj veci od pk. Time smo dobili kontradikciju. 2
16
Eratosten iz Kirene (275. - 195. pr. Kr.) bio je jedan od najznacajnijih Eukli-
dovih suvremenika, odnosno jedan od najznacajnijih predstavnika matematicke skole
u Aleksandriji koju je u 3. stoljecu prije Krista osnovao Euklid. Pored mnogih drugih
rezultata, posebno je poznat po tzv. Eratostenovom situ, tj. metodi za nalazenje prostih
brojeva.
Kod primjene ove metode postupa se na nacin da se ispisu svi prirodni brojevi
za koje zelimo provjeriti jesu li prosti ili ne. Najbolje ih je ispisati u tablicu s po 10
brojeva u retku. U prvom krugu u tablici se brise broj 1 (koji nije ni prost ni slozen),
zaokruzi se broj 2 (prvi prosti broj), a zatim se brisu svi parni brojevi (visekratnici
broja 2). U drugom krugu zaokruzi se broj 3 (sljedeci prosti broj), a zatim se brisu
svi visekratnici broja 3 koji jos nisu obrisani. Postupak se ponavlja za broj 5 i njegove
visekratnike, broj 7 i njegove visekratnike itd.
2 3 5 711 13 17 19
23 2931 3741 43 47
Tablica 1. Prosti brojevi manji od 50 dobiveni Eratostenovim sitom
17
4. Kratak pregled povijesti razvoja racunala
4.1 Mehanicka pomagala za racunanje
Moglo bi se reci da je racunanje staro koliko i covjecanstvo. Nastalo je iz prakticnih
ljudskih potreba kao sto su: biljezenje clanova plemena i stoke, mjerenje zemljista,
razmjene dobara itd. Prva metoda brojanja je koristenje 10 prstiju, koja je bila
djelotvorna kod brojanja, ali ne i za racunanje. Za racunanje su se koristile razne
metode kao sto su: upotreba kamencica za brojeve vece od 10, urezivanje zareza na
kosti ili stapu, kamencici u rupama i zapisivanje crtica.
Slika 10: Urezivanje zareza na kosti (gore), zapisivanje crtica (dolje)
Znanje racunanja primjenjivalo se prakticno jos u staro doba, prije otprilike 5000
godina. Graditelji golemih piramida, hramova i drugih gradevina morali su se koris-
titi racunskim znanjima. Prvo ”racunalo” u svijetu je poznata gradevina Stonehenge
koja potjece iz 1900. pr. Kr. Ta gradevina je omogucila tocno predvidanje Mjesecevih
mijena. Uz pomoc Mjeseca koji je bacao sjenu kamenja na tocno oznacena mjesta na
tlu, bilo je moguce predvidjeti vrijeme sljedeceg punog Mjeseca te vrijeme pomrcine
Mjeseca.
Slika 11: Zamisljena rekonstrukcija Stonehenge-a (lijevo), Stonehenge danas (desno)
18
Abakus
Najpoznatije prijenosno pomagalo pri izvodenju racunskih operacija je abakus
ili abak (latinski abacus znaci ploca za racunanje). Prvi poznati abakus postojao je u
Babilonu prije 5000 godina. Njime se racunalo pomocu kamencica koji su se umetali u
niz paralelnih kanalica napravljenih u pijesku. Zatim se abakus razvio u oblik (Slika 12)
koji se sastojao od okvira i razapetih zica na kojima su postavljene plocice ili kuglice.
Stupci najcesce predstavljaju potencije broja 10 i podijeljeni su u dva podrucja. Svaka
kuglica ispod letvice predstavlja jednu jedinicu, svaka kuglica iznad predstavlja 5 je-
dinica, tako da svaki puni stupac ima 15 jedinica. Racuna se pomicanjem kuglica
prema letvici ili od nje. Usavrseni abakus koristi se i danas za svakodnevno racunanje
u Rusiji, Kini i Japanu.
Slika 12: Abakus
Primjer 4.1.1 Dijeljenje broja 1234 brojem 7 na abakusu.
Postoje posebna pravila metode dijeljenja na abakusu za svaki broj od 1 do 9.
Pravila dijeljenja sa 7 na abakusu2:
2Jean-Luc Chabert, A History of Algorithms (From the Pebble to the Microchip), Springer-VerlagBerlin Heidelberg New York, 1999.
19
Pojasnjenje tablice:
PRAVILO 1: Ako je znamenka djeljenika jednaka 1, dijelimo 10 sa 7 i dobivamo107
= 1 + 37. Stoga, desno od promatrane kuglice dodajemo 3 kuglice vrijednosti 1.
PRAVILO 2: Ako je znamenka djeljenika jednaka 2, dijelimo 20 sa 7 i dobivamo207
= 2 + 67. Zbog toga, promatranoj znamenki 2, tj. dvjema kuglicama vrijednosti 1
dodajemo ostatak 6 (jednu kuglicu vrijednosti 5 i drugu vrijednosti 1).
Objasnjenja ostalih pravila su veoma slicna.
Opcenito, kada na abakusu dijelimo dva broja, djelitelja stavljamo na lijevu stranu, a
djeljenika na desnu stranu. To znaci da ce brojevi 1234 i 7 na abakusu izgledati ovako:
Nadalje, prva znamenka djeljenika 1234 je 1. Dakle, primjenjuje se prvo pravilo.
Zatim ”pojednostavimo” 5 jedinica:
Druga znamenka novog djeljenika je 5 pa primjenjujemo peto pravilo, tj. dijelimo
50 sa 7 i dobivamo 507
= 7 + 17. Zbog toga je potrebno promatranoj kuglici (koja
oznacava 5 jedinica) dodati dvije kuglice vrijednosti 1, te desno od nje dodati jednu
kuglicu (koja predstavlja ostatak 1):
Treca znamenka novog djeljenika je 4, pa primjenjujemo cetvrto pravilo, tj. dijelimo
40 sa 7 i dobivamo 407
= 5+ 57. Zbog toga dodajemo jednu kuglicu na promatrane cetiri
kuglice, te pet kuglica desno od tih kuglica koje predstavljaju ostatak 5:
20
Cetvrta znamenka novog djeljenika je 9, pa dijelimo 9 sa 7 i dobivamo 97
= 1 +27. Stoga od devet jedinica oduzimamo sedam, te jednu kuglicu dodajemo lijevo od
promatramih devet jedinica:
Vidimo da je rezultat dijeljenja broja 1234 sa 7 je 176 sa ostatkom 2.
1614. godine skotski matematicar John Napier (1550. - 1617.) otkrio je logaritme, te
objavio prve logaritamske tablice. Otkrice logaritama bitno je pojednostavilo operacije
mnozenja i dijeljenja. Napier je koristio svojstva logaritma tako da velike brojeve izrazi
pomocu manjih s kojima je lakse racunati. Nedugo nakon otkrica logaritama otkriveno
je i pomicno logaritamsko racunalo, tzv. ”siber”3. Potisnut je tek masovnom pojavom
elektronickih kalkulatora.
Prvi poznati mehanicki kalkulator izraduje 1623. godine njemacki profesor W.
Schickard (1592. - 1635.), ali nedugo zatim izum je nestao, te je tek 1956. godine
izradena rekonstrukcija na temelju Schickardovih nacrta i podataka. Stoga je mnogo
poznatiji bio Pascalov kalkulator kojeg je izumio 1642. godine Blaise Pascal. Njegova
osnovna namjena bila je izvodenje racunske operacije zbrajanja, ali na njemu se moglo
i oduzimati i mnoziti (ponavljanjem operacije zbrajanja potreban broj puta).
Sljedeci, mnogo savrseniji, kalkulator (Slika 13) 1672. godine zamislio je G.W. Leib-
niz (1646. - 1716.). Mogao je obavljati sve cetiri osnovne racunske operacije, ali nije bio
pouzdan i upotrebljiv u praksi, jer tadasnja tehnologija nije mogla pratiti Leibnizovu
zamisao.
Nakon Pascalovog i Leibnizovog kalkulatora dolazi do stagnacije u razvoju pomagala
za racunanje.
Slika 13: Leibnizov kalkulator
3http : //www.ff − infing.hr/povijest racunala.htm
21
4.2 Elektronicka racunala i razvoj preciznog zapisa algoritama
Potreba za preciznim zapisivanjem algoritama pojavila se s razvojem racunskih
strojeva. U prvoj polovini 19. stoljeca engleski matematicar i inzenjer Charles Bab-
bage projektirao je prvo univerzalno racunalo, sposobno izvoditi razlicite proracune
ovisno o ”programu” koji se u njega unese. Babbage je stroj nazvao Analytical engine i
do kraja zivota nije ga uspio izraditi. Ipak, u suradnji s Adom Byron4 razvijao je prve
programe za svoje mehanicko racunalo. Charlesa Babbage-a smatra se ocem racunala,
jer je predlagao nacin rada racunala koji se koristi i danas. Funkcije stroja podijelio je
na tri dijela: pohrana, procesiranje i kontrola. Predlozio je da se pohrana, odnosno ono
sto se danas moze shvatiti kao memorija, podijeli u dva spremnika: jedan za brojeve ili
podatke nad kojima se vrse operacije i drugi za spremanje instrukcija zbog odredivanja
operacija koje ce se vrsiti nad podacima. Za pohranu podataka koristio je kartice s
busenim rupicama, tzv. busene kartice.
Slika 14: Analiticki stroj
Sredinom 20. stoljeca izgradena su prva elektronicka racunala. Tehnologiju elek-
tronskih cijevi ubrzo su zamijenili tranzistori, a u 70-tim godinama svi osnovni elementi
racunala mogli su se smjestiti na samo jednu plocicu poluvodica velicine nekoliko dese-
taka kvadratnih milimetara, pa je tako nastao mikroprocesor. Smanjivanjem velicine
racunala, ona postaju sve brza i mocnija. Taj proces se nastavlja jos i danas.
Prva elektronicka racunala programirala su se u strojnom jeziku, naredbama koje
izvodi procesor. Kao pomoc u programiranju razvili su se tzv. asembleri, programi
koji prevode simbolicke naredbe u strojne. Sredinom 20. stoljeca pojavili su se visi
programski jezici kao sto su FORTRAN, Basic i dr. Da bi se programi pisani u tim
jezicima mogli izvoditi na racunalu, potrebno ih je najprije prevesti na strojni jezik.
4Ada Augusta Byron (1815-1852), smatra se prvim programerom, te njoj u cast je programski jezikADA, definiran 1983., dobio ime.
22
To se radi pomocu posebnih programa prevoditelja ili kompilatora (eng. compiler). U
drugoj polovini 20. stoljeca pojavili su se specijalizirani programski jezici kao sto su:
Pascal, C, C++, Java i Python. Takvi jezici ne prevode se s pomocu kompilatora, nego
ih izvodi takozvani interpreter, program koji paralelno prevodi i izvodi naredbe.
Opcenito, programe smatramo nizovima naredbi i izvode se redom kojim su napisani
s tocno odredenim ciljem. Da bi uspjesno napisali neki program, moramo najprije anal-
izirati problem, te precizno odrediti potrebne korake cija primjena dovodi do zeljenog
rjesenja. Cilj rjesavanja problema je kreiranje algoritma. Vrlo rano uocena je potreba
zapisivanja algoritama u jednostavnom i preglednom obliku, citljivijem od koda pisanog
u nekom programskom jeziku. Dva najcesca nacina pomocu kojih mozemo zapisati al-
goritam su pseudokod ili pseudojezik i dijagram toka.
Pseudokod se koristi u mnogim knjigama i clancima koji se bave algoritmima.
Dijelove algoritma mozemo zamijeniti pojedinacnim naredbama, opisati ih prirodnim
jezikom ili ih raspisati u detalje. U pseudokodu naredbe se zapisuju rijecima, jedna
ispod druge.
Primjer 4.2.1 Napisite pseudokod za algoritam koji za ucitane duljine stranica kvadra
ispisuje njegov volumen.
Rjesenje:
1. Upisi duljine stranica kvadra: a, b, c
2. Ako barem jedan od brojeva a, b, c ≤ 0 ispisi poruku o gresci i idi na korak 1
3. Racunaj V = a · b · c4. Ispisi V
5. Kraj
Dijagram toka podataka je graficki prikaz algoritma. Zapisivanje se vrsi medunarodno
dogovorenim simbolima i ne ovisi o govornom jeziku onoga koji sastavlja algoritam,
cime se osigurava jednostavnost i jednoznacnost algoritma.
23
Dijagram toka za algoritam iz prethodnog primjera izgleda ovako:
Dijagrami toka su zanimljiviji i atraktivniji od pseudojezika, ali zauzimaju puno
vise prostora. Zbog toga se u vecini knjiga i clanaka algoritmi zapisuju u pseudojeziku.
24
4.2.1 Vrste algoritama u racunarstvu
Moderno racunarstvo ne bi postojalo bez primjene algoritama, njihove matematicke
analize, te postupcima ubrzavanja njihova izvodenja. Sva su ta podrucja povezana i
medusobno se nadopunjuju.
Analiza slozenosti algoritama je znacajna disciplina koja se najcesce provodi pomocu
papira i olovke. Uobicajeno je slozenost algoritama izrazavati kao matematicku funkciju
koja velicinu unosa pretvara u kolicinu vremena potrebnu da se algoritam zavrsi (vre-
menska slozenost) ili kolicinu prostora potrebnu da se algoritam zavrsi (memorijska
slozenost). Vrijeme izvrsenja algoritma (eng. ”running time”) ovisi o velicini ulaznih
podataka, ali cesto i o tome kakvi su ulazni podaci (na primjer, vec sortirani niz bro-
jeva laksi je za sortiranje). Osim toga, vrijeme izvrsenja algoritma potrebno je izraziti
neovisno od vrste racunala (eng. ”Ignore Machine Dependent Constants”).
Algoritme obzirom na metodologiju tvorbe algoritama mozemo podijeliti na:
• ”Brute force” algoritmi (naivni algortmi) su najmanje ucinkoviti algoritmi.
Takav algoritam pronalazi rjesenja nekog problema tako sto isproba sve mogucnosti.
Na primjer, kod rjesavanja problema izracunavanja vrijednosti potencije an, pri
cemu su n ∈ N i broj a zadani, primjenom ”brute force” algoritma bi postupili
ovako: an = a · a · . . . · a︸ ︷︷ ︸n puta
.
• ”Podijeli i vladaj” algoritmi dolaze do rjesenja nekog problema tako da prob-
lem dijele na jedan ili vise potproblema, te nakon toga potprobleme rjesavaju
rekurzivno. Zatim rjesenja potproblema spajaju u konacno rjesenje problema. Na
primjer, kod rjesavanja problema izracunavanja vrijednosti potencije an, prim-
jenom ” podijeli i vladaj” algoritma, problem se dijeli na dva ista potproblema:
an =
{a
n2 · an
2 , n paran
an−12 · an−1
2 · a , n neparan
• Dinamicki algoritmi su vrlo slicni ”podijeli i vladaj” algoritmima. U strategiji
dinamickog programiranja javljaju se dva glavna problema. Prvi problem je da
nekad nije moguce spojiti dva manja potproblema u veci, a drugi je da postoji
neprihvatljivo veliki broj potproblema koje treba rijesiti. Ponekad, broj potprob-
lema koje treba rijesiti raste eksponencijalno s velicinom zadanog problema, a
rekurzijom se isti potproblemi rjesavaju vise puta sto dovodi do nepotrebnog
gubljenja vremena. U takvim situacijama dinamicko programiranje je vrlo ko-
risno. Prvo se rjesavaju problemi manje velicine, pa nesto veci, sve dok se ne
dosegne potpuna velicina zadanog problema.
Na primjer, pri racunanju Fibonaccijevih brojeva algoritam ”podijeli i vladaj”
daje rekurzivnu funkciju koja glasi: F0 = 1, F1 = 1, Fn = Fn−1 + Fn−2, n > 1.
25
Ako izracunamo slozenost tog algoritma, mozemo uociti da vrijeme izvrsavanja
algoritma eksponencijalno raste s velicinom ulaza. Dinamickim programiranjem
moze se doci do boljeg rjesenja. Prvo se rijesi trivijalan problem za F0 i F1, iz njih
se izracuna F2 , pa F3 iz F2 i F1, itd. Time se prvo rijese jednostavniji problemi
i spreme se njihovi rezultati koji se dalje koriste za rjesavanje malo slozenijih
problema, ciji se rezultati takoder spremaju za daljnje rjesavanje malo slozenijih
problema itd. Slozenost ovog algoritma je linearna sto je puno brze od ”podijeli
i vladaj” algoritma.
• ”Pohlepni” algoritmi su vrlo korisni kada dinamicki algoritmi ne daju ucinkovito
rjesenje zbog predugih vremenskih izvrsavanja. Tehnikom ”pohlepnog” pristupa,
rjesenje zadanog algoritma se konstruira u nizu koraka. U svakom se koraku bira
mogucnost koja je lokalno optimalna u nekom smislu. Takvi optimalni koraci
opcenito vode do globalnog optimalnog rjesenja.
Na primjer, trgovac treba vratiti kupcu iznos od 73 kune. Na raspolaganju
su mu novcanice od 50, 20 i 10 kuna, te kovanice od 5 i 1 kune. Primjenom
”pohlepnog” algoritma trgovac bi kupcu dao jednu novcanicu od 50 kuna, jednu
od 20 kuna i 3 kovanice od 1 kune. Znaci, izabere se najveca novcanica koja
ne prelazi ukupnu sumu, stavlja se na listu za vracanje, oduzme se od ukupnog
iznosa, te se postupak ponavlja sve dok se ne vrati odreden iznos. Na taj nacin
dolazimo do najucinkovitijeg rjesenja. Ako imamo sljedeci problem: trgovac
kupcu treba vratiti iznos od 30 kuna pomocu novcanica od 20 i 10 kuna, te ko-
vanica od 25 i 1 kune. Pohlepni algoritam prvo vraca kovanicu od 25 kuna i tada
mu preostaje samo vratiti pet kovanica od 1 kune. Dakle, ukupno 6 kovanica, dok
bi optimalno rjesenje bilo vratiti jednu novcanicu od 20 kuna i jednu novcanicu
od 10 kuna.
26
5. Neki poznati algoritmi u matematici
5.1 Razvoj egipatskog algoritma mnozenja
Termin mnozenje potjece od latinske rijeci productum, a koristi se od 13. stoljeca.
Izmedu mnogih znakova za mnozenje dugo je upotrebljavan znak pravokutnika, kao
simbol koji znaci da se njegova povrsina dobiva mnozenjem duljina stranica. Znak ×za mnozenje prvi je uveo Englez W. Oughtred 1631. godine. Danasnji znak · uveo je
njemacki matematicar Regiomontanus, a kasnije ga je koristio i Leibniz.
Mnozenje je nastalo prirodnim nacinom u rjesavanju zadataka. Na primjer, kod
problema kao sto je: kako odrediti koliko kvadara je potrebno za izgradnju zida i slicno.
Mozemo reci da je mnozenje zapravo ponavljanje zbrajanja istog broja potreban broj
puta:
B × A = A+ A+ A+ · · ·+ A︸ ︷︷ ︸B pribrojnika
Uocimo da s povecanjem broja B ovaj postupak postaje dugotrajan. Stoga se u pos-
tupku mnozenja pojavilo grupiranje. Najjednostavniji nacin grupiranja je stvaranje
jednakobrojnih skupina, na primjer po pet clanova:
B × A = (A+ A+ A+ A+ A) + (A+ A+ A+ A+ A) + · · ·+ A+ A
gdje se u posljednjoj skupini nalazi od 1 do 5 clanova.
Primjer 5.1.1 Brojevi 49 i 81 pomnozeni grupiranjem u jednakobrojne skupine.
1 812 1623 2434 3245 40510 81015 121520 162025 202530 243035 283540 324045 364549 3969
Postupak izracunavanja je sadrzan u dva stupca. U lijevom stupcu se nalaze brojevi
zbrojenih faktora A, a u desnom se nalaze rezultati djelomicnih umnozaka. Prvih pet
redaka predstavlja prvu petoclanu skupinu, a sljedeci retci predstavljaju zbrajanje samo
27
petoclanih skupina. U zadnjem retku je zbroj predposljednjeg umnoska s umnoskom
4× A.
Mozemo uociti da ako zelimo mnoziti nekim vecim brojem, tada bi vise clanova trebalo
biti u jednoj skupini. Stoga, broj clanova u skupini nije konstantan.
Ako bismo umnoske 1 · A, 2 · A, 3 · A,... odmah smatrali skupinama imali bi:
B × A = (A) + (A+ A) + (A+ A+ A) + · · ·+ A+ A,
tj. svaka sljedeca skupina bi od prethodne bila veca za A. Pomnozimo brojeve 49 i 81
na ovakav nacin:
1 81 1 812 162 3 2433 243 6 4864 324 10 8105 405 15 12156 486 21 17017 567 28 22688 648 36 29169 729 45 3645
49 3969
Na lijevoj strani tablice nalaze se brojevi clanova u skupinama i njihove odgo-
varajuce vrijednosti, a desno u tablici nalaze se brojevi clanova u svim do sada zbro-
jenim skupinama i odgovarajuci umnosci. Na primjer, broj 6 u trecem stupcu pred-
stavlja ukupan broj clanova iz prve tri skupine (1+2+3=6).
Zbrojeve na lijevoj strani tablice stvaramo sve dok ne bude:
1 + 2 + 3 + 4 + · · ·+ k ≤ B.
Najbrzi nacin dobivanja velikih skupina je podvostrucavanje do sada najvece pos-
tojece skupine:
B ·A = (A)+(A+A)+(A+A+A+A)+(A+A+A+A+A+A+A+A)+ · · ·+A+A
Pomnozimo sada brojeve 49 i 81 na ovakav nacin:
1 81 32 25922 162 48 38884 324 49 39698 64816 129632 2592
Na lijevoj strani tablice, kao i u prethodnom nacinu, nalaze se brojevi clanova
u skupinama i njihove odgovarajuce vrijednosti, a desno u tablici nalaze se brojevi
clanova u svim do sada zbrojenim skupinama i odgovarajuci umnosci.
28
Upravo je taj algoritam mnozenja naveden na Rhindovom papirusu koji potjece iz
1650. g. pr. Kr. Vrlo vjerojatno da su mu prethodila razmatranja prethodno navedena.
Usporedbom brzine izracunavanja s brzinom prethodnih algoritama mozemo uociti da
je ovaj algoritam znatno brzi. Kao kriterij brzine uzimamo broj zbrajanja potrebnih za
mnozenje s tim istim brojem. Za algoritam s postupnim zbrajanjem potrebno je B− 1
zbrajanja. Za sljedeci navedeni algoritam, s raspodjelom clanova na petoclane skupine,
potrebno je 4 zbrajanja za stvaranje prve skupine i B5
za zbrajanje skupina medusobno.
Broj zbrajanja kod algoritma u kojemu svaka sljedeca skupina ima jedan vise clan od
prethodne skupine, jednak je dvostrukom broju skupina, jer znamo da je za stvaranje
svake skupine potrebno jedno zbrajanje i daljnje zbrajanje nam je potrebno za pri-
brajanje rezultata dotadasnjoj vrijednosti umnoska. Broj skupina mora zadovoljavati
jednakost:
1 + 2 + 3 + 4 + · · ·+ k ≤ B
odnosno
k(k+1)2≤ B
Ukupan broj skupina je najvece cjelobrojno rjesenje te nejednakosti. Ono je:
k =−1 +
√1 + 8 ·B2
Buduci da B moze biti najmanje 3 (jer u suprotnom ne bi imali skupine), priblizno
mozemo reci da je
k ≈ 32
√B
Kako je broj zbrajanja jednak dvostrukom broju skupina, slijedi da je broj zbrajanja
oko 3√B.
Kod egipatskog algoritma skupine stvaramo sve dok vrijedi 2k ≤ B. Iz toga proizlazi
da je k = log2B. Slicno kao u prethodnom primjeru, pribrojimo svaku skupinu najvise
dva puta pa imamo najvise 2log2B zbrajanja potrebnih za mnozenje. U sljedecoj tablici
nalazi se usporedba broja zbrajanja potrebnih za mnozenje s brojevima 100, 1000 i 1
000 000.
Broj zbrajanja B 100 1000 1 000 000B − 1 99 999 999 999B5
+ 4 24 204 200 004
3 ·√B 30 96 3000
2log2B 14 20 40
Iz tablice mozemo zakljuciti da je egipatski algoritam mnozenja u svim opisanim
slucajevima najbolji. Taj algoritam se koristi jos i danas, ali u obliku pogodnom za
decimalni sustav (mnozenje s deset umjesto dva).
29
5.2 Hornerov algoritam
Kako bi izracunali vrijednost polinoma u tocki, potrebne su nam samo operacije
mnozenja, zbrajanja i oduzimanja. Medutim, trebamo li racunati vrijednost polinoma
u velikom broju tocaka, korisno je primijeniti tzv. Hornerov algoritam5. Osim toga,
Hornerov algoritam se koristi i za dijeljenje polinoma s polinomom prvog stupnja.
Neka je dan polinom n-tog stupnja
Pn(x) = anxn + an−1x
n−1 + ...+ a1x+ a0, an 6= 0, n ∈ N (2)
nad skupom realnih brojeva R, an, an−1, ..., a1, a0 ∈ R. Najprije cemo razmotriti prob-
lem dijeljenja polinoma Pn(x) s polinomom prvog stupnja p(x) = x−α, α ∈ R. Prema
teoremu o dijeljenju polinoma s ostatkom postoji polinom
q(x) = bn−1xn−1 + bn−2x
n−2 + . . .+ b1x+ b0
i konstanta r ∈ R takva da vrijedi
Pn(x) = (x− α)q(x) + r (3)
Kako bi odredili koeficijente polinoma q i ostatak r uvrstimo (2) u (3).
anxn + an−1x
n−1 + ...+ a1x+ a0 = (x− α)(bn−1xn−1 + bn−2x
n−2 + . . .+ b1x+ b0) + r.
Izjednacavanjem odgovarajucih koeficijenata dobivamo sljedeci sustav jednadzbi:
an = bn−1,an−1 = bn−2 − αbn−1,an−2 = bn−3 − αbn−2,
...a1 = b0 − αb1,a0 = r − αb0
iz kojih mozemo izracunati koeficijente polinoma q i koeficijent r.
Na sljedecim formulama se temelji tzv. Hornerov algoritam:
bn−1 = an,bn−2 = an−1 + αbn−1,bn−3 = an−2 + αbn−2,
...b0 = a1 + αb1,r = a0 + αb0.
5William George Horner (1786-1837), britanski matematicar
30
Hornerov algoritam zapisan pseudojezikom izgleda ovako:
Ulaz: n ∈ N, α ∈ R,
(an, an−1, ..., a1, a0) koeficijenti polinoma Pn
Izlaz: (bn−1, bn−2, ..., b1, b0) koeficijenti polinoma q i konstanta r
bn−1 = an
for i = n− 1, n− 2, ..., 1 do
bi−1 = ai + αbi
end for
r = a0 + αb0
Opcenito, Hornerov algoritam mozemo zapisati u obliku tablice:
an an−1 · · · a1 a0α bn−1 = an bn−2 = an−1 + αbn−1 · · · b0 = a1 + αb1 r = a0 + αb0
Primjer 5.2.1 Primjenom Hornerovog algoritma treba podijeliti polinom P5(x) = x5−3x2 + 7x+ 2 polinomom p(x) = x+ 2.
Rjesenje zapisimo u obliku tablice:
1 0 0 -3 7 2
-2 b4 = 1 b3 = −2 b2 = 4 b1 = −11 b0 = 29 r = −56
Znamo da je kvocijent q oblika q(x) = bn−1xn−1 +bn−2x
n−2 + . . .+b1x+b0 pa dobivamo
q(x) = x4−2x3 +4x2−11x+29 i ostatak pri dijeljenju r = −56. Tu cinjenicu mozemo
zapisati u obliku
P5(x)
x+ 2= x4 − 2x3 + 4x2 − 11x+ 29− 56
x+ 2
Napomena 5.2.1 Hornerov algoritam pogodan je za izracunavanje vrijednosti poli-
noma Pn(x) u tocki x = α. Naime, iz Pn(x) = (x − α)q(x) + r za x = α dobivamo
Pn(x) = r, tj. ostatak pri dijeljenju polinoma Pn(x) polinomom p(x) = x−α jednak je
vrijednosti polinoma Pn za x = α.
Stoga, u prethodnom primjeru, polinom Pn mozemo zapisati na sljedeci nacin: P5(x) =
(x+ 2)(x4 − 2x3 + 4x2 − 11x+ 29)− 56 te za x = −2 dobijemo P5(−2) = −56. Dakle,
ostatak pri dijeljenju polinoma P5(x) polinomom p(x) = x + 2 jednak je vrijednosti
31
polinoma P5 za x = −2.
Velika prednost primjene Hornerovog algoritma za racunanje vrijednosti polinoma
Pn u tocki α je manji broj racunskih operacija. Prilikom racunanja vrijednosti poli-
noma Pn(x) = anxn + an−1x
n−1 + ... + a1x + a0 za x = α standardno, tj. Pn(α) =
anαn+an−1α
n−1+...+a1α+a0 trebalo bi nam n zbrajanja i n+(n−1)+· · ·+2+1 = n(n+1)2
mnozenja, dok kod primjene Hornerovog algoritma imamo isto n zbrajanja, ali samo
n mnozenja. Zbog toga je Hornerov algoritam vrlo koristan kod racunanja vrijednosti
polinoma u velikom broju tocaka.
Spomenimo jos jednu vrlo korisnu primjenu Hornerovog algoritma. Naime, spomenuti
algoritam mozemo primijeniti ukoliko zelimo broj zapisan u bazi b zapisati u dekadskoj
bazi.
Neka je broj (anan−1...a0)b zapisan u nekoj bazi b. Ako ga zelimo zapisati u dekadskoj
bazi, tada ce taj broj izgledati ovako: anbn+an−1b
n−1+...+a1b+a0. Mozemo primijetiti
da je to zapravo Pn(b) = anbn + an−1b
n−1 + ... + a1b + a0. Prema tome zakljucujemo
da je vrijednost broja (anan−1...a0)b u dekadskoj bazi jednaka ostatku pri dijeljenju
polinoma Pn(x) polinomom p(x) = x− b.
Primjer 5.2.2 Broj (2EB1)16 zapisimo u dekadskom sustavu.
Prisjetimo se vrijednosti nekih znamenaka u heksadecimalnom brojevnom sustavu:
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
Da bismo broj (2EB1)16 zapisali u dekadskom sustavu potrebno je izracunati 2 · 163 +
14 · 162 + 11 · 16 + 1. Primjenom Hornerovog algoritma dobivamo:
2 E B 1
16 2 14 + 16 · 2 = 46 11 + 16 · 46 = 747 1 + 16 · 747 = 11953
Dakle, broj (2EB1)16 u dekadskom sustavu iznosi 11953.
Osim toga, cjelokupni rastav polinoma Pn(x) = anxn + an−1x
n−1 + ... + a1x + a0 po
potencijama x− α moze se napraviti jednim prosirenim Hornerovim algoritmom.
32
Primjer 5.2.3 Rastavimo polinom P4(x) = x4 + x3 + x+ 1 po potencijama od x− 1.
Rjesenje zapisimo u obliku tablice:
Nakon prvog retka algoritam nastavljamo drugim retkom, zatim trecim itd. Posljednji
brojevi u svakom retku trazeni su koeficijenti prikaza.
1 1 0 1 1
1 1 1 + 1 · 1 = 2 0 + 1 · 2 = 2 1 + 1 · 2 = 3 1 + 1 · 3 = 41 2 + 1 · 1 = 3 2 + 1 · 3 = 5 3 + 1 · 5 = 81 3 + 1 · 1 = 4 5 + 1 · 4 = 91 4 + 1 · 1 = 5
Rjesenje zapisujemo u obliku:
P4(x) = (x− 1)4 + 5(x− 1)3 + 9(x− 1)2 + 8(x− 1) + 4.
33
5.3 Gaussova metoda eliminacije za sustave linearnih jednadzbi
Johann Karl Friedrich Gauss (1777. - 1855.) jedan je od najvecih matematicara svih
vremena. Svoj doprinos dao je u gotovo svim podrucjima matematike. Najvise vremena
provodio je baveci se gustocom prostih brojeva, te se procjenjuje da je do kraja zivota
uspio pobrojati sve proste brojeve do 3 000 000. Takoder, vrlo poznat njegov rezul-
tat iz 1801. godine je prvi pravi dokaz osnovnog teorema aritmetike, te dokaz zakona
kvadratnog reciprociteta. Pored teorije brojeva, Gauss se bavio i algebrom. Prvi pravi
dokaz osnovnog teorema algebre pripisuje se upravo njemu. Baveci se u razdoblju 1803.
- 1809. godine problemom odredivanja putanje astroida Pallasa, Gauss je dobio sustav
tipa 6×6 koji je rijesio metodom koju danas zovemo Gaussova metoda eliminacije.
Neka je dan sustav od m linearnih jednadzbi s n nepoznanica:
a11x1 + a12x2 + a13x3 + · · ·+ a1nxn = b1a21x1 + a22x2 + a23x3 + · · ·+ a2nxn = b2
...am1x1 + am2x2 + am3x3 + · · ·+ amnxn = bm
Tada definiramo prosirenu matricu sustava:
A =
a11 a12 · · · a1n p b1a21 a22 · · · a2n p b2...
...... p ...
am1 am2 · · · amn p bm
.Da bismo sustav rijesili Gaussovom metodom potrebno je prosirenu matricu A sus-
tava svesti, pomocu elementarnih transformacija nad njenim recima, na njoj ekviva-
lentnu gornje trokutastu matricu (matrica kojoj su svi elementi ispod glavne dijagonale
jednaki nuli).
Pod elementarnim transformacijama nad retcima matrice podrazumijevamo sljedece:
1. zamjena mjesta dvaju redaka,
2. mnozenje nekog retka brojem razlicitim od nule,
3. dodavanje nekog retka pomnozenog s brojem razlicitim od nule nekom drugom retku.
Rjesenje zadanog sustava je uredena n-torka realnih brojeva (x1, x2, ..., xn) koja zado-
voljava svaku jednadzbu sustava. Razlikujemo tri slucaja:
1. Sustav ima jedinstveno rjesenje,
2. Sustav ima beskonacno mnogo rjesenja,
3. Sustav nema rjesenja.
34
Primjer 5.3.1 Rijesimo sustav jednadzbi:
x + 2y + 3z = 52x − y − z = 1x + 3y + 4z = 6
Rjesenje: 1 2 3 p 52 −1 −1 p 11 3 4 p 6
/(−2) /(−1)∼
1 2 3 p 50 −5 −7 p −90 1 1 p 1
∼
1 2 3 p 50 1 1 p 10 −5 −7 p −9
/5 ∼
1 2 3 p 50 1 1 p 10 0 −2 p −4
/ : (−2)
∼
1 2 3 p 50 1 1 p 10 0 1 p 2
⇒x+ 2y + 3z = 5 (1)y + z = 1 (2)1 · z = 2 (3)
(3) ⇒ z = 2
(2) ⇒ y = 1− z = 1− 2 = −1⇒ y = −1
(1) ⇒ x = 5− 2y − 3z = 5− 2 · (−1)− 3 · 2 = 5 + 2− 6 = 1⇒ x = 1
Rjesenje:
x = 1
y = −1
z = 2.
Dobili smo jedno jedinstveno rjesenje, pa za ovaj sustav linearnih jednadzbi kazemo
da je moguc.
Sustav nema rjesenja, tj. kazemo da nije moguc, ako su u jednom retku lijevo od
iscrtkane linije sve nule, a desno od iscrtkane linije neki broj razlicit od nule. Ako se
u jednom retku nalaze sve nule, onda kazemo da sustav ima beskonacno mnogo rjesenja.
35
Iz teorije je poznato (Kronecker - Cappelli teorem) da sustav linearnih jednadzbi
Ax = b ima rjesenje ako i samo ako je r(A) = r([A|b]), tj. ako matrica A i prosirena
matrica [A|b] imaju jednak rang. Ako je pri tome rang(A) = rang([A|b]) = n, onda
sustav ima jedinstveno rjesenje. No, ako je rang(A) = rang([A|b]) < n, onda sustav
ima beskonacno mnogo rjesenja. Ako je pak rang(A) < rang([A|b]), onda sustav nema
rjesenja.
5.4 Neki znacajni algoritmi u drugoj polovini XX. stoljeca
Navedimo neke algoritme koji su znacajno utjecali na razvoj znanosti i inzenjerstva
u drugoj polovini XX. stoljeca, ne ulazeci detaljno u razmatranje tih algoritama vec
samo opisujuci glavne ideje kod njih6.
5.4.1 Monte Carlo metoda (Metropolis algoritam)
Ime metode ”Monte Carlo” uveli su Stanislaw Ulam, John von Neumann i Nicholas
Metropolis 1946. godine. Upotrebljava se u razlicitim podrucjima znanosti: numerickoj
matematici, fizikalnoj kemiji, statistickoj fizici i ekonomiji. Odnosi se na siroku prim-
jenu matematickih modela i algoritama cija je glavna znacajka upotreba slucajnih bro-
jeva u rjesavanju razlicitih problema. Najcesce je rijec o matematickim problemima
za cija rjesenja ne postoje ucinkoviti numericki algoritmi. Opcenito govoreci, da bi se
nesto prozvalo Monte Carlo eksperimentom, dovoljno je koristiti nasumicne brojeve da
bi se ispitali moguci rezultati eksperimenta.
5.4.2 Simplex algoritam
Pojam linearne optimizacije predstavlja skupinu metoda koje omogucavaju nalazenje
najpovoljnijih rjesenja raznovrsnih problema u kojima i funkcija cilja (npr. dobit) i
utrosci resursa (npr. materijala ili vremena) imaju linearan oblik ovisnosti o nezavis-
nim varijablama (npr. o broju proizvedenih proizvoda).
Jedna od najvise koristenih metoda linearne optimizacije je linearno programiranje.
Metodu je razvio americki matematicar George Dantzig 1947. godine.
Neka su c ∈ Rn, ai ∈ Rn, bi ∈ R, i ∈ M = M1 ∪M2 ∪M3, gdje su Mi, i = 1, 2, 3
disjunktni skupovi te f : Rn → R linearna funkcija zadana formulom f(x) = cTx.
Promotrimo sljedeci minimizacijski problem:
6Barry A. Cipra, The Best of 20th Century: Editors Name Top 10 Algorithms, SIAM News, Volume33, Number 4
36
f(x) = cTx → minx
(1)
uz uvjetaTi x ≥ bi, i ∈M1 (2)aTi x ≤ bi, i ∈M2 (3)aTi x = bi, i ∈M3 (4)
Problem (1-4) zovemo problem linearnog programiranja ili skraceno LP; pri tome
funkciju f zovemo funkcija cilja. Vektor x koji zadovoljava uvjete (2-4) zovemo do-
pustivo rjesenje. Za dopustivo rjesenje x∗ takvo da je f(x∗) = cTx∗ ≤ cTx = f(x), za
svako dopustivo rjesenje x, kazemo da je optimalno dopustivo rjesenje.
Ako su A ∈ Rm×n, b ∈ Rm te c ∈ Rn, onda minimizacijski problem
cTx → minx
uz uvjetAx = bx ≥ 0
zovemo standardni oblik problema linearnog programiranja ili skraceno SOLP.
Najpoznatiji i najvise koristen algoritam za rjesavanje problema linearnog programi-
ranja jest Simplex algoritam.
Najprije navedimo sljedecu definiciju:
Definicija 5.4.1 Neka su A ∈ Rm×n, b ∈ Rm. Skup P = {x ∈ Rn;Ax ≥ b} zovemo
konveksan poliedar u Rn.
Uocimo da je skup P = {x ∈ Rn;Ax = b, x ≥ 0}, takoder poliedar i zovemo ga poliedar
u standardnom obliku.
Osnovni oblik Simplex algoritma:
1. odabrati jedno bazicno dopustivo rjesenje poliedra P = {x ∈ Rn : Ax = b, x ≥ 0}
2. repeat
provjeriti sve bridove poliedra P koji izlaze iz odabranog bazicnog dopustivog
rjesenja;
if postoji brid po kojem mozemo smanjiti vrijednost funkcije cilja, hodamo
po tom bridu dok ne dodemo do sljedeceg bazicnog dopustivog rjesenja. Ako
takvo bazicno dopustivo rjesenje ne postoji, poliedar je neomeden i vrijednost
funkcije cilja je −∞else
repeat bazicno dopustivo rjesenje je optimalno
forever
37
Pri cemu za vektor x ∈ Rn kazemo da je bazicno rjesenje ako su:
i) svi uvjeti koji sadrze jednakosti aktivni i x (tj. aTi0x = bi0 , za neki i0 ∈M1∪M2∪M3);
ii) skup {ai : i ∈ I} sadrze n linearno nezavisnih vektora.
Bazicno rjesenje koje zadovoljava sve uvjete zovemo bazicno dopustivo rjesenje.
5.4.3 Aproksimacije iz Krylovljevih potprostora
1950. godine Magnus Hestenes, Eduard Stiefel i Cornelius Lanczos inicirali su razvoj
iterativnih metoda za rjesavanje sustava linearnih jednadzbi iz tzv. Krylovljevih pot-
prostora. Metoda je dobila ime po ruskom matematicaru Nikolaiu Krylovu.
Poznati rezultat iz linearne algebre kaze da svaka matrica ponistava svoj karakter-
isticni polinom κA(A) = a0I + a1A + a2A2 + ... + anA
n. Pretpostavimo da je matrica
A regularna. To znaci da nula ne moze biti korijen karakteristicnog polinoma. Stoga
imamo da je a0 6= 0. Jednostavnim racunom dobivamo:
κA(A) = 0⇐⇒ a1A+ a2A2 + ...+ anA
n = −a0I /: (−a0)
A(− 1
a0)(a1I + ...+ an−1A
n−2 + anAn−1) = I
Vidimo da je
A−1 = − 1
a0(a1I + ...+ an−1A
n−2 + anAn−1) = I.
Buduci da rjesenje linearnog sustava Ax = b, A ∈ Cn×n, A > 0 mozemo zapisati kao
x = A−1b zakljucujemo da je
x = −a1a0b− ...− an−1
a0An−2b− an
a0An−1b.
Mozemo uociti da je vektor x razapet vektorima b, Ab, ..., An−2b, An−1b, tj. mozemo
pisati:
x ∈ span{b, Ab, ..., An−1b} = K(A, b) (4)
Prostor koji se pojavljuje na desnoj strani u (4) zovemo Krylovljevim potprostorom
matrice A i vektora b. Upravo iz (4) dolazi ideja za metode rjesavanja sustava linearnih
jednadzbi koje se temelje na aproksimacijama iz Krylovljevih potprostora. Iterativni
postupak konstruiramo tako da za prvu aproksimaciju rjesenja uzmemo x1 ∈ span{b},tj. x1 je neki visekratnik vektora b. Nakon toga racunamo produkt Ab i zahtijevamo
da je sljedeca aproksimacija jednaka nekoj linearnoj kombinaciji od b i Ab, tj. x2 ∈span{b, Ab}. Taj proces se nastavlja tako da aproksimacija u k-tom koraku zadovoljava
xk ∈ span{b, Ab, ..., Ak−1b}, k = 1, 2, ...
Ako je xk aproksimacija rjesenja u k-tom koraku iterativne metode i ako u (k + 1)-
om koraku uzmemo xk+1 = xk +A−1(b−Axk), k = 1, 2, ... tada je xk+1 = A−1b rjesenje
sustava.
38
Buduci da je problem izracunavanja vektora A−1(b− Axk) ekvivalentan polaznom
problemu, korekciju vektora xk radimo pomocu neke njegove aproksimacije koja se
lakse izracunava i koja se i dalje nalazi unutar Krylovljevih potprostora.
5.4.4 LU faktorizacija
1951. godine Alston Householder formalizirao je tzv. LU faktorizaciju matrice koja
sluzi za rjesavanje sustava linearnih jednadzbi. Primjenom Gaussove metode elimi-
nacije za sustave linearnih jednadzbi zapravo eliminiramo neke nepoznanice iz nekih
jednadzbi. Vrlo koristan rezultat u analizi metode eliminacija je faktorizacija matrice
sustava A na produkt trokutastih matrica. Sljedeci teorem dokazuje postojanje takve
faktorizacije.
Teorem 5.4.1 Za svaku regularnu matricu A ∈ Cn×n postoji donja trokutasta matrica
L s jedinicama na dijagonali i gornja trokutasta matrica U takve da vrijedi A = LU .
2
5.4.5 FORTRAN kompajler
FORTRAN (FORmula TRANslator) bio je prvi visi programski jezik kojeg je razvio
J. Backus izmedu 1953. i 1956. godine. Prvi kompjaler napravljen je 1957. godine
za racunalo IBM 704 i sadrzavao je 25 000 instrukcija. Njegova je osnovna nam-
jena bila omoguciti razvijanje programa za rjesavanje znanstveno-tehnickih problema,
na pocetku samo iz podrucja vojnih poslova i primjena. FORTRAN je ukljucivao
elemente prirodnog engleskog jezika i matematicku notaciju kao elemente vlastitih
naredbi. U danasnje vrijeme se smatra da kao programski jezik ima dosta slabosti.
Unatoc tome, FORTRAN je znacio izuzetno velik napredak u sferi programiranja i
programskih jezika. Slijedeci njegov primjer, mnogi proizvodaci racunala poceli su
razvijati slicne jezike, ali za drugacije i raznolikije namjene.
5.4.6 QR faktorizacija
QR faktorizacija (dekompozicija) je rastav matrice A na dvije matrice A = QR,
od kojih je jedna unitarna, a druga gornja trokutasta. Takva faktorizacija matrice je
vrlo korisna i moze se primjenjivati u raznim problemima. Otkrio ju je J. G. F. Francis
of Ferranti u razdoblju od 1959. godine do 1961. godine. Sljedeci teorem dokazuje
postojanje takve faktorizacije.
Teorem 5.4.2 (QR faktorizacija) Za bilo koju matricu A ∈ Cm×n, takvu da je m ≥n postoje matrice Q i R takve da A = QR, pri cemu je Q ∈ Cm×m unitarna, a
R ∈ Cm×n gornja trokutasta matrica. 2
39
Vrlo ucinkovit algoritam za racunanje QR-faktorizacije je tzv. Householderova QR-
faktorizacija. Algoritam zapisan pseudojezikom izgleda ovako:
Ulaz: A ∈ Cm×n
Izlaz: Q ∈ Cm×m ortogonalna matrica i R ∈ Cm×n gornje trokutasta, takve da je
A = QR
1. Q = I, R = A
2. for k = 1, ..., n− 1 do
3. u = (rkk, ..., rmk)T ∈ Cm−k+1
4. v = sign(u1)||u||2e1 + u gdje je e1 = (1, 0, ..., 0)T ∈ Cm−k+1
5. v = v/||v||26. Hk = (Im−k+1 − 2vv∗) ∈ C(m−k+1)×(m−k+1)
7. Qk =
(Ik−1 0
0 Hk
)8. R = Qk ·R9. Q = Q ·Qk
10. end for
Primjer 5.4.1 Primjenom Householderovih matrica potrebno je odrediti faktorizaciju
matrice A:
A =
10 9 1820 −15 −1520 −12 51
Primjenom algoritma dobivamo u = a1, a1 =
[10 20 20
]Tv2 = sign(10)||u||2e1 + u = 30e1 + u = 30
100
+
102020
= 20
211
Buduci da je
Hk = (Im−k+1 − 2vv∗) = Im−k+1 − 2v
||v||v∗
||v||= I3 − 2
1
v∗vvv∗,
slijedi
H1 = I3−2· 1
2400·400
211
[ 2 1 1]
=
1 0 00 1 00 0 1
−1
3
4 2 22 1 12 1 1
=
−13
−23
−23
−23
23
−13
−23
−13
23
H1a1 =
−13
−23
−23
−23
23
−13
−23
−13
23
102020
=
−3000
H1a2 = a2 − 21
v1∗v1v1(v1
∗a2) =
9−15−12
− 2 · 20 · 20 · (−9)
202 · 6· 20
211
=
15−12−9
40
Na slican nacin dobivamo vektor H1a3 = ... =
−30−3951
Zbog toga je H1A =
−30 15 −300 −12 −390 −9 27
Potrebno je jos odrediti matricu H2 =
1 0 00 h22 h230 h32 h33
pri cemu su h22, h23, h32, h33 elementi matrice H ′2 =
[h22 h23h32 h33
].
Buduci da je u = (rkk, ..., rmk)T , za novi u uzimamo u =[−12 −9
]T.
v2 = sign(−12)||u||2e1 + u = −15
[10
]+
[−12−9
]=
[−27−9
]= −9
[31
]
H ′2 = I2 − 21
v2∗v2v2v2
∗ = ... =
[−4
5−3
5
−35
45
]
Slijedi H2 =
1 0 00 −4
5−3
5
0 −35
45
H2H1︸ ︷︷ ︸QT
A =
1 0 00 −4
5−3
5
0 −35
45
−30 15 −300 −12 −390 −9 27
=
−30 15 −300 15 150 0 45
︸ ︷︷ ︸
R
Q = (H2H1)T = HT
1 ·HT2 = H1 ·H2 jer su matrice H1 i H2 hermitske.
Dakle,
Q = H1H2 = ... =
−13
1415
−215
−23
−13
−23
−23
−215
1115
41
Na taj nacin rastavili smo matricu A na umnozak dviju matrica Q i R: 10 9 1820 −15 −1520 −12 51
=
−13
1415
−215
−23
−13
−23
−23
−215
1115
−30 15 −300 15 150 0 45
5.4.7 QuickSort
1962. godine Tony Hoare predstavio je QuickSort algoritam za sortiranje niza
brojeva, koji je baziran na principu ”podijeli i vladaj” algoritma. Kljucan korak u
QuickSort algoritmu je ”podijeli” korak. Postupa se na nacin da se polje brojeva
podijeli u dva potpolja oko elementa x tako da su svi elementi u lijevom potpolju manji
ili jednaki elementu x, a svi elementi u desnom potpolju veci ili jednaki elementu x.
Vrijeme izvrsenja QuickSort algoritma je reda velicine O(nlog2n) sto je puno brze od
ostalih algoritama za sortiranje podataka.
42
Sazetak
Cilj izvodenja algoritma je rjesavanje problema. Stoga, mozemo reci da su algo-
ritmi stari koliko i covjecanstvo. Nagli razvoj racunala i racunarske tehnike doveo je
do toga da danas najveci broj problema covjek pokusava rijesiti pomocu racunala.
Rad se sastoji od cetiri poglavlja. Prvi dio sadrzi osnovne cinjenice o algorit-
mima. U trecem poglavlju su opisani razni brojevni sustavi starih civilizacija i njihovi
nacini zapisa brojeva. Osim toga, ovdje je objasnjen Euklidov algoritam, te razvoj
prostih brojeva i metoda Eratostenovo sito. U cetvrtom poglavlju opisan je razvoj
mehanickih i elektronickih racunala. U petom poglavlju opisano je nekoliko najpoz-
natijih algoritama u matematici. Takoder, ovdje se ukratko navode znacajni algoritmi
u drugoj polovini 20. stoljeca, kao sto su: Monte Carlo metoda, Simplex algoritam, LU
faktorizacija, QR faktorizacija, QuickSort i dr.
43
Summary
Objective performance of the algorithm is solving the problem. We can say that
the algorithms are old as mankind. Rapid development of computers has led to the
fact that today most of the problems are solved by computers.
The graduate work consists of four chapters. The first chapter contains basic facts
about algorithms. Various number systems of ancient civilizations and their methods
of recording numbers are described in the third chapter as well as the explanation of
the Euclidean algorithm, the development of prime numbers and the Eratosthenes sieve
method. The fourth chapter describes the development of mechanical and electronic
computers. Chapter 5 describes several famous algorithms in mathematics. Also, here
are brief statement of the significant algorithms in the second half of the 20th century
such as: Monte Carlo method, Simplex algorithm, LU factorization, QR factorization
and QuickSort.
44
Popis ilustracija
Slika 1. Muhammed ibn Musa al-Khwarizmi, str. 5
Izvor: http : //web.math.hr/nastava/oa/oa− skripta.pdfSlika 2. Rhindov i Moskovski papirus, str. 7
Izvor: http : //e.math.hr/old/egipat/index.html
Slika 3. Hijeroglifski i hijeratski brojevi, str. 8
Izvor: http : //e.math.hr/old/egipat/index.html
Slika 4. Postupak oduzimanja brojeva, str. 8
Izvor: http : //e.math.hr/old/egipat/index.html
Slika 5. Brojevni sustav s bazom sezdeset u babilonskoj matematici, str. 9
Izvor: http : //web.math.hr/nastava/oa/oa− skripta.pdfSlika 6. Grcki brojevni sustav zasnovan na pocetnim slovima imena brojeva, str. 10
Izvor: http : //www.mathos.hr/ bruckler/seminari/brojevi.ppt
Slika 7. Grcki brojevni sustav s alfabetskom notacijom, str. 9
Izvor: http : //www.mathos.hr/ bruckler/seminari/brojevi.ppt
Slika 8. Znamenke u indijskom brojevnom sustavu, str. 11
Izvor: http : //www.mathos.hr/ bruckler/seminari/brojevi.ppt
Slika 9. Primjeri razlicitih znakova za brojeve i mijenjanje njihovih oblika, str. 11
Izvor: http : //www.zbrdazdola.com/infobible/infobible/razvoj racunala
kroz povijest.htm
Slika 10. Urezivanje zareza na kosti, zapisivanje crtica, str. 18
Izvor: http : //www.zbrdazdola.com/infobible/infobible/razvoj racunala
kroz povijest.htm
Slika 11. Shema obnovljenog Stonehenge-a, Stonehenge danas, str. 18
Izvor: http : //modernatehnologija.com/racunala/najstarija− racunalnapomagala.html
Slika 12. Abakus, str. 19
Izvor: http : //www.lecad.unze.ba/nastava/INFORMATIKA
Slika 13. Leibnizov kalkulator, str. 22
Izvor: http : //www.lecad.unze.ba/nastava/INFORMATIKA
Slika 14. Analiticki stroj, str. 22
Izvor: http : //www.zbrdazdola.com/infobible/infobible/razvoj racunala
kroz povijest.htm
45
Literatura
[1] Jean-Luc Chabert, A History of Algorithms (From the Pebble to the Microchip),
Springer-Verlag Berlin Heidelberg New York, 1999.
[2] S. Znam i dr., Pogled u povijest matematike, Tehnicka knjiga Zagreb, 1986.
[3] Franka Miriam Bruckler, Povijest matematike I, Sveuciliste J. J. Strosssmayera u
Osijeku, Odjel za matematiku, 2007.
[4] Barry A. Cipra, The Best of 20th Century: Editors Name Top 10 Algorithms,
SIAM News, Volume 33, Number 4
[5] http://web.math.hr/nastava/oa/oa-skripta.pdf
[6] http : //www.ff − infing.hr/povijest racunala.htm
[7] http : //www.zbrdazdola.com/infobible/infobible/razvoj racunala kroz
povijest.htm
[8] http : //modernatehnologija.com/racunala/najstarija− racunalna−pomagala.html
[9] http : //www.lecad.unze.ba/nastava/INFORMATIKA
[10] http : //e.math.hr/old/egipat/index.html
[11] http : //www.mathos.hr/ bruckler/seminari/brojevi.ppt
[12] http : //hrcak.srce.hr/21885
[13] G. Paic, Z. Bosnjak, Z. Mrkic, Matematicki izazovi, Metodicki izazovi za ucitelje
matematike, Alfa, d.d. Zagreb, 2009.
[14] http : //www.vus.hr/Nastavnimaterijali/Matematika/F in matematika vjezbe
/9.vjezbe.pdf
[15] http : //web.math.hr/ duje/utd/utblink.pdf
[16] http : //www.mathos.hr/algebra/Materijali/algebra2007.pdf
46
Zivotopis
Zovem se Tea Fijacko i zivim u Novskoj. Rodena sam 19. prosinca 1987. godine
u Pakracu. Osnovnu skolu, kao i srednju, Opcu gimnaziju, pohadala sam u Novskoj.
2006. godine upisala sam Sveucilisni nastavnicki studij matematike i informatike na
Odjelu za matematiku u Osijeku.
47