Professional Documents
Culture Documents
1
AISP 2020. / 2021.
2
AISP 2020. / 2021.
3
AISP 2020. / 2021.
„VELIKO O“ NOTACIJA
• Matematička notacija koja opisuje ograničavajuće ponašanje funkcije kada njen argument teži prema
nekoj vrijednosti ili u beskonačno.
• U računarstvu se koristi kod klasifikacije algoritma, tj. za analizu kvalitete algoritma u pogledu
njegove složenosti (kompleksnosti) i učinkovitosti (efikasnosti).
• „Veliko O“ isključivo opisuje worst – case slučaj te ima apriornu složenost – ne uzima u obzir
računalo na kojem se algoritam izvodi.
• Vrste analiza:
o analiza vremena izvođenja programa neovisno o programskom jeziku, prevoditelju ili
računalu
o stvarno testiranje programa, pokazuje stvarne podatke o vremenu koje je potrebno računalu
da izvrši program – ono ovisi o količini podataka koji se unose, o brzini procesora, kvaliteti
programa…
Primjer:
Primjer:
4
AISP 2020. / 2021.
5
AISP 2020. / 2021.
C programski jezik:
Pseudo-jezik:
6
AISP 2020. / 2021.
Dijagram toka:
7
AISP 2020. / 2021.
C programski jezik:
Pseudo-jezik:
8
AISP 2020. / 2021.
Dijagram toka:
9
AISP 2020. / 2021.
C programski jezik:
Pseudo-jezik:
10
AISP 2020. / 2021.
Dijagram toka:
11
AISP 2020. / 2021.
C programski jezik:
Pseudo-jezik:
Dijagram toka:
12
AISP 2020. / 2021.
Pseudo-jezik:
13
AISP 2020. / 2021.
C programski jezik:
14
AISP 2020. / 2021.
15
AISP 2020. / 2021.
16
AISP 2020. / 2021.
17
AISP 2020. / 2021.
18
AISP 2020. / 2021.
19
AISP 2020. / 2021.
C programski jezik:
C programski jezik:
20
AISP 2020. / 2021.
C programski jezik:
21
AISP 2020. / 2021.
22
AISP 2020. / 2021.
23
AISP 2020. / 2021.
STOGOVI
• Princip rada stoga je LIFO – „Last in first out“
• Stog je kao struktura podataka definiran pomoću četiri funkcije:
o push(x) – dodaje element x na stog
o pop() – vraća kao rezultat zadnji element stoga i briše ga
o clear() – briše sve elemente stoga
o is_empty() – vraća TRUE ako je stog prazan, inače FALSE
24
AISP 2020. / 2021.
25
AISP 2020. / 2021.
26
AISP 2020. / 2021.
27
AISP 2020. / 2021.
Pseudo-jezik:
28
AISP 2020. / 2021.
29
AISP 2020. / 2021.
• Algoritam quicksort funkcionira na način da uzmemo jedan element u nizu (pivot) i nađemo mu
konačno mjesto, tako da svi lijevo od njega budu manji od njega, a svi desno od njega veći
30
AISP 2020. / 2021.
31
AISP 2020. / 2021.
32
AISP 2020. / 2021.
33
AISP 2020. / 2021.
34
AISP 2020. / 2021.
REDOVI
• Princip rada kod redova (eng. queues) je FIFO – „First in first out“
• Red je kao struktura podataka definiran pomoću četiri funkcije:
o Push(x) – dodaje element x na kraj reda; zove se još i Enqueue(x)
o Pop() – vraća kao rezultat element s početka reda i briše ga; zove se još i Dequeue()
o Clear() – briše sve elemente reda
o Is_empty() – vraća TRUE ako je red prazan, inače FALSE
• Ciklički red
o Nakon što se popuni N-ti podatak, red se i dalje puni od početka, tj. Od prvog mjesta
o Ulazni se pokazivač povećava izrazima: Ulaz = Ulaz + 1
o Ciklički red je prazan ako je Ulaz = Izlaz – 1 i zadnja promjena bio je Pop()
o Ciklički red je pun ako je Ulaz = Izlaz – 1 i zadnja promjena bio je Push(x)
35
AISP 2020. / 2021.
C programski jezik:
Pseudo-jezik:
36
AISP 2020. / 2021.
37
AISP 2020. / 2021.
C programski jezik:
38
AISP 2020. / 2021.
Pseudo-jezik:
39
AISP 2020. / 2021.
40
AISP 2020. / 2021.
STABLA
• Stabla pripadaju nelinearnim strukturama podataka
• Definira se kao hijerarhijska struktura koja se sastoji od čvorova i grana
• Čvorovi mogu imati više podređenih čvorova, ali samo jedan nadređeni čvor
• Svi čvorovi osim korijenskog čvora imaju jedan nadređeni čvor, korijen nema.
OPĆE STABLO
• Stablo na slici ispod naziva se općim stablom jer broj podređenih čvorova može biti proizvoljan
• Opća stabla mogu biti uređena (redoslijed podređenih čvorova je bitan – okta-stablo) i neuređena
(redoslijed podređenih čvorova nije bitan)
41
AISP 2020. / 2021.
BINARNA STABLA
• Binarno stablo je stablo kod kojeg svaki čvor može imati najviše dva nasljednika (lijevi i desni
nasljednik)
• Svaka razina binarnog stabla ima zato ograničen maksimalan broj čvorova:
o i-ta razina može imati najviše 𝟐𝒊 čvorova
42
AISP 2020. / 2021.
43
AISP 2020. / 2021.
44
AISP 2020. / 2021.
45
AISP 2020. / 2021.
Pseudo-jezik:
46
AISP 2020. / 2021.
Pseudo-jezik:
47
AISP 2020. / 2021.
• Kako bismo lakše manipulirali stablom, najprije ćemo pomoću funkcije NajmanjiCvor(cvor) naći
adresu čvora koji ima najmanju vrijednost u podstablu koje počinje čvorom cvor.
48
AISP 2020. / 2021.
TEŽINSKI PUT
• Dužina puta l(i) do vanjskog čvora i definirana je brojem grana koje treba proći od korijena do
vanjskog čvora
• Težinski put do čvora i tj. W(i) definiran je umnoškom l(i)*w(i)
• Ukupni težinski put stabla definiran je s: W = SUMA(l(i)*w(i)) za sve vanjske čvorove i
W = (9+7)•2+(8+6+4)•3+(12+14)•4 = 190
49
AISP 2020. / 2021.
HUFFMANOVO KODIRANJE
• Grane prema lijevim nasljednicima označe se s 0
• Grane prema desnim nasljednicima označe se s 1
• Znakovima koje se češće pojavljuju dodjeljuje se kraći binarni niz, a rjeđe pojavljivanim znakovima
dodjeljuje se duži binarni niz
50
AISP 2020. / 2021.
• Prikaz potpunog binarnog stabla u računalu moguće je pomoću jednog niza V s N elemenata
51
AISP 2020. / 2021.
HRPA
• Hrpa (en. heap) je potpuno binarno stablo za koje dodatno vrijedi za svaki čvor osim korijenskog:
vrijednost čvora je manja ili jednaka vrijednosti njemu nadređenog čvora – to je definicija
MAX-HRPE
• MIN-HRPA – Za svaki čvor osim korijenskog: vrijednost čvora je veća ili jednaka od vrijednosti
nadređenog
• Hrpu u računalu prikazujemo nizom. Osim duljine niza N važno svojstvo hrpe je i koliko ona
elemenata ima – NH
52
AISP 2020. / 2021.
Pseudo-kod:
Pseudo-kod:
53
AISP 2020. / 2021.
Pseudo-kod:
54
AISP 2020. / 2021.
C programski jezik:
Pseudo-kod:
55
AISP 2020. / 2021.
GRAFOVI
• Graf G(V,E) se sastoji od:
o skupa čvorova (vrhova) : V(G)
o skupa grana (bridova) : E(G)
• Ako se skup E(G) sastoji od neuređenih parova e{u,v}, u i v su čvorovi iz V(G), onda kažemo da se
radi o neusmjerenom grafu
• Ako se radi o uređenim parovima e(u,v) onda govorimo o usmjerenom grafu
56
AISP 2020. / 2021.
57
AISP 2020. / 2021.
58
AISP 2020. / 2021.
Pseudo-jezik:
59
AISP 2020. / 2021.
Pseudo-jezik:
60
AISP 2020. / 2021.
BELLMAN-FORD ALGORITAM
Vremenska složenost algoritma je O(M*N)
Ukoliko se radi o prikazu grafa pomoću matrice težina onda je O(𝑵𝟑 )
61
AISP 2020. / 2021.
62
AISP 2020. / 2021.
MREŽE
• Mreža je poseban graf s dodatnim čvorom s koji predstavlja izvor (source), on nema ulaznih
bridova, samo izlazne i čvorom t koji predstavlja ponor (sink), on nema izlaznih bridova, samo
ulazne
• U općem slučaju bridovima osim funkcije kapaciteta može biti dodijeljena i funkcija težine (problem
najkraćih puteva)
Primjer mreže:
Pseudo-jezik:
63
AISP 2020. / 2021.
64