U svom najopćenitijem smislu, algoritam je svaki skup detaljnih uputa koji rezultira predvidljivim krajnjim stanjem od poznatog početka. Međutim, algoritmi su dobri onoliko koliko su dane upute, a rezultat će biti netočan ako algoritam nije ispravno definiran.
Primjeri algoritama
Uobičajeni primjer algoritma bile bi upute za sastavljanje modela zrakoplova. S obzirom na početni set brojnih označenih komada, može se slijediti dane upute kako bi se dobilo predvidljivo krajnje stanje: dovršeni avion. Greške u uputama ili neispravno praćenje koraka dovest će do neispravnog krajnjeg proizvoda.
Računalni program je još jedan prodoran primjer. Svaki računalni program je jednostavno niz uputa, koje mogu varirati u složenosti, a navedene su određenim redoslijedom, dizajnirane za obavljanje određenog zadatka. Matematika također koristi algoritme za ručno rješavanje jednadžbi, bez upotrebe kalkulatora. Posljednji primjer je ljudski mozak: većina koncepcija ljudskog mozga definira svako ponašanje – od stjecanja hrane do zaljubljivanja – kao rezultat složenog algoritma.
Klase algoritama
Iako ne postoji univerzalno prihvaćena raščlamba za različite vrste algoritama, postoje zajedničke klase kojima se često slaže da algoritmi pripadaju. Među njima su:
Algoritmi dinamičkog programiranja: Ova klasa pamti starije rezultate i pokušava ih koristiti za ubrzavanje procesa pronalaženja novih rezultata.
Pohlepni algoritmi: Pohlepni algoritmi pokušavaju ne samo pronaći rješenje, već i idealno rješenje za bilo koji problem.
Brute Force algoritmi: Brute Force pristup počinje u nekoj nasumičnoj točki i ponavlja se kroz svaku mogućnost dok ne pronađe rješenje.
Randomizirani algoritmi: Ova klasa uključuje bilo koji algoritam koji koristi slučajni broj u bilo kojem trenutku tijekom svog procesa.
Algoritmi grananja i veza: Algoritmi grananja i veza tvore stablo podproblema primarnog problema, prateći svaku granu dok se ne riješi ili ne spoji s drugom granom.
Jednostavni rekurzivni algoritmi: Ovaj tip odmah traži izravno rješenje, a zatim se vraća kako bi se pronašlo jednostavnije rješenje.
Algoritmi vraćanja unatrag: Algoritmi vraćanja unatrag testiraju rješenje; ako je rješenje pronađeno, algoritam je riješen, ako nije, ponavlja se jednom i ponovno testira, nastavljajući sve dok se rješenje ne pronađe.
Algoritmi Podijeli i vladaj: Algoritam podijeli pa vladaj sličan je algoritmu grananja i veza, osim što koristi metodu povratnog praćenja ponavljanja dok dijeli problem na podprobleme.
Serijski i paralelni algoritmi
Osim ovih općih klasa, algoritmi se također mogu podijeliti u dvije primarne skupine: serijski algoritmi, koji su dizajnirani za serijsko izvršavanje, pri čemu se svaka operacija izvodi linearnim redoslijedom; i paralelni algoritmi, koji se koriste s računalima s paralelnim procesorima, pri čemu se niz operacija izvodi paralelno jedna s drugom. Paralelni algoritmi također postoje u prirodnom svijetu u slučaju, na primjer, genetske mutacije nad vrstom.