Cosa sono gli algoritmi

Un algoritmo, è una sequenza di istruzioni semplici, che eseguite in ordine passo-passo portano alla soluzione di un problema. Il nome deriva dal nome del matematico persiano Muhammad ibn Mūsa ‘l-Khwārizmī, che è stato il primo nella storia a fare riferimento esplicito a questo concetto.

Le istruzioni di un algoritmo devono essere elementari, in particolare

  • semplici da comprendere ed eseguire
  • non ulteriormente scomponibili
  • non ambigue o vaghe

Proviamo a fare un esempio molto banale:

Algoritmo Telefona:

  1. Alza la cornetta
  2. Componi il numero
  3. Conversa
  4. Riattacca

Come potete notare le istruzioni sono molto elementari.

All’interno di un algoritmo è possibile anche fare delle scelte, in modo da seguire istruzioni diverse nel caso accada qualcosa di particolare. Proviamo ad aggiungere qualche dettaglio all’esempio di prima.

Algoritmo Telefonata:

  1. Alza la cornetta
  2. Componi il numero
  3. Se il numero è occupato allora riaggancia
  4. Altrimenti Se il numero è libero
    1. Conversa
  5. Riaggancia

Un altro requisito per un buon algoritmo è che le istruzioni coprano tutte le situazioni possibili. Chi segue le istruzioni presenti nell’algoritmo non deve trovarsi nella situazione di non sapere cosa fare. Cosa succede nel nostro esempio se il telefono è libero e la persona non è in casa? Supponendo che la chiamata non si chiuda automaticamente dopo un certo tempo, come accade nella realtà, l’algoritmo si bloccherebbe, perchè non è ponderata l’ipotesi che la persona non risponda al telefono. Si potrebbe quindi impreziosire un pò il nostro esempio, aggiungendo delle istruzioni da eseguire in caso la persona chiamata non risponda al telefono:

Algoritmo Telefonata:

  1. Alza la cornetta
  2. Componi il numero
  3. Se il numero è occupato allora riaggancia
  4. Se la persona non risponde E sono passati più di due minuti allora riaggancia
  5. Altrimenti se la persona risponde conversa
  6. Riaggancia.

Questo per oggi è quanto, spero di essere stato chiaro, se non lo sono stato, postate pure le vostre perplessità fra i commenti.

Alla prossima!
Dal mio vecchio blog, post dell'8 Nov 2007