Algoritmi e calcolabilità - Lezione in semi-presenza

Lezione in semi-presenza

1. Problemi risolubili e algoritmi

dispensa Diapositiva

Diapositiva Diapositiva

Diapositiva Diapositiva

Per cominciare a capire i mattoni base dell’informatica, bisogna cominciare ad interrogarsi su qual è lo scopo dell’informatica stessa. In un certo senso, lo scopo dell’informatica è cercare di risolvere dei problemi. Certamente, non tutti i problemi saranno risolvibili e, seppur risolvibili, l’intervento umano per trovare la soluzione ci sarà sempre. Non c’è da preoccuparsi. La domanda è dunque: quali tipologie di problemi possono essere trattati? Nel rispondere a tale domanda, ci accorgeremo di due cose:

  • trovare questa tipologia di problemi non è affatto un compito difficilissimo
  • la definizione dei problemi risolubili sarà intimamente legata alla soluzione che troveremo.

Come promesso, nel trattare ogni argomento, cercheremo di trovare degli esempi e delle nozioni molto vicine alla competenza di base di ogni adulto medio. Nel caso particolare, per definire quali siano i problemi risolubili, prendiamo ad esempio il libro delle elementari dal quale sorgevano spontanei alcuni problemi. Aprendo una pagina a caso, ci si può trovare di fronte a problemini come quello in Figura PROBLEMACONTADINO.

Problema

Un contadino ha venduto Kg 125 di uva a 0,55 € al chilogrammo e con il ricavo ha acquistato 3 metri di stoffa pagandola 15,80 € al metro.

Quale somma gli è rimasta?

Figura PROBLEMACONTADINO: Un semplice problema

La risoluzione (descritta in Figura SOLUZIONEPROBLEMACONTADINO) è immediata e passa dalla conoscenza delle nozioni di ricavo, somma spesa e somma rimasta.

Soluzione

0,55 €/kg´125kg= € 68,75 RICAVO UVA VENDUTA

15,80 €/m´3m= € 47,40 SPESA STOFFA

€ 68,75- €47,40 = €21,35 SOMMA RIMASTA

Risultato finale

Al contadino rimangono €21,35

Figura SOLUZIONEPROBLEMACONTADINO: La soluzione del semplice problema

Da questo seppur semplice problema con la sua soluzione possiamo ricavare importanti considerazioni. La risoluzione di un qualsiasi problema di questo tipo richiede numerose conoscenze. Conoscere i numeri e le operazioni sugli stessi è indispensabile. Purtroppo, questo non è affatto sufficiente. Per ottenere il risultato finale, occorre infatti sapere o immaginare un procedimento da svolgere. Questo procedimento deve essere pensato per risolvere il problema dato. Ora che abbiamo comunque a disposizione il procedimento di risoluzione, interroghiamoci sulle sue caratteristiche.

Il contadino vende l’uva raccolta e con il ricavato compra una data quantità di stoffa. Siccome la domanda di questo problema è trovare quanto denaro resta in fine al contadino, non posso calcolare per prima la somma rimasta senza calcolare prima il ricavo e la spesa. E’ invece indifferente se prima calcolo il ricavo o la spesa. Il fatto saliente è che la moltiplicazione per sapere quanto ha speso il contadino per comprare la stoffa e la moltiplicazione per sapere quanto è stato il ricavo del contadino per la vendita della sua uva devono essere fatte prima del calcolo della somma rimasta. Quest’ultima operazione può essere svolta solo successivamente. La sottrazione per calcolare quanto denaro è rimasto al contadino (21,35 €) deve avvenire con i termini noti.

Nelle soluzioni a questa tipologia di problemi abbiamo trovato una regolarità. Le soluzioni sono formate da un insieme di operazioni che d’ora in poi chiameremo istruzioni e questo insieme di istruzioni deve essere ordinato. Deve essere possibile scrivere questa sequenza di istruzioni in uno spazio limitato. Quindi, il numero di operazioni nella sequenza risolutiva deve essere finito. Possiamo dunque ora introdurre il termine algoritmo per indicare queste soluzioni. Una prima definizione di algoritmo è la seguente:

Un algoritmo è un insieme ordinato (o sequenza) di istruzioni finito atto a risolvere un problema

oppure (il che è lo stesso)

Un algoritmo è una sequenza finita di passi ( o istruzioni ) atte a risolvere un problema parametrico dato

Possiamo ora rispondere alla domanda iniziale parafrasando in maniera non completamente corretta la tesi di Church: i problemi risolubili sono quelli per i quali sia possibile trovare almeno un algoritmo che possa portare a trovare una loro soluzione. Riportare completamente la tesi di Church è fuori dallo scopo della presente trattazione.