tea fija cko - mathos.unios.hrmdjumic/uploads/diplomski/fij02.pdf · u drugom poglavlju je obja...

47
Sveuˇ ciliˇ ste J. J. Strossmayera u Osijeku Odjel za matematiku Tea Fijaˇ cko Pogled u povijest razvoja algoritama Diplomski rad Osijek, 2011.

Upload: lynguyet

Post on 29-Aug-2019

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

Sveuciliste J. J. Strossmayera u Osijeku

Odjel za matematiku

Tea Fijacko

Pogled u povijest razvoja algoritama

Diplomski rad

Osijek, 2011.

Page 2: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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.

Page 3: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 4: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 5: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 6: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 7: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 8: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 9: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 10: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 11: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

• 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

Page 12: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 13: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 14: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 15: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 16: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 17: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 18: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 19: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 20: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 21: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 22: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 23: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 24: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 25: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 26: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 27: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 28: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 29: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 30: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 31: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 32: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 33: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 34: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 35: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 36: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 37: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 38: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 39: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 40: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 41: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 42: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 43: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 44: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 45: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 46: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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

Page 47: Tea Fija cko - mathos.unios.hrmdjumic/uploads/diplomski/FIJ02.pdf · U drugom poglavlju je obja snjen pojam i karakterizacija algoritma. U poglavlju 3. dan je pregled razvoja brojevnih

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