jednostavni algoritmi i programiranje/e-student/009... · zits :: algoritmi i programiranje ::...

18
Algoritmi i programiranje Jednostavni algoritmi Prof. dr. sc. Tonči Carić ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

Upload: others

Post on 03-Nov-2019

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

Algoritmi i programiranje

Jednostavni algoritmi

Prof. dr. sc. Tonči Carić

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

Page 2: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

• Sadržaj

– Uvod

– Traženje najvećeg člana u polju

– Najveća zajednička mjera

– Izračun prim brojeva

Page 3: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

• Neki problemi se često rješavaju

– Pretraživanje podataka

– Traženje najmanje ili najveće vrijednosti

– Množenje i inverz matrica

• Koriste se standardizirani algoritmi

– Optimizirani prema brzini i potrošnji memorije

• Laka prilagodba za različite vrste podataka i područja primjene

Uvod

Page 4: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

• Svaki član polja označen indeksom

– Prvi član polja ima indeks 0

• Dovoljno pronaći indeks najvećeg člana

• Potrebno proći kroz cijelo polje

• Bitno zadati početnu vrijednost indeksa najvećeg člana polja

– Mora biti unutar zadanog polja

– Najbolje indeks prvog člana polja

• Složenost O(n)

– Potrebno n - 1 usporedbi

• Pretpostavka da je prvi član polja početni najveći član

Traženje najvećeg člana polja

Page 5: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

• Pseudokôd

Unos

polje

Inicijalizacija

indeksNajvecegClana = 0;

Ponavljaj za svaki član polja

Ako polje[indeksNajvecegClana] < polje[indeks] indeksNajvecegClana = indeks;

indeks++;

– Varijabla indeksNajvecegClana sadrži indeks najvećeg člana polja nakon završetka petlje

Traženje najvećeg člana polja

Page 6: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

• Dijagram toka

– Varijable

polje - podaci

i – brojilo za prolaz kroz cijelo polje

max – indeks najvećeg

člana polja

– Najveći član polja

polje[max]

Traženje najvećeg člana polja

Page 7: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

Traženje najvećeg člana polja

Programski kôd

NajveciPolja

Page 8: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

• Računa se za dva cijela broja

• Predstavlja najveći zajednički broj koji može podijeliti dva broja da ostatak bude 0

– Ako je NZM najveći broji za koji cjelobrojno dijeljenje a/NZM i b/NZM ima ostatak 0 tada je NZM najveća zajednička mjera između brojeva a i b

• Primjer • NZM (28, 14) = 14

• NZM (1029, 42) = 21

• NZM (13, 7) = 1

Najveća zajednička mjera

Page 9: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

• Koraci algoritma

Najveća zajednička mjera

Korak I ponavlja se na način da se u svakoj

slijedećoj iteraciji izvrši rotacija sadržaja varijabli

na ovaj način

a”=b’, b”=c’, c”=a”%b”

sve dok c ne postane 0. Tada se u varijabli b

nalazi najveća zajednička mjera brojeva a i b

iz prve iteracije

• I korak – a’=1029, b’=42

– a’/b’=24,5

– 1029=42*24+21

– c’=a’%b’

– c’=21

Tražimo NZM(1029,42)

◦ Podijelimo a i b

◦ Ostatak pri dijeljenju je 21

◦ U c pospremimo cjelobrojni ostatak

II korak ◦ a”=42, b”=21

◦ c”=a%b

◦ c”=0

a b c

I korak 1029 42 21

II korak 42 21

NZM =21 ◦ 1029=49*21

◦ 42=2*21

◦ 1029/42=49/2

Page 10: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

• Dijagram toka

– Varijable

a – prvi broj

b – drugi broj

c – ostatak cjelobrojnog dijeljenja a i b

– Rezultat sadržan u varijabli a uz uvjet b == 0 (Raptor b = 0)

Najveća zajednička mjera

b==0

Page 11: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

Najveća zajednička mjera Programski kôd

NZM

Page 12: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

Najveća zajednička mjera Programski kôd

• Rekurzivna implementacija

NZMrekurzija

Page 13: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

• Prim broj je djeljiv samo sa 1 i samim sobom

• Primjer prim brojeva

– 2, 3, 7, 11, …

• Broj 4 djeljiv sa 1, 2 i 4

• Broj 6 djeljiv sa 1, 2, 3 i 6

• Prim brojevi bitni kod kreiranja zaporki i raspršenog adresiranja

– Minimiziran proboj algoritma generiranja zaporke

– Minimiziranje grupiranja podataka na malo mjesta

• Primjer kod automatiziranih skladišta

Izračun prim brojeva

Page 14: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

• Ispituje se dali je varijabla n djeljiva sa svim brojevima manjim od sebe

Izračun prim brojeva Programski kôd

PrimBroj

• Dijeljenje sa 1 se ne ispituje • Svaki broj djeljiv sa 1

• Varijabla zastavica služi za detekciju prim broja

Page 15: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

• Izbacuju se svi višekratnici prim broja

– Počinje se od

broja 2

– Eratostenovo

sito

Izračun prim brojeva

Page 16: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

• Prim brojevi indeksi polja f

– Vrijednost polja f označava prim broj

• True -> indeks prim broj

Izračun prim brojeva Dijagram toka

1

1

Page 17: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom

ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko

Izračun prim brojeva Programski kôd

• Metoda

GenerirajPrimBrojeve vraća polje prim brojeva

– Varijabla brojac sadrži količinu prim brojeva

• Bitno za deklaraciju izlaznog polja

– Logička vrijednost polja f indicira prim broj (indeks)

Page 18: Jednostavni algoritmi i programiranje/e-student/009... · ZITS :: Algoritmi i programiranje :: Jednostavni algoritmi © 2013 Carić, Ivanjko • Svaki član polja označen indeksom