În sensul său cel mai general, un algoritm este orice set de instrucțiuni detaliate care are ca rezultat o stare finală previzibilă de la un început cunoscut. Totuși, algoritmii sunt la fel de buni ca instrucțiunile date, iar rezultatul va fi incorect dacă algoritmul nu este definit corect.
Exemple de algoritmi
Un exemplu comun de algoritm ar fi instrucțiunile pentru asamblarea unui model de avion. Având în vedere setul de început al unui număr de piese marcate, se pot urma instrucțiunile date pentru a avea ca rezultat o stare finală previzibilă: avionul finalizat. Tipărirea greșită în instrucțiuni sau nerespectarea corectă a unui pas va duce la un produs final defect.
Un program de calculator este un alt exemplu generalizat. Fiecare program de calculator este pur și simplu o serie de instrucțiuni, care pot varia în complexitate și sunt listate într-o anumită ordine, concepute pentru a îndeplini o anumită sarcină. Matematica folosește și algoritmi pentru a rezolva ecuații manual, fără a folosi un calculator. Un ultim exemplu este creierul uman: majoritatea concepțiilor despre creierul uman definesc orice comportament – de la achiziționarea de alimente până la îndrăgostire – ca rezultat al unui algoritm complex.
Clase de algoritmi
Deși nu există o defalcare universal acceptată pentru diferitele tipuri de algoritmi, există clase comune cărora algoritmii sunt adesea acceptați să aparțină. Printre acestea se numără:
Algoritmi de programare dinamică: Această clasă își amintește rezultatele mai vechi și încearcă să le folosească pentru a accelera procesul de găsire a rezultatelor noi.
Algoritmi greedy: algoritmii greedy încearcă nu numai să găsească o soluție, ci și să găsească soluția ideală pentru orice problemă dată.
Algoritmi de forță brută: abordarea forței brute începe într-un punct aleator și iterează prin fiecare posibilitate până când găsește soluția.
Algoritmi aleatoriu: Această clasă include orice algoritm care utilizează un număr aleator în orice moment al procesului său.
Algoritmi de ramuri și ramuri: algoritmii de ramuri și ramuri formează un arbore de subprobleme pentru problema primară, urmând fiecare ramură până când este fie rezolvată, fie adunată cu o altă ramură.
Algoritmi recursivi simpli: Acest tip merge imediat pentru o soluție directă, apoi face înapoi pentru a găsi o soluție mai simplă.
Algoritmi de backtracking: Algoritmii de backtracking testează o soluție; dacă se găsește o soluție algoritmul a rezolvat-o, dacă nu se repetă o dată și testează din nou, continuând până se găsește o soluție.
Algoritmi de împărțire și cucerire: un algoritm de împărțire și cucerire este similar cu un algoritm de ramificare și legătură, cu excepția faptului că folosește metoda backtracking de a recurge în timp ce împarte o problemă în subprobleme.
Algoritmi seriali și paraleli
Pe lângă aceste clase generale, algoritmii pot fi, de asemenea, împărțiți în două grupuri primare: algoritmi seriali, care sunt proiectați pentru execuție în serie, în care fiecare operație este executată într-o ordine liniară; și algoritmi paraleli, utilizați cu computere care rulează procesoare paralele, în care un număr de operații sunt executate paralel unul cu celălalt. Algoritmi paraleli există și în lumea naturală în cazul, de exemplu, a unei mutații genetice asupra unei specii.