Bendriausia prasme algoritmas yra bet koks išsamių nurodymų rinkinys, dėl kurio nuo žinomos pradžios gaunama nuspėjama galutinė būsena. Tačiau algoritmai yra tiek geri, kiek pateikiamos instrukcijos, ir rezultatas bus neteisingas, jei algoritmas nebus tinkamai apibrėžtas.
Algoritmų pavyzdžiai
Dažnas algoritmo pavyzdys būtų lėktuvo modelio surinkimo instrukcijos. Atsižvelgiant į pradinį kelių pažymėtų elementų rinkinį, galima vadovautis instrukcijomis, kad gautumėte nuspėjamą galutinę būseną: baigtas lėktuvas. Netinkamai atspausdinus instrukcijose arba tinkamai neatlikus veiksmo, galutinis produktas bus sugedęs.
Kitas plačiai paplitęs pavyzdys yra kompiuterinė programa. Kiekviena kompiuterinė programa yra tiesiog eilė instrukcijų, kurios gali būti skirtingo sudėtingumo ir yra išvardytos tam tikra tvarka, skirtos konkrečiai užduočiai atlikti. Matematika taip pat naudoja algoritmus lygtims spręsti ranka, nenaudojant skaičiuoklės. Paskutinis pavyzdys yra žmogaus smegenys: dauguma žmogaus smegenų sampratų apibrėžia visą elgesį – nuo maisto įsigijimo iki įsimylėjimo – kaip sudėtingo algoritmo rezultatą.
Algoritmų klasės
Nors nėra visuotinai priimto suskirstymo įvairiems algoritmų tipams, yra bendrų klasių, kurioms dažnai susitariama priklausyti algoritmams. Tarp jų yra:
Dinaminio programavimo algoritmai: ši klasė prisimena senesnius rezultatus ir bando juos panaudoti, kad pagreitintų naujų rezultatų paieškos procesą.
Godūs algoritmai: Godūs algoritmai bando ne tik rasti sprendimą, bet ir rasti idealų bet kurios problemos sprendimą.
Brute Force algoritmai: brutalios jėgos metodas prasideda tam tikru atsitiktiniu tašku ir kartojasi per visas galimybes, kol randa sprendimą.
Atsitiktiniai algoritmai: Ši klasė apima bet kokį algoritmą, kuris bet kuriuo proceso metu naudoja atsitiktinį skaičių.
Šakos ir susietieji algoritmai: atšakos ir susietieji algoritmai sudaro pagrindinės problemos subproblemų medį, sekantį kiekvieną šaką, kol ji išsprendžiama arba sujungiama su kita šaka.
Paprasti rekursyvūs algoritmai: šis tipas nedelsiant ieško tiesioginio sprendimo, tada grįžta atgal, kad rastų paprastesnį sprendimą.
Grįžimo algoritmai: grįžimo algoritmai išbando sprendimą; jei sprendimas rastas, algoritmas išspręstas, jei ne, jis kartojasi vieną kartą ir bando dar kartą, tęsdamas tol, kol randamas sprendimas.
„Skaldyk ir valdyk“ algoritmai: „Skaldyk ir užkariauk“ algoritmas yra panašus į atšakos ir surišimo algoritmą, išskyrus tai, kad jame naudojamas pasikartojimo metodas, kai problema dalijama į subproblemas.
Serijiniai ir lygiagretieji algoritmai
Be šių bendrųjų klasių, algoritmai taip pat gali būti skirstomi į dvi pirmines grupes: nuoseklieji algoritmai, skirti nuosekliam vykdymui, kur kiekviena operacija atliekama tiesine tvarka; ir lygiagrečiai algoritmai, naudojami su kompiuteriais, kuriuose veikia lygiagrečiai procesoriai, kai eilė operacijų vykdoma lygiagrečiai viena su kita. Lygiagretūs algoritmai taip pat egzistuoja gamtos pasaulyje, pavyzdžiui, genetinės rūšies mutacijos atveju.