Algoritmi e calcolabilità - Lezione in semi-presenza

Lezione in semi-presenza

5. Problemi risolti da più algoritmi

Sommare due numeri

La somma: dati due numeri, bisogna sommarli. Per svolgere una somma, si possono utilizzare due metodi. Il metodo più semplice, che viene insegnato ai bambini molto piccoli (prima elementare) perché è più facile da comprendere, è il metodo del pallottoliere.

Somma e addizione sono due sinonimi. L’operazione della somma consiste nel mettere insieme due elementi (una certa somma di sassi e un’altra certa somma di sassi). Il risultato che otterremo da quest’unione sarà il risultato della somma, quindi da due numeri, ne avremo solo uno.

Metodo del pallottoliere

DiapositivaDiapositiva

Tornando al metodo del pallottoliere, abbiamo due insiemi di sassi, A e B. in A ci sono 7 sassi e in B ci sono 2 sassi. Per fare la somma tra A e B, usando il metodo del pallottoliere, si comincerà sottraendo un sasso a B per metterlo in A. in questo passaggio vediamo quindi che A contiene 8 sassi e B ne contiene 1. ma la somma non è finita, ripetiamo il procedimento precedente così che in A vi saranno 9 sassi e in B 0. la somma è terminata e il risultato è 9.

Questo si chiama metodo del pallottoliere perché il pallottoliere sposta una pallina alla volta. Questo procedimento è particolare perché non abbiamo sommato A e B per ottenere un risultato in C (ad esempio), ma abbiamo sottratto a B e aggiunto ad A per ottenere il risultato in A.

Non si tratta della normalità di quando descriviamo una somma che sarebbe piuttosto: sette più due è uguale a nove (7 + 2 = 9).

L’algoritmo del pallottoliere si ha quando: per prima cosa la capacità base è saper sommare e sottrarre un’unita. A e B sono i due numeri che voglio sommare, perciò si metterà in A ciò che si ottiene facendo A + 1 e in B ciò che si ottiene facendo B – 1. se B non è uguale a 0 si deve ripetere il procedimento. In questo caso si deve ripetere due volte prima che B sia 0. quando B è 0 vediamo che A contiene la somma tra l’originale A (in questo caso 7) e l’originale B (in questo caso 2).

E’ un algoritmo perché si tratta di una sequenza di istruzioni finita perché la posso scrivere in un foglio finito (o più fogli). Su questi fogli ci sono le istruzioni o operazioni, che sono una dopo l’altra.

Algoritmo “normale”

DiapositivaDiapositiva

Ma c’è anche un altro algoritmo per sommare due o più numeri ovvero quello che noi oggi definiamo “normale”. Anche qui lo definiremo tale in quanto è quello che ci viene generalmente insegnato per svolgere una somma. Come si deve procedere?

Prendendo i due numeri, A e B, si mettono i due numeri in colonna ovvero B allineato sotto ad A o viceversa. Allineati di modo che le unità coincidano e così via. Una volta fatto ciò si traccia la linea sotto all’ultimo numero, si scrive un = e si comincia lo svolgimento.

Si comincerà dalla colonna più a destra che chiameremo colonna attiva e li sommiamo. Se la somma supera 10 dovremo usare il riporto. L’uno del riporto lo scriveremo più piccolo, in alto, accanto alla colonna delle decine. Poi si sommano anche le decine con eventuale riporto e così avremo il risultato per intero.

Anche questo è un algoritmo. La capacità-base di quest’algoritmo è saper contare fino a 10. oggetti conoscitivi che già avevamo in mente, si chiamano algoritmi. Ovviamente, quando abbiamo finito con la colonna delle unità, la colonna attiva si sposta verso sinistra e poi via via che l’algoritmo procede.

Abbiamo così terminato il problema della somma e abbiamo visto che vi sono due algoritmi per risolverlo (anche se se ne potrebbero inventare altri). Ma perché sono due? Qual è il migliore dei due? Come scegliamo tra i due?

Diapositiva

Moltiplicare due numeri

Algoritmo del pallottoliere

DiapositivaDiapositiva

Altro problema: dati due numeri A e B, dobbiamo moltiplicarli. Avremo anche qui due algoritmi. Ma se sapessimo solo sommare, come potremo operare? Abbiamo 3 colonne, A, B e C. sotto A c’è il numero che vi corrisponde, sotto B c’è il numero che vi corrisponde e sotto C ci scriveremo il risultato.

Nel primo passo C è 0. cominciamo, per ogni passaggio, a diminuire B di un’unità e, ogni volta che lo facciamo, aggiungiamo in C il valore di A. alla fine avremo il numero A moltiplicato il numero B in C.

E’ uguale all’algoritmo della somma chiamato pallottoliere, con l’aggiunta di C.

Algoritmo “normale”

DiapositivaDiapositiva

Diapositiva

Però c’è un altro algoritmo per fare la moltiplicazione, ovvero quello in cui operiamo diversamente. Abbiamo sempre A e B e, ponendoli uno sotto l’altro, iniziamo a fare la moltiplicazione. Per svolgere velocemente quest’operazione, occorre saper svolgere rapidamente la capacità base, bisogna cioè sapere le tabelline.

Algoritmi e realizzazioni meccaniche degli stessi

Nel procedere, ne esistono una miriade di questi algoritmi, alcuni ci sono stati insegnati e altri li hanno tralasciati. Il concetto di algoritmo, così come ci è stato insegnato, esiste già da tempo così come, le macchine non le abbiamo pensate noi nel XX secolo. L’elemento algoritmico più antico che l’umanità abbia avuto è l’orologio. Esso realizza un algoritmo particolare ovvero quello di misurare il tempo. Misura le ore e i minuti (ma anche i secondi) attraverso due lancette: quella più lunga dei minuti e quella più corta delle ore. Ad ogni giro intero della lancetta dei minuti, la lancetta delle ore fa un passo in avanti.

Pascal pensò ad altre macchine partendo dall’algoritmo della somma. Non è oggi che sono stati scoperti gli algoritmi e neppure oggi che essi sono stati applicati a delle macchine, semplicemente la tecnologia è avanzata.

Il problema che risolve l’algoritmo può essere parametrico. L’algoritmo è una cosa distinta rispetto all’esecuzione dello stesso e all’invenzione dello stesso.

Perché un algoritmo è finito? Perché può essere scritto in un tempo finito, non può essere infinito. Infinito, invece, può essere un processo. Deve essere possibile scrivere l’algoritmo che per questo deve essere contenibile in uno spazio finito. Dall’altra parte, l’esecuzione di un algoritmo, può durare all’infinito poiché un processo può durare all’infinito.

L’algoritmo è una sequenza di istruzioni, mentre il processo è una sequenza di passi. Un passo è lo stato della variabile A e della variabile B. ad esempio, per sommare 45 e 63, bisognerà fare un certo numero di passi.

Anche per mettere a posto dei fogli si adotta una procedura. Possono essere usate diverse procedure, diversi algoritmi. Il migliore è quello più veloce, quello che se applicato impiega meno tempo.