CODEKANews E tu sai cos’è un algoritmo?
algoritmo

E tu sai cos’è un algoritmo?

Oggi partiamo dalle basi. Vogliamo parlarti degli algoritmi.
La parola “algoritmo” è stata inventata dal matematico arabo Mohammed Ibn Musa Al-Khwarizmi, autore di un testo di algebra del IX secolo d.C. sul sistema di numerazione indo-arabico. Anche la parola “algebra” fu coniata da lui. Il testo viene tradotto in latino con il titolo “Algoritmi de numero Indorum”.

Per definizione un algoritmo è una sequenza finita di istruzioni (una vera e propria procedura) per risolvere un problema o raggiungere un determinato obiettivo in un tempo finito. Ma come funziona? Le istruzioni (dette anche operazioni) sono poste in sequenza, l’una dopo l’altra, e devono essere eseguite esattamente nell’ordine in cui compaiono. Nella sequenza dei passi di un algoritmo sono presenti anche le regole operative condizionali che, a seconda della circostanza o di una scelta, indicano all’esecutore come comportarsi. Solitamente queste istruzioni sono scritte in “linguaggio naturale” per essere comprensibili da chi deve eseguirle e a seconda della loro complessità possono essere rappresentate in due modi: una lista di operazioni (semplice) o un diagramma di flusso (più complesso). In questo secondo caso ogni blocco ha una forma diversa a seconda della tipologia dell’operazione.

CUOCERE LA PASTA SECONDO UN ALGORITMO
Il più famoso esempio di algoritmo applicabile nella vita quotidiana è il processo di cottura della pasta. Stenti a crederci? Eppure è così.
Ecco le istruzioni (per te potrebbero essere non necessariamente queste, è solo un esempio) rappresentate attraverso una lista di operazioni.

1- Versa l’acqua nella pentola
2- Accendi il fuoco
3- Posiziona la pentola sul fuoco
4- Attendi 5-10 minuti che l’acqua bolla
5- Pesi la pasta su una bilancia
6- Aggiungi il sale all’acqua
7- Aggiungi la pasta nella pentola
8- Aspetti 5-10 minuti di cottura (secondo le indicazioni riportate sul pacco di pasta)
9- Scola e condisci la pasta
10- Impiatta e servi

Una ricetta quindi può essere costituita da una sequenza finita e ordinata di operazioni o istruzioni, che troviamo scritte chiaramente nel procedimento. Dunque la ricetta è un algoritmo!

In matematica, invece, un algoritmo è la procedura da utilizzare per risolvere un problema. Avremo quindi algoritmi per ogni tipo di problema matematico: fare una moltiplicazione, fare una divisione, risolvere un’espressione algebrica, risolvere un problema di geometria, e così via. Possiamo quindi stabilire che un problema è calcolabile se è risolvibile seguendo un algoritmo.


ALGORITMI E PROGRAMMI INFORMATICI

Spesso si tende a confondere gli algoritmi con i programmi informatici ma in realtà è n concetto molto più astratto e soprattutto utilizzabile per risolvere tutti i problemi (vedi la cottura della pasta), tra cui ovviamente quelli rappresentati in “linguaggio matematico”.

Un programma informatico è un codice eseguibile da una macchina esecutrice (computer). In genere, il programma rappresenta la traduzione dell’algoritmo in un “linguaggio di programmazione” comprensibile per il computer (ad esempio Java, Php, Python) perché basato unicamente sulla logica, cn regole grammaticali e di sintassi molto precise. Un programma informatico può risolvere soltanto i problemi che possono essere formalizzati matematicamente. Dunque solo alcuni algoritmi possono trasformarsi in programmi.

In informatica si parla di algoritmo anche per intendere una “procedura” in grado di risolvere un problema computazionale, che prende dei valori in input e restituisce dei valori in output. In questo caso l’algoritmo è una sequenza di “passi computazionali” che trasforma l’input in output. In questo caso l’algoritmo non è scritto in un linguaggio di programmazione ma è rappresentato da un diagramma a blocchi o da uno pseudocodice.

LA COMPLESSITA’ DEGLI ALGORITMI INFORMATICI
L’esecuzione di un programma implica un costo economico, dovuto all’utilizzo delle risorse (memoria, traffico sulla rete, spazio su disco, ecc. ) e di tempo di elaborazione. In gergo si parla di:
Complessità spaziale per intendere l’utilizzo delle risorse da parte di un programma (spesso compensata dai progressi tecnologici sui componenti hardware del computer (es. hard disk e memorie ram più capienti).

Complessità temporale per intendere il tempo di esecuzione di un programma (cresce al crescere della dimensione n dei dati in input

Nello sviluppo di un algoritmo è particolarmente importante la complessità temporale poiché il tempo di esecuzione di un algoritmo è strettamente legato al funzionamento dell’algoritmo.
In informatica per calcolare la complessità computazionale di un algoritmo si utilizza l’analisi asintotica e l’ipotesi del caso peggiore perché è quello che ne misura meglio l’efficienza dal punto di vista tecnico. Il caso migliore non permette di distinguere un algoritmo inefficiente da uno efficiente.
Esistono diverse tipologie di complessità: fattoriale, esponenziale, polinomiale, cubica, quadratica, pseudolineare, lineare, logaritmica, costante.
La composizione di più algoritmi che operano insieme può fornire le funzionalità di cui un programmatore ha bisogno per creare ad esempio un un software.

Senza dilungarci troppo in tecnicismi, da questa breve analisi della parola “algoritmo” si è capito che il significato non è unicamente accostato alla sola sfera informatica, ma trova campi di applicazione anche nella vita di tutti i giorni, spesso senza nemmeno rendercene conto! E tu lo sapevi?

Share
Tags: