You are on page 1of 27

ALGORITMI I STRUKTURE

PODATAKA
-U v o d

Prof. Duan Starevi


Literatura
Dejan ivkovi, Osnove dizajna i analize
algoritama, CET, Beograd, 2007
Sinia Nekovi, Strukture podataka i
algoritmi, FON Beograd, 2006, skripta
Robert Manger, Miljenko Marui,
Strukture podataka i algoritmi, PMF
Zagreb, skripta
ppt prezentacije D. Kalpia i kolega sa
FER-a, Zagreb
Algoritmi
Koreni algoritma: Abu Ja'far Mohammed ibn Musa al
Khowarizmi

Muhamed, otac Jafarov, sin Muse iz Khwarizma
roen u Khwarizmu, danas Khiva, Uzbekistan, oko 780. g.
umro u Bagdadu, oko 850. godine.
jedan od 10 najcjenjenijih matematiara svih vremena

Muhamed, otac Jafarov, sin Muse iz Khwarizma
roen u Khwarizmu, danas Khiva, Uzbekistan, oko 780.
g.
umro u Bagdadu, oko 850. godine.
jedan od 10 najcenjenijih matematiara svih vremena
Doprinosi al Khowarizmi-ja
potie korienje hindu, odnosno arapskih brojeva
uvodi nulu
u Bagdadu oko 825. godine napisao knjigu Hidab al-jabr w'al-
muqubala

Znanost o prenoenju i ponitenju
jabr - prenoenje na suprotnu
stranu jednadbe
x - 2 = 12 x = 12 + 2
muqubala - ponitenje jednakih izraza s lijeve i desne strane jednadbe
x+y=y+7x=7
al-jabr -> algebra
nematematiki (maursko porijeklo):
algebrista namjeta kostiju
Doprinosi al Khowarizmi-ja
verovao da se bilo koji matematiki problem moe
ralaniti na korake, tj. niz pravila
u latinskom prevodu knjige (12. vek) ispred svakog
pravila pie
Dixit Algorizmi - rekao je Al Kowarzimi

algoritam glasi
u poetku algoritmom se nazivaju samo pravila
raunanja s brojevima, kasnije i pravila obavljanja ostalih
zadataka u matematici
u XX veku, pojavom raunara, pojam se proiruje na
raunarstvo, a zatim i na druga podruja
pravila za postizanje eljenog rezultata
ta je algoritam?
precizno opisuje nain reavanja nekog problema
jednoznano odreuje to treba napraviti
moraju biti definisani poetni objekti koji pripadaju nekoj
klasi objekata na kojima se obavljaju operacije
kao ishod algoritma pojave se zavrni objekti ili
rezultati
konani broj koraka; svaki korak opisan naredbom ili
instrukcijom
obavljanje je algoritamski proces
upotrebljiv, ako se rezultat dobije u konanom vremenu
Primeri nedoputenih naredbi:
izraunaj 5/0
uveaj x za 6 ili 7
Jo o algoritmu!
algoritam mora biti efektivan ili delotvoran:
u konanom vremenu moe se dobiti traeni rezultat koristei olovku i
papir.
primeri:
sabiranje celih brojeva je efektivno
rad sa realnim brojeva nije, moe se pojaviti broj s beskonano mnogo
cifara
uz razumevanje problema kojeg reava i sa znanjem programiranja, student
moe napisati efektivan algoritam
cilj ovog predmeta je nauiti kako se oblikuje i programira efektivan
algoritam.
razlika izmeu znaenja rei efektivan (delotvoran) i efikasan
efektivan = ono to smo dobili sadri sve to smo traili
efikasan = uspean s obzirom na utroene resurse - vrijeme, procesor,
disk, memoriju)
mnoenje se moe svesti na ponavljanje zbrajanja efektivno, ali nije efikasno!
Procedura
procedura je postupak koji ima sva svojstva kao i
algoritam, ali koji se ne mora zavriti u konanom broju
koraka
primer: nai zbir svih prirodnih brojeva
primeri procedura:
Procedura
operativni sistem raunara Algoritam
editor teksta
vreme izvoenja mora biti "razumno"
primer:
algoritam koji bi izabirao potez igraa aha tako to bi ispitao
sve mogue posledice tog poteza, zahtevao bi milijarde godina
rada i na najbrem zamislivom raunaru
Algoritmi i programi
Niklaus Wirth: Program = Algoritam + Strukture podataka
Program - opis algoritma koji u nekom programskom jeziku
jednoznano odreuje to raunar treba napraviti
Programiranje proces prevoenja opteg reenja problema u
raunarski itljiv oblik
kako osmisliti algoritam?
kako strukturirati podatke?
kako formalno specificirati algoritam?
kako verifikovati algoritam?
kako analizirati algoritam?
kako proveriti napisani program?
Postupci izrade algoritama nisu jednoznani. Trae kreativnost!
Donald Knuth: Art of Programming
Za opis algoritama koristiemo pseudokod
Opti postupak reavanja
problema
Verbalni Matematiki model Programski model

Neformalno opisan Formalno specificirano Konkretna


proces reavanja reenje problema implementacija formalno
problema posredstvom posredstvom specificiranog reenja
prirodnog jezika matematikog jezika problema posredstvom
(pseudojezika) programskog jezika

Slobodan tekst Algoritam Programski kod


Reenica definie Operacija nad Kod operacije i
predmet rada i vrstu apstraktnim tipovima programske strukture
radnje podataka podataka
Osnovni pojmovi
Apstraktna struktura podataka (ASP, eng. ADT)
matematiki model, specifikacija, skupa objekata
zajedno sa skupom operacija koje su definisane u tom
modelu
Struktura podataka
implementacija apstraktne strukture podataka u nekom
programskom jeziku
Implementacija obuhvata i pitanja predstavljanja
konkretnog podataka u memoriji raunara
Tip podataka
oznaava pripadnost nekog podataka, kao ureenog skupa
vrednosti, odreenoj apstraktnoj strukturi podataka, ali u praksi i
njenoj implementaciji odnosno programskoj strukturi podataka
Specifikacija i implementacija
Za isti apstraktni tip podataka obino se moe smisliti
vie razliitih implementacija koje se razlikuju po tome
to koriste razliite strukture podataka za prikaz
podataka, odnosno razliite algoritme za izvravanje
operacija
Specifinosti implementacije u proceduralno
orijentisanim jezicima i objektno orijentisanim jezicima
u proceduralno orijentisanom jeziku podatak kao objekat je
vidljiv spolja i programer je odgovoran za pravilnu upotrebu
odgovarajueg koda operacije,
u objektno orijentisanom jeziku podatak je enkapsuliran
(zaauren) i programer samo bira neku od unapred dozvoljenih
operacija (metoda) za rad sa podatkom
Primitivni tipovi podataka
Apstraktne strukture podataka su generalizacija
primitivnih struktura podataka, a apstraktne procedure
generalizacija primitivnih operacija
Primitivni tipovi podataka
prirodni brojevi,
celi brojevi,
realni brojevi
Primitivne operacije
sabiranje,
oduzimanje,
mnoenje
....
Tipovi podataka
Tip podataka u proceduralnom jeziku odreuje domen
definisanosti kao skup moguih vrednosti podatka
Operandi i rezultati moguih operacija su podaci
odreenih tipova

Primer: podatak tipa int moe uzeti vrednost samo iz


skupa celih brojeva.

U praksi:

Apstraktna struktura podataka je koncept u domenu


analize problema, dok je struktura podataka koncept u
domenu programiranja
Program = Algoritam +
Strukture podataka
Struktura podataka
skup varijabli u nekom programu i veza meu tim
varijablama
Algoritam
konani niz naredbi, od kojih svaka ima jasno
znaenje i moe biti izvrena u konanom vremenu
iste naredbe mogu se ponavljati bilo eksplicitnim
navoenjem ili korienjem odgovarajuih naredbi za
ponavljanje
Vaan uslov !
za bilo koje vrednosti ulaznih podataka algoritam
mora da zavri rad nakon konanog broja koraka
Elementi od kojih se grade
strukture podataka
Strukture podataka reprezentuju razliite tipove podataka u
radnoj memoriji raunara
Strukture podataka mogu biti razliite sloenosti
Strukture podataka se mogu meusobno povezivati, tako to
se manje celine udruuju u vee
Strukture podataka se meusobno povezuju vezama
Elementi od kojih se grade strukture podataka:
elija,
Polje,
Slog,
Pointer (pokaziva),
Kursor.
Strukture podataka se grafiki prikazuju dijagramima
elija
Struktura podataka koji promatramo kao zasebnu celinu,
varijabla
Podatak, pa time i pripadajua elija podatka, je
odreenog tipa
Zasebna celina je relativan pojam,
neto se u jednom trenutku moe smatrati elijom, a
kasnije se moe gledati unutranja grada te iste celine
Svaka elija ima svoj tip i adresu

Grafiki prikaz elije:


Polje
Vid mehanizma za udruivanje manjih delova strukture podataka u
vee
Polje ini vie elija podataka istog tipa postavljenih na susednim
memorijskim adresama
Broj elija je unapred zadat i nepromjenljiv
Jedna elija se zove element polja i jednoznano je odreena
pripadnom vrijednou indeksa
Po ugledu na programski jezik C, uzimamo da su indeksi 0, 1, 2, ... ,
N-1, gdje je N celobrojna konstanta.

Grafiki prikaz polja:


Slog ili zapis
Mehanizam za objedinjavanje jednostavnijih struktura podataka
Slog sadri vie elija, istog ili razliitog tipa, koje su zapisane na
susednim memorijskim lokacijama
Broj, redosled i tip elija je unaprijed zadan i nepromjenljiv
Pojedina elija se zove komponenta zapisa
Polja i zapisi se mogu kombinirati
Na primer: polje zapisa, zapis ije pojedine komponente su polja,
polje od polja, zapis ija komponenta je zapis, i slino.

Grafiki prikaz sloga:


Pointer ili pokaziva
Slui za uspostavljanje veze izmeu delova strukture
Pointer je posebna elija koja pokazuje na neku drugu
eliju
Sadraj pointera je adresa elije koju treba pokazati

Grafiki prikaz pokazivaa:


Kursor
Takoer slui za uspostavljanje veze izmedu delova
strukture
Kursor je elija tipa int, celobrojna veliina, koja pokazuje
na element nekog polja
Sadraj kursora je indeks elementa kojeg treba pokazati

Grafiki prikaz kursora:


Primer strukture podataka
Niz slogova povezanih pomou pointera sa jo
jednim poljem slogova
Slogovi su meusobno povezani i kursorima
Primer : Apstraktni tip podataka
COMPLEX
scalar - bilo koji tip za koji su definisane operacije
sabiranja i mnoenja

complex - podaci ovog tipa su ureeni parovi podataka


tipa scalar

operacija ADD(z1,z2,&z3) za zadate varijable z1,z2 tipa


complex rauna njihov zbir z3, takoer tipa complex

Dakle, za z1 oblika (x1,y1), z2 oblika (x2,y2), dobiva se


z3 oblika (x3,y3), tako da bude x3=x1+x2, y3=y1+y2
Primer : Apstraktni tip podataka
COMPLEX
operacija MULT(z1,z2,&z3) - za zadate z1,z2 tipa
complex rauna njihov umnoak z3, takoer tipa
complex

Dakle, za z1 oblika (x1,y1), z2 oblika (x2,y2), dobiva se


z3 oblika (x3,y3), takav da je x3=x1*x2-y1*y2,
y3=x1*y2+y1*x2
Primer : Apstraktni tip podataka
COMPLEX
Specifikacija: struktura podataka pogodna za prikaz
kompleksnog broja bila bi formalno u programskom
jeziku C specificirana kao tip complex:

typedef struct {
scalar re;
scalar im;
} COMPLEX;

Grafiki prikaz strukture podataka:


Primer : Apstraktni tip podataka
COMPLEX
Kompletna implementacija apstraktnog tipa podataka
COMPLEX se sastoji od prethodne definicije tipa
podataka COMPLEX
typedef struct {
scalar re;
scalar im;
} COMPLEX;
kao i od implementacija operacija nad podacima tipa
COMPLEX u formi funkcija oblika:
void ADD (COMPLEX z1, COMPLEX z2, COMPLEX *z3)
{...}
void MULT (COMPLEX z1, COMPLEX z2, COMPLEX
*z3) {...}
ALGORITMI I STRUKTURE
PODATAKA
-U v o d

Prof. Duan Starevi

You might also like