Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
02 - Gli Algoritmi
Formulare un problema
Per comprendere gli algoritmi, partiamo de nendo il concetto di problema.
De nizione di problema
...quesito da risolvere mediante la determinazione di uno o più enti, partendo da elementi noti e
condizioni ssate in precedenza.
Un problema è dunque in primis un quesito (o, analogamente, un compito) che necessita di una
risoluzione (o svolgimento). Esempi concreti di problema sono:
Possiamo vedere che i problemi possono essere di ogni tipo e di coltà; sono tutti accomunati
però dal fatto che, qualora siano risolvibili, per farlo è necessario adoperare un algoritmo.
L'ente risolutore
La risoluzione del problema è delegata ad un o più enti, propriamente intesi come esecutori di
una serie di step necessari a risolvere il problema.
Rimanendo agli esempi precedenti, il risolutore del primo problema è il montatore del mobile;
quello per il secondo è lo studente che calcola l'area del triangolo mediante il teorema di
Pitagora; nel terzo caso invece abbiamo il matematico teorico, che dimostra (o confuta)
l'ipotesi di Riemann.
https://anhelus.github.io/informatica-dm-uniba/01_introduttivi/02_algoritmi/ 1/7
16/11/2020 02 - Gli Algoritmi - Informatica - Corso di Laurea in Matematica - UniBa
La risoluzione del problema non può prescindere dalla conoscenza degli elementi noti e delle
condizioni ssate per lo stesso. Intuitivamente, questo signi ca conoscere lo stato del mondo a
partire dal quale dovremo risolvere il problema.
In primis, per montare il mobile IKEA, avremo bisogno della conoscenza di dettagli quali:
Oltre questo, potrebbero esserci alcune condizioni da rispettare, come ad esempio cercare
(invano) di montare il mobile prima che tramonti il sole, o il provare a non rompere nulla.
Nota
La determinazione degli elementi noti e delle condizioni ssate per la dimostrazione dell'ipotesi
di Riemann è lasciata come banale esercizio al lettore.
Risolvere un problema
La formulazione di un problema implica quindi la determinazione del cosa (il quesito da
risolvere), del chi (l'esecutore materiale della risoluzione) e del da dove (lo stato di partenza e le
condizioni ssate). In particolare, diamo a questi ultimi il nome di dati: i dati caratterizzano,
anche parzialmente, lo stato iniziale del mondo, e possono essere forniti in un linguaggio
naturale che permetta di descrivere delle situazioni, o stati, e le differenze tra di essi.
Problemi e soluzioni
Il lettore più attento noterà che manca ancora un elemento fondamentale, ovvero il come.
Questo è de nito individuando un apposito metodo di risoluzione o, più semplicemente, una
soluzione al problema.
Dal punto di vista formale, l'individuazione del metodo di risoluzione può essere espressa
come una relazione univoca che associa ad ogni elemento dello spazio dei problemi (o meglio,
delle classi di problemi, come sarà più chiaro in seguito) P uno o più elementi dello spazio delle
soluzioni S. Questo è rappresentato dal seguente diagramma di Eulero-Venn:
https://anhelus.github.io/informatica-dm-uniba/01_introduttivi/02_algoritmi/ 2/7
16/11/2020 02 - Gli Algoritmi - Informatica - Corso di Laurea in Matematica - UniBa
Informalmente, possiamo dire che per ogni problema (se risolvibile) esiste almeno una
soluzione.
Costruire la soluzione
il modo in cui le operazioni di cui sopra possono essere combinate per realizzare
operazioni più complesse.
Operazioni atomiche
Per operazione "atomica" intendiamo un'operazione che non è possibile sempli care (ovvero
suddividere) in alcun modo. Esempi di operazione atomica possono essere:
Il lettore più zelante potrebbe pensare che una somma è suddivisibile usando l'inverso della
proprietà associativa. Ciò porterebbe però a scomporre una somma in due somme, che
potrebbero essere scomposte in tre somme, e via dicendo. Questa operazione risulta essere
controproducente, oltre che contraria al senso comune; si invita quindi il lettore zelante ad
adeguarsi al senso comune ed evitare una
https://anhelus.github.io/informatica-dm-uniba/01_introduttivi/02_algoritmi/ 3/7
16/11/2020 02 - Gli Algoritmi - Informatica - Corso di Laurea in Matematica - UniBa
La singola transazione sul proprio corrente bancario è in realtà scomponibile, dal punto di vista
informatico, in un gran numero di operazioni atomiche: il correntista, infatti, effettua
l'autenticazione, completa un form, nalizza la transazione e la esegue. Dato che tutte queste
operazioni devono però essere necessariamente completate in un ordine ben de nito, i sistemi
bancari le vedono come un'unica operazione, che è possibile annullare qualora sopravvenga un
problema qualsiasi (problemi di autenticazione, rete non disponibile, mancanza di energia
elettrica su uno dei sistemi, etc.).
effettuandole in sequenza (come nel caso del versamento e del prelievo sul proprio conto
corrente bancario);
effettuandole in parallelo.
Nel secondo caso, più operazioni vengono eseguite contemporaneamente. Ciò comporta però
la necessità di due problemi principali, ovvero:
Il secondo è meno evidente, ma altrettanto degno di attenzione. Infatti, voi e vostro cugino
dovrete necessariamente coordinarvi per non urtarvi, usare gli stessi attrezzi, e via dicendo.
L'alternativa sarebbe fare a meno del cugino, e simulare il parallelismo montando i due mobili
da voi contemporaneamente; in questo caso, però, il tempo che impieghereste è sicuramente
maggiore, ed avreste la necessità di ottimizzare le operazioni da fare cercando di minimizzare
lo sforzo necessario a terminare i lavori.
Individuare le operazioni atomiche e trovare dei modi per combinarle permette quindi di de nire
un insieme di operatori che possono essere applicati ad un problema per modi carne lo stato
(idealmente, da "aperto" a "risolto", considerando eventualmente gli step intermedi). Per essere
comprensibili dal risolutore, questi operatori dovranno essere espressi in un linguaggio che
faccia riferimento esplicito al contesto del problema.
https://anhelus.github.io/informatica-dm-uniba/01_introduttivi/02_algoritmi/ 4/7
16/11/2020 02 - Gli Algoritmi - Informatica - Corso di Laurea in Matematica - UniBa
Da soluzione ad algoritmo
La soluzione sarà quindi de nita come un operatore composto nel linguaggio di processo, il cui
compito è trasformare lo stato iniziale del mondo (ovvero problema aperto) in quello che
de nisce la situazione desiderata (ovvero problema risolto).
L'algoritmo è la serie di istruzioni che speci ca l'insieme delel azioni che è necessario compiere
per risolvere il problema.
Un esempio
Facciamo un esempio. Proviamo a formulare e risolvere un semplice problema matematico,
ovvero il calcolo dell'ipotenusa di un triangolo rettangolo.
Dati due numeri interi c1 e c2, rappresentanti le lunghezze dei due cateti di un triangolo rettangolo
T , calcolarne l'ipotenusa i.
Dati
Esempio numerico
Dati
c1 = 3
c2 = 4
Passi dell'algoritmo
https://anhelus.github.io/informatica-dm-uniba/01_introduttivi/02_algoritmi/ 5/7
16/11/2020 02 - Gli Algoritmi - Informatica - Corso di Laurea in Matematica - UniBa
2
Step 1 → c1 = 9 = v1
2
Step 2 → c2 = 16 = v2
Step 3 → v1 + v2 = 25 = v3
Step 4 → √v3 = 5 = v4
Il risultato è v4 = 5 .
1. nitezza: gli algoritmi sono niti, sia dal punto di vista spaziale, sia da quello temporale;
2. generalità: gli algoritmi sono generici, ovvero rappresentano una soluzione ad un'intera
classe di problemi;
3. completezza: gli algoritmi sono completi, e quindi possono risolvere tutte le istanze del
problema;
4. non ambiguità: gli algoritmi non sono ambigui, e ciò comporta che tutte le istruzioni sono
univoche e ben interpretabili;
5. eseguibilità: gli algoritmi sono eseguibili, nel senso che l'esecutore deve (potenzialmente)
essere in grado di eseguire ogni singolo passo dell'algoritmo.
1. può essere risolto in un numero di passi nito, che non occupa uno spazio (ad esempio su
carta o nella memoria di un computer) in nito;
2. può risolvere ogni problema di determinazione dell'ipotenusa, anche cambiando i valori dei
cateti (a patto ovviamente che si tratti sempre di un triangolo rettangolo, e che quindi si sia
nell'ambito della stessa classe dei problemi);
In merito alla 4, è interessante notare come, probabilmente, nessun manuale IKEA (o a ni) sia
algoritmico.
Determinismo
https://anhelus.github.io/informatica-dm-uniba/01_introduttivi/02_algoritmi/ 6/7
16/11/2020 02 - Gli Algoritmi - Informatica - Corso di Laurea in Matematica - UniBa
Gli algoritmi non deterministici sono invece affetti da fenomeni di tipo casuale, o stocastico;
sono in genere algoritmi avanzati, usati perlopiù in applicazioni di statistica e machine learning,
che non tratteremo durante questo corso.
E' importante sottolineare come gli algoritmi possano accettare sia input sia output anche non
numerici.
Un esempio è dato dall'algoritmo per determinare se una stringa è palindroma: questo accetta
come dati una serie di caratteri, e dà una risposta di tipo binario (VERO o FALSO).
Oltre ad input ed output, gli algoritmi spesso utilizzano dei dati di supporto, chiamati variabili.
Ne tratteremo molto più estesamente durante il prosieguo del corso.
https://anhelus.github.io/informatica-dm-uniba/01_introduttivi/02_algoritmi/ 7/7