Professional Documents
Culture Documents
1.strukture Podataka I Algoritmi Uvod
1.strukture Podataka I Algoritmi Uvod
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
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.
Sloenost algoritama
Aloritmi se mogu svrstati u sledee grupe po rastuoj
sloenosti:
O(1)- konstanti algoritmi ija sloenost ne zavisi od
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
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
Memorijska reprezentacija
struktura podataka
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