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