Un algoritmo per potersi definire tale dev'essere:
- Finito;
- Determnistico;
- Non ambiguo;
- Generale.
Finito - significa che dopo un certo numero di passi devo pervenire alla soluzione. E' evidente che non è possibile pervenire ad un risultato se le operazioni che devo effettuare non hanno mai termine;
Deterministico - I risultati a cui porta l'algoritmo dipendono unicamente dai dati in ingresso. Non ci sono variazioni dovute al luogo dove l'eseguo o al tempo. Ciò implica anche che i passi attraverso i quali esso si svolge sono stati preventivamente determinati.
Non ambiguo - le istruzioni contenute nell'algoritmo devono avere un'unica possibile interpretazione senza possibilità di equivoci. Questa è una delle prerogative del linguaggio informatico contrariamente al linguaggio comune dove un termine assume significati diversi a seconda del contesto.
Generale - un algoritmo deve fornire una soluzione a tutti i probelmi appartenenti alla stessa classe e non deve dipendere dal valore del dato. Per esempio se scrivo un algoritmo in grado di calcolare il perimetro di un triangolo questo dev'essere in grado di farlo per qualsiasi valore attribuito ai lati del triangolo.
Tenere presente questi quattro elementi quando si cerca di costruire un algoritmo che risolve un problema aiuta a trovare soluzioni efficaci. Farle diventare efficienti è spesso anche un problema di tecnica.