Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 39

Strukture podataka i algoritmi

Uvod
Adela Crnianin
4.3.2010.g.

Uvod
Algoritmi i strukture podataka predstavljajiu dva
gradivna bloka za implementaciju programskih
sistema
Programi- konkretna realizacija apstraktnih
algoritama primenjenih na specifino
implementiranim strukturama podataka
Strukture podataka i algoritmi su tesno povezani,
pa izbor strukture podataka znaajno utie na
izbor i efikasnost algoritma, i obratno.

Uvod
Termin STRUKTURA PODATAKA se koristi za
opis naina organizacije podataka a
terminALGORITAM za opis naina obrade
podataka
Dakle, struktura podataka predhodi algoritmu jer
prvo treba da postoji objekat nad kojim bi se
neto moglo raditi
Meutim, sloenost strukture podataka i
algoritma nije u direktnoj zavisnosti (postoje
sloeni algoritni sa vrlo prostim strukturama
podataka, i obratno).

O algoritmima
Raunarski algoritam je precizno definisana procedura
realizovana konanim skupom naredbi koje izvravaju
odreeni raunarski zadatak.
Algoritem treba da zadovoljava zahteve:
Najee ima(ali ne obavezno) jednu ili vie ulaznih veliina
Ima bar jednu izlaznu veliinu, rezultat algoritma
Znaenje i funkcija svake naredbe treba da budu jasni i
nedvosmisleni
Algoritam se mora zavriti u konanom vremenu
Svaka naredba mora biti dovoljno prosta da se moe izriti u
konanom vremenu i da se moe realizovati instrukcijama
raunara

O algoritmima - Primer
Problem ureivanja po veliini ili sortiranja
neureenog niza rezliitih celih brojeva zahteva
primenu odreenog algoritma.
Npr. Ulaz predstavlja neureen niz(15 7 49 33 28)
Ako primenimo algoritam gde u poetku itav niz
predstavlja neureeni deo a ureeni deo je prazan
U svakom koraku se iz neureenog dela uzme
najmanja vrednost i premesti na kraj ureenog dela
niza
Algoritam se zavrava u onoliko koraka koliko ima
brojeva u nizu
Nalazenje najmanjeg broja u pojedinom koraku se
jednostavno realizuje operacijom poreenja

O algoritmina
Algoritam ima deterministiko ponaanje ako
se u istim uslovima ponaa na isti, predvidljiv
nain i daje isti, oekivani rezultat
Algoritam je korektan ako za svaku
kombinaciju ulaznih veliina proizvodi ispravan,
oekivani skup izlaznih veliina
Nekorektni algoritmi, nedeterministiki (npr
koriste sluajne brojeve) ili se ne izvravaju u
konnom vremenu se nekad nazivaju
pseudoalgoritmima.

O algoritmina
Algoritam predstavlja metod za reavanje
problema pogodan za raunarsku
implementaciju i nezavisan je od raunara na
kojem e se izvravati
Neki raunarski algoritmi koriste metode
razvijene i pre pojave samih raunara
Ipak, veliki broj algoritama je novijeg porekla,
pogotovu oni koji rade sa ogromnim brojem
podataka

Konvencije pseudojezika
Specifikacija algoritma moe da bude izraena
na razliite naine:
Opisivanjem reenicama prirodnog jezika
U grafikoj formi dijagrama toka
U nekom programskom jeziku

Koristiemo pseudojezik blizak programskom


jeziku Pascal

Konvencije pseudojezika
Pseudojezik karakterisu sledee konvencije:
Uobiajene kontrolne stukture ciklusa (while, repaet i
for), osnovne selekcije if, viestruke selekcije case,
beskonana petlja loop
Telo kontrolne strukture je identirano a kraj kontolne
struktre je oznaen izvodnom rei(end + ime stukture),
npr. end_while, end_if,...
Obina dodela vrednosti a=e, viestruka dodela
vrednosti a=b=e vrednost e se dodeljuje
istovremeno promenljivima a i b
Naredba razmene vrednosti dve promenljive a<->b, tj.
temp=a, a =b, b=temp

Konvencije pseudojezika
Promenljive su najee lokalne za datu funkciju ili
proceduru osim ako se eksplicitno ne naglasi da su
globalne.
Selekcija elemenata niza, navoenjem indeksa u
uglastim zagradama iza naziva niza A[i]. A[1j]
oznaave elemente A[1], A[2] A[j].
Pristup polju zapisa ukazanog pokazivaem se vri
navoenjem imena polja iza kojeg ide ime pokazivaa
u malim zagradama. Npr. Ako jedan objekat ima
poklja x i z, a na njega ukazuje pokaziva p, ovim
poljima se pristupa sa x(p) i y(p)

Konvencije pseudojezika
Pristpup polju zapisa zadatog imenom se
ostvaruje navoenjem imena zapisa i take iza
ega ide ime polja. Npr. polje x zapisa z se
referencira kao z.x
Mehanizam prenosa parametara u potpunosti je
po vrednosti i po referenci
Rekurzija je dozvoljena
Velikim slovima su oznaeni pozivi ranije
definisanih ili pretpostavljenih funkcija ili
procedura (npr. ERROR, INPUT, itd.)

Analiza algoritama
Veoma esto postoji vie algoritama kojima se moe
reiti dati problem.
Npr. za sortiranje podataka postoji vie desetina
razliitih algoritama. Tada treba postaviti kriterijume za
izbor odreenog algoritma.
Jednim od primarnih kriterijuma se smatra efikasnost
ili performanse algoritma
Efikasnost se obino meri potronjom raunarskih
resursa pri izvravanju programa (dva osnovna ra.
resursa: vreme i prostor)
Obzirom kako se tehnologija memorija stalno
unapreuje, vreme izvravanja se pojavljuje kao
glavni kriterijum performansi algoritma.

Analiza algoritama- vreme izvravanja


Vreme izvravanja zavisi od sledeih faktora:
Skupa mainskih instrukcija raunara na kojem
se algoritam izvrava i vremena njihovog
trajanja u ciklusima (parametri arhitekture i
organizacije) kao i trajanja jednog ciklusa
(tehnoloki parametar)
Kvaliteta mainskog koda generisanog od
strane prevodioca
Ulaznih podataka
Inherentne vremenske sloenosti algoritma

Analiza algoritama- vreme izvravanja

Sloenost algoritama
Aloritmi se mogu svrstati u sledee grupe po rastuoj
sloenosti:
O(1)- konstanti algoritmi ija sloenost ne zavisi od

ulaznih podataka su najpoeljniji algoritmi, ali su najrei.


Umetanje na poetak ulanane liste se izvodi u konstantnom
vremenu bez obzira na broj elemenata liste

O(log n)- logaritamski algoritmi su takoe veoma

poeljni zbog vrlo sporog porasta logaritamske funkcije.


Osnova algoritma menje sloenost samo za konstantan faktor.
Primer algoritma logaritamske sloenosti je binarno
pretrazivanje ureenog niza

O(n)- linearni algoritmi imaju optu formu ciklusa koji se


izvrava n puta i karakteristini su za probleme koji obrauju
sve ulazne podatke. Npr. Sekvencionalno pretrazivanje
neureenog niza

Sloenost algoritama
O(n log n)- linearno logaritamski algoritmi su esta
klasa algoritama koji su zasnovani na binarnom
odluivanju, polovljenju problema, gde se ipak
obrauju svi podaci
O(n)- kvadratni algoritmi obino imaju formu dve
ugnjedene petlje dimenzije n. Npr. Direktni metodi
sortiranja imaju kvadratnu sloenost
O(nk)- stepeni algoritmi imaju optu formu oblika k
ugnjedenih petlji dimenzije n i odlikuje ih znaajan
porast sloenosti za veliko n
O(kn)- gde je k>1 - eskponencijalni algoritmi su
nepogodni za raunsko reavanje za probelme veih
dimenzija zbog izuzetno brzog porasta
eksponencijalne funkcije.

Implementacija algoritama
Pri projektovanju ili izboru algoritma treba voditi
rauna o njegovoj implementaciji jer ona moe
dosta da utie na efikasnost.
Implementacija algoritma je zavisna od
programskog jezika i maine na kojoj se
algoritam izvrava
Detalji implementacije pogotovu utiu na
konstantni faktor sloenosti i lanove nieg reda
koji ne odreuju dominantno sloenost ali mogu
mnogo da utiu na vreme izvravanja
Zato je vano teiti optimizovanoj
implementaciji

Implementacija algoritama
Optimizacija je posebno vana ako se algoritam
izvrava veliki broj puta ili ima izuzetno veliku
dimenziju.
Tada se sloeni programerski napor svakako
vraa kroz smanjenu cenu izvravanja
Za algoritme koji se retko izvravaju ne vredi
ulagati veliki napor na perfektnu optimizaciju jer
se ne isplati u tim sluajevima je vanija
lakoa razumevanja, kodiranja i testiranja.

Implementacija algoritama
Pri izboru algoritma za sortiranje ne treba voditi
rauna samo o njegovoj optoj sloenosti nego
i o tipinim uslovima u kojima e se on
izvravati
Ni algoritam sa najboljom sloenou obino
nije superioran u svim uslovima pa moe u
nekom specifinom sluaju imati slabije
performanse od generalno loijeg algoritma

Implementacija algoritama
Na kraju treba obratiti panju i na prostornu sloenost
algoritma
Prostorna sloenost se ogleda u memorijskom
prostoru koji algoritam zahteva pri izvravanju.
Iako je aspekt prostorne sloenosti obino manje
vaan nego vremenska sloenost, poeljnijji su
algoritmi koji troe manje prostora
est je sluaj da je zahtevi za manjom vremenskom i
prostornom sloenou kontradiktorni i da se utede u
vremenu postiu na raun poveanog korienja
prostora, i obrnuto.

O strukturama podataka
Usvajanje struktura podataka je jedna od
najvanijih projektnih odluka pri razvoju nekog
programskog sistema
Struktura podataka je usko povezana sa
operacijama koje nad podacima treba izvravati
Od naina modeliranja objekata problema
stukturama podataka i usvojenog naina
njihove reprezentacije u memoriji veoma zavisi
preciznost, razumljivost, efikasnost izvravanja
programa, kao i potrebni memorijski prostor.

O strukturama podataka
Iako je termin struktura podataka intuitivno
prilino jasan, retko se daje njegova precizna
formalna definicija.
Termini tip podataka, apstraktni tip podataka
i struktura podataka se dosta esto koriste
kao sinonimi, mada im se znaenje donekle
razlikuju

O strukturama podataka
Tip podataka
Tip podataka u programskom jeziku se
obino vezuje za skup vreddnosti koje neki
entitet (promenljiva, konstanta, vraena
vrednost funkcije..) moe da ima
Npr. Logiki tip podataka (true i false)
Za tip podataka su usko vezani i
dozvoljeni operatori
Operatori obino zahtevaju da njihovi
operandi budu samo odreenih tipova

O strukturama podataka
Tip podataka - Elementarni
Elementarni ili primitivni tipovi su oni iji
objekti imaju atomsku prirodu i ne mogu
se razbiti na prostije celine
Takvi tipovi se javljaju kao standardni,
ugraeni tipovi programskog jezika (npr.
logiki, znakovni, celobrojni, realni itd.)
Ovi tipovi su direktno hardverski podrani
operacije sa njima odgovaraju
mainskim instrukcijama samog procesora

O strukturama podataka
Tip podataka - apstraktni
Apstraktni tip podataka ide jo dalje u smeru
poveanja stepena apstrakcije predstavljanja i
obrade podataka.
Pod apstraktnim tipom podataka se
podrazumeva matematiki model sa skupom
operacija koje korisnik na tom modelu definie
Specifikacija apstraktnog tipa podataka se
sastoji iz dva dela: definicije vrednosti i
definicije operacija

O strukturama podataka
Tip podataka
Zapis je konaan skup elemenata koji mogu biti razliitog
tipa a tretiraju se kao jedna celina.
Za razliku od niza, koji je homogena struktura, zapis je u
optem sluaju nehomogena struktura
Elementi zapisa se nazivaju polja i imaju svoja imena
preko kojih im se moe pojedinano pristupati
Polja u zapisu obino ine jednu logiku celinu
Npr. u nekoj aplikaciji za opis automobila potebna su tri
atributa: marka, god. proizvodnje i snaga motora
Definiemo korisniki tip zapisa auto sa poljima marka,
godina i snaga. Svaki kasnije stvoreni objekat ovog tipa
(npr, a1) ima ova tri polja

O strukturama podataka
Tip podataka
Pored toga sto su elementi zapisa logiki
povezani, oni i fiziki predstavljaju jednu
celinu, jer se zapis obino alocira u
kontinualnom prostoru tako to se polja
reaju jedno za drugim

Klasifikacija struktura podataka


Osnovna podela stuktura je po kreiterijumu
meusobnih relacija i veze elemenata u
stukturi.
Linearna struktura je ona kod koje je jedan
elemenat strukture u relaciji samo sa dva druga
elementa strukture (predhodnikom i
sledbenikom)
Nelinearna stuktura je ona kod koje su
meusobni odnosi izmeu elemenata sloeniji,
pa jedan elemenat moe biti u vezi sa vie
drugih elemenata stukture

Klasifikacija struktura podataka


Drugi kriterijum klasifikacije struktura podataka
je mogunost pomene veliine strukture pri
izvravanju.
Po ovom kriterijumu se strukture dele na
statike i dinamike
Statike strukture imaju fiksnu veliinu koja se
odreuje pri prevoenju
Dinamike stukture, za razliku od statikih,
mogu da se poveavaju i smanjuju u vreme
izvravanja saglasno potrebama za umetanjem
novih elemenata ili brisanjem postojeih

Klasifikacija struktura podataka


Strukture podataka koje se uvaju na
spoljanjim memorijama nazivaju se
datotekama
Osnovni element datoteke je najee zapis
Fizika ureenost zapisa u datoteci i skup
operacija za pristup zapisima odreuje nain
organizacije datoteke.
U zavisnosti od naina organizacije razlikuju se:
sekvencijalne datoteke, relativne datoteke,
indeksno-sekvencijalne datoteke i datoteke sa
vie kljueva

Memorijska reprezentacija
struktura podataka
Pored specifikacije logike organizacije strukture
podataka kroz definiciju sastvnih delova i veza izmeu
njih, potrebno je i definisati fiziku implementaciju
strukture podataka u memoriji
Reprezentacija strukture podataka u memoriji se
naziva memorijskom stukturom
Na osnovu fizikog i logikog rasporeda elemenata
stukture u memoriji, mogu se razlikovati 2 osnovna
naina predstavljanja:
Sekvencijalna(sukcesivna, poziciona, kontinualna)
reprezentacija
Ulanana(spegnuta, nekontinualna) reprezentacija

Memorijska reprezentacija
struktura podataka

Kod sekvencijane reprezentacije elementi


strukture se smetaju jedan za drugim u
jednom kontinualnom prostoru, tako da su
fiziki i logiki porefak elemenata isti
Jedan elemenat se, zavisno od svoje veliine,
moe smetati u jednu memorijsku lokaciju ili
vie uzastopnih lokacija.
Elementi ovakve reprezentacije mogu biti
a) Istog tipa i veliine
b) Razliitoh tipa i veliine

Memorijska reprezentacija
struktura podataka

Sekvencijalna reprezentacija a) homogene b)


nehomogene strukture

Memorijska reprezentacija
struktura podataka
Kod ulanane reprezentacije elementi su rasporeeni
u nekontinualnom prostoru, na proizvoljnim mestima u
memoriji, a njohov fiziki poredak nema nikakve veze
sa logikim poretkom
Logiko susedstvo ovde ne moe biti izraeno
pozicijom elementa kako u sukcesivnoj reprezentaciji
Za tu svrhu sluzi pokazivaki tip elementarni tip iji
skup vrednosti sadri memorijske adrese
Znai, pokazivai su promenljive koje sadre adrese
drugih promenljivih u memoriji

Memorijska reprezentacija
struktura podataka
Pored korisnog informacionog sadraja, svaki element
strukture ukljuuje i jedan ili vie pokazivaa koji
sadre adrese njegovih logikih suseda, formirajui
tako jedan zapis
Npr. u dvostuko ulananoj listi svaki elemenat ima dva
pokazivaa(na predhodnika i sledbenika u listi)

Memorijska reprezentacija
struktura podataka
Povezivanje pomou pokazivaa je veoma
pogodno za realizaciju dinamikih struktura
Ulanana reprezentacija se obino koristi za
implementaciju nelinearnih struktura, ali se
primenjuje i za linearne stukture sa
promenljivim brojem elemenata

Memorijska reprezentacija struktura podataka


(Poreenje sekvencijalne i ulanane reprez.)
Pokazuje se da i ulanana i sekvencijalna
reprezentacija u pogledu iskorienja prostora i brzine
pristupa imaju svoje prednosti i nedostatke
Iako elementi u ulananoj reprezentaciji zahtevaju
dodatni prostor za pokazivae, ovako se bolje koristi
prostor zbog dinamike alokacije i dealokacije
Glavni nedostatak ulanane reprezentacije je
posredan pristup elementima preko lanca pokazivaca,
sto uslovljava sporije i nedeterministiko vreme
pristupa u poreenju sa direktnim pristupom u
fiksnom vremenu kod sekvencijalne reprezentacije

Memorijska reprezentacija struktura podataka


(Poreenje sekvencijalne i ulanane reprez.)
Mogue je da razliite strukture podataka imaju
istu memorijsku strukturu (npr. stek i red mogu
da se realizuju u vidu niza)
S druge strane, jedna struktura moe da ima
vie razliitih memorijskih struktura
U ovom sluaju se izbor optimalne memorijske
strukture zasniva na kriterijumu iskorienja
prostora ili na efikasnoj podrci operacija koje
se pojavljuju sa najveom verovatnoom

Operacije sa strukturama podataka


Kreiranje
Unitavanje
Pristup pojedinim elementima radi itanja ili
upisa
Obilazak svih elemenata
Pretraivanje radi pronalaenja datog sadraja
Umetanje novog elementa
Brisanje postojeeg elementa
Spajanje dve stukture
Itd.

You might also like