Se volete sapere cosa si intende per algoritmo nell’uso quotidiano del termine, andate pure alla fine di questa voce e leggete solo gli ultimi due paragrafi. Se, invece, volete vedere quant’è profonda la tana del bianconiglio, continuate a leggere da qui.
Il termine “algoritmo” viene dal latino “algorithmus”, parola che nasce nel medioevo e deriva dall’espressione “al-Khuwārizmī”, soprannome del matematico persiano Muḥammad ibn Mūsa vissuto nel IX secolo. Quando si parla di algoritmo, a rigore, si indica una procedura o metodo sistematico per risolvere tutti i problemi di un certo genere. Si intende, ovvero, una sequenza finita di istruzioni che, se seguite alla lettera, portano alla soluzione di ogni problema specifico che appartenga ad una certa famiglia di problemi.
Ponete, ad esempio, di voler sapere se una borsa contiene più oggetti o meno di una seconda borsa. Un algoritmo per fare questo consiste nell’appaiare ciascun oggetto contenuto nella prima borsa con un oggetto contenuto nella seconda borsa (facendo attenzione che nessun oggetto appartenga a più di una coppia) finché una delle due borse non contiene più oggetti da appaiare. Se abbiamo appaiato tutti gli oggetti della prima borsa ma non tutti quelli della seconda, allora la prima contiene meno oggetti della seconda. Se abbiamo appaiato tutti gli oggetti della seconda borsa ma non tutti quelli della prima, allora la prima contiene più oggetti della seconda. Se abbiamo appaiato tutti gli oggetti sia della prima che della seconda borsa, allora la prima borsa contiene tanti oggetti quanti ne contiene la seconda. Non importa che genere di oggetti contengano le due borse, né quanti oggetti siano contenuti in una borsa o nell’altra. Questa procedura ci permetterà, in ogni caso, di sapere quale borsa contiene più oggetti.
In questo senso, un algoritmo rappresenta uno schema astratto di manipolazione di oggetti che può essere implementato in una macchina. Un programma di computer, ad esempio, è proprio un modo di implementare un algoritmo in un sistema fisico di calcolo.
La parola “algoritmo”, però, viene spesso usata in riferimento all’intelligenza artificiale (AI) per indicare, da una parte, metodi per generare specifici programmi di AI, dall’altra, specifici programmi di AI. Si parla, ad esempio, di algoritmi di apprendimento non supervisionati, algoritmi di apprendimento per rinforzo e algoritmi di deep learning. Un algoritmo, in questo senso, è una particolare tecnica che ci permette di definire un programma e di adeguarlo ad un certo compito tramite un processo di addestramento, oppure un programma ottenuto tramite una di queste tecniche.
Si parla, inoltre, di algoritmo (o addirittura de “l’algoritmo”) per indicare un sistema di raccomandazione (RecSys) tra quelli usati, ad esempio, dai social network. Questi sono sistemi di filtraggio dell’informazione che forniscono suggerimenti riguardanti la pertinenza di un’informazione per un certo utente.