L’algoritmo è un procedimento che permette di ottenere dei risultati (dati in uscita o di output) partendo da alcuni dati iniziali (dati di ingresso o di input).
Uno stesso problema può essere risolto con algoritmi diversi.
Due algoritmi si dicono equivalenti se per ogni combinazione di dati iniziali producono sempre gli stessi risultati, pur eseguendo istruzioni diverse.
Il vantaggio di un algoritmo rispetto all’altro può dipendere per esempio dal risparmio di tempo o di memoria necessari per l’esecuzione o da una maggior comprensibilità.
Definizione di algoritmo
Un algoritmo è la descrizione del processo risolutivo di un problema; si compone di dati e di istruzioni.
L’algoritmo deve:
-
essere composto da istruzioni che l’esecutore dell’algoritmo è realmente in grado di eseguire;
-
terminare sempre in un tempo finito;
-
produrre dei risultati che si possano descrivere (cioè deve avere un effetto osservabile);
-
essere deterministico: i risultati devono essere sempre gli stessi, partendo dagli stessi dati iniziali, cioè non devono dipendere da qualcosa di casuale;
-
essere generale: non deve risolvere un singolo caso particolare, ma tutta una serie di problemi dello stesso tipo.
È importante distinguere tra descrizione dell’algoritmo ed esecuzione dell’algoritmo.
La descrizione dell’algoritmo è la lista delle istruzioni che descrivono come raggiungere la soluzione, che comprende tutti i casi possibili per trattare una classe di problemi.
L’esecuzione dell’algoritmo è l’applicazione ad un caso particolare, partendo da dati iniziali noti.
L’esecuzione è chiamata anche processo e l’esecutore processore.
Il processo di esecuzione di solito è variabile: le istruzioni da eseguire dipendono dai dati iniziali del particolare caso in esame, e l’algoritmo descrive un insieme di sequenze di esecuzione diverse.
L’algoritmo per poter essere eseguito al computer deve essere implementato in un linguaggio di programmazione.
Il programma si ottiene codificando l’algoritmo in un linguaggio di programmazione, cioè scrivendo le istruzioni dell’algoritmo secondo la sintassi del linguaggio scelto.