La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003.

Presentazioni simili


Presentazione sul tema: "Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003."— Transcript della presentazione:

1 Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino Settembre 2003

2 Scambiamo 0 e 1 Le regole per la Macchina di Turing Universale sono due e sono analoghe a quelle viste nella prima lezione: Le regole per la Macchina di Turing Universale sono due e sono analoghe a quelle viste nella prima lezione: B S0S11 S1S01 I

3 Numeriamo le MdT Con la Macchina di Turing Universale abbiamo imparato ad esprimere il programma di una macchina come una stringa Con la Macchina di Turing Universale abbiamo imparato ad esprimere il programma di una macchina come una stringa Domanda: è possibile associare un numero in modo univoco ad ogni Macchina possibile? Domanda: è possibile associare un numero in modo univoco ad ogni Macchina possibile? Risposta: è possibile associare un numero naturale ad ogni macchina Risposta: è possibile associare un numero naturale ad ogni macchina

4 Associamo cifre ai simboli Lo schema di codifica che vedremo è uno tra i tanti Lo schema di codifica che vedremo è uno tra i tanti Lidea è quella di trasformare un programma in cifre e quindi associare alla macchina il numero così ottenuto Lidea è quella di trasformare un programma in cifre e quindi associare alla macchina il numero così ottenuto I simboli necessari a definire le regole (e quindi il programma) sono: {S, 0, 1, N} I simboli necessari a definire le regole (e quindi il programma) sono: {S, 0, 1, N} Associamo quindi i simboli a cifre: {S 2, 0 0, 1 1, N 3, B 4, I 5} Associamo quindi i simboli a cifre: {S 2, 0 0, 1 1, N 3, B 4, I 5}

5 Esempio Associamo quindi un numero al programma visto allinizio secondo la regola stabilita: Associamo quindi un numero al programma visto allinizio secondo la regola stabilita: B S0S11 S1S01 I = Dato il numero siamo in grado di ottenere la macchina? Certamente: basta usare lassociazione al contrario Dato il numero siamo in grado di ottenere la macchina? Certamente: basta usare lassociazione al contrario

6 Codifichiamo linput Possiamo procedere in modo analogo per associare un numero allinput della nostra macchina: {0 0, 1 1, T 2, N 3} Possiamo procedere in modo analogo per associare un numero allinput della nostra macchina: {0 0, 1 1, T 2, N 3} Esempio: Esempio: T N = Ancora una volta possiamo riottenere linput dal numero Ancora una volta possiamo riottenere linput dal numero

7 Osservazioni Siamo in grado di ottenere, data una macchina, un numero. Sappiamo anche tornare indietro a partire dal numero Siamo in grado di ottenere, data una macchina, un numero. Sappiamo anche tornare indietro a partire dal numero È sempre possibile dato un numero ottenere la macchina corrispondente? È sempre possibile dato un numero ottenere la macchina corrispondente? La risposta è no, nella codifica che abbiamo usato esistono numeri a cui non è possibile associare una macchina La risposta è no, nella codifica che abbiamo usato esistono numeri a cui non è possibile associare una macchina Lo stesso si può dire per linput Lo stesso si può dire per linput

8 Goëdelizzazione È possibile realizzare codifiche che associano ad ogni numero una macchina o un input sempre invertibili È possibile realizzare codifiche che associano ad ogni numero una macchina o un input sempre invertibili Il procedimento di enumerare tutte le Macchine di Turing è noto col termine di Göedelizzazione Il procedimento di enumerare tutte le Macchine di Turing è noto col termine di Göedelizzazione ATTENZIONE!!!! Le macchine di Turing sono tante quante i numeri naturali: sappiamo ottenere una macchina dato un numero e viceversa!!!!! ATTENZIONE!!!! Le macchine di Turing sono tante quante i numeri naturali: sappiamo ottenere una macchina dato un numero e viceversa!!!!!

9 La tesi di Church È giunto il momento di ricordare la tesi di Church È giunto il momento di ricordare la tesi di Church La tesi di Church/Turing è la seguente: se una funzione è calcolabile secondo un qualsiasi formalismo esistente e non allora lo è anche con una macchina di Turing La tesi di Church/Turing è la seguente: se una funzione è calcolabile secondo un qualsiasi formalismo esistente e non allora lo è anche con una macchina di Turing Le funzioni calcolabili quindi coincidono (secondo questa tesi) con le macchine di Turing Le funzioni calcolabili quindi coincidono (secondo questa tesi) con le macchine di Turing

10 |{f | f è calcolabile}|??? Quante sono le funzioni calcolabili? Quante sono le funzioni calcolabili? Sono di più dei numeri naturali? No, visto che abbiamo associato in modo univoco numeri e macchine Sono di più dei numeri naturali? No, visto che abbiamo associato in modo univoco numeri e macchine Sono più dei numeri interi o razionali? No: entrambi gli insiemi sono enumerabili Sono più dei numeri interi o razionali? No: entrambi gli insiemi sono enumerabili Sono più dei numeri reali? No!!! I numeri reali sono più di quelli naturali!!! Sono più dei numeri reali? No!!! I numeri reali sono più di quelli naturali!!!

11 |{f | f:NN}|??? Quante sono le funzioni da numeri naturali in numeri naturali Quante sono le funzioni da numeri naturali in numeri naturali Sono enumerabili? NO!!! Sono enumerabili? NO!!! Come possiamo dimostrare che le funzioni da naturali in naturali non sono enumerabili (non possono essere messe in corrispondenza con i numeri interi)? Come possiamo dimostrare che le funzioni da naturali in naturali non sono enumerabili (non possono essere messe in corrispondenza con i numeri interi)? Si procede con un argomento proposto dal Matematico G. Cantor: la diagonalizzazione Si procede con un argomento proposto dal Matematico G. Cantor: la diagonalizzazione

12 Considerazioni preliminari Consideriamo i possibili sottoinsiemi dei numeri naturali: {0}, {0, 1}, {2,5,7}… Consideriamo i possibili sottoinsiemi dei numeri naturali: {0}, {0, 1}, {2,5,7}… Per ogni sottoinsieme S di N possiamo costruire una funzione che associa ad ogni elemento di N 1 se questo appartiene ad S, 0 altrimenti Per ogni sottoinsieme S di N possiamo costruire una funzione che associa ad ogni elemento di N 1 se questo appartiene ad S, 0 altrimenti Le funzioni da N in N sono quindi almeno quanto i sottoinsiemi di N Le funzioni da N in N sono quindi almeno quanto i sottoinsiemi di N Quanti sono i possibili sottoinsiemi di N? Quanti sono i possibili sottoinsiemi di N?

13 I sottoinsiemi di N Supponiamo per assurdo che i sottoinsiemi di N siano enumerabili Supponiamo per assurdo che i sottoinsiemi di N siano enumerabili Consideriamo la seguente tabella: Consideriamo la seguente tabella: 1234…1234…1234…1234… f00110…f00110…f00110…f00110… f11000…f11000…f11000…f11000…… f i è la funzione che identifica li-esimo insieme f i è la funzione che identifica li-esimo insieme

14 Una funzione speciale Costruiamo la seguente funzione: Costruiamo la seguente funzione: 1234…1234…1234…1234… f x 0 x 1 x 2 x 3 … dove x i è 1 se li-esimo elemento della diagonale è 0, 0 altrimenti. Questa funzione definisce un sottoinsieme di N ma non può apparire nella tabella!!!! Questa funzione definisce un sottoinsieme di N ma non può apparire nella tabella!!!! Quindi lipotesi che le funzioni che definiscono insiemi siano enumerabili non può essere vera Quindi lipotesi che le funzioni che definiscono insiemi siano enumerabili non può essere vera

15 Funzioni non calcolabili Abbiamo dimostrato che un sottoinsieme delle funzioni da N a N non è numerabile Abbiamo dimostrato che un sottoinsieme delle funzioni da N a N non è numerabile Quindi le funzioni sono più dei numeri naturali Quindi le funzioni sono più dei numeri naturali Ne consegue che esistono funzioni che non sono calcolabili poiché le macchine di Turing sono quanti i numeri naturali Ne consegue che esistono funzioni che non sono calcolabili poiché le macchine di Turing sono quanti i numeri naturali

16 Il problema della fermata Vediamo un esempio di funzione non calcolabile veramente significativo per gli informatici Vediamo un esempio di funzione non calcolabile veramente significativo per gli informatici Il problema che ci poniamo è il seguente: esiste una funzione che, dati in ingresso un programma e un input, è in grado di dire se la macchina di Turing con quel programma terminerà la sua esecuzione su quellInput? Il problema che ci poniamo è il seguente: esiste una funzione che, dati in ingresso un programma e un input, è in grado di dire se la macchina di Turing con quel programma terminerà la sua esecuzione su quellInput?

17 Il problema della fermata Il problema della fermata non ha una risposta ovvia: in fondo se siamo riusciti a programmare linterprete universale perché non può esistere una tale funzione? Il problema della fermata non ha una risposta ovvia: in fondo se siamo riusciti a programmare linterprete universale perché non può esistere una tale funzione? Intuizione: come posso verificare la terminazione? Uso linterprete universale e se termina bene, altrimenti siamo costretti ad aspettare: chissà! Intuizione: come posso verificare la terminazione? Uso linterprete universale e se termina bene, altrimenti siamo costretti ad aspettare: chissà!

18 Diagonalizziamo? Per dimostrare che non può esistere una tale funzione utilizziamo largomento della diagonalizzazione Per dimostrare che non può esistere una tale funzione utilizziamo largomento della diagonalizzazione Assurdo: supponiamo che esista tale funzione Q Assurdo: supponiamo che esista tale funzione Q Come la costruiamo la tabella? Come la costruiamo la tabella? Poiché le MdT sono numerabili associamo ad ogni riga la macchina di Turing corrispondente Poiché le MdT sono numerabili associamo ad ogni riga la macchina di Turing corrispondente Ad ogni colonna associamo tutti i possibili input Ad ogni colonna associamo tutti i possibili input

19 La tabella La tabella diviene quindi: La tabella diviene quindi: 1234…1234…1234…1234… 1ynyy…1ynyy…1ynyy…1ynyy… 2nnyy…2nnyy…2nnyy…2nnyy… Allincrocio (i, j) scriviamo y se la funzione Q dice che la macchina i termina sullinput j, scriviamo n in caso contrario Allincrocio (i, j) scriviamo y se la funzione Q dice che la macchina i termina sullinput j, scriviamo n in caso contrario

20 Largomento Come abbiamo già fatto in precedenza costruiamo la funzione (artificiosa) prendendo i valori della diagonale e scambiando y con n e viceversa: Come abbiamo già fatto in precedenza costruiamo la funzione (artificiosa) prendendo i valori della diagonale e scambiando y con n e viceversa: ny … Questa funzione non occorre nella tabella (differisce sempre per lelemento sulla diagonale) Questa funzione non occorre nella tabella (differisce sempre per lelemento sulla diagonale) La funzione Q quindi non è in grado di esprimersi su tutte le funzioni: ciò contraddice lipotesi La funzione Q quindi non è in grado di esprimersi su tutte le funzioni: ciò contraddice lipotesi

21 Uno sguardo alla funzione Comè fatta la funzione che abbiamo utilizzato per trovare la contraddizione? Comè fatta la funzione che abbiamo utilizzato per trovare la contraddizione? È una funzione che ha in posizione i il valore opposto rispetto al valore Q(i, i) È una funzione che ha in posizione i il valore opposto rispetto al valore Q(i, i) Ma cosa significa Q(i, i)? Ma cosa significa Q(i, i)? Q(i, i) vale y se la macchina i con input i termina la sua esecuzione, n altrimenti Q(i, i) vale y se la macchina i con input i termina la sua esecuzione, n altrimenti Quindi F(i) = opposto(Q(i, i)) Quindi F(i) = opposto(Q(i, i)) Per opposto intendiamo che cambia y in n e viceversa Per opposto intendiamo che cambia y in n e viceversa

22 Unaltra via per dimostrare Si suppone per assurdo che esista la funzione Q e si costruisce una funzione F(i) che applica la macchina i a sé stessa: se Q(i, i) indica y allora non termina altrimenti termina Si suppone per assurdo che esista la funzione Q e si costruisce una funzione F(i) che applica la macchina i a sé stessa: se Q(i, i) indica y allora non termina altrimenti termina Unaltra possibile dimostrazione del fatto che la funzione Q non è calcolabile poggia sulla definizione di F(i) Unaltra possibile dimostrazione del fatto che la funzione Q non è calcolabile poggia sulla definizione di F(i)

23 Lassurdo Troviamo quindi un assurdo: cosa vale Q(F, F)? Troviamo quindi un assurdo: cosa vale Q(F, F)? Supponiamo Q(F, F) = y: non si può verificare poiché F termina solo se Q(F, F) non termina Supponiamo Q(F, F) = y: non si può verificare poiché F termina solo se Q(F, F) non termina Supponiamo Q(F, F) = n: non si può verificare per la stessa ragione Supponiamo Q(F, F) = n: non si può verificare per la stessa ragione Abbiamo quindi un assurdo che non può derivare se non dal fatto che abbiamo postulato lesistenza di Q: Q non può esistere! Abbiamo quindi un assurdo che non può derivare se non dal fatto che abbiamo postulato lesistenza di Q: Q non può esistere!

24 Conclusioni In questa lezione abbiamo visto come esistano limiti al calcolo che non possono essere oltrepassati In questa lezione abbiamo visto come esistano limiti al calcolo che non possono essere oltrepassati Questo risultato ci insegna inoltre che i modelli aiutano a comprendere meglio un problema Questo risultato ci insegna inoltre che i modelli aiutano a comprendere meglio un problema Abbiamo visto poi un importante esempio di uso reale del modello delle Macchine di Turing Abbiamo visto poi un importante esempio di uso reale del modello delle Macchine di Turing


Scaricare ppt "Funzioni calcolabili Precorsi di Informatica Dott. Antonio Cisternino 23-25 Settembre 2003."

Presentazioni simili


Annunci Google