You are on page 1of 28

Sveučilište u Zagrebu

PMF – Matematički odsjek

STRUKTURE PODATAKA I
ALGORITMI
Predavanja 2020/2021

Poglavlje 1:
Uvod

Sastavio: Robert Manger


01.10.2020
Sadržaj Poglavlja 1

1.1. Osnovni pojmovi

1.2. Više o strukturama podataka

1.3. Više o algoritmima

SPA-1 STRUKTURE PODATAKA I 2


ALGORITMI
Prva dva osnovna pojma
• Struktura podataka - skupina varijabli u nekom
programu i veza medu tim varijablama.
– Omogućuje pohranjivanje određenih podataka te
efikasno izvršavanje operacija s tim podacima.

• Algoritam - konačni niz naredbi, svaka ima jasno


značenje, izvršava se u konačnom vremenu.
– Izvršavanjem tih naredbi zadani ulazni podaci
pretvaraju se u izlazne podatke (rezultate).
– Pojedine naredbe mogu se izvršavati uvjetno.
– Iste naredbe mogu se izvršiti više puta.
– Zahtijevamo da algoritam završava nakon konačnog
broja ponavljanja.
SPA-1 STRUKTURE PODATAKA I 3
ALGORITMI
Daljnji naizgled slični pojmovi
• Tip podataka - skup vrijednosti koje neki
podatak može poprimiti.
• Apstraktni tip podataka (a.t.p.) - zadaje se
navođenjem jednog ili više tipova podataka te
jedne ili više operacija (funkcija).
– Operandi i rezultati navedenih operacija su podaci
navedenih tipova.
• Implementacija a.t.p. - konkretna realizacija
dotičnog a.t.p. u nekom programu.
– Definicija za strukturu podataka (kojom se prikazuju
podaci iz a.t.p.),
– Potprogrami (kojima se operacije iz a.t.p. ostvaruju
pomoću odabranih algoritama).
SPA-1 STRUKTURE PODATAKA I 4
ALGORITMI
Primjer za a.t.p. i implementaciju (1)
Apstraktni tip podataka Complex

SPA-1 STRUKTURE PODATAKA I 5


ALGORITMI
Primjer za a.t.p. i implementaciju (2)
• Kompleksni brojevi se tradicionalno zapisuju
ovako:
z1 = x1 + y1 i
z2 = x2 + y2 i
z3 = x3 + y3 i

• Specifičnost kompleksnih brojeva je u načinu


kako se oni zbrajaju i množe:
z1 + z2 = (x1 + y1i) + (x2 + y2i) =
(x1 + x2) + (y1 + y2)i
z1 × z2 = (x1 + y1i) × (x2 + y2i) =
(x1x2 - y1y2) + (x1y2 + y1x2)i

SPA-1 STRUKTURE PODATAKA I 6


ALGORITMI
Primjer za a.t.p. i implementaciju (3)
• Struktura podataka pogodna za prikaz
kompleksnog broja:

re im
• rrere

• Implementacija a.t.p. Complex sastoji se od


prethodne definicije tipa i od funkcija oblika:

SPA-1 STRUKTURE PODATAKA I 7


ALGORITMI
Primjer za a.t.p. i implementaciju (4)

• Tip scalar može biti ili float ili int.


• Ovo nije jedina moguća implementacija.
• Donekle drukčije rješenje dobili bismo kad bi
kompleksni broj umjesto kao struct prikazali
kao polje skalara duljine 2. O
1

SPA-1 STRUKTURE PODATAKA I 8


ALGORITMI
Programiranje postepenim
profinjavanjem (1)
• Znanje iz ovog predmeta omogućuje nam da
bolje programiramo.
• Apstraktni tipovi, strukture podataka i algoritmi
predstavljaju koristan skup alata.
• Kad se suočimo sa složenijim problemom, tada
do rješenja obično ne možemo doći na izravan
način.
• Umjesto toga služimo se metodom postepenog
profinjavanja, gdje se do rješenja dolazi u nizu
koraka.
SPA-1 STRUKTURE PODATAKA I 9
ALGORITMI
Programiranje postepenim
profinjavanjem (2)
• Varijanta metode postepenog profinjavanja koja
se oslanja na apstraktne tipove podataka.

SPA-1 STRUKTURE PODATAKA I 10


ALGORITMI
Programiranje postepenim
profinjavanjem (3)
• Programiranje postepenim profinjavanjem uz
korištenje apstraktnih tipova donosi brojne
prednosti u odnosu na “ad-hoc” programiranje:
– Lakše ćemo doći do rješenja, a ono će biti bolje
strukturirano, razumljivije i pogodnije za daljnje
održavanje.
– Iskoristit ćemo postojeća znanja umjesto da
“otkrivamo toplu vodu”.
– Možda ćemo ponovo upotrijebiti već gotove dijelove
softvera umjesto da ih sami razvijamo.
– Lakše ćemo se sporazumijevati s drugim kolegama.
SPA-1 STRUKTURE PODATAKA I 11
ALGORITMI
Sadržaj Poglavlja 1

1.1. Osnovni pojmovi

1.2. Više o strukturama podataka

1.3. Više o algoritmima

SPA-1 STRUKTURE PODATAKA I 12


ALGORITMI
Dijelovi od kojih se grade strukture (1)
• Struktura podataka sastoji se od varijabli u
nekom programu i veza među tim varijablama.
• Dijelovi strukture su varijable, ili točnije mjesta u
memoriji računala gdje se mogu pohraniti
podaci.
• Klijetka (ćelija) . . . varijabla koju promatramo
kao zasebnu cjelinu.
– To je relativan pojam.
– Svaka klijetka ima svoj tip, adresu(ime) i sadržaj
(vrijednost).

SPA-1 STRUKTURE PODATAKA I 13


ALGORITMI
Dijelovi od kojih se grade strukture (2)

• Polje . . . (array u C-u).


– Mehanizam udruživanja manjih dijelova u veće.
– Polje čini više klijetki istog tipa pohranjenih na
uzastopnim adresama.
– Broj klijetki je unaprijed zadan i nepromjenljiv.
– Jedna klijetka se zove element polja i
jednoznačno je određena vrijednošću indeksa.
– Uzimamo da su indeksi 0,1,2, ... , N-1,
gdje je N cjelobrojna konstanta.

SPA-1 STRUKTURE PODATAKA I 14


ALGORITMI
Dijelovi od kojih se grade strukture (3)

• Zapis . . . (struct u C-u).


– Također mehanizam udruživanja manjih dijelova u
veće.
– Zapis čini više klijetki, koje ne moraju biti istog tipa,
no pohranjene su na uzastopnim adresama.
– Broj, redoslijed i tip klijetki je unaprijed zadan i
nepromjenljiv.
– Pojedina klijetka zove se komponenta zapisa i
jednoznačno je određena svojim imenom.

SPA-1 STRUKTURE PODATAKA I 15


ALGORITMI
Dijelovi od kojih se grade strukture (4)
• Pointer
– služi za uspostavljanje veze između dijelova
strukture.
– Pointer je klijetka koja pokazuje neku drugu klijetku.
– Sadržaj pointera je adresa klijetke koju treba
pokazati.
• Kursor
– također služi za uspostavljanje veze između dijelova
strukture.
– Kursor je klijetka tipa int koja pokazuje na element
nekog polja.
– Sadržaj kursora je indeks elementa kojeg treba
pokazati.
SPA-1 STRUKTURE PODATAKA I 16
ALGORITMI
Dijelovi od kojih se grade strukture (5)
• Pravila crtanja dijelova strukture podataka:

SPA-1 STRUKTURE PODATAKA I 17


ALGORITMI
Povezivanje dijelova u cjelinu (1)
• Strukture se grade:
– grupiranjem dijelova u polja ili zapise.
– povezivanjem dijelova pomoću pointera ili kursora.
• Polja i zapisi se mogu kombinirati.
– Možemo imati polje zapisa, zapis čije pojedine
komponente su polja, polje od polja, zapis čija
komponenta je zapis, itd
• Komponente zapisa ili elementi polja mogu biti
pointeri ili kursori.
– Oni pokazuju na neke druge zapise ili polja ili čak
neke druge pointere ili kursore.
• Sve ove konstrukcije mogu se po volji iterirati.
SPA-1 STRUKTURE PODATAKA I 18
ALGORITMI
Povezivanje dijelova u cjelinu (2)
• Primjer složenije strukture podataka:

SPA-1 STRUKTURE PODATAKA I 19


ALGORITMI
Sadržaj Poglavlja 1

1.1. Osnovni pojmovi

1.2. Više o strukturama podataka

1.3. Više o algoritmima

SPA-1 STRUKTURE PODATAKA I 20


ALGORITMI
Zapisivanje algoritama (1)
• Pomoću prirodnog jezika.
– Razumljivo svima.
– Neprecizno, dvoznačno.
• Pomoću pseudo-jezika.
– Preciznije.
– Zahtijeva učenje posebnog pseudo-jezika.
• Pomoću programskog jezika.
– Najpreciznije.
– Pojavljuju se tehnički detalji koji nisu svojstvo
samog algoritma.

SPA-1 STRUKTURE PODATAKA I 21


ALGORITMI
Zapisivanje algoritama (2)
• Razni načini zapisivanja algoritma koji učitava
tri broja i ispisuje najmanji od njih.

SPA-1 22
Naš način zapisivanja algoritama
• Programski jezik C.
– Umjesto algoritama pisat ćemo programe ili
funkcije u C-u koji rade po tim algoritmima.
– Obično će biti riječ o nedovršenom kodu.
– Nevažni detalji bit će namjerno ispušteni.
– Neki nizovi naredbi bit će zamijenjeni slobodnim
tekstom.
– Na taj način zapisi algoritama imat će i sve dobre
osobine pseudo-jezika.
– Pritom će oni još uvijek biti u obliku koji se lako
može dopuniti do izvršivog programa.

SPA-1 STRUKTURE PODATAKA I 23


ALGORITMI
Analiziranje algoritama
• Pod analizom algoritma podrazumijevamo
procjenu vremena izvršavanja tog algoritma.
• Vrijeme poistovjećujemo s brojem operacija
koje odgovarajući program treba obaviti.
• Vrijeme izražavamo kao funkciju T(n), gdje je n
neka mjera za veličinu skupa ulaznih podataka.
– Za algoritam koji sortira niz brojeva vrijeme
izražavamo kao T(n) gdje je n duljina niza brojeva.
– Za algoritam koji invertira matricu vrijeme
izražavamo kao T(n), gdje je n red matrice.

SPA-1 STRUKTURE PODATAKA I 24


ALGORITMI
Vrijeme u najgorem i u prosj slučaju
• Često se događa da T(n) ne ovisi samo o veličini
skupa ulaznih podataka n, nego također i o
vrijednostima tih podataka.
– Npr, algoritam za sortiranje brže sortira niz brojeva koji
je “skoro sortiran”, a sporije niz koji je “jako izmiješan”.
• Tada je T(n) vrijeme u najgorem slučaju.
– Dakle gledamo maksimum za vrijeme izvršavanja po
svim skupovima ulaznih podataka veličine n.
• Gledamo i vrijeme u prosječnom slučaju Tavg(n),
matematičko očekivanje vremena izvršavanja.
– Moramo pretpostaviti distribuciju za razne skupove
ulaznih podataka veličine n (obično uniformna).
SPA-1 STRUKTURE PODATAKA I 25
ALGORITMI
Redovi veličine (1)
• Funkciju T(n) nema smisla precizno određivati,
dovoljno je utvrditi njezin red veličine.
– Za T(n) = 5n2 + 3n - 6 pišemo kraće T(n) = O(n2).
– Vrijeme izvršavanja Gaussovog algoritma za
invertiranje matrice je O(n3).
• Općenito, kažemo da je T(n) = O( f(n)) ako
postoje konstante C i n0 takve da vrijedi:
n ≥ n0  |T(n)| ≤ C| f(n)| .
• Neki često korišteni redovi veličine:
O(1), O(logn), O(n), O(nlogn), O(n2), O(n3), O(2n),
O(n!), ….
SPA-1 STRUKTURE PODATAKA I 26
ALGORITMI
Redovi veličine (2)
• Na osnovi reda veličine možemo ugrubo
utvrditi povećanje T(n) ovisno o povećanju n.
Primjerice:
– Imamo algoritam za sortiranje niza od n brojeva s
vremenom izvršavanja T(n)=O(n2). Ako se duljina
niza udvostruči, vrijeme sortiranja moglo bi se
učetverostručiti.
– Imamo algoritam za invertiranje matrice reda n s
vremenom izvršavanja T(n)=O(n3). Ako se red
matrice udvostruči, njezino invertiranje moglo bi
trajati 8 puta dulje.

SPA-1 STRUKTURE PODATAKA I 27


ALGORITMI
Redovi veličine (3)
• Na osnovi reda veličine također možemo
uspoređivati algoritme koji rješavaju isti
problem. Primjerice:
– Ako imamo dva algoritma za sortiranje niza od n
brojeva, prvi od njih ima vrijeme O(nlogn) a drugi
vrijeme O(n2), tada prvi algoritam smatramo bržim.
– Ako imamo dva algoritma za invertiranje matrice
reda n, prvi od njih ima vrijeme O(n3) a drugi
vrijeme O(n4), tada prvi algoritam smatramo bržim.

• Ovi zaključci vrijede pod pretpostavkom da je


n dovoljno velik.
SPA-1 STRUKTURE PODATAKA I 28
ALGORITMI

You might also like