Un algoritm este o secventa de instructiuni simple care se ocupa cu rezolvarea unor operatii.
Aceste operatii pot avea caracter aritmetic, logic sau mixt si prelucreaza datele de intrare producand date de iesire.
Pentru ca un algoritm sa fie eficient, acesta trebuie sa furnizeze rezultatul intr-un timp finit si cat mai scurt. Pe langa timpul furnizarii rezultatului, un algoritm trebuie sa fie optimizat in asa fel incat sa ocupe o memorie cat mai mica fata de alti algoritmi care furnizeaza acelasi rezultat, dar care ocupa o memorie mai mare.
Un algoritm trebuie sa fie de folos la rezolvarea a cat mai multor probleme. Un algoritm care poate rezolva o singura problema nu este atat de relevant in comparatie cu unul care poate rezolva un n numar de probleme.
Un exemplu relevant ar fi atunci cand cream un program care aduna doua numere.
Daca programul aduna doar numerele 5 si 2, atunci nu va fi atat de folositor fata de unul care aduna orice doua numere (a+b). Asta inseamna ca nu trebuie sa atribuim noi valori in interiorul programului, ci sa le putem citii de la tastatura.
Algoritmul trebuie sa alba un caracter determinist. Asta inseamna ca prin repetarea programului introducand aceleasi valori, rezultatul final va fi mereu acelasi.
Pentru ca un algoritm sa poata fi folosit in conditii optime, acesta trebuie sa contina indicatii clare pentru ca utilizatorul sa poata sa introduca datele necesare fiecarei etape a programului.
Asta inseamna ca atunci cand utilizatorul trebuie sa introduca anumite date de la tastatura, programul trebuie sa ii furnizeze clar ce fel de date sunt necesare respectivei etape.
Tipuri de algoritmi:
- algoritmi backtraking | incrementeaza solutii-candidat, parasind fiecare candidat imediat ce acesta nu mai poate devenii o solutie valida.
- algoritmi divide et impera | descompune problema in mai multe subprobleme pe care la final le combina
- algoritmi de tip greedy
Caracteristici:
- algoritme logice | folosesc doar operatii logice
- algoritme numerice | folosesc doar operatii aritmetice
- algoritme mixte | folosesc atat operatii logice cat si aritmetice