Cos’è un algoritmo? Definizione ed esempi
Un algoritmo è una procedura predefinita che risolve problemi o compiti seguendo dei passaggi determinati. Gli algoritmi sono presenti in quasi tutti i settori della vita quotidiana, ma sono fondamentali per l’informatica e i programmi software. Alcuni esempi noti sono l’algoritmo di Google, che determina il posizionamento dei risultati di ricerca, e quello del feed di news di Facebook o Instagram.
Una breve definizione di algoritmo
Gli algoritmi sono sequenze predefinite e finite di azioni, utilizzate per risolvere dei problemi. In altre parole, vengono utilizzati per eseguire compiti specifici usando delle sequenze fisse di passaggi o convertendo valori di ingresso in valori di uscita. I passaggi sono predeterminati ed eseguiti in sequenza. Gli algoritmi sono indipendenti da un linguaggio specifico e quindi funzionano come macchine e non; inoltre, non si trovano solo nella matematica e nell’informatica, 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 arbitrario, oggi è possibile identificarne 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 istruzione deve avere senso ed essere appropriata per l’applicazione al fine di ottenere un risultato o un valore di uscita.
Esecuzione
Le azioni e le singole fasi devono essere eseguibili e logiche.
Finitezza
L’obiettivo di un algoritmo è quello di convertire 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 circoscritto di caratteri o una memoria limitata.
Terminazione
Le singole fasi, eseguibili, 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.
Determinazione
Gli stessi input nelle stesse condizioni devono portare agli stessi output, solo così gli algoritmi possono garantire il funzionamento affidabile di un’applicazione e la risoluzione dei problemi.
Determinismo
Nella sequenza delle fasi dell’algoritmo, c’è sempre un solo modo per risolvere il problema. I passaggi successivi sono quindi chiaramente definiti dai risultati intermedi e non sono casuali.
Da cosa deriva l’importanza degli algoritmi?
Gli algoritmi hanno avuto un ruolo centrale nel XIX e nel XX secolo, soprattutto in matematica e logica, dove sono stati oggetto di dibattito. Oggi sono presenti in quasi tutti i settori della vita quotidiana. Di solito, però, non conosciamo gli algoritmi che rendono possibili alcune applicazioni, come la catena di montaggio alla cassa, i dispositivi di navigazione o il meccanismo di classificazione di un motore di ricerca come Google.
In informatica, gli algoritmi costituiscono la base centrale della programmazione. Chiunque cerchi di imparare a programmare si rende subito conto che quasi ogni programma utilizza degli algoritmi per eseguire un compito. In parole povere, ogni programma è un algoritmo.
Ciononostante, non tutti gli algoritmi sono programmi, dato che sono indipendenti dai linguaggi di programmazione web e possono anche essere formulati nella lingua “naturale”, rappresentati in formule matematiche o eseguiti in modo non meccanico. L’origine del termine risale all’VIII secolo e deriva dall’eclettico matematico khorezmiano al-Chwarizmi, abbreviazione di Abu Jah’far Muhammad ibn Musa al-Chwārizmī.
Ambiti di applicazione degli algoritmi
Gli algoritmi non sono limitati a linguaggi e metodi né a specifiche aree di applicazione. Poiché la loro utilità risiede nella risoluzione di problemi, essi rappresentano 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 dispositivi di navigazione, i sistemi di raccomandazione nei negozi online, il Real Time Advertising per la visualizzazione intelligente della pubblicità online, le app di traduzione e le simulazioni al computer.
In particolare, gli algoritmi continuano a guadagnare importanza nell’ambito dei Big Data e dell’intelligenza artificiale (IA). La digitalizzazione e la presenza di tecnologie intelligenti come gli smartphone, gli smartwatch e l’IA nelle automobili e nella domotica per la casa intelligente comportano un rapido aumento dei dati.
Ciò richiede computer e server con la necessaria potenza di calcolo, ma anche algoritmi per organizzare, valutare, elaborare o utilizzare grandi quantità di dati. I sensori dei veicoli automatizzati ne sono un esempio. Essi attivano le azioni del veicolo in base ai dati registrati. Anche gli algoritmi matematici giocano un ruolo decisivo nella creazione di simulazioni climatiche.
Allo stesso modo, il funzionamento dei motori di ricerca e la ricerca del percorso (pathfinding) in informatica non sarebbero possibili senza algoritmi. I cosiddetti crawler sono utilizzati per cercare, analizzare e indicizzare i contenuti web. Essi catalogano e indicizzano i dati in base all’algoritmo di un motore di ricerca. A sua volta, il posizionamento e la reperibilità dei risultati della ricerca dipendono da una catalogazione ottimale. L’algoritmo del motore di ricerca serve quindi come orientamento per un’efficiente ottimizzazione SEO.
Esempi di algoritmi
Ogni giorno vengono aggiunti nuovi algoritmi e applicazioni pratiche. I seguenti esempi illustrano alcuni algoritmi esistenti nella pratica.
L’algoritmo di Google
Google impiega una frazione di secondo per visualizzare i risultati della ricerca quando si inseriscono 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 leggibilità dei contenuti e alla sicurezza. Tuttavia, rimane un mistero come si presenti l’algoritmo esattamente e come funzioni nel dettaglio.
Ricette di cucina
Le semplici ricette di cucina incarnano il principio di base di un algoritmo. Gli ingredienti possono essere intesi come input che portano al risultato in una sequenza specifica e fissa di azioni. I siti di cucina che permettono di calcolare la quantità di ingredienti in base alle porzioni e al numero di persone utilizzano algoritmi.
Indice di massa corporea
La percentuale di grasso corporeo di un individuo può essere calcolata utilizzando 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, sovrappeso o obeso.
ASIC
Il cosiddetto circuito integrato specifico per l’applicazione 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 processore grafico.
Data mining
Il processo di ricerca, la raccolta, l’analisi, la catalogazione e l’indicizzazione dei dati è chiamato anche data mining. In questo caso si utilizzano algoritmi, l’intelligenza artificiale e l’apprendimento automatico.
Algoritmi di estrazione di criptovalute
Nel mining di criptovalute, le transazioni in criptovaluta sono documentate, verificate e pubblicate nella blockchain. Come parte del processo, i minatori di criptovalute risolvono algoritmi relativi alle transazioni, simili a puzzle numerici. La loro risoluzione serve a verificare le transazioni.
Reti neurali
Una rete neurale è un’area del deep learning. Gli algoritmi di deep learning sono utilizzati per simulare e riprodurre le funzioni del cervello umano. Questi possono essere utilizzati per varie funzioni come l’assistenza vocale, la traduzione, la protezione dagli attacchi informatici o la generazione di testi.