Professional Documents
Culture Documents
PREDMET
Mentor: Student:
Mesec, godina
Sadržaj
1. UVOD ...................................................................................................................................... 1
2. PRIMENA, KARAKTERISTIKE I ZNAČAJ ALGORITAMA ............................................ 2
3. ELEMENTI ALGORITMA .................................................................................................... 4
4. ALGORITMI I STRUKTURE PODATAKA ......................................................................... 6
4.1. Linijska algoritamska struktura............................................................................................ 6
4.2. Razgranata algoritamska struktura ....................................................................................... 7
4.3. Ciklična algoritamska struktura ........................................................................................... 7
5. SVAKODNEVNI ALGORITMI ............................................................................................. 8
6. KLASIFIKACIJA ALGORITAMA ...................................................................................... 10
6.1. Podela prema paradigmi programiranja ......................................................................... 10
6.2. Podela prema implementaciji ......................................................................................... 11
6.3. Podela prema oblastima rada.......................................................................................... 11
6.4. Podela prema složenosti ..................................................................................................... 12
6.5. Podela prema izračunljivosti .............................................................................................. 12
7. OCENA ALGORITMA ........................................................................................................ 13
8. ZAKLJUČAK ........................................................................................................................ 14
9. LITERATURA ...................................................................................................................... 15
Algoritmi
1. UVOD
1
Algoritmi
Postoji veliki broj zadataka koje čovek treba i može da reši pomoću računara koristeći
njegovu sposobnost da za veoma malo vreme obavi veliki broj operacija. Značajna sposobnost
ljudi jeste da uoče šta je potrebno uraditi, da to dobro postave i reše. Sa druge strane, računaru
moramo objasniti kako da reši problem. Ali, kada mu objasnimo kako, on taj problem rešava jako
brzo.
Ako računar naučimo kako da sabira cifre trocifrenog broja, on će ispisati rešenje pre nas.
Dakle ako smo računaru opisali postupak rešavanja problema. On će umeti da na osnovu polaznih
podataka (trocifren broj) dođe do rešenja (zbir cifara). Ako pitamo računar da nam sabere cifre
četvorocifrenog broja, on to neće znati da uradi dok ga mi ne naučimo kako to da radi.
Karakteristike algoritama:
- Algoritam je konačan. Algoritam daje rešenje primenom konačnog broja algoritamskih
koraka. To znači da može da ima 5, 100, 10000, 1000000 koraka, ali ne može da ima
beskonačno. Kada broj koraka nije unapred poznat, treba predvideti postupak koji
ograničava broj koraka.
- Algoritam je definisan. Svaki algoritamski korak mora da bude jednoznačno definisan.
Ne smemo tako pisati algoritam, da nekom ko ga čita kasnije bude nejasno šta smo u
nekom koraku hteli da uradimo. Treba predvideti sve slučajeve bez obzira na različite
počtne podatke.
- Algoritam može da ima jedan ili više ulaznih podataka. Ulazni podaci mogu da se
navedu na početku ili se unose u toku samog algoritma.
- Algoritam mora da ima jedan ili više izlaznih podataka. Najzad, algoritme i pravimo
zato da bismo dobili neke rezultate.
- Algoritam bi trebalo da bude efikasan. Zahteva se postizanje traženog rešenja u što
kraćem vremenu i uz primenu što manjeg broja algoritamskih koraka
- Algoritam mora biti ostvarljiv u računaru. To znači da sve korake koje napišemo u
našem algoritmu zaista možemo da izvršimo i na računaru.
2
Algoritmi
3
Algoritmi
3. ELEMENTI ALGORITMA
1
https://www.it-akademija.com/sta-je-algoritam#
4
Algoritmi
Na slici (3.1.1) se vide standardni grafički elementi koji se najčešće koriste prilikom crtanja
dijagrama toka za pisanja Algoritama.
Prvi element je linija toka, koja spaja grafičke elemente i završava se strelicom u onom
smeru u kome se proces (program) nastavlja. Određuje redosled koraka u samom algoritmu,ali i
programu.
Ostali grafički elementi su razumljivi sami po sebi :
Elementi za početak i kraj su identični a označavaju početak i kraj programa.
Element ulaz predstavlja unos podataka bilo sa tastature ili HD-a,CD-a ili bilo kog drugog
mesta odakle se preuzimaju podaci
Element operacija-naredba predstavlja korak u okviru koga se izvršavaju pojedinačne
radnje u okviru pseudo koda ili programa (sabiranje dva broja,dodela vrednosti promenljivoj itd).
Element uslov predstavlja korak za uslovno grananje programa, u okviru njega se
postavljaju pitanja (Ako..onda If..then..else) i određuje se dalji tok programa na osnovu odgovora.
Standardno je da potvrdan odgovor produžava program pravo na dole , a negativan levo ili desno.
5
Algoritmi
Element izlaz -kraj predstavlja izlaz podataka, rezultata na razne uređaje, najčešće monitor,
štampač.
Svaki algoritam se sastoji od početka i kraja, dok se između toga nalaze elementi koji
predstavljaju osnovne delove koji sadrže definisani put ka rešenju problema. Da bismo uopšte
počeli sa rešavanjem problema, prvo moramo da ga definišemo i postavimo rešenje.
Algoritam može biti opisan na više načina: prirodnim jezikom, dijagramima, pseudokodom
i programskim jezikom. Dijagrami su možda i najpopularniji način, jer se na jednostavan a slikovit
način predstavlja problem i njegovo rešavanje. Za to vam nije potreban kompjuter, već prosto
olovka i papir na kojem ćemo iscrtati algoritamsku šemu, tj. grafički prikaz algoritma.
U zavisnosti od kompleksnosti problema, u procesu rešavanja koriste se tri osnovne
strukture algoritma: linijski, razgranati, ciklični.
Linijska algoritamska struktura je ona gde se koraci izvršavaju jedan po jedan, s tim da se
ne ponavljaju, već se svaki izvršava samo jednom. Reč je o najjednostavnijem obliku, pa ujedno
predstavljaju način za pisanje najprostijih programa. Ipak, to ne znači da ova struktura nije bitna
kada su algoritmi u pitanju.
2
http://www.znanje.org/knjige/computer/algoritmi/01/algoritmi_start_02.htm
6
Algoritmi
Razgranata algoritamska struktura je ona kod koje se svaki korak izvršava jednom ili
nijednom. To zavisi od uslova koji se postavlja, pa se može desiti da se neka komanda nikad ne
izvrši. Više koraka se tako postavlja da bismo pokrili sve moguće uslove, te na ovaj način
pokušavamo da imamo odgovor na svaku situaciju.
To znači da u određenom delu algoritma dolazi do račvanja gde je sledeći korak uslovljen
situacijom na konkretnom račvanju. Kako se lako može desiti da „skrenete levo, a ne desno”,
komande koje se nalaze „desno” nikad neće biti izvršene. Za slučaj da postoji više opcija, koristi
se višestruko grananje.
3
http://www.znanje.org/knjige/computer/algoritmi/01/algoritmi_razgranata_02.htm
7
Algoritmi
5. SVAKODNEVNI ALGORITMI
4
http://www.znanje.org/knjige/computer/algoritmi/01/algoritmi_ciklicna_37.htm
8
Algoritmi
Algoritam za sreću
5
https://skolakoda.org/svakodnevni-algoritmi
9
Algoritmi
6. KLASIFIKACIJA ALGORITAMA
10
Algoritmi
Svako polje nauke ima svoje problem i potrebne su joj efikasni algoritmi. Srodni problem
se često proučavaju zajedno. Neki primeri su algoritmi za pretragu sortiranje, spajanje, numeričku
analizu, grafove, stringove, računarsku geometriju, kombinatoriku, mašinsko učenje, kriptografiju,
kompresiju podataka i tehnike parsiranja.
11
Algoritmi
U teoriji složenosti, što nije isto što i teorija izračunljivosti, se izučava problematika
složenosti, kompleksnosti, algoritma, u smislu zauzimanja resursa, a to su prostor (količina zauzete
memorije) i vreme (količina potrošenog vremena procesora). Složenost je funkcija veličine ulaznih
podataka. Algoritmi se prave za rešenje opšteg problema, bez obzira na veličinu ulaza, ali sa druge
strane razne ulazne veličine izazivaju da programi troše razne količine resursa.
Vremenska složenost algoritma se iskazuje kao broj elementarnih koraka za obavljanje
algoritma, što je zavisno od veličine ulaza, a koja može biti izražena u bitovima ili nekim sličnim
merilom. Ako kažemo da je algoritam (A) uređivanja niza od n elemenata problem vremenske
složenosti n², znači da dvostruko veći broj elemenata zahteva četiri puta više vremena za
uređivanje. Ako je, pak drugi algoritam (B) malo pažljivije napisan i brži je dvostruko, on će raditi
dvostruko brže za bilo koju veličinu niza. Međutim, ako se programer namuči i osmisli suštinski
drugačiji algoritam (C) za uređivanje, on stvarno može biti reda složenosti n·log(n). Algoritmi (A)
i (B) su iste složenosti, jer se u notaciji sa velikim O obeležavaju sa O(n²), a u govoru se zovu
'algoritmi kvadratne složenosti', dok je algoritam (C) 'algoritam složenosti n·log(n)'. Zaključak:
algoritam (C) je najbolji sa stanovišta korišćenja vremena za velike setove ulaznih podataka.
Prostorna složenost se na isti način odnosi na funkciju zavisnosti zauzimanja memorijskog
prostora u zavisnosti od veličine ulaza. Dešava se da je pronalaženje algoritma manje vremenske
složenosti vezano sa povećanjem prostorne složenosti. Obično se algoritmi dele na
one logaritamske složenosti, linearne, kvadratne i uopšteno polinomijalne složenosti, kao i one
najzahtevnije, eksponencijalne složenosti.
Algortime je moguće klasifikovati i prema izračunljivosti. Ovo se obično radi tako što se
razmatraju klase algoritama što omogućava smanjenje vremenskih i memorijskih resursa koji se
koriste u izračunavanju. Na primer, klasa rekurzivnih algoritama uključuje algoritme za sve
funkcije koje se mogu izračunati pomoću Tjurnigove mašine.
12
Algoritmi
7. OCENA ALGORITMA
13
Algoritmi
Karakteristike algoritma zavise i od izgleda ulaznih podataka (to se posebno odnosi na prvu
karakteristiku, tj. složenost izračunavanja). Primera radi, broj poređenja u toku uređenja niza zavisi
u velikoj meri od polaznog niza, odnosno od toga koliko je on vež uređen (niz je već sortiran, niz
je sortiran, ali u obrnutom poretku u odnosu na poredak koji treba napraviti itd.). U proceni
algoritma polazi se od pretpostavke da ulaz može biti proizvoljnog izgleda (generisan pomoću
nekog generatora slučajnih ili pseudoslučajnih brojeva).
Zatim se procenjuje kako izgleda neki prosečan skup. Složenost za takav ulazni skup je
takozvana prosečna složenost algoritma (engl. Average-case). Pored toga se oređuje ulazni skup
za koji dati algoritam ima najlošije karakteristike (najduže se izvršava, najveća količina iskorišćene
memorije). Takvom ulaznom skupu odgovara takozvana složenost u najlošijem slučaju (engl.
Worst-case).
Poslednja faza u ocenjivanju složenosti je određivanje zavisnosti između dimenzije
problema i vremena izračunavanja (broja izdvojenih apstraktnih radnji), odnosno količine
međurezultata. To je vrlo složena faza i zahteva složen matematički aparat. U većini slučajeva nije
moguće potpuno precizno odrediti zavisnost, već se vrše određene procene.
Kao rezultat procene dobija se neka funkcija g:N->N. Vrednost g(n) je procenjeni broj
operacija (ili količina međurezultata) u izračunavanju, ako ulazni skup ima dimenziju n. Dobijena
funkcija g može imati manje ili više složen zapis. Ako je složen zapis, onda se obično data funkcija
zamenjuje nekom drugom funkcijom koja ima jednostavniji zapis, a pri tome i dalje dosta dobro
opisuje zavisnost dimenzije i složenosti.
8. ZAKLJUČAK
14
Algoritmi
9. LITERATURA
[1] https://razno.sveznadar.info/02-2razred/5-Algoritam/2-ElementiAlgoritama.htm
[2] https://www.it-akademija.com/sta-je-algoritam#
[3] https://sr.wikipedia.org/wiki/Алгоритам
[4] https://www.skolaprogramiranja.rs/karakteristike-algoritama/
[5] http://www.webnstudy.com/tema.php?id=algoritmi
[6] https://www.skolaprogramiranja.rs/sta-su-algoritmi/
[7] Dragan Urošević, Algoritmi u programskom jeziku C, Mikro knjiga, 2007
[8] https://skolakoda.org/svakodnevni-algoritmi
[9] http://www.znanje.org/knjige/computer/algoritmi/algoritmi.htm
15