Corso di Informatica Modulo T1 2 - Problemi e strategie 1 Prerequisiti Concetti intuitivi di: geometria elementare (calcolo di aree e volumi) insieme ordinato (precedente, successivo) procedimento logico (dimostrazione, verifica) 2 1
Introduzione La risoluzione di un problema è affidata alle qualità del risolutore: intelligenza intuizione fantasia conoscenze Spesso, nonostante queste qualità, un problema non è risolvibile. Come si può studiare sistematicamente la risoluzione di un problema? Tutti i problemi si possono risolvere? Rispondiamo a questi interessanti quesiti. 3 Strategie risolutive Per risolvere un problema possiamo sceglie una delle seguenti strategie risolutive: a. Analogia (problemi simili; es. quadrato, rettangolo, cubo) b. Generalizzazione (modelli di calcolo comuni; es. ricerca) c. Specializzazione (considerare il problema partendo da casi semplici) d. Ragionamento all indietro (partire dalla soluzione e retrocedere) e. Scomposizione del problema (utilizzare la tecnica top-down) 4 2
a. Analogia L analogia consiste nell utilizzare un procedimento risolutivo analogo a quello considerato, da cui il nome di questa tecnica. Calcolo dell area di un quadrato di lato l Calcolo dell area laterale di un cubo di lato l Calcolo dell area di un rettangolo di lati a e b Calcolo del volume di un cubo di lato l 5 b. Generalizzazione La generalizzazione consente di riutilizzare lo stesso procedimento risolutivo di un problema per risolvere altri problemi, variando soltanto i dati ricerca di un nominativo in un elenco di persone ricerca di un prodotto in un catalogo di magazzino ricerca del titolo di un libro in un catalogo di biblioteca 6 3
c. Specializzazione La specializzazione consiste nel considerare il problema nel caso più semplice e via via aumentarne la dimensione, cercando di giungere alla soluzione, sfruttando le soluzioni dei casi precedenti, più semplici. Gioco delle torri di Hanoi: quante mosse servono per spostare una pila di N dischi da A a C (un disco alla volta e senza sovrapporre dischi più grandi a dischi più piccoli) Per spostare dal paletto al paletto servono 1 disco A C 1 mossa 2 dischi A C 3 mosse 3 dischi A C 7 mosse 4 dischi A C 15 mosse. A C. N dischi A C 2 N -1 mosse 7 d. Ragionamento all indietro Il ragionamento all indietro consiste nel partire dall obiettivo finale e, passo passo, retrocedere fino a giungere alla situazione di partenza. problema dei secchi d acqua risolvere un caso di omicidio (si parte dal fatto e si risale..) Un secchio A ha capacità di 8 litri, un secchio B ha la capacità di 5 litri. Come si possono, usando operazioni di travaso, svuotamento o riempimento, avere 4 litri di acqua nel recipiente da 5 litri? (I secchi non hanno graduazioni) 8 4
d. Ragionamento all indietro Per avere occorre avere. ed eseguire. Vb=4 Va=4 Svuota (B), Sposta (A,B,4) Va=4 Vb=1 Riempi (A), Sposta (A,B,4) Vb=1 Va=1 Svuota (B), Sposta (A,B,1) Va=1 Va=6 Svuota (B), Sposta (A,B,5) Va=6 Vb=3 Riempi (A), Sposta (A,B,2) Vb=3 Va=3 Svuota (B), Sposta (A,B,3) Va=3 Va=8 Svuota (B), Sposta (A,B,5) Va=8 Va=0 Riempi (A) 9 e. Tecnica top-down La tecnica della scomposizione in sottoproblemi consiste nel suddividere il problema di partenza in problemi (sottoproblemi) pià semplici che vengono affrontati separatamente (eventualmente scomponendoli ulteriormente) calcolo dell area di una figura irregolare 10 5
Problemi insolubili PROBLEMA (teorema di Fermat) Esistono tre numeri interi positivi, x, y, e z legati dalla relazione: x n + y n = z n con n > 2? Escludendo le soluzioni banali (0,0,0), (0,1,1) e (1,0,1), per n=2 si hanno le cosiddette terne pitagoriche (che verificano il teorema di Pitagora, ad es. 3,4,5), ma per n>2 nessuno, fino al 1995, era stato in grado di stabilire se il problema posto fosse solubile o insolubile. Nel 1995 fu data la dimostrazione della insolubilità del teorema di Fermat. 11 Problemi insolubili PROBLEMA (decimo problema di Hilbert) Data l equazione in forma di polinomio a coefficienti interi P(x 1, x 2,, x n ) = 0 trovare un algoritmo per stabilire se essa ammette soluzioni intere. La dimostrazione della insolubilità del problema fu data nel 1970 dal matematico russo Matiyasevich P(x 1, x 2,, x n ) = 0 ALGORITMO DI DECISIONE si no 12 6
Problemi insolubili PROBLEMA (problema dell arresto) Dato un qualunque processo risolutivo P R di un problema P, su certi dati D, esiste un altro processo P R in grado di prevedere se P R abbia termine oppure no, ossia se P sia risolubile? Si può dimostrare che il problema dell'arresto è insolubile, cioè non esiste alcun processo risolutivo P R in grado di stabilire se il processo P R sui dati D abbia termine, ossia se P sia risolubile. L insolubilità del problema dell'arresto mette in evidenza come non sia possibile costruire alcun dispositivo che riconosca i problemi P non risolubili e li blocchi prima che venga avviato il loro processo risolutivo P R 13 Problemi insolubili P1: P2: P3: P4: P5: P6: P7: Problema: Dato un cerchio di raggio R, calcolare il lato L del quadrato ad esso equivalente. è richiesto il valore (numero reale) del lato del quadrato equivalente al cerchio Non ci sono dettagli inutili, ci interessa solo R Dobbiamo sapere che equivalente vuol dire stessa area Occorre conoscere: relazione tra raggio e area del cerchio (A C =π*r 2 ) relazione tra lato e area del quadrato (A Q =L*L) Il problema è solubile Il valore di R è sufficiente a risolvere il problema Dal valore ottenuto per L si può ricavare R 14 7
Problemi insolubili Il problema risulta apparentemente ben posto. Tuttavia, scendendo nei calcoli, si nota che per trovare il lato L del quadrato occorrerebbe calcolare con esattezza il valore: L=R π ma poichéπrappresenta un numero irrazionale (decimale, illimitato e non periodico) NON è possibile darne una valutazione esatta. Pertanto, questo è un esempio di problema insolubile. Operativamente parlando, occorre modificare le specifiche del problema ed accettare per π un certo margine di errore. In tal modo si ottiene una soluzione approssimata del problema. 15 Problemi insolubili P1: P2: P3: P4: P5: P6: P7: Problema: Si debba calcolare il quoziente esatto della divisione tra due valori A e B interi. Il problema chiede di calcolare il valore reale Q, risultato della divisione di A per B Non ci sono dettagli inutili non ci sono dati impliciti Occorre saper svolgere la divisione il problema è solubile i valori di A e B sono sufficienti a risolvere il problema dal valore di Q e di B posso ricavare A 16 8
Problemi insolubili Cosa succede se, ad esempio, A=1 e B=3? In questo caso, il risultato esatto NON può essere ottenuto. La divisione porta ad un risultato periodico (0.3333..) il cui valore non è conosciuto: quindi anche in questo caso ci troviamo di fronte ad un problema insolubile. Qualora sia necessario, si possono modificare le specifiche del problema ed accettare, ad esempio, una soluzione con un prefissato margine di errore (ad es. limitando il numero di cifre decimali). E se B=0? In questo caso la divisione è addirittura impossibile e di nuovo ci troviamo di fronte ad un problema insolubile. Potrebbe funzionare un programma che controlli una espressione algebrica, ad esempio S = x y, al posto di S = x + y? 17 Problemi intrattabili L'uso del calcolatore ha un costo in termini di tempo e di memoria, che dipende essenzialmente dalla scelta dei dati e del processo risolutivo. Nell ambito dei problemi solubili è di fondamentale importanza distinguere quelli che lo sono in un tempo ragionevole da quelli che richiederebbero un tempo inaccettabile. Quando un problema, pur essendo solubile, richiede tempi di esecuzione inaccettabili, si dice problema intrattabile. Si può dimostrare che l insieme dei problemi non trattabili è enormemente più grande dell'insieme dei problemi trattabili. 18 9
Problemi intrattabili Spesso i problemi intrattabili sono risolvibili solo in casi di modeste dimensioni o con metodi approssimati o empirici; classici esempi di problemi intrattabili sono i seguenti: costruire con n simboli, tutte le stringhe di lunghezza k il gioco delle Torri di Hanoi il problema del commesso viaggiatore (visitare n città una sola volta, tranne quella di partenza, a cui deve tornare, in modo tale da minimizzare la distanza percorsa) 19 Problemi intrattabili un classico esempio di problemi di questo tipo è la traduzione da una lingua ad un altra la soluzione automatica di molti giochi (filetto, scacchi, ecc) presenta le caratteristiche di problema intrattabile a causa della esplosione combinatoria delle configurazioni da analizzare e memorizzare. In molti casi, la soluzione di un problema intrattabile può essere tentata mediante le tecniche tipiche dell intelligenza artificiale (I.A.). 20 10
Problemi aperti Sono tutti quei problemi per i quali non è dato, al momento, di sapere se siano solubili o meno, ossia per i quali non è stata dimostrata né la solubilità né la insolubilità. Non è detto che prima o poi non si arrivi a dimostrare la solubilità o la non solubilità di questi problemi. 21 Argomenti Strategie risolutive Analogia Generalizzazione Specializzazione Ragionamento all indietro Tecnica top-down Problemi insolubili Problemi intrattabili Problemi aperti 22 11
Altre fonti di informazione P.Gallo, F.Salerno Informatica Generale 1, ed. Minerva Italica G.Callegarin Corso di Informatica 1, ed. CEDAM M. Pellerey-Informatica: fondamenti culturali e tecnologici, ed. SEI 23 12