190 likes | 336 Views
Programmazione di calcolatori. Lezione IV Esistono problemi non risolvibili?. 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.
E N D
Programmazione di calcolatori Lezione IV Esistono problemi non risolvibili? Programmazione di Calcolatori: Esistono problemi non risolvibili?
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?
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 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?
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 →Ndefinita da f(n) = n/2 è biunivoca Programmazione di Calcolatori: Esistono problemi non risolvibili?
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?
Insiemi numerabili • Enumerazione: 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: Esistono problemi non risolvibili?
Quanti sono gli algoritmi? • L’insieme S delle stringhe di lunghezza finita costruite a partire da un alfabeto di dimensione finita è numerabile definisco un ordinamento tra i caratteri dell’alfabeto (in modo analogo a quanto avviene per i caratteri dell’alfabeto della lingua italiana) enumero tutte le stringhe di lunghezza finita costruite a partire dall’alfabeto in ordine di lunghezza crescente enumero le stringhe 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?
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?
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 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 esiste almeno una stringa mancante da qualsiasi enumerazione Programmazione di Calcolatori: Esistono problemi non risolvibili?
Quante sono lefunzioni? consideriamo una qualsiasi enumerazione consideriamone la diagonale complementiamo tale diagonale, ottenendo una nuova stringa binaria di lunghezza infinita in quanto tale, dovrebbe comparire nella enumera-zione Programmazione di Calcolatori: Esistono problemi non risolvibili?
Quante sono lefunzioni? supponiamo compaia nella posizione i-esima, la 3a per esempio per costruzione, se la 3a cifra nella diagonale complemen-tata è 1 (risp., 0) il bit alla intersezione della 3a colonna e della 3a riga nella enume-razione è 0 (risp., 1) da cui l’assurdo di conseguenza possiamo affermare che non esistono enumerazioni per B Programmazione di Calcolatori: Esistono problemi non risolvibili?
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?
Concludendo • se l’insieme degli algoritmi (A) è nume-rabile 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?