Per esempio, algoritmi (o procedure) per costruire modellini di aerei (espressi nei fogli di istruzioni) o per azionare la lavatrice o per suonare una melodia al piano (espressa in un insieme di simboli negli spartiti). Inizialmente il termine algoritmo indicava esclusivamente procedure per il calcolo, come appunto l'algoritmo di Euclide per trovare il MCD (Massimo Comun Divisore).
La procedura prescrive che si divida il primo dei due numeri dati per il secondo, si effettui un controllo, eventualmente si proceda nell'assegnare valori diversi a dividendo e divisore, introducendo il resto della prima divisione, quindi si ripeta il ciclo. La domanda sul tappeto ora è: ma funziona davvero?, nel caso si dovesse ripetere il ciclo un numero elevato di volte siamo certi che prima o poi si arrivare ad un termine? Dapprima possiamo provare con una coppia di numeri positivi e vedere empiricamente se otteniamo il risultato voluto. Questo metodo non ci da una dimostrazione di correttezza della procedura, ma certamente se trovassimo una coppia di numeri per cui la procedura non funzionasse, allora potremmo dire che questa non è corretta. Proviamo, quindi, ad esempio con m = 119 e n = 544:
Come si vede ripetendo il ciclo di istruzione 7 volte siamo giunti alla risposta cercata per la coppia di numeri (119, 544). Sarà sempre così? Per tutte le possibili coppie possiamo garantire che ci siano sequenze, ancorchè lunghe, che conducono alla risposta. O esiste una coppia di numeri per cui non ci si arresta mai nella regressione dei 3 passi e che darà luogo ad una sequenza infinita? Potremo parlare di algoritmo solo se questo è costituito da un insieme finito di istruzioni che dia luogo ad una sequenza finita di operazioni. In altri termini dobbiamo garantire che il processo termini dopo un numero finito di passi e che ogni passo sia definito precisamente, in modo che non ci siano ambiguità. Per l'algoritmo di Euclide si può dimostrare (ma occorre farlo prima di poter dire funziona!) che il processo termina in un numero finito di operazioni, se si osserva che la sequenza dei resti è una sequenza di numeri interi positivi decrescenti, che quindi raggiunge senza dubbio lo 0. Alcune procedure mancano di questa caratteristica di finitezza dei passi di esecuzione per tutti i possibili valori dei dati di ingresso e in questo caso non possiamo parlare di algoritmi.
La ricerca di algoritmi è stata una parte rilevante del lavoro del matematico nei secoli, anche prima dell'era dei computer. Perchè la presenza di algoritmi semplifica e rende più affidabile la soluzione dei problemi. Quando l'algoritmo è stato scoperto la sua esecuzione non richiede la comprensione dei principi su cui esso si basa, ma abilita chiunque lo segua esattamente a risolvere il problema. In un certo senso l'intelligenza per risolvere il problema sta nell'algoritmo e non nella sua esecuzione. È attraverso la definizione di algoritmi che rendiamo il computer capace di assolvere compiti complessi. Solo se troviamo algoritmi per affrontare i problemi possiamo pensare che una macchina li risolva. |
![]() |
Lezione 1. La soluzione algoritmica di problemi Copyright © 2002. Alberti. DSI, Università degli Studi di Milano. |
![]() |