160 likes | 288 Views
Programmazione di Calcolatori. Lezione IV Esistono Problemi non Risolvibili?. Problemi e funzioni. Risolvere un problema. Estrarre dalla codifica dell’informazione esplicita (quella in nostro possesso) informazione imlicita (quella a cui siamo interessati).
E N D
Programmazione di Calcolatori Lezione IV Esistono Problemi non Risolvibili? Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
Problemi e funzioni Risolvere un problema Estrarre dalla codifica dell’informazione esplicita (quella in nostro possesso) informazione imlicita (quella a cui siamo interessati) Calcolare una funzione che associa informazione esplicita a informazione implicita Risolvere un problema è sinonimo di calcolare una funzione Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
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?
N1, N2 N1 > N2 N1 N2 Esempio • Problema: Qual è il massimo tra due numeri interi? • Funzione: • f : N x N→N Start si no Stop Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
Esempio Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
Idea • “Contiamo” gli algoritmi • “Contiamo” le funzioni • Se le funzioni dovessero essere in “numero maggiore” degli algoritmi allora ne dedurremmo che non tutte le funzioni sono calcolabili Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
Insiemi numerabili • Insieme numerabile: • un insieme A è numerabile se e solo se esiste f : A→B N biettiva o, in altre parole, • se e solo se A B N • Insieme dei numeri pari Npari è numerabile: • per provare questa affermazione è sufficiente provare che la funzione f: Npari →N definita da f(n) = n/2 è biettiva Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
Insiemi numerabili • Se un insieme I è numerabile allora esiste una enumerazione per I Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
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: Cosa vuol dire scrivere un programma
Quanti sono gli algoritmi? • L’insieme A degli algoritmi è numerabile definisco un’ordinamento tra i caratteri dell’alfabeto (in modo analogo a quanto avviene per i caratteri dell’alfabeto della lingua italiana) enumero gli algoritmi in ordine di lunghezza crescente enumero gli algoritmi di eguale lunghezza in ordine lessicografico Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
Esempio • Alfabeto {a, b, c} Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
Quante sono le funzioni? • L’insieme delle funzioni • F { f | f : N → {0,1}} • non è numerabile • F B, l’insieme delle stringhe binarie di lunghezza infinita Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
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 esisterà almeno una stringa mancante da qualsiasi enumerazione considereremo Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
Quante sono le funzioni Consideriamo una generica enumerazione Consideriamone la diagonale Complementiamo tale diagonale, otteniamo una stringa binaria di lunghezza infinita In quanto tale, dovrebbe comparire nella enumerazione Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
Quante sono le funzioni Supponiamo compaia nelle generica posizione i (la III nel nostro esempio) Per costruzione, se la i-esima cifra della diagonale complementata è 1(risp., 0) il bit all’intersezione della i-esima colonna e della i-esima riga nella enumerazione è 0 (risp., 1) da cui l’assurdo Ne concludiamo che non esistono enumerazioni per B Programmazione di Calcolatori: Esistono Problemi non Risolvibili?
Concludendo • Quando provo a mettere in corrispondenza biunivoca funzioni ed algoritmi, esiste sempre almeno una funzione (quella identificata dalla diagonale complementata) alla quale non posso associare un algoritmo • Ne concludo che esistono funzioni non calcolabili e quindi problemi non risolvibili Programmazione di Calcolatori: Esistono Problemi non Risolvibili?