Algoritam, računari i programiranje

Algoritam je ključni pojam u računarskoj obradi podataka jer je računarski program izvjestan algoritam koji računaru objašnjava koje korake (naredbe) i kojim redosljedom treba da obavlja. Tako se algoritmom može smatrati bilo koji niz instrukcija koja se može uraditi na računaru- mašini.

 Suporter

Uobičajeno se algoritam definiše kao niz koraka koji jednoznačno i jednostavno vode do rješenja peoblema, ili dokazuje da rješenje ne postoji.

Evo nekoliko intuitivnih definicija algoritma:
Algoritam je precizan opis postupaka koji vode željenom cilju.
Algoritam je uputstvo za obavljanje posla.
Algoritam je skup uputstava koja opisuju kako doći do rešenja problema.

Algoritam predstavlja skup akcija sa definisanim redosledom njihovog obavljanja, koji primenjen na polazni skup podataka, dovodi do traženih rezultata.

Evo i uobičajene neformalne definicije algoritma: Algoritam je konačan (uređen) skup strogo definisanoh algoritamskih koraka (pravila) čijom primjenom na ulazne podatke (i međurezultate) dobijamo rješenje zadatka poslije konačno mnogo vremena.

Sve poslove koje računar obavlja izvode se postupno, korak po korak, u konačnom vremenu. Svaki korak je jasno preciziran, kao i prelazak na svaki naredni korak. Na kraju postupka, kad računar završi rad (ukoliko se to uopšte desi, jer moguće je i da se rad nikada ne završi), dobije se nešto kao rezultat.

Comp Alg

Program je algoritam zapisan na nekom programskom jeziku.

5 zakona algoritma

Svaki dobar algoritam mora ispoštovati 5 osnovnih zakonitosti algoritma:

  1. Definisanost (svi koraci moraju biti jasni i nedvosmisleni)

  2. Konačnost (izvršenje algoritma se mora obaviti u određenom broju koraka)

  3. Posjedovanje ulaza i izlaza ( moraju se definisati ulazi kojih može biti: ni jedan, jedan ili više i izlazi kojih mora biti bar jedan ili više)

  4. Efikasnost (algoritam se izvršava u razumnom vremenskom intervalu)

  5. Rezultativnost (algoritam mora dati rješenje problema a ako nema rješenja onda poruku da rješenje ne postoji)

U procesu programiranja, skup akcija definisan je mogućnostima računara, odnosno naredbama programskog jezika koji se koristi, dok se redosled izvršavanja akcija zadaje pomoću algoritamskih (programskih) struktura.

Postoji veliki broj različitih matematičkih formalizacija pojma algoritma. Matematički se dokazuje da su sve formalizacije algoritama međusobno ekvivalentne, odnosno svaki algoritam koji se može predstaviti pomoću jedne od ovih formalizacija, može se predstaviti i pomoću bilo koje druge.

Kad se uz algoritam vezuje pojam obrade podataka, podrazumjeva se da se podatak prvo učita preko ulazne jedinice, a ispisuje se na izlaznu jedinicu ili čuva za kasniju upotrebu. Sačuvani podaci se smatraju dijelom unutrašnjeg stanja sistema.

Za svaki računarski posao algoritam mora biti jasno definisan; naveden na način koji podrazumjeva sve moguće situacije koje se mogu pojaviti.

Znači, svaki uslovni korak se mora sistematično obraditi, slučaj po slučaj; uslov za svaki slučaj mora biti jasan i izračunljiv (matematički definisan).

Pretpostavlja se da su instrukcije navedene jasno, da počinju od vrha i da teku do dna. Ova ideja se formalno opisuje kontrolom toka.

Ovo je najuobičajeniji koncept u programiranju i opisuje postupke na mehanički način. Kod ovakve formalizacije se unaprijed uzimaju pretpostavke o imperativnom programiranju. (Tehnike programiranja su istovjetne s programskim stilovima i direktno su povezane s pojedinim programskim jezicima. Imperativno programiranje opisuje računanje kao izraze koji mijenjaju stanje programa. Kao što se u govornom jeziku zapovijedni način (ili imperativ) koristi za izražavanje naredbi, tako se imperativni programi mogu posmatrati kao niz naredbi koje računar treba izvršiti).  Jedinstveno za ovaj koncept je operacija dodjeljivanja, što je davanje vrijednosti promenljivoj.  Ovo proizilazi iz intuitivnog poimanja memorije kao privremenog skladištenja odnosno pamćenja. )

Algoritmi se obično razmatraju uz pretpostavku da u jednom trenutku izvršavaju jednu instrukciju jednog algoritma. Takvi računari se zovu serijski računari.

Pod algoritamskom (programskom) strukturom podrazumevamo više koraka (komandi programskog jezika) koji čine jednu celinu. Postoje tri elementarne algoritamske strukture:   Linijska, Razgranata i Ciklična.

Algoritmi osmišljeni za takvo okruženje se zovu serijski ili sekvencijalni algoritami, nasuprot paralelnim i distribuiranim algoritmima.

Paralelni ili distribuirani algoritmi dele problem u više simetrični ili asimetričnih potproblema i kasnije sastavljaju rezulata. Za ove algoritme je pored procesorskih ciklusa je važna brzina komunikacije između procesora. (Distriburanim algoritmima se nećemo baviti).

Svako polje nauke ima svoje probleme i potrebne su joj efikasni algoritmi. Srodni problemi se često proučavaju zajedno. Neki primjeri su algoritmi za pretragu, sortiranje, spajanje, numeričku analizu, grafove, stringove, računarsku geometriju, kombinatoriku, mašinsko učenje, kriptografiju, kompresiju podataka, itd.

 

 

copyright M2M
BL-2011 -2012