C. Gaibisso Programmazione di calcolatori Lezione IV Esistono problemi non risolvibili? Programmazione di Calcolatori: Esistono problemi non risolvibili? 1 C. Gaibisso Problemi & funzioni Risolvere un problema: estrarre l’informazione implicita a cui siamo interessati dall’informazione esplicita in nostro possesso “calcolare” una delle funzioni che realizza tale estrazione Programmazione di Calcolatori: Esistono problemi non risolvibili? 2 C. Gaibisso Problemi risolvibili e funzioni calcolabili • Problemi risolvibili: un problema è risolvibile se esiste un algoritmo che lo risolve • Funzioni calcolabili: una funzione è calcolabile se esiste un algoritmo che la calcola Programmazione di Calcolatori: Esistono problemi non risolvibili? 3 C. Gaibisso Esempio • Problema: Qual è il massimo tra due numeri interi? • Funzione: Start f : N x N→N N1, N2 N1 si N1 > N2 no N2 Stop Programmazione di Calcolatori: Esistono problemi non risolvibili? 4 C. Gaibisso Esempio Informazione esplicita 0, 0 Informazione implicita 0 1, 0 0, 1 …. 158, 641 1 1 …. 641 …. 2.856, 567 …. …. 2.856 …. Programmazione di Calcolatori: Esistono problemi non risolvibili? 5 C. Gaibisso Idea 1. “contiamo” gli algoritmi 2. “contiamo” le funzioni 3. se il “numero” delle funzioni dovesse risultare “maggiore” del “numero” degli algoritmi allora esisterebbe almeno una funzione non calcolabile, e, di conseguenza, almeno un problema non risolvibile Programmazione di Calcolatori: Esistono problemi non risolvibili? 6 C. Gaibisso Equipotenza e numerabilità • Insiemi equipotenti: A e B sono equipotenti, A B, se e solo se esiste una funzione biunivoca f : A→B • Insiemi numerabili: A è numerabile se e solo A B N • L’insieme dei numeri pari Npari è numerabile: infatti la funzione f: Npari →N definita da f(n) = n/2 è biunivoca Programmazione di Calcolatori: Esistono problemi non risolvibili? 7 C. Gaibisso Equipotenza e numerabilità • Ovviamente: se A è numerabile e B A allora B è numerabile più informalmente qualsiasi sottoinsieme di un insieme numerabile è numerabile Programmazione di Calcolatori: Esistono problemi non risolvibili? 8 C. Gaibisso Insiemi numerabili • Enumerazione: N Elementi di A 0 1 a0 a1 2 …. a2 …. …. n …. an … …. Programmazione di Calcolatori: Esistono problemi non risolvibili? 9 C. Gaibisso Quanti sono gli algoritmi? Nozione intuitiva di algoritmo • è una sequenza finita di istruzioni • ogni istruzione è costruita a partire da un alfabeto di dimensione finita • ogni istruzione nella sequenza è codificata con una quantità finita di informazione • deve esistere un agente di calcolo C capace di eseguire le istruzioni dell’algoritmo • C deve avere capacità di memorizzazione • ….. Programmazione di Calcolatori: Esistono problemi non risolvibili? 10 C. Gaibisso Quanti sono gli algoritmi? • L’insieme S delle stringhe di lunghezza finita costruite a partire da un alfabeto di dimensione finita è numerabile 1. definisco un ordinamento tra i caratteri dell’alfabeto (in modo analogo a quanto avviene per i caratteri dell’alfabeto della lingua italiana) 2. enumero tutte le stringhe di lunghezza finita costruite a partire dall’alfabeto in ordine di lunghezza crescente 3. enumero le stringhe di eguale lunghezza in ordine lessicografico Programmazione di Calcolatori: Esistono problemi non risolvibili? 11 C. Gaibisso Esempio • Alfabeto {a, b, c} N Elementi di S 0 a 1 b 2 c 3 aa 4 ab 5 ac 6 ba 7 bb … …. 39 aaaa … … Programmazione di Calcolatori: Esistono problemi non risolvibili? 12 C. Gaibisso Quanti sono gli algoritmi? • L’insieme A degli algoritmi costruiti a partire dallo stesso alfabeto è numerabile ovvio in quanto A S Programmazione di Calcolatori: Esistono problemi non risolvibili? 13 C. Gaibisso Quante sono le funzioni? • L’insieme delle funzioni F0,1 { f | f : N → {0,1}} F non è numerabile • F0,1 B, con B insieme delle stringhe binarie di lunghezza infinita funzione f(0) = 1 f(1)=0 stringa 1 0 f(2)=1 f(3)=1 1 1 … f(n)=0 … … 0 … Programmazione di Calcolatori: Esistono problemi non risolvibili? 14 C. Gaibisso Quante sono le funzioni? • L’insieme B delle stringhe binarie di lunghezza inifinita non è numerabile • se così non fosse potrei enumerare l’insieme di tali stringhe dimostreremo che esiste almeno una stringa mancante da qualsiasi enumerazione Programmazione di Calcolatori: Esistono problemi non risolvibili? 15 C. Gaibisso Quante sono le funzioni? 1. consideriamo una qualsiasi enumerazione 2. consideriamone la diagonale 3. complementiamo tale diagonale, ottenendo una nuova stringa binaria di lunghezza infinita 4. in quanto tale, dovrebbe comparire nella enumerazione N Elementi di B 0 0 0 0 0 1 1 … 1 0 0 0 1 1 1 … 2 1 1 0 0 1 0 … 3 1 1 1 0 0 1 … 4 0 0 0 0 1 0 … 5 1 1 1 1 1 1 … 6 0 0 1 0 1 0 … 7 1 1 0 1 0 0 … 8 0 1 0 1 0 1 … 9 1 1 0 1 0 1 … … .. .. .. .. .. .. 1 1 1 1 0 Programmazione di Calcolatori: Esistono problemi non risolvibili? 0 … 16 C. Gaibisso Quante sono le funzioni? 5. supponiamo compaia nella posizione i-esima, la 3a per esempio 6. per costruzione, se la 3a cifra nella diagonale complementata è 1 (risp., 0) il bit alla intersezione della 3a colonna e della 3a riga nella enumerazione è 0 (risp., 1) da cui l’assurdo 7. di conseguenza possiamo affermare che non esistono enumerazioni per B N Elementi di B 0 0 0 0 0 1 1 … 1 0 0 0 1 1 1 … 2 1 1 0 0 1 0 … 3 1 1 1 0 0 1 … 4 0 0 0 0 1 0 … 5 1 1 1 1 1 1 … 6 0 0 1 0 1 0 … 7 1 1 0 1 0 0 … 8 0 1 0 1 0 1 … 9 1 1 0 1 0 1 … … .. .. .. .. .. .. 1 1 1 1 0 Programmazione di Calcolatori: Esistono problemi non risolvibili? 0 … 17 C. Gaibisso Concludendo • l’insieme degli algoritmi (A) numerabile • se l’insieme delle stringhe binarie di lunghezza finita (B) non è numerabile allora l’insieme delle funzioni da N in {0, 1} (F0,1 ) non è numerabile • se l’insieme delle funzioni da N in {0, 1} (F0,1 ) non è numerabile allora l’insieme delle funzioni (F) non è numerabile Programmazione di Calcolatori: Esistono problemi non risolvibili? 18 C. Gaibisso Concludendo • se l’insieme degli algoritmi (A) è numerabile e l’insieme delle funzioni (F) non è numerabile allora esiste almeno una funzione non calcolabile • se esiste almeno una funzione non calcolabile allora esiste almeno un problema non risolvibile Programmazione di Calcolatori: Esistono problemi non risolvibili? 19