Passa ai contenuti principali

Che cos’è un algoritmo? Molto più di una parola da informatici

 


La parola algoritmo compare ormai ovunque.

La incontriamo quando parliamo di motori di ricerca, social network, intelligenza artificiale, applicazioni, sicurezza informatica e perfino quando qualcuno dice che “l’algoritmo di Instagram ha deciso cosa mostrarci”.

A forza di sentirla nominare, però, rischiamo di darle un significato quasi misterioso, come se un algoritmo fosse una specie di entità invisibile che decide autonomamente cosa fare.

In realtà il concetto di algoritmo è molto più semplice.

Un algoritmo è una sequenza ordinata e finita di istruzioni che permette di risolvere un problema o raggiungere un determinato risultato.

Detto ancora più semplicemente:

un algoritmo è un procedimento.

Riceve delle informazioni, esegue una serie di operazioni secondo regole precise e produce un risultato.

E, cosa forse sorprendente, gli algoritmi non appartengono soltanto al mondo dei computer.

Li utilizziamo continuamente anche nella vita quotidiana.

Un esempio semplicissimo: preparare una tazza di tè

Immaginiamo di dover spiegare a qualcuno come preparare una tazza di tè.

Potremmo scrivere:

  1. Prendi una tazza.

  2. Metti dell’acqua in un bollitore.

  3. Scalda l’acqua.

  4. Inserisci una bustina di tè nella tazza.

  5. Versa l’acqua calda.

  6. Aspetta alcuni minuti.

  7. Rimuovi la bustina.

  8. Aggiungi eventualmente zucchero o miele.

  9. Bevi il tè.

Abbiamo appena costruito qualcosa che assomiglia moltissimo a un algoritmo.

Abbiamo un obiettivo: preparare il tè.

Abbiamo una serie di istruzioni.

Le istruzioni devono essere eseguite in un certo ordine.

E alla fine otteniamo un risultato.

Se cambiassimo completamente l’ordine delle operazioni, potremmo avere qualche problema.

Per esempio, tentare di versare l’acqua prima di aver preso la tazza non sarebbe particolarmente efficace.

Questo piccolo esempio ci fa capire una caratteristica fondamentale: in un algoritmo, l’ordine delle operazioni può essere importante.

Dal tè al computer

Un computer funziona in modo molto simile, anche se naturalmente le istruzioni che riceve sono molto più precise.

Il computer non interpreta le nostre intenzioni come farebbe una persona.

Se diciamo a qualcuno:

“Ordina questi numeri dal più piccolo al più grande”

una persona comprende abbastanza facilmente cosa intendiamo.

Un computer, invece, ha bisogno di sapere come deve effettuare quell’ordinamento.

Deve ricevere un procedimento.

Potremmo, per esempio, dirgli di confrontare due numeri alla volta, verificare quale sia il più piccolo, spostarlo nella posizione corretta e ripetere l’operazione fino a quando l’intero elenco non risulta ordinato.

Quel procedimento è un algoritmo.

Input, elaborazione e output

Molti algoritmi possono essere rappresentati attraverso un modello molto semplice:

Input → Elaborazione → Output

L’input rappresenta i dati che forniamo all’algoritmo.

L’elaborazione è l’insieme delle operazioni che vengono eseguite.

L’output è il risultato ottenuto.

Facciamo un esempio.

Supponiamo di avere questi numeri:

12 – 7 – 20 – 4

Vogliamo ordinarli dal più piccolo al più grande.

L’input sarà:

12 – 7 – 20 – 4

L’algoritmo eseguirà una serie di confronti e spostamenti.

L’output sarà:

4 – 7 – 12 – 20

Questa struttura, apparentemente semplice, è alla base di una quantità enorme di operazioni informatiche.

Un secondo esempio: trovare il numero più grande

Immaginiamo di avere una lista di numeri:

15 – 8 – 42 – 23 – 17

Vogliamo trovare il più grande.

Una possibile procedura potrebbe essere questa.

Prendiamo il primo numero, 15, e lo consideriamo momentaneamente il più grande.

Poi lo confrontiamo con il numero successivo.

15 è maggiore di 8, quindi manteniamo 15.

Confrontiamo 15 con 42.

42 è maggiore, quindi adesso consideriamo 42 il numero più grande.

Confrontiamo 42 con 23.

42 rimane il più grande.

Infine confrontiamo 42 con 17.

Anche in questo caso 42 è maggiore.

Il risultato finale sarà quindi:

42

Il computer potrebbe utilizzare una procedura simile.

In forma semplificata potremmo scriverla così:

  • considera il primo numero come il maggiore;

  • confrontalo con il successivo;

  • se il nuovo numero è maggiore, sostituiscilo;

  • continua fino alla fine della lista;

  • restituisci il valore maggiore.

Questo è un algoritmo.

Un algoritmo deve essere preciso

Qui compare una delle differenze più importanti tra il modo di ragionare umano e quello di un computer.

Noi possiamo comprendere istruzioni relativamente vaghe.

Se qualcuno ci dice:

“Metti un po’ d’acqua nella pentola”

riusciamo normalmente a interpretare il significato di “un po’”.

Un computer non possiede automaticamente questa capacità.

Un algoritmo destinato a essere eseguito da una macchina deve quindi utilizzare istruzioni sufficientemente precise.

Dire:

“Prendi qualche numero e sistemali bene”

non è una buona istruzione informatica.

Bisogna specificare quali numeri prendere, come confrontarli, secondo quale criterio ordinarli e quando considerare conclusa l’operazione.

Un algoritmo deve anche terminare

Un’altra caratteristica importante è che un algoritmo deve essere finito.

Deve cioè arrivare, prima o poi, a una conclusione.

Immaginiamo una procedura del tipo:

  1. Aggiungi 1 a un numero.

  2. Torna al punto 1.

Il procedimento continuerebbe indefinitamente.

Saremmo di fronte a un ciclo che non termina.

In programmazione situazioni simili possono realmente verificarsi e vengono spesso chiamate loop infiniti.

Un algoritmo ben progettato dovrebbe invece avere una condizione che stabilisce quando fermarsi.

Per esempio:

“Continua ad aggiungere 1 fino a quando il numero raggiunge 100.”

Ora il procedimento possiede una condizione di arresto.

Algoritmo e programma non sono la stessa cosa

I due termini vengono spesso utilizzati come sinonimi, ma indicano concetti differenti.

Un algoritmo è il procedimento logico utilizzato per risolvere un problema.

Un programma è invece la traduzione di uno o più algoritmi in un linguaggio che il computer può eseguire.

Potremmo quindi pensare all’algoritmo come alla ricetta e al programma come alla ricetta scritta in una lingua comprensibile alla macchina.

Lo stesso algoritmo può inoltre essere implementato utilizzando linguaggi di programmazione diversi.

Per esempio, un algoritmo per trovare il valore massimo all’interno di una lista potrebbe essere scritto in Python, Java, C++, JavaScript o molti altri linguaggi.

La logica rimane la stessa.

Cambia il modo in cui quella logica viene descritta al computer.

Esiste sempre un solo algoritmo per ogni problema?

No.

Ed è proprio qui che le cose diventano interessanti.

Lo stesso problema può spesso essere risolto utilizzando algoritmi differenti.

Immaginiamo di voler trovare un nome all’interno di un elenco telefonico ordinato alfabeticamente.

Potremmo iniziare dalla prima pagina e controllare tutti i nomi uno dopo l’altro.

Funzionerebbe.

Ma se l’elenco contiene migliaia di nomi potrebbe essere un metodo molto lento.

Potremmo invece aprire il libro circa a metà.

Se il cognome che cerchiamo viene alfabeticamente prima dei nomi presenti in quella pagina, continueremo a cercare nella prima metà.

Altrimenti cercheremo nella seconda.

Ripetendo il procedimento possiamo restringere rapidamente l’area di ricerca.

Abbiamo quindi due algoritmi differenti che risolvono lo stesso problema, ma uno può essere molto più efficiente dell’altro.

Che cosa significa “algoritmo efficiente”?

Quando valutiamo un algoritmo non ci interessa soltanto sapere se funziona.

Ci interessa anche sapere quanto bene funziona.

Un algoritmo può richiedere più o meno tempo, memoria o risorse del computer.

Immaginiamo due metodi che permettono entrambi di trovare una determinata informazione.

Il primo richiede cento operazioni.

Il secondo ne richiede dieci.

Entrambi producono il risultato corretto, ma il secondo potrebbe essere considerato più efficiente.

Quando la quantità di dati diventa enorme, questa differenza può diventare fondamentale.

Un algoritmo leggermente più efficiente su dieci elementi può sembrare irrilevante.

Su milioni o miliardi di elementi può invece fare una differenza enorme.

E gli algoritmi dei social network?

Quando sentiamo dire:

“È colpa dell’algoritmo”

stiamo spesso semplificando un sistema molto più complesso.

Una piattaforma social può utilizzare numerosi algoritmi per decidere quali contenuti suggerire.

Il sistema potrebbe tenere conto, per esempio, dei contenuti con cui abbiamo interagito, delle persone che seguiamo, del tempo trascorso su determinati post, dei nostri interessi apparenti e di molti altri segnali.

Il risultato potrebbe essere una classifica dei contenuti considerati più interessanti per noi.

In questo caso possiamo immaginare qualcosa del genere:

Input: informazioni disponibili sulle interazioni.

Elaborazione: applicazione di regole, modelli e calcoli.

Output: elenco dei contenuti da mostrarci.

Naturalmente i sistemi reali sono molto più complessi, ma la struttura generale rimane quella.

Algoritmi e intelligenza artificiale

Anche l’intelligenza artificiale utilizza algoritmi.

Qui però è importante evitare una semplificazione.

Un moderno sistema di IA non funziona necessariamente come una lunga lista di istruzioni scritte manualmente del tipo:

“Se l’utente scrive questa parola, rispondi in questo modo.”

Sistemi come quelli basati sul machine learning utilizzano algoritmi per apprendere modelli e relazioni partendo da grandi quantità di dati.

L’algoritmo rimane quindi fondamentale, ma il comportamento finale può essere il risultato di un processo di apprendimento molto più complesso rispetto a un normale programma basato su regole fisse.

L’algoritmo non pensa

Un ultimo punto merita attenzione.

Tendiamo spesso ad attribuire agli algoritmi caratteristiche umane.

Diciamo che:

  • “l’algoritmo vuole”,
  • “l’algoritmo preferisce”,
  • “l’algoritmo ha deciso”.

Sono espressioni comode, ma non dobbiamo dimenticare che dietro un algoritmo esistono regole, obiettivi, dati e scelte progettuali.

Un algoritmo tradizionale non prova preferenze e non possiede intenzioni.

Esegue un procedimento.

Questo non significa che i suoi risultati siano sempre neutrali o perfetti.

Se i dati utilizzati sono sbagliati, le regole sono progettate male oppure l’obiettivo scelto è discutibile, anche il risultato può esserlo.

Per questo capire almeno a grandi linee che cosa sia un algoritmo è importante non soltanto per chi programma.

È una piccola forma di cittadinanza digitale.

In fondo utilizziamo algoritmi da sempre

L’informatica ha reso gli algoritmi estremamente potenti, veloci e complessi, ma l’idea di fondo è antichissima.

Ogni volta che descriviamo una procedura precisa per ottenere un risultato stiamo ragionando in modo algoritmico.

  • Preparare una ricetta.
  • Seguire una strada.
  • Calcolare una percentuale.
  • Ordinare una serie di documenti.
  • Cercare un nome in un elenco.

Il computer ha semplicemente portato questo concetto a una scala completamente diversa.

Per questo, la prossima volta che sentiremo pronunciare la misteriosa frase:

“Lo ha deciso l’algoritmo”

potremmo tradurla mentalmente in qualcosa di meno inquietante:

“Un sistema ha applicato una serie di regole e calcoli a determinati dati, producendo quel risultato.”

Forse è meno affascinante.

Ma è decisamente più vicino alla realtà.


Piccolo vocabolario dell’algoritmo

Algoritmo
Sequenza ordinata e finita di istruzioni utilizzata per risolvere un problema o ottenere un risultato.

Condizione
Regola che permette a un algoritmo di scegliere quale operazione eseguire in base a una determinata situazione.

Dato
Un dato è una rappresentazione simbolica (numerica, testuale, visiva, sonora…) di un’informazione in forma grezza, che può essere memorizzata, trasmessa ed elaborata da un computer.

Elaborazione
Insieme delle operazioni eseguite sui dati per produrre un risultato.

Efficienza
Misura di quante risorse, come tempo e memoria, sono necessarie per eseguire un algoritmo.

Input
Dato o insieme di dati forniti a un algoritmo prima dell’elaborazione.

Istruzione
Singola operazione che deve essere eseguita durante un procedimento.

Loop o ciclo
Sequenza di istruzioni ripetuta più volte. Se non esiste una corretta condizione di arresto può trasformarsi in un ciclo infinito.

Output
Risultato prodotto dall’algoritmo dopo l’elaborazione.

Programma
Insieme di istruzioni scritte in un linguaggio di programmazione ed eseguibili da un computer.

Linguaggio di programmazione
Sistema formale utilizzato per scrivere istruzioni che possono essere tradotte ed eseguite da un computer.

Machine learning
Settore dell’intelligenza artificiale in cui algoritmi e modelli vengono utilizzati per individuare schemi nei dati e migliorare determinate prestazioni attraverso l’esperienza fornita dai dati.

Ordinamento
Operazione che dispone un insieme di elementi secondo un determinato criterio, per esempio dal numero più piccolo al più grande o in ordine alfabetico.

Le immagini e i testi presenti possono essere realizzati con il supporto di strumenti di Intelligenza Artificiale generativa, nell'ambito di una cooperazione consapevole tra intelligenza umana e artificiale. I contenuti sono selezionati, verificati e revisionati con responsabilità editoriale umana.

Seguimi anche sul canale WhatsApp per non perderti nessuna novità!

Commenti

Post popolari in questo blog

Email: MAIUSCOLO o minuscolo?

Falso mito: le maiuscole nelle email contano? Scopriamolo passo passo! Spesso capita di sentir dire: "Attento, l'email va scritta tutta minuscola altrimenti non arriva!" Ma è vero? Spoiler: NO . Vediamo insieme perché questo è un falso mito e cosa dice davvero la tecnologia. 💡 Passo 1: Come è strutturato un indirizzo email? Un indirizzo email ha due parti principali: - La parte locale : prima della @ (es. nome.cognome) - Il dominio : dopo la @ (es. gmail.com, outlook.it, ecc.) Esempio: nome.cognome@gmail.com   🔹 Passo 2: Le maiuscole hanno valore? - Nella maggior parte dei casi NO. - I server email non distinguono tra maiuscole e minuscole . - Quindi scrivere Mario.Rossi@gmail.com o mario.rossi@gmail.com è esattamente la stessa cosa. ⚡ Eccezioni rare ma possibili Tecnicamente, secondo le specifiche ufficiali, la parte locale (prima della @) potrebbe essere case-sensitive . Questo significa che, in teoria, Pippo@dominio.com potrebbe essere diverso da pippo@dominio.com....

Come spostare un paragrafo in Word velocemente: metodi e scorciatoie

 Come spostare paragrafi in Word in un Attimo: Metodi e Scorciatoie Se lavori spesso con Microsoft Word, sai quanto può essere frustrante spostare i paragrafi manualmente. Il classico metodo taglia (Ctrl + X) e incolla (Ctrl + V) è lento e scomodo, soprattutto nei documenti lunghi. Ma c’è un modo più veloce! Word offre funzioni integrate e scorciatoie da tastiera per spostare interi paragrafi in pochi secondi, senza dover usare il copia-incolla. In questa guida vedremo i metodi più rapidi ed efficienti per riorganizzare il testo senza perdere tempo. Scopri subito come fare!     🖱️ Metodo 1: Spostare un Paragrafo con il Mouse Uno dei metodi più rapidi per spostare un paragrafo in Microsoft Word è utilizzare il trascinamento con il mouse, senza bisogno di tagliare e incollare manualmente. ✅ Come fare: Seleziona il paragrafo che vuoi spostare: clicca all’inizio e trascina il cursore su tutto il testo. Tieni premuto il tasto Maiusc (Shift). Clicca e trascina il paragraf...

Il viaggio del simbolo @ fino ai tempi moderni

Da Wikipedia: Il simbolo @ utilizzato come lettera capitale della parola "Amin" (Amen) nella Cronaca di Manasse, 1345. Il simbolo @, comunemente noto come "chiocciola" in italiano, ha una storia affascinante che si intreccia con l'evoluzione della comunicazione scritta. Questo carattere distintivo, che oggi associamo principalmente con gli indirizzi email, ha origini che risalgono ben oltre l'era digitale. La chiocciola ha avuto molteplici significati nel corso dei secoli. Inizialmente, si pensava che derivasse dalla contrazione della preposizione latina "ad", utilizzata dai monaci medievali per indicare un luogo o un indirizzo. Tuttavia, ricerche più recenti suggeriscono che il simbolo @ potrebbe aver rappresentato l'unità di misura "anfora", usata nell'antica Grecia e a Roma per indicare capacità e peso. Il passaggio del simbolo @ nel mondo della tecnologia avviene nel 1971, quando il programmatore statunitense Ray Tomlinson lo ...