Un algoritmo è una procedura pre­de­fi­ni­ta che risolve problemi o compiti seguendo dei passaggi de­ter­mi­na­ti. Gli algoritmi sono presenti in quasi tutti i settori della vita quo­ti­dia­na, ma sono fon­da­men­ta­li per l’in­for­ma­ti­ca e i programmi software. Alcuni esempi noti sono l’algoritmo di Google, che determina il po­si­zio­na­men­to dei risultati di ricerca, e quello del feed di news di Facebook o Instagram.

Una breve de­fi­ni­zio­ne di algoritmo

Gli algoritmi sono sequenze pre­de­fi­ni­te e finite di azioni, uti­liz­za­te per risolvere dei problemi. In altre parole, vengono uti­liz­za­ti per eseguire compiti specifici usando delle sequenze fisse di passaggi o con­ver­ten­do valori di ingresso in valori di uscita. I passaggi sono pre­de­ter­mi­na­ti ed eseguiti in sequenza. Gli algoritmi sono in­di­pen­den­ti da un lin­guag­gio specifico e quindi fun­zio­na­no come macchine e non; inoltre, non si trovano solo nella ma­te­ma­ti­ca e nell’in­for­ma­ti­ca, ma sono ovunque, dai semafori nel traffico stradale alla funzione di chiamata di un ascensore.

6 proprietà che un algoritmo deve avere

Mentre in passato gli algoritmi erano definiti in modo ar­bi­tra­rio, oggi è possibile iden­ti­fi­car­ne uno in base a sei proprietà:

Univocità/efficacia

Ogni fase della sequenza di azioni di un algoritmo deve essere efficace e univoca. Ciò significa che ogni istru­zio­ne deve avere senso ed essere ap­pro­pria­ta per l’ap­pli­ca­zio­ne al fine di ottenere un risultato o un valore di uscita.

Ese­cu­zio­ne

Le azioni e le singole fasi devono essere ese­gui­bi­li e logiche.

Finitezza

L’obiettivo di un algoritmo è quello di con­ver­ti­re i dati in ingresso in dati in uscita, il che è possibile solo se il processo è finito. Gli algoritmi devono avere una forma finita, ad esempio un numero cir­co­scrit­to di caratteri o una memoria limitata.

Ter­mi­na­zio­ne

Le singole fasi, ese­gui­bi­li, logiche e finite, devono portare a un risultato in un arco di tempo finito. La sequenza deve essere orientata all’obiettivo e non deve terminare in un ciclo infinito senza risultato.

De­ter­mi­na­zio­ne

Gli stessi input nelle stesse con­di­zio­ni devono portare agli stessi output, solo così gli algoritmi possono garantire il fun­zio­na­men­to af­fi­da­bi­le di un’ap­pli­ca­zio­ne e la ri­so­lu­zio­ne dei problemi.

De­ter­mi­ni­smo

Nella sequenza delle fasi dell’algoritmo, c’è sempre un solo modo per risolvere il problema. I passaggi suc­ces­si­vi sono quindi chia­ra­men­te definiti dai risultati intermedi e non sono casuali.

Da cosa deriva l’im­por­tan­za degli algoritmi?

Gli algoritmi hanno avuto un ruolo centrale nel XIX e nel XX secolo, so­prat­tut­to in ma­te­ma­ti­ca e logica, dove sono stati oggetto di dibattito. Oggi sono presenti in quasi tutti i settori della vita quo­ti­dia­na. Di solito, però, non co­no­scia­mo gli algoritmi che rendono possibili alcune ap­pli­ca­zio­ni, come la catena di montaggio alla cassa, i di­spo­si­ti­vi di na­vi­ga­zio­ne o il mec­ca­ni­smo di clas­si­fi­ca­zio­ne di un motore di ricerca come Google.

In in­for­ma­ti­ca, gli algoritmi co­sti­tui­sco­no la base centrale della pro­gram­ma­zio­ne. Chiunque cerchi di imparare a pro­gram­ma­re si rende subito conto che quasi ogni programma utilizza degli algoritmi per eseguire un compito. In parole povere, ogni programma è un algoritmo.

Cio­no­no­stan­te, non tutti gli algoritmi sono programmi, dato che sono in­di­pen­den­ti dai linguaggi di pro­gram­ma­zio­ne web e possono anche essere formulati nella lingua “naturale”, rap­pre­sen­ta­ti in formule ma­te­ma­ti­che o eseguiti in modo non meccanico. L’origine del termine risale all’VIII secolo e deriva dall’eclettico ma­te­ma­ti­co kho­re­z­mia­no al-Chwarizmi, ab­bre­via­zio­ne di Abu Jah’far Muhammad ibn Musa al-Chwārizmī.

Ambiti di ap­pli­ca­zio­ne degli algoritmi

Gli algoritmi non sono limitati a linguaggi e metodi né a spe­ci­fi­che aree di ap­pli­ca­zio­ne. Poiché la loro utilità risiede nella ri­so­lu­zio­ne di problemi, essi rap­pre­sen­ta­no una specifica linea d’azione e una procedura che funziona tramite diverse variabili e sequenze di passaggi. Ciò potrebbe includere il calcolo del percorso per i di­spo­si­ti­vi di na­vi­ga­zio­ne, i sistemi di rac­co­man­da­zio­ne nei negozi online, il Real Time Ad­ver­ti­sing per la vi­sua­liz­za­zio­ne in­tel­li­gen­te della pub­bli­ci­tà online, le app di tra­du­zio­ne e le si­mu­la­zio­ni al computer.

In par­ti­co­la­re, gli algoritmi con­ti­nua­no a gua­da­gna­re im­por­tan­za nell’ambito dei Big Data e dell’in­tel­li­gen­za ar­ti­fi­cia­le (IA). La di­gi­ta­liz­za­zio­ne e la presenza di tec­no­lo­gie in­tel­li­gen­ti come gli smart­pho­ne, gli smart­watch e l’IA nelle au­to­mo­bi­li e nella domotica per la casa in­tel­li­gen­te com­por­ta­no un rapido aumento dei dati.

Ciò richiede computer e server con la ne­ces­sa­ria potenza di calcolo, ma anche algoritmi per or­ga­niz­za­re, valutare, elaborare o uti­liz­za­re grandi quantità di dati. I sensori dei veicoli au­to­ma­tiz­za­ti ne sono un esempio. Essi attivano le azioni del veicolo in base ai dati re­gi­stra­ti. Anche gli algoritmi ma­te­ma­ti­ci giocano un ruolo decisivo nella creazione di si­mu­la­zio­ni cli­ma­ti­che.

Allo stesso modo, il fun­zio­na­men­to dei motori di ricerca e la ricerca del percorso (pa­th­fin­ding) in in­for­ma­ti­ca non sarebbero possibili senza algoritmi. I co­sid­det­ti crawler sono uti­liz­za­ti per cercare, ana­liz­za­re e in­di­ciz­za­re i contenuti web. Essi ca­ta­lo­ga­no e in­di­ciz­za­no i dati in base all’algoritmo di un motore di ricerca. A sua volta, il po­si­zio­na­men­to e la re­pe­ri­bi­li­tà dei risultati della ricerca dipendono da una ca­ta­lo­ga­zio­ne ottimale. L’algoritmo del motore di ricerca serve quindi come orien­ta­men­to per un’ef­fi­cien­te ot­ti­miz­za­zio­ne SEO.

Esempi di algoritmi

Ogni giorno vengono aggiunti nuovi algoritmi e ap­pli­ca­zio­ni pratiche. I seguenti esempi il­lu­stra­no alcuni algoritmi esistenti nella pratica.

L’algoritmo di Google

Google impiega una frazione di secondo per vi­sua­liz­za­re i risultati della ricerca quando si in­se­ri­sco­no termini o query nella barra di ricerca. Questo è possibile grazie all’algoritmo del motore di ricerca di Google, che elenca i risultati in base alla rilevanza, alle parole chiave, alla struttura dei link, alla leg­gi­bi­li­tà dei contenuti e alla sicurezza. Tuttavia, rimane un mistero come si presenti l’algoritmo esat­ta­men­te e come funzioni nel dettaglio.

Ricette di cucina

Le semplici ricette di cucina incarnano il principio di base di un algoritmo. Gli in­gre­dien­ti possono essere intesi come input che portano al risultato in una sequenza specifica e fissa di azioni. I siti di cucina che per­met­to­no di calcolare la quantità di in­gre­dien­ti in base alle porzioni e al numero di persone uti­liz­za­no algoritmi.

Indice di massa corporea

La per­cen­tua­le di grasso corporeo di un individuo può essere calcolata uti­liz­zan­do l’indice di massa corporea. In questo caso, il peso corporeo viene messo in relazione con l’altezza. Gli input sono il peso e l’altezza dell’individuo e l’output è l’IMC. L’IMC indica se un individuo ha un peso adeguato, è sottopeso, so­vrap­pe­so o obeso.

ASIC

Il co­sid­det­to circuito integrato specifico per l’ap­pli­ca­zio­ne può essere inteso come un algoritmo integrato nell’hardware. Si tratta di circuiti non variabili nell’hardware che svolgono una funzione specifica. Un esempio di questi algoritmi è il pro­ces­so­re grafico.

Data mining

Il processo di ricerca, la raccolta, l’analisi, la ca­ta­lo­ga­zio­ne e l’in­di­ciz­za­zio­ne dei dati è chiamato anche data mining. In questo caso si uti­liz­za­no algoritmi, l’in­tel­li­gen­za ar­ti­fi­cia­le e l’ap­pren­di­men­to au­to­ma­ti­co.

Algoritmi di estra­zio­ne di crip­to­va­lu­te

Nel mining di crip­to­va­lu­te, le tran­sa­zio­ni in crip­to­va­lu­ta sono do­cu­men­ta­te, ve­ri­fi­ca­te e pub­bli­ca­te nella bloc­k­chain. Come parte del processo, i minatori di crip­to­va­lu­te risolvono algoritmi relativi alle tran­sa­zio­ni, simili a puzzle numerici. La loro ri­so­lu­zio­ne serve a ve­ri­fi­ca­re le tran­sa­zio­ni.

Reti neurali

Una rete neurale è un’area del deep learning. Gli algoritmi di deep learning sono uti­liz­za­ti per simulare e ri­pro­dur­re le funzioni del cervello umano. Questi possono essere uti­liz­za­ti per varie funzioni come l’as­si­sten­za vocale, la tra­du­zio­ne, la pro­te­zio­ne dagli attacchi in­for­ma­ti­ci o la ge­ne­ra­zio­ne di testi.

Vai al menu prin­ci­pa­le