2. Algoritma
• Jedan od osnovnih zadataka u matematici i računarstvu je rešavanje problema razvojem
odgovarajućih algoritama.
• Sama reč algoritam potiče od imena persijskog matematičara Abu afar Mohamed ibn
Musa al-Horezmija (780-850), odnosno od lošeg prevoda njegovog imena na latinski.
Sama oblast teorije algoritama koja
se još naziva i teorijom izračunljivosti je nastala između 1930. i 1940. godine kao odgovor
na pojavu nekih matematičih paradoksa sa kraja 19. i početka 20. veka. U stvari,
postavilo se pitanje da
li postoji opšti postupak utvrđivanja istinitosti matematičkih iskaza.
• U suštini, teorija algoritama se bavi pitanjem postojanja ili nepostojanja algoritama za
rešavanje pojedinih problema.
3. Algoritam
• Algoritam je pojam koji se ne definiše, što je slučaj i sa nekim drugim osnovnim
matematičim konceptima poput tačke ili skupa.
• Opisna, neformalna definicija bila bi da je algoritam konačan i precizno definisan
postupak, efektivna procedura, za rešavanje nekog problema. Možemo reći da je prvi
računarski algoritam koji je služio za računanje Bernulijevih brojeva na mašini Čarla
Bebidža, napisala Ejda Bajron i to 1842 godine.
• Iako ta mašina nikad nije proradila, njen algoritam je ostvio trag.
4. Uslovi da neki postupak bude algoritam
• postupak je moguće opisati konačnim brojem naredbi,
• postoji idealna mašina koja izvržava te naredbe prema unapred utvrđenim pravilima,
• mašina započinje izračunavanje u nekom inicijalnom stanju;
• primenjena na ulazen podatke mašina izvršava naredbe u diskretnim koracima u Kojima
menja svoja stanja,
• izvršavanje svake naredbe se izvodi u konačnom vremenu pri čemu se koristi konačni
memorijski prostor,
• iz jednog stanja izvršavanjem iste naredbe mašina uvek prelazi u isto stanje, odnosno,
izvršavanje je determinističko,
• kada pređe u završno stanje, mašina prestaje sa izvršavanjem.
5. Osobine algoritma
• Konačnost pošto je svaki algoritam konačan niz instrukcija.
• Diskretnost jer se sve operacije izvršavaju, kao što je već opisano, korak po korak i
svakom možemo pridružiti diskretan vremenski period u kome se taj korak izvršava.
• Determinisanost jer za iste ulazne veličine jednoznačno se dobijaju iste izlazne veličine.
• Elementarnost jer zakon dobijanja izlaznih veličina mora biti jasan i prost.
• Rezultativnost jer za svaki skup ulaznih veličina mora biti definisano šta je rezultat.
• Masovnost jer algoritam treba da važi za najširi skup ulaznih podataka.
6. Predstavljanje algortima
• Dijagram-blok algoritamska šema, odnosno predstavjanje algortima pomou grafičke
šeme sa jasno definisanim koracima. Postoje linijske i ciklične algoritamske šeme. Pri
tom, linijske alogritamske šeme mogu biti proste i razgranate.
• Pseudo jezici, odnosno, pseudokod. Pseudokod predstavlja među korak izmeu
svakodnevnog jezika i programskog jezika. Korišćenjem pseudokoda umesto da koristimo
stroge strukture programskih jezika, možemo koristiti manje formalni sistem notacija kako
bi izbegli specifična pravila koja važe
za sve naredbe programskog jezika.
• Programski jezici. Svaki programski jezik predstavlja neku formalizaciju algoritama, pa
zato možemo koristiti definiciju pojma program: Program je algoritam zapisan na nekom
programskom jeziku
• Rekurzivne funkcije. Rekurzivna funkcija je ona funkcija koja u svojoj definiciji koristi
samu sebe.
7. Rekurzija u matematici
• Kako bi pojam rekuzije bio jasniji prestaviemo neke definicije u
matematici koje su rekurzivne:
• Definicija prirodnih brojeva:
1 je prirodni broj.
Ako je n prirodni broj, onda je to i n + 1.
-
• Definicija Fibonačijevog niza:
Prvi član niza je 0
Drugi član niza je 1
Svaki n-ti član niza (n > 2) je suma prethodna dva člana
an = an - 1 + an - 2
8. Čerčova teza
• Jedan od načina predstavljanja algoritama je pomoću rekurzivnih funkcija. Rekurzivne funkcije
imaju za osobinu da za izračunavanje njenih vrednosti postoji efektivni postupak. Nažalost proces
izračunavanja može da bude dugotrajan, mada je uvek jasan i očigledan. Do rešenja ćemo uvek
doći posle konačno mnogo koraka. Zato, za rekurzivne funkcije kažemo da su izračunljive.
• Obrnuto, veruje se da je svaka izračunljiva funkcija rekurzivna.
Ovo tvrenje naziva se Čerčova teza.
Čerčova teza: Aritmetiqka funkcija je izračunljiva akko je rekurzivna.
• Nažalost ova teza nije dokazana u matematiqkom smislu. U suštini ona tvrdi da za neki problem
postoji algoritam ako se rešavanje problema svodi na izračunavanje vrednosti adekvatne
rekurzivne funkcije. Problem koji se rešava tada se mora formulisati kao aritmetički problem.
Problem van aritmetike mora se preslikati u aritmetički. Da bi se to postiglo prvo se problem mora
predstaviti nekim univerzalnim jezikom, naprimer, kvantifikatorskog računa, a zatim se to preslikava
na jezik aritmetike.
• Rekurzivna funkcija je jedan opšti model algoritma.