20
SVEUČILIŠTE/UNIVERZITET „VITEZ“ TRAVNIK FAKULTET POSLOVNE INFORMATIKE STUDIJ I CIKLUSA ; GODINA STUDIJA: I CIKLUS ; I GODINA SMJER: INFORMACIJSKE TEHNOLOGIJE SEMINARSKI RAD

SEMINARSKI-RAD-STRUKTURE-PODATAKA-I-ALGORITMI1

Embed Size (px)

DESCRIPTION

strukture podataka i algoritmi

Citation preview

SVEUILITE/UNIVERZITET VITEZ TRAVNIKFAKULTET POSLOVNE INFORMATIKESTUDIJ I CIKLUSA ; GODINA STUDIJA: I CIKLUS ; I GODINASMJER: INFORMACIJSKE TEHNOLOGIJE

SEMINARSKI RAD

Travnik, Januar, 2014. god.

13

SVEUILITE/UNIVERZITET VITEZ VITEZFAKULTET POSLOVNE INFORMATIKESTUDIJ I CIKLUSA ;GODINA STUDIJA: I CIKLUS ; I GODINASMJER: INFORMACIJSKE TEHNOLOGIJE

STRUKTURE PODATAKA I ALGORITMISEMINARSKI RAD

Izjava: Ja Tarik dralovi student Sveuilita/Univerziteta Vitez Vitez, Indeks broj: 0207-13/RIT odgovorno i uz moralnu i akademsku odgovornost izjavljujem da sam ovaj rad izradio potpuno samostalno uz koritenje citirane literature i pomo profesora odnosno asistenata.

Potpis studenta: _________________________

STUDENT: Tarik draloviPREDMET: Strukture podataka i algoritmiPROFESOR: prof. dr. Lazo RoljiASISTENT: mr.sci. Kenan Bradi

SADRAJ

1.UVOD21.1.PROBLEM, PREDMET I OBJEKT ISTRAIVANJA21.2.SVRHA I CILJEVI ISTRAIVANJA31.3.RADNA HIPOTEZA I POMONE HIPOTEZE31.4. ZNANSTVENE METODE31.5. STRUKTURA RADA32.KLASIFIKACIJA ALGORITAMA42.1. PREMA PROJEKTOVANJU ILI PRIMJENJENOM OBRASCU42.2. PREMA NAINU IMPLEMENTACIJE113.ZAKLJUAK12LITERATURA13

1. UVOD1.1. PROBLEM, PREDMET I OBJEKT ISTRAIVANJA

Tema ovog seminarskog rada je Klasifikacija algoritama i ima zadatak da pokae uobiajeno koritenje obrasce klasifikacije.Kroz neeke primjere pokazat emo da su algoritmi niz precizni uputa koje korak po korak vode do rijeenja odreenog problema.Zapravo to su precizne upute da za njivoho izvravanje nije potrebna inteligencija.Izrada algoritma u programiranju se predhodi samom pisanju programa.Kad pisemo program,prvo mora biti jasno ta se od tog programa oekuje, isto kao kod rijeavanja zadataka u bilo kojem podruju, prvo moramo znati postavit problem i onda nai nain za rijeavanje tog problema.Ako dobro napravimo algoritam tada pisanje samog programa nije nita drugo neko prepisivanje algoritma u odreeni programski jezik. Kada to uinimo, dobije se dobar program, a on govori raunaru da radi ono to mi elimo I to smo definisali u program.1.2. SVRHA I CILJEVI ISTRAIVANJA

Osnovni cilj ovog seminarskog rada jeste da pokae uobiajeno koritenje obrasce klasifikacije.1.3. RADNA HIPOTEZA I POMONE HIPOTEZE

Na temelju problema i predmeta istraivanja postavljam glavnu radnu hipotezu:HIPOTEZA: Klasifikacija algoritama je metoda razvrstavanja algoritama, koja kroz razliite pristupe nekom problemu doprinosi adekvatnom i uinkovitom rjeavanju postavljenog problema.1.4. ZNANSTVENE METODE

U ovom radu koristiti e se vie strunih i znanstvenih metoda kao to su: Induktivna metoda Deduktivna metoda Metoda analize i sinteze Metoda klasifikacije

1.5. STRUKTURA RADA

Struktura rada je usklaena sa Uputstvom za pisanje seminarskog rada na prvom ciklusu studija kao I temi seminarskog rada. On sadri poglavlja:Prvo poglavlje Uvod sadri Problem,predmet i objekt istraivanja Svrha i ciljevi istraivanja Radna hipoteza i pomone hipoteze Znanstvene metode Struktura rada

2. KLASIFIKACIJA ALGORITAMA

Na osnovu iskustva, ljudi su identificirali nekoliko openitih tehnika, metoda, strategija..za oblikovanje algoritama.Ima vise naina za razvrstavanje algoritama, a metoda klasifikacije je tema mnogih rasprava.Algoritme moemo klasificirati po kriterijima:1. Prema projektovanju ili primjenjenom obrascu2. Prema nainu implementacije

2.1. PREMA PROJEKTOVANJU ILI PRIMJENJENOM OBRASCU

Ovaj nain razvrstavanja je po metodologiji projektovanja ili primijenjenom obrascu. Imamo izvijestan broj razliitih obrazaca kako se pristupa samoj realizaciji algoritma.Svaka od sljedeih navedenih kategorija sadri vise razliitih tipova algoritamaNeki od obrazaca su:1. Podijeli pa vladaj2. Pohlepni algoritam3. Dinamiko programiranje 4. Pretraga I numeracija5. Linearno programiranje6. Heuristiki algoritmi I algorimi sluajnostiPodijeli pa vladaj je moda najprimjenjivija strategija za oblikovanje algoritama.Sastoji se u tome da zadani problem razbijemo u nekoliko manjih problema tako da bi se rijeenje polaznog problema moe relativno lagano konstruisat iz rijeenja manjih problema.Dobiveni algoritam e biti rekurzivan to jest svaki od manjih problema se dalje rijeava na isti nain, to jest razbije se u jo manje probleme.U narednom dijelu imamo primjere algoritma oblikovanih u skladu metode podjeli pa vladajPrimjer:Sortiranje saimanjem(merge sort)Algoritam merge sort moemo protumaiti na sljedei nain1. to je lista dulja, tee emo je sortirati, zato polaznu listu razbijamo na dvije manje I svaka od tih manjih listi e biti sortirana zasebno2. Velika sortirana lista se dobije relativno jednostano, saimanjem malih sortirani lista

(1, 3, 4)(1, 3, 3, 4, 5, 7)(1, 4, 3) sort(5, 3, 7, 1, 4, 3) divide(3, 5, 7) merge

Pohlepni algoritamje slian dinamikom programiranju, ali razlika je u tome to rijeenje problema ne mora biti poznata u svakom trenutku. Pa zato pri tom traenju rijeenja mogue je napraviti I lagani izbor onoga to izgleda najbolje u tom trenutku.

Primjer:Vraanje kusura kupcuProdava u trgovini treba da kupcu vrati 62 KM.Na raspolaganju ima novanice od 50, 20,10,5 ,1 KM. Instinktivno postupit e tako da vrati 1x50, 1x10 ,2x1 KM. Ne samo da je vratio taan iznos nego je I izabrao najkrau moguu listu novanica.Algoritam koji je koristio (nesvjesno) je bio da odabere najvei apoen koji ne prelazi 62 KM a to je 50 KM, stavlja ga u listu za vraanje I vraenu vrijednost odbije od 62 KM tako da dobije 12 KM, zatim bira najvei apoen koji ne prelazi 12 KM to je 10 KM I dodaje ga na listuOvaj algoritam je primjer pohlepnog pristupa, rijeenje problema se konstruie u nizu faza.U svakom koraku biramo mogunost koja je optimalna u nekom smislu I na taj nain je tee doi do globalno optimalnog ukupnog rijeenja.Ovaj algoritam je funkcionisao samo zahvaljujui specijalnim svojstvima raspoloivih apoena.Dinamiko programiranjeMetoda podjeli pa vladaj je put koji rezultira neefikasnim algoritmom. Deava se da se broj problema koje trebamo rijeiti raste eksponencijalno s veliinom zadanog problema.Ukupan broj razliitih potproblema moda I nije tako velik , vec jedan te isti problem se pojavljuje na mnogo mjesta pa ga uvijek iznova rijeavamo.U tim situacijama se preporuuje dinamiko programiranje, ova metoda zahtjeva da se svi problem rijee redom, tada ga ne raunamo ponovo ve samo proitamo iz tabele.Naziv dinamiko programiranje potjee iz teorije upravljanja I danas je izgubio svoj prvobitni smisao.Razlika od algoritama tipa podjeli pa vladaj koji idu s vrha prema dole ,algoritmi dinamikog programiranja idu s dna prema gore.Prvo se u tabelu onose rijeenja za problem najmanje veliine a zatim rijeenja za vee probleme ,sve dok ne dosegnemo veliinu zadanog problema.Vrlo je vaan redosljed ispunjavanja tabele.Postupak ovog programiranja zahtjeva da rijeimo neke potprobleme koji nam na kraju nee biti potrebni za rijeenje problema.Primjer:Problem odreivanja anse za pobjedu u sportskom takmienjuDva tima ( A i B ) se takmie u odreenoj sportskoj discipline, igra je podijeljena u setove.U Svakom dijelu igre tano jedan igra biljei jedan poen.Igra traje sve dok jedan od igraa ne skupi n poena a n je unaprijed fiksiran, tada je taj igra pobjednik.Pretpostavimo da su A i B podjednako jaki, tako da svaki od njih ima 50% anse da e dobiti poen u bilo kojem dijelu igre.Oznai se s P(I,j) vjerovatnost da e A biti konani pobjednik, u situaciji kad A treba jo i poena za pobjedu a B treba jo j poena.Npr .za n=4 , a ako je A ve dobio 2 poena a B je dobio 1 poen tada je i=2 I j=3.Vidjet emo da je P(2,3) =11/16 , znai A ima vise anse za pobjedu nego B.Moe se uooto da vrijedi realizacija za algoritam koji za zadanje i,j rauna P(i,j)

P (i,j)=1, za i=0, j>0, o, za i>0, j=0, P(i-1, j)+ P(i,j-1), za i>0, j>0.Prva dva reda su oigledna,uslovi treeg reda igra se bar jo jedan dio igre u kojekm A ima 50% anse da dobije poen; a ako A dobije taj poen tada mu je vjerovatnost konane pobjede P(i-1,j) inae mu je ta vjerovatnost P(i,j-1). Prethodnu relaciju moemo iskoristiti za rekurzivno raunanje P(i,j), u duuhu metode podjeli pa vladaj.Pokazuje se da je vrijeme izvravanja takvog rauna O(2i+j). Razlog za toliku sloenost je to se iste vrijednosti raunaju mnogo puta.

432100 0 0 0 1/2 21/32 13/16 15/16 1 4 3 2 1 011/32 1/2 11/16 7/8 1 3/16 5/16 1/2 3/4 1 1/16 1/8 1/4 1/2 1 jianse za pobjedu u takmienju

Pretraga i numeracijaAlgoritam pretraivanja grafikona daje pravila kretanja kroz grafikon I koristan je ba ta ovakve probleme.Ova kategorija obuhvata I algoritme povratka I pretraivanja kroz stablo odluivanja.Stablo odluivanja (backtracking) je vrlo openita metoda koja se primjenjuje za teke kombinatorne probleme.Rijeenje problema se trai sistematskim ispitivanjem svih mogunosti za konstrukciju tog rijeenja.Metoda zahtjeva da se traeno rijeenje izrazi kao n oblika (x1,x2,x3,.xn) gdje je xi element neog konanog skupa.Prostor rijeenja trebamo zamisliti kao ureeno stablo rijeenja.Korijen tog stable predstavlja sve mogue n.Dijete korijena predstavlja sve n , gdje prva komponenta x1 ima odreenu vrijednost.Unuk korijenja predstavlja sve n gdje su prve dvije komponente x1 i x2 fiksirane na neki nain.List stable predstavlja konkretan n .. npr n=3, S1=(1,2,3,4) , S2=(1,2), S3=(1,2,3)

x1=2x1=1x1=3x1=4x2=1x2=1x2=1x2=1x2=2x2=2x2=2x2=2x3=1 2 3x3=1 2 3x3=1 2 3x3=1 2 3x3=1 2 3x3=1 2 3x3=1 2 3x3=1 2 3

Linearno programiranje ovo programiranje se koristi kada imamo vise linearnih nejednaina a zadatak je nai maximum ili minimum po nekom kriterijumu.Mnogi realni problem mogu biti iskazani na ovaj nain, a onda generikim rijeenim algoritmom, kao to je Simpleks algoritam koji je najpoznatiji algoritam sto se tice linearnog programiranja.Postupak rada Simpleksa je sljedei:1. Poetni korak generisanje poetnog vremena Xo 2. Iterativni korak za {k}- =0,1,.,-{n}-Test optimalnosti: ako je tjeme Hk bolje od susjednih na dopustivoj onda je optimalno kraj.-{k = k}- + 1; generisati novo rijeenje Xk ija je funkcija cilja bolja.Heuristiki algoritmi I algoritmi sluajnostiOvi algoritmi ne odgovaraju strogoj definiciji algoritma:1. Genetiki algoritam pokuava da nae rijeenje problema imitirajui bioloku evoluciju, pa tako raunar simulira razmnoavanje I preivljavanje najprilagoenijih. Podjeljeni sun a sekvencijske I paralelne.2. Algoritmi sluajnosti prave u nekim situacijama sluajan izbor, za neke probleme se stvarno moe dokazati da se do rijeenja moe doi samo uvoenjem stepena sluajnosti3. Heustiki algoritmi su takvi algoritmi ija je osnovna namjenja da nau optimalno rijeenje, a u stvari priblinog rijeenja, jer vrijeme za izvravanje algoritma za nalaenje rijeenja nije mogue.

2.2. PREMA NAINU IMPLEMENTACIJE

Prema nainu implementacije imamo sljedee vrste algoritama:1. Rekurzivni ili iterativni algoritmi2. Serijski ili paralelni algoritmi3. Deterministiki ili stohastiki algoritmi4. Taan ili priblianRekurzivni ili iterativni algoritmi je algoritam koji poziva samog sebe sve dokse ne postigne neki odreeni uvjet.Ovi algoritmi su vrlo esto usko vezani uz implementaciju pojedine matematike funkcije npr Fibonaijeve funkcije.Iterativni algoritmi su algoritmi koji ne pozivaju samog sebe ve se oslanjaju na konstrukte poput petlji I dodatne structure podataka.Serijski ili paralelni algoritmi veina raunara sadri samo jedan processor pa zbog toga obavlja jednu po jednu naredbu, tj, serijski.Algoritmi koji su dizajnirani s namjerom da se izvravaju u tom okruenju shodno tome se nazivaju serijski algoritmi.(suprotno njima su paralelni algoritmi)Paralelni algoritmi koriste mogunost vieprocesorskog sistema I na taj nain problem rascijepe na vie mali potproblema I njih processor rijeava svaki zasebno , a zatim se ti rezultati spajaju.Paralelni algoritmi uz potrebne resurse za obradu podataka imaju malu potronju resursa na komunikaciji izmeu vie procesora. Deterministiki ili stohastiki algoritmiJe algoritam koji e pri svakom izvravanju u bilo kojem uslovu od istog unosa doi do istog izlaza slijedei svaki put identian niz naredbi.Stohastiki algoritam je algoritam koji bar u jednom djelu izvravanja donese neku odluku.Taan ili priblianIako algoritmi u principu daju tane rezultate, nekad algoritam trai priblino rijeenje koje je dovoljno blizu tanom.

3. ZAKLJUAK

Izuavajui ovu temu, zakljuio sam da se algoritmi mogu klasifikovati prema raznim kriterijima i da ih je najbolje rjeavati od najsloenijih pa do sloenijih algoritama.Svako nae objanjenje neke situacije ili prepriavanje je vrsta algoritma iskazana opisnim reenicama.Na istom zadataku moemo napraviti vie razliitih algoritama i samim tim da oni pri tome budu podjednako dobri.Poto imamo raznovrsne algoritme do istog rezultata moemo doi na razliite naine. Nita nije nerijeivo kako nam se to u samom poetku sve ini, a da se sve to ne moe rijeiti nekim algoritmom.Sloeni algoritmi se ralane na manje dijelove i tako rastavljeni mogu rijeiti do detalja i prikazati rijeenje u blokovima, to smo kroz primjere i pokazali.Svaka nauka je zasnovana na rijeavanju problema preko algoritama.

LITERATURA

1. Marko upi, PRIRODOM INSPIRIRANI OPTIMIZACIJSKI ALGORITMI, Zagreb 2009.2. Miljenko Marui, Robert Manger, STRUKTURE PODATAKA I ALGORITMI, Zagreb 2003.