Professional Documents
Culture Documents
STRUKTURE PODATAKA
APSTRAKTNI TIP PODATAKA POLINOM
PRVO PREDAVANJE
Ciljevi kolegija
• Apstraktno razmišljanje o novom problemu
• Nalaženje rješenja novog problema
• Primjena standardnih metoda na novom problemu
2
Motivacija
• Razvoj sve sofisticiranijih programskih alata
• smanjuje se potreba za programerima kojima je osnovno
znanje kodiranje
• raste potražnja za ljudima koji znaju razmišljati o
problemu i nalaziti rješenja
• "Nismo učili kako se rješava ovaj problem" nije
opravdanje za izostanak rješenja
3
Problem vuka, koze i kupusa (1)
• Potrebno je čamcem preko rijeke prevesti vuka, kozu i
kupus.
• Čamac je toliko malen da je u njega moguće smjestiti
samo čovjeka, a s njim još ili vuka, ili kozu, ili kupus.
• Ako čovjek na obali ostavi
• vuka i kozu, onda će vuk pojesti kozu
• kozu i kupus, onda će koza pojesti kupus
• Kada je čovjek prisutan, onda su svi sigurni (nitko
nikoga neće pojesti)
• Kako je čovjek uspio prevesti svo troje na drugu obalu
rijeke?
4
Problem vuka, koze i kupusa (2)
• Vuk ne jede kupus, zbog čega je prvo potrebno
prevesti kozu. Vuka i kupus možemo ostaviti na
obali i bez čovjeka.
5
Problem vuka, koze i kupusa (3)
• Vuk ne jede kupus, zbog čega je prvo potrebno
prevesti kozu. Vuka i kupus možemo ostaviti na
obali i bez čovjeka.
6
Problem vuka, koze i kupusa (4)
• Vuk ne jede kupus, zbog čega je prvo potrebno
prevesti kozu. Vuka i kupus možemo ostaviti na
obali i bez čovjeka.
7
Problem vuka, koze i kupusa (5)
• Međutim, kupus i koza ne smiju ostati zajedno.
Stoga čovjek ostavlja samo kupus, a kozu vraća kod
vuka.
8
Problem vuka, koze i kupusa (6)
• Međutim, kupus i koza ne smiju ostati zajedno.
Stoga čovjek ostavlja samo kupus, a kozu vraća kod
vuka.
9
Problem vuka, koze i kupusa (7)
• Međutim, kupus i koza ne smiju ostati zajedno.
Stoga čovjek ostavlja samo kupus, a kozu vraća kod
vuka.
10
Problem vuka, koze i kupusa (8)
• Vraća se po kozu i prevozi je na drugu obalu rijeke.
11
Problem vuka, koze i kupusa (9)
• Vraća se po kozu i prevozi je na drugu obalu rijeke.
• Problem je riješen !
12
Problem prelaska preko mosta (1)
• Svijetom vladaju zombiji.
• U vašem društvu nalaze se još tri osobe - profesor, asistent i
spremačica.
• Zombiji trče za vama, a pred vama se nalazi most.
• Ispod mosta - golema provalija.
• Kako ćete pobjeći od zombija preko mosta?
13
Problem prelaska preko mosta (2)
• Zombijima je potrebno 17 minuta da vas dostignu
• Vašim pratiocima je potrebna različita količina vremena da
prijeđu most, a morate ih sve spasiti:
• Vi most možete prijeći za jednu minutu,
• asistent za dvije minute,
• spremačica za pet minuta,
• profesor za deset minuta.
• Preko mosta u isto vrijeme mogu prelaziti samo dvije osobe
• U posjedu ste svjetiljke koja može osvijetliti samo jedan mali
dio puta ispred vas. Osoba koja prelazi most mora biti ispred
druge osobe i držati svjetiljku ili hodati odmah iza osobe koja
drži svjetiljku. Nitko ne može prijeći most bez pomoći
svjetiljke.
• Svi moraju prijeći most prije nego što zombiji dođu do njega.
14
Problem prelaska preko mosta (3)
• Prvi prelazak
• Vi i asistent
• Dvije minute
• Vi ste brži, ali morat ćete usporiti kako bi asistent bio
ukorak s Vama
15
Problem prelaska preko mosta (4)
• Prvi prelazak
• Vi i asistent
• Dvije minute
• Vi ste brži, ali morat ćete usporiti kako bi asistent bio
ukorak s Vama
• Drugi prelazak
• Vi sami
• Jedna minuta
• Morate se vratiti po druge kako biste im predali svjetiljku
16
Problem prelaska preko mosta (5)
• Prvi prelazak
• Vi i asistent
• Dvije minute
• Vi ste brži, ali morat ćete usporiti kako bi asistent bio ukorak s
Vama
• Drugi prelazak
• Vi sami
• Jedna minuta
• Morate se vratiti po druge kako biste im predali svjetiljku
• Treći prelazak
• Profesor i spremačica
• Deset minuta
• Spremačica drži svjetiljku, dok profesor ide za njom
17
Problem prelaska preko mosta (6)
• Četvrti prelazak
• Asistent
• Dvije minute
• Asistent se vraća sa svjetiljkom po Vas
18
Problem prelaska preko mosta (7)
• Četvrti prelazak
• Asistent
• Dvije minute
• Asistent se vraća sa svjetiljkom po Vas
• Peti prelazak
• Vi i asistent
• Dvije minute
• Zajedno prelazite most i pobjegli ste zombijima !
19
Osnovni pojmovi
• strukture podataka
• skupine varijabli u nekom programu te veza među tim varijablama
• statički aspekt nekog programa - ono sa čime se radi
• algoritmi
• konačni nizovi instrukcija gdje svaka instrukcija ima jasno definirano
značenje te može biti izvršena u konačnom vremenu
• dinamički aspekt programa - ono što se radi
• tip podatka
• skup vrijednosti koje neki podatak može poprimiti
• način na koji u računalnom progamu organiziramo podatke kako bi
lakše riješili problem
• struktura podataka
• funkcije za rad s tipom podataka
20
Tipovi podataka
• programski jezik C++ podržava:
• tipove podataka
• brojevni (numerički) – cjelobrojni (int), s pomičnim zarezom
(float)
• znakovni (alfanumerički) – char
• logički - bool
• mehanizme agregacije
• polja, znakovni nizovi
• zapisi, unije
• pokazivači
21
Apstraktni tipovi podataka (ATP)
• tipovi podataka koji ne postoje ugrađeni u
programskom jeziku
• programer ih sam implementira prema potrebi
• opća taksonomija
• linearni (lista, red, stog)
• hijerarhijski (općenito stablo, binarno stablo)
• dvodimenzionalni nehijerarhijski (usmjereni i
neusmjereni matematički graf)
• skupovni (skup, prioritetni red, rječnik)
• zadaju se navođenjem jednog ili više tipova
podataka te jedne ili više operacija (funkcija)
22
Implementacija apstraktnog tipa
podataka
• konkretna realizacija apstraktnog tipa podataka u
nekom programskom jeziku
• sastoji se od:
• definicije za strukturu podataka kojom se prikazuju podaci iz
apstraktnog tipa podataka
• potprograma (funkcija) kojima se operacije iz apstraktnog tipa
podataka ostvaruju pomoću odabranih algoritama
• za isti apstraktni tip podataka obično se može smisliti
više različitih implementacija
• implementacije se razlikuju po tome što koriste različite
strukture za prikaz podataka te različite algoritme za
izvršavanje operacija
23
Dijelovi strukture podataka (1)
• ćelija je varijabla koju promatramo kao zasebnu
cjelinu, a ima svoj tip i adresu
25
ATP polinom
• struktura podataka sastoji se od:
• jednodimenzionalnog polja values[n]
• jednog kursora (cjelobrojne vrijednosti) koji označava
duljinu polinoma.
26
ATP polinom
27
ATP polinom
• p(x)=3x2-2x+1 values
1 0
en -2 1
3 3 2
3
4
5
6
28
ATP polinom
• funkcije koje se izvode na ATP polinom su:
• Zero(p) - iniciranje nul-polinoma
• IsZero(p) - provjera da li je polinom nul-polinom
• Coef(p, pot) - funkcija koja vraća koeficijent u polinomu
uz zadanu potenciju
• Attach(p, pot, val) - pridruživanje vrijednosti
određenom koeficijentu
• Degree(p) - funkcija koja vraća stupanj polinoma
• Add(p1, p2, p3) - zbrajanje dva polinoma
• Mult(p1, p2, p3) - množenje dva polinoma
29
Iniciranje praznog polinoma 1/2
• Zero(p) values
1 0
en -2 1
3 3 2
3
4
5
6
30
Iniciranje praznog polinoma 2/2
• Zero(p) values
1 0
en -2 1
0 3 2
3
4
5
6
31
Pridruživanje vrijednosti
određenom koeficijentu 1/9
• Attach(p,1,2) values
1 0
en -2 1
3 3 2
3
4
5
6
32
Pridruživanje vrijednosti
određenom koeficijentu 2/9
• Attach(p,1,2) values
1 0
en 2 1
3 3 2
3
4
5
6
33
Pridruživanje vrijednosti
određenom koeficijentu 3/9
• Attach(p,5,2) values
1 0
en 2 1
3 3 2
3
4
5
6
34
Pridruživanje vrijednosti
određenom koeficijentu 4/9
• Attach(p,5,2) values
1 0
en 2 1
3 3 2
3
4
2 5
6
35
Pridruživanje vrijednosti
određenom koeficijentu 5/9
• Attach(p,5,2) values
1 0
en 2 1
6 3 2
3
4
2 5
6
36
Pridruživanje vrijednosti
određenom koeficijentu 6/9
• Attach(p,5,2) values
1 0
en 2 1
6 3 2
0 3
0 4
2 5
6
37
Pridruživanje vrijednosti
određenom koeficijentu 7/9
• Attach(p,5,0) values
1 0
en 2 1
6 3 2
0 3
0 4
2 5
6
38
Pridruživanje vrijednosti
određenom koeficijentu 8/9
• Attach(p,5,0) values
1 0
en 2 1
6 3 2
0 3
0 4
0 5
6
39
Pridruživanje vrijednosti
određenom koeficijentu 9/9
• Attach(p,5,0) values
1 0
en 2 1
3 3 2
0 3
0 4
0 5
6
40
Zbrajanje polinoma 1/6
values values values
1 0 1 0 0
2 1 en 1 1 en 1
en
2 2 4 1 2 0 2
3 1 3 3
4 4 4
5 5 5
6 6 6
n n n
41
Zbrajanje polinoma 2/6
values values values
1 0 1 0 2 0
2 1 en 1 1 en 1
en
2 2 4 1 2 0 2
3 1 3 3
4 4 4
5 5 5
6 6 6
n n n
42
Zbrajanje polinoma 3/6
values values values
1 0 1 0 2 0
2 1 en 1 1 en 3 1
en
2 2 4 1 2 0 2
3 1 3 3
4 4 4
5 5 5
6 6 6
n n n
43
Zbrajanje polinoma 4/6
values values values
1 0 1 0 2 0
2 1 en 1 1 en 3 1
en
2 2 4 1 2 0 1 2
3 1 3 3
4 4 4
5 5 5
6 6 6
n n n
44
Zbrajanje polinoma 5/6
values values values
1 0 1 0 2 0
2 1 en 1 1 en 3 1
en
2 2 4 1 2 0 1 2
3 1 3 1 3
4 4 4
5 5 5
6 6 6
n n n
45
Zbrajanje polinoma 6/6
values values values
1 0 1 0 2 0
2 1 en 1 1 en 3 1
en
2 2 4 1 2 4 1 2
3 1 3 1 3
4 4 4
5 5 5
6 6 6
n n n
46
Množenje polinoma 1/10
values values values
1 0 1 0 0
2 1 en 1 1 en 1
en
2 2 4 1 2 0 2
3 1 3 3
4 4 4
5 5 5
6 6 6
n n n
47
Množenje polinoma 2/10
values values values
1 0 1 0 0 0
2 1 en 1 1 en 0 1
en
2 2 4 1 2 5 0 2
3 1 3 0 3
4 4 0 4
5 5 5
6 6 6
n n n
48
Množenje polinoma 3/10
values values values
1 0 1 0 1 0
2 1 en 1 1 en 0 1
en
2 2 4 1 2 5 0 2
3 1 3 0 3
4 4 0 4
5 5 5
6 6 6
n n n
49
Množenje polinoma 4/10
values values values
1 0 1 0 1 0
2 1 en 1 1 en 1 1
en
2 2 4 1 2 5 0 2
3 1 3 0 3
4 4 0 4
5 5 5
6 6 6
n n n
50
Množenje polinoma 5/10
values values values
1 0 1 0 1 0
2 1 en 1 1 en 1 1
en
2 2 4 1 2 5 1 2
3 1 3 0 3
4 4 0 4
5 5 5
6 6 6
n n n
51
Množenje polinoma 6/10
values values values
1 0 1 0 1 0
2 1 en 1 1 en 1 1
en
2 2 4 1 2 5 1 2
3 1 3 1 3
4 4 0 4
5 5 5
6 6 6
n n n
52
Množenje polinoma 7/10
values values values
1 0 1 0 1 0
2 1 en 1 1 en 3 1
en
2 2 4 1 2 5 1 2
3 1 3 1 3
4 4 0 4
5 5 5
6 6 6
n n n
53
Množenje polinoma 8/10
values values values
1 0 1 0 1 0
2 1 en 1 1 en 3 1
en
2 2 4 1 2 5 3 2
3 1 3 1 3
4 4 0 4
5 5 5
6 6 6
n n n
54
Množenje polinoma 9/10
values values values
1 0 1 0 1 0
2 1 en 1 1 en 3 1
en
2 2 4 1 2 5 3 2
3 1 3 3 3
4 4 0 4
5 5 5
6 6 6
n n n
55
Množenje polinoma 10/10
values values values
1 0 1 0 1 0
2 1 en 1 1 en 3 1
en
2 2 4 1 2 5 3 2
3 1 3 3 3
4 4 2 4
5 5 5
6 6 6
n n n
56
57