La tesi di Church-Turing e l indecidibilità
Automi e algoritmi i La domanda d fondamentale dll della teoria dll della calcolabilità è: Quali risultati possiamo e non possiamo ottenere mediante algoritmi? Per affrontare questa domanda dovremo basarci su caratterizzazioni i i precise, non intuitive, i i dll delle nozioni i di algoritmo e di sistema (macchina) che esegue algoritmi. La tesi di Church-Turing fornisce elementi per una caratterizzazione precisa della nozione di algoritmo
Tesi di Church-Turing h Ogni funzione calcolabile l mediante un algoritmo è calcolabile da una macchina di Turing funzione calcolabile mediante un algoritmo (nozione intuitiva) funzione calcolabile l da MdT (nozione precisa)
Tesi di Church-Turing: h conseguenza! Conseguenza logica della Tesi: NON esiste una MdT per calcolare la funzione f? Allora NON esiste alcun algoritmo per calcolare la funzione f! Quindi, non può esistere alcun calcolatore (presente, passato, futuro) in grado di calcolare l quella funzione!
Tesi di Church-Turing: h conseguenza! Conseguenza logica della Tesi: NON esiste una MdT per calcolare la funzione f? Allora NON esiste alcun algoritmo per calcolare la funzione f! Come possiamo sapere se non esiste una MdT che calcola la funzione f? Avere una definizione formale della nozione di MdT ci permette, in alcuni casi, di dimostrarlo Nessuna dimostrazione di questo tipo sarebbe stata possibile in mancanza di adeguata formalizzazione
Turing e la storia dei calcolatori l Turing ha permesso lo sviluppo della teoria della calcolabilità, co ab ovvero o della disciplina che si occupa di capire quali problemi possano essere risolti algoritmicamente, proprio perché ha fornito elementi per sostituire la nozione intuitiva di algoritmo con quella, ben più precisa, di programma per MdT
L analisi di Turing ha permesso di identificare problemi non risolvibili da MdT PC di e quindi, per la Tesi, non risolvibili da alcun sistema algoritmico Turing e la storia dei calcolatori l Z1 (1938) Colossus (1943) PC odierno NASA Columbia Supercomputer (2004) ENIAC (1945) EDVAC (1945) Commodore 64 (1986)
Tesi di Church-Turingh Questa affermazione è detta tesi, e non teorema, perché intrinsecamente indimostrabile Dimostrare questa affermazione richiederebbe una definizione formale dei termini in gioco Abbiamo a disposizione una definizione formale dell espressione calcolabile mediante un programma per MdT (è stata fornita da Turing stesso) Il significato dell espressione espressione calcolabile algoritmicamente è intrinsecamente intuitivo La tesi di Church-Turing (tesi CT da ora in poi) fornisce proprio elementi per una definizione formale della nozione di calcolabile algoritmicamente
Verso le funzioni i non Turing-calcolabili l È stato dimostrato t che esistono funzioni i non Turingcalcolabili In base alla tesi CT, si conclude che esistono funzioni non algoritmicamente calcolabili Una di queste funzioni è relativa al cosiddetto problema della fermata Il di d ll di i i i ill l Il diagramma della diapositiva successiva illustra le relazioni tra tesi CT ed esistenza di funzioni non calcolabili
Verso le funzioni i non Turing-calcolabili l Tesi di Church-Turing algoritmi (nozione intuitiva) iti programmi per MdT (nozione precisa) problema della fermata esistenza di funzioni non Turing-calcolabili funzioni Turingcalcolabili funzioni
TEOREMA: Ei Esistono funzioni i non Turing-calcolabili l A questo risultato si arriva dimostrando che l insieme delle MdT è più piccolo dell insieme delle funzioni funzioni i funzioni Esistono funzioni non Turing- calcolabili? l Turingcalcolabili
L insieme delle MdT è più piccolo dell insieme i delle funzioni i La frase l insieme delle MdT è più piccolo dell insieme delle funzioni solleva un PROBLEMA: L insieme delle MdT è finito o infinito? è INFINITO L insieme delle funzioni è finito o infinito? è INFINITO Com è possibile che un insieme infinito sia più piccolo Com è possibile che un insieme infinito sia più piccolo di un altro insieme infinito?
Georg Cantor (1845-1918) 1918) Cantor ha dimostrato che un insieme infinito può essere più piccolo di un altro insieme infinito: L insieme dei numeri naturali N = {0,1,2,3, } è infinito e più piccolo dell insieme dei numeri reali
Il teorema di Cantor Il teorema di Cantor gioca un ruolo importante nel dimostrare l esistenza di funzioni non Turing-calcolabili DIMOSTRAZIONE PER ASSURDO del teorema di Cantor Supponiamo che i numeri naturali siano tanti quanti sono i numeri reali Da questa affermazione deriviamo una contraddizione Quindi, siamo costretti a negare l assunzione iniziale
Teorema di Cantor: dimostrazione per assurdo Supponiamo che i numeri naturali siano tanti quanti i numeri reali Allora, è possibile mettere in corrispondenza ogni numero naturale con un numero reale numeri naturali numeri reali 1 1,02128384
Teorema di Cantor: dimostrazione per assurdo Supponiamo che i numeri naturali siano tanti quanti i numeri reali Allora, è possibile mettere in corrispondenza ogni numero naturale con un numero reale numeri naturali numeri reali 1 1,02128384 2 1,12528284
Teorema di Cantor: dimostrazione per assurdo Supponiamo che i numeri naturali siano tanti quanti i numeri reali Allora, è possibile mettere in corrispondenza ogni numero naturale con un numero reale numeri naturali numeri reali 1 1,02128384 2 1,12528284 3 2,12528383
Teorema di Cantor: dimostrazione per assurdo Supponiamo che i numeri naturali siano tanti quanti i numeri reali Allora, è possibile mettere in corrispondenza ogni numero naturale con un numero reale numeri naturali numeri reali 1 1,02128384 2 1,12528284 3 2,12528383 4 2,39374532
Teorema di Cantor: dimostrazione per assurdo Supponiamo che i numeri naturali siano tanti quanti i numeri reali Allora, è possibile mettere in corrispondenza ogni numero naturale con un numero reale numeri naturali numeri reali 1 1,02128384 2 1,12528284 3 2,12528383 4 2,39374532 5 2,56746383
Teorema di Cantor: dimostrazione per assurdo Supponiamo che i numeri naturali siano tanti quanti i numeri reali Allora, è possibile mettere in corrispondenza ogni numero naturale con un numero reale e così via all infinito numeri naturali numeri reali 1 1,02128384 2 1,12528284 3 2,12528383 4 2,39374532 5 2,56746383 6 3,27546453
Teorema di Cantor: dimostrazione per assurdo Per ogni numero naturale n, cambiamo a piacere l nesimo decimale del numero reale numeri naturali numeri reali 1 1,02128384 2 1,12528284 3 2,12528383 4 2,39374532 5 2,56746383 6 3,27546453
Teorema di Cantor: dimostrazione per assurdo Per ogni numero naturale n, cambiamo a piacere l nesimo decimale del numero reale numeri naturali numeri reali 1 1,12128384 2 1,12528284 3 2,12528383 4 2,39374532 5 2,56746383 6 3,27546453
Teorema di Cantor: dimostrazione per assurdo Per ogni numero naturale n, cambiamo a piacere l nesimo decimale del numero reale numeri naturali numeri reali 1 1,12128384 2 1,17528284 3 2,12528383 4 2,39374532 5 2,56746383 6 3,27546453
Teorema di Cantor: dimostrazione per assurdo Per ogni numero naturale n, cambiamo a piacere l nesimo decimale del numero reale numeri naturali numeri reali 1 1,12128384 2 1,17528284 3 212328383 2,12328383 4 2,39374532 5 2,56746383 6 3,27546453
Teorema di Cantor: dimostrazione per assurdo Per ogni numero naturale n, cambiamo a piacere l nesimo decimale del numero reale numeri naturali numeri reali 1 1,12128384 2 1,17528284 3 212328383 2,12328383 4 2,39394532 5 2,56746383 6 3,27546453
Teorema di Cantor: dimostrazione per assurdo Per ogni numero naturale n, cambiamo a piacere l nesimo decimale del numero reale numeri naturali numeri reali 1 1,12128384 2 1,17528284 3 212328383 2,12328383 4 2,39394532 5 2,56741383 6 3,27546453
Teorema di Cantor: dimostrazione per assurdo Per ogni numero naturale n, cambiamo a piacere l nesimo decimale del numero reale numeri naturali numeri reali 1 1,12128384 2 1,17528284 3 212328383 2,12328383 4 2,39394532 5 2,56741383 6 3,27546353
Teorema di Cantor: dimostrazione per assurdo Formiamo un numero reale mettendo insieme i i decimali rossi : numeri naturali 1,173913 numeri reali 1 1,12128384 2 1,17528284 3 212328383 2,12328383 4 2,39394532 5 2,56741383 6 3,27546353
Teorema di Cantor: dimostrazione per assurdo 1,173913 Questo è un numero reale; quindi, in base all assunzione assunzione di partenza, dovrebbe essere compreso nella tabella iniziale (prima della modifica dei decimali) e associato a un naturale! Ma può essere così? NO! Perché è diverso da OGNI numero reale in quella lista per UNA cifra decimale QUINDI, quel numero non figura nella colonna numeri reali, e QUINDI non sta in corrispondenza con nessun numero naturale numeri naturali numeri reali 1 1,02128384 2 1,12528284
Il teorema di Cantor: riepilogo il Abbiamo svolto i seguenti passi: 1. Assumiamo che i numeri reali siano tanti quanti i numeri naturali 2. Quindi, possiamo far corrispondere un numero reale a ogni numero naturale 3. Identifichiamo un numero reale che non figura in quella corrispondenza 4. Quindi, l assunzione di partenza è da gettare: L insieme Linsieme dei numeri reali è più grande dell insieme dei numeri naturali!
Esistono funzioni i non Turing-calcolabili l Ora, è possibile dimostrare che L insieme delle MdT è grande quanto l insieme dei numeri naturali l insieme delle funzioni è grande quanto l insieme dei numeri reali QUINDI (in base al teorema di Cantor) Esistono funzioni che non sono Turing-calcolabili! (vedi il diagramma illustrativo alla diapositiva successiva)
Funzioni i non Turing-calcolabili l programmi per MdT (funzioni i Turingcalcolabili) funzioni insieme dei numeri naturali funzioni NON Turing-calcolabili co ab
Funzioni i non Turing-calcolabili l Vedremo ora una funzione non Turingcalcolabile (Turing, 1936) problema della fermata programmi per MdT (funzioni Turingcalcolabili) funzioni
Il problema della fermata Esiste un algoritmo (o una MdT, in base alla tesi CT) per decidere se una qualsiasi MdT m si fermerà su un qualsiasi li i ingresso w?? ingresso qualsiasi 2 # $ a % 3 ^ ingresso MdT U uscita MdT m La MdT m si ferma/non si ferma con l ingresso w
Il problema della fermata NOTA: esistono MdT per decidere se particolari MdT si fermano su particolari ingressi Possiamo studiare il comportamento t della macchina somma e capire che si fermerà su qualsiasi ingresso ingresso qualsiasi 2 # $ a % 3 ^ ingresso MdT U uscita MdT m La MdT m si ferma/non si ferma con l ingresso w
Il problema della fermata Ma noi vogliamo una MdT che sia in grado di decidere se una qualsiasi MdT m si fermerà su un qualsiasi ingresso w! ingresso qualsiasi 2 # $ a % 3 ^ ingresso MdT U uscita MdT m La MdT m si ferma/non si ferma con l ingresso w
Parentesi Il problema della fermata è analogo a molti problemi dell informatica odierna Verifica di correttezza: valutare algoritmicamente se un certo software svolge effettivamente il compito per cui è stato progettato Il problema in questo caso è quello di scrivere un software che controlli il funzionamento di un altro software Pensate all importanza della verifica di correttezza in relazione ai software di controllo aerei o di diagnosi medica!
Ancor prima di dare una risposta Questo problema si basa sulla capacità di fornire una qualche descrizione della MdT m alla MdT u! Come fare? ingresso qualsiasi 2 # $ a % 3 ^ ingresso MdT U uscita MdT m La MdT m si ferma/non si ferma con l ingresso w
Rappresentazione di una MdT sul nastro di un altra MdT È possibile rappresentare un automa finito o un automa a pila (e il loro ingresso) sul nastro di una MdT Mediante questo tipo di rappresentazione è possibile costruire una MdT che simuli il comportamento di un automa finito o di un automa a pila! Come rappresentare una MdT, e il suo ingresso, sul nastro di un altra MdT?
Rappresentazione di una MdT sul nastro di un altra MdT Possiamo rappresentare le quintuple di una MdT sul nastro di una MdT scegliendo un opportuno alfabeto e sistema di codifica! Ad esempio, la quintupla q 1 0 1 D q 2, interpretata come se sei nello stato q 1 e leggi il simbolo 0, allora scrivi 1, vai a destra, e assumi lo stato q 2,può essere rappresentata nel modo seguente: 1 0 1 D 2 (supponendo di interpretare il primo e l ultimo simbolo come rappresentazioni del numero dello stato)
Rappresentazione di una MdT sul nastro di un altra MdT Quindi, per costruire una MdT U che contenga una codifica della MdT M: 1. codifichiamo sul nastro di U l insieme delle istruzioni di M, separate da un simbolo speciale 2. poi inseriamo, di seguito, l ingresso di M MdT che codifica M e il suo ingresso insieme di istruzioni di M ingresso di M
La macchina universale È possibile costruire una MdT U che simuli il comportamento di una qualsiasi MdT M (sulla base di una codifica di M) Questa macchina si chiama macchina universale
La macchina universale Ingresso qualsiasi w 1 I 0 1 1 1 codifica sul nastro della MdT M 1 1 0 0 0 1 MdT (che chiamiamo universale) uscita che avrebbe prodotto M se avesse avuto w come ingresso 1 1 1 1 1 0 0 0 0
La macchina universale La MdT universale U, con ingresso w e la codifica di M, restituisce l uscita che avrebbe prodotto M con ingresso w, se M si ferma non si ferma, se M non si ferma sull ingresso w È importante notare che la macchina universale non è altro che una MdT opportunamente programmata. Così come è possibile costruire una MdT che calcoli la funzione somma, è possibile costruire una macchina (la macchina universale, appunto) che calcoli la funzione simulazione della MdT M su ingresso w, dove M e w sono rappresentati sul suo nastro. Per questo motivo, U può calcolare qualsiasi funzione Turing-calcolabile!
La MdT universale è una macchina di Turing opportunamente t programmata! MdT UNIVERSALE: simula qualsiasi altra MdT MdT che calcola la SOMMA MdT che ORDINA ELEMENTI IN UN INSIEME MdT che CONDUCE UNA PARTITA A SCACCHI MdT che calcola la SOTTRAZIONE
Torniamo al problema della fermata La MdT universale U, con ingresso w e la codifica di M, Restituisce l uscita che avrebbe prodotto M con ingresso w, se M si ferma non si ferma, se M non si ferma sull ingresso w PROBLEMA DELLA FERMATA. È possibile costruire una macchina universale che decida (fermandosi in qualche stato) t ) se una qualsiasi i M si ferma o no su un qualsiasi ingresso w? Si può dimostrare che NON ESISTE una MdT che risolva questo problema
Macchine universali e problema della fermata Possiamo costruire una MdT U che restituisca isca in uscita ciò che un altra MdT m produce (fermandosi) sull ingresso w MA NON possiamo costruire una MdT che decida se una qualsiasi m si fermerà o no su un qualsiasi ingresso w
Conseguenze del teorema della fermata Le MdT (quindi i sistemi algoritmici, se accettiamo la tesi di Church-Turing) sono intrinsecamente limitate: non possiamo costruire una MdT che decida se una qualsiasi altra MdT si ferma o no su un qualsiasi i ingresso w
Attenzione! Evitare l errore comune di enunciare il problema della fermata nel modo seguente: nessuna MdT può decidere se un altra MdT m si ferma sull ingresso w Questo non è il problema della fermata! Infatti, possiamo decidere algoritmicamente se, ad esempio, la MdT che esegue la somma si fermerà sull ingresso 110111! Il problema della fermata è relativo all esistenza di una MdT che decida se qualsiasi MdT si ferma o no: nessuna MdT può decidere se una qualsiasi altra MdT m si ferma su un qualsiasi ingresso w
Appendice: La MdT universale e la programmazione PROGRAMMARE una MdT consiste nello scrivere la descrizione di una MdT e i dati di ingresso sul nastro della MdT universale insieme di istruzioni di M ingresso di M
Analogamente Programmare un calcolatore l significa ifi scrivere un programma e i suoi dati di ingresso nella memoria del calcolatore hard disk memoria RAM
Programmare un calcolatore l programma scritto in un linguaggio di programmazione 1. $cateto1 = 3; 2. $cateto2 = 4; 3. $quadratocateto1 = pow($cateto1,2); 4. $quadratocateto2 = pow($cateto2,2); 5. $sommaquadrati = $quadratocateto1 + $quadratocateto2; 6. $ipotenusa = sqrt($sommaquadrati); 7. echo "L'ipotenusa è ".$ipotenusa;
Esecuzione del programma 1. $cateto1 = 3; 2. $cateto2 = 4; 3. $quadratocateto1 = pow($cateto1,2); 4. $quadratocateto2 = pow($cateto2,2); 5. $sommaquadrati = $quadratocateto1 + $quadratocateto2; 6. $ipotenusa = sqrt($sommaquadrati); 7. echo "L'ipotenusa è ".$ipotenusa; Il processore centrale del PC esegue quel programma su quei dati di ingresso e restituisce il risultato
Macchine universali e calcolatori l odierni i Un PC che conserva nella propria memoria un programma che calcola la somma si comporta, in un certo senso, da macchina universale! Quel PC, infatti, ha nella propria memoria la descrizione di una macchina che esegue la somma e il suo ingresso (analogamente al caso della macchina universale, che conserva sul proprio nastro la descrizione di un altra macchina e il suo ingresso).
I linguaggi i di programmazione I linguaggi di programmazione servono per programmare algoritmi su un calcolatore 1. In base alla tesi CT, qualsiasi algoritmo scritto in uno qualsiasi di questi linguaggi calcola una funzione che può essere calcolata l da una MdT opportunamente programmata. 2. In base ai teoremi che abbiamo visto e alla tesi CT, nessun programma scritto in uno di questi linguaggi potrà risolvere il problema della fermata (ovvero, decidere se un calcolatore qualsiasi restituirà un risultato su un ingresso qualsiasi) 3. né potrà risolvere alcun problema non Turing- 3. né potrà risolvere alcun problema non Turing calcolabile