L’algoritmo è presente un po’ ovunque nella nostra vita quotidiana.
Per esempio, quando usiamo il Gps per geolocalizzarci, in quel caso il calcolo è reso possibile proprio grazie a un algoritmo. Lo stesso si può dire quando scriviamo una parola in un motore di ricerca sul Web. Il suo impiego è vasto e vario, dalla finanza, dove potrebbe sembrare scontato, alla medicina, per ottimizzare i farmaci o le terapie antitumorali. Nel tempo, però, questo termine ha varcato i confini della matematica, rivestendo nuovi significati. Si parla così dell’algoritmo per trovare l’anima gemella o la vacanza perfetta.
Schematizzare e formalizzare le proprie azioni oggi è una pratica comune utile a ordinare le proprie azioni e idee al fine di muoversi secondo standard nuovi che ci imponiamo. L’esempio seguente è interessante.
Nonostante le suggestioni di natura lessicale, il termine ‛algoritmo’ non deriva nè da ‘algebra’ nè da ‛aritmetica’, ma dall’appellativo al-Khuwarizmi (originario della Corasmia) del matematico Muhammad ibn Musa del IX sec.
Nella versione arcaica ‛algorismo’, veniva usato nel XIII secolo per denotare il sistema di numerazione arabo e, successivamente, i metodi dell’aritmetica. Solo in tempi più recenti, il termine ha assunto in maniera inequivocabile la connotazione di procedimento formale di calcolo.
In un primo momento la locuzione algoritmo veniva utilizzata esclusivamente in matematica oggi è entrata nel linguaggio comune dove spesso subisce uno ‘sbiadimento del significato’, riducendo il concetto ad un metodo per raggiungere uno scopo.
È ora evidente come possiamo ritrovare un algoritmo anche pensando semplicemente delle azioni che svolgiamo quotidianamente.
Un esempio calzante è il procedimento di preparazione della moka per il caffè, oppure tutti i passaggi per un buon bucato,
o ancora meglio il procedimento esposto in qualsiasi ricetta culinaria.
Dunque il ricettario della nostra mamma è un libro di algoritmi vero e proprio!
Affinché una “ricetta”, un elenco di istruzioni, possa essere considerato un algoritmo, devono essere soddisfatti i
seguenti requisiti:
Finitezza: ogni algoritmo deve essere finito, cioè ogni singola
istruzione deve poter essere eseguita in tempo finito ed un
numero finito di volte
Generalità: ogni algoritmo deve fornire la soluzione per una
classe di problemi; deve pertanto essere applicabile a qualsiasi
insieme di dati appartenenti all’insieme di definizione o insieme di definizione
dominio dell’algoritmo e deve produrre risultati che algoritmo
appartengano all’insieme di arrivo o insieme di arrivo codominio
Non ambiguità: devono essere definiti in modo univoco i passi
successivi da eseguire; devono essere evitati paradossi,
contraddizioni ed ambiguità; il significato di ogni istruzione
deve essere univoco per chiunque esegua l’algoritmo
Ecco i cinque punti che dovresti ricordare per definire le caratteristiche di un algoritmo:
- i passi costituenti devono essere “elementari”, ovvero non ulteriormente scomponibili (atomicità);
- i passi costituenti devono essere interpretabili in modo diretto e univoco dall’esecutore, sia esso umano o artificiale (non ambiguità);
- l’algoritmo deve essere composto da un numero finito di passi e richiedere una quantità finita di dati in ingresso (finitezza)
- l’esecuzione deve avere termine dopo un tempo finito (terminazione);
- l’esecuzione deve portare a un risultato univoco (effettività).