La tesi di Church-Turing e l indecidibilità l’indecidibilità A t i e algoritmi Automi l it i ` ` ` LLa domanda d d ffondamentale d l della d ll teoria i d della ll calcolabilità è: Quali risultati possiamo e non possiamo ottenere mediante algoritmi? Per affrontare questa domanda dovremo basarci su caratterizzazioni i i i precise, i non intuitive, i i i delle d ll nozioni i i di algoritmo e di sistema (macchina) che esegue algoritmi. La tesi di Church Church-Turing Turing fornisce elementi per una caratterizzazione precisa della nozione di algoritmo T i di Ch Tesi Church-Turing hT i Ognii ffunzione O i calcolabile l l bil mediante di un algoritmo è calcolabile da una macchina di Turing funzione calcolabile mediante un algoritmo (nozione intuitiva) funzione calcolabile l l bil d da MdT (nozione precisa) T i di Ch Tesi Church-Turing: hT i conseguenza!! ` ` Conseguenza logica C l i d della ll T Tesi:i 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) f ) in i grado d di calcolare l l quella ll ffunzione! i ! T i di Ch Tesi Church-Turing: hT i conseguenza!! ` Conseguenza logica C l i d della ll T Tesi:i 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 T i Turing e la l storia t i dei d i calcolatori l l t i ` Turing ha permesso lo sviluppo della teoria della calcolabilità, ca co ab tà, ovve ovvero o della e a disciplina sc p a che c e si s 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, quella, precisa di “programma programma per MdT” MdT L’analisi di Turing ha T i Turing e la l storia t i permesso dei d i calcolatori l di l t i identificare problemi Z1 (1938) non risolvibili da MdT e quindi, quindi per la Tesi Tesi, non risolvibili da alcun l sistema i t algoritmico PC odierno di NASA Columbia Supercomputer (2004) Colossus (1943) Commodore 64 (1986) ENIAC (1945) EDVAC (1945) T i di Church-Turing Tesi Ch hT i ` ` Questa Q t affermazione ff i èd detta tt tesi, t i e non teorema, t perché hé 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 dell espressione “calcolabile calcolabile algoritmicamente algoritmicamente” è intrinsecamente intuitivo La tesi di Church-Turing Church Turing (tesi CT da ora in poi) fornisce proprio elementi per una definizione formale della nozione di “calcolabile calcolabile algoritmicamente” algoritmicamente V Verso lle funzioni f i i non Turing-calcolabili T i l l bili ` È stato dimostrato di t t che h esistono i ffunzioni i i non TuringT i calcolabili ` In base alla tesi CT, si conclude che esistono funzioni non algoritmicamente calcolabili ` Una di q queste funzioni è relativa al cosiddetto problema della fermata ` Il diagramma di della d ll diapositiva di i i successiva i illustra ill lle relazioni tra tesi CT ed esistenza di funzioni non calcolabili V Verso lle funzioni f i i non Turing-calcolabili T i l l bili Tesi di Church-Turing algoritmi (nozione i t iti ) intuitiva) problema della fermata programmii per MdT ( (nozione precisa) funzioni Turing Turingcalcolabili esistenza di funzioni non Turing-calcolabili funzioni Esistono funzioni non Turingcalcolabili? l l bili? ` ` TEOREMA: EEsistono TEOREMA i ffunzioni i i non T Turing-calcolabili i l l bili A questo risultato si arriva dimostrando che l’insieme delle MdT è più piccolo dell’insieme delle funzioni ffunzioni i i Turingcalcolabili funzioni L’insieme delle MdT è più piccolo d ll’i i dell’insieme delle d ll ffunzioni i 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’è di un altro insieme infinito? G Georg Cantor C t (1845-1918) (1845 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 tteorema di Cantor C t ` Il teorema di Cantor C gioca i un ruolo l importante i nell 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 q questa affermazione deriviamo una contraddizione ` Quindi, siamo costretti a negare l’assunzione iniziale Teorema di Cantor: dimostrazione per assurdo d ` ` 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 1 numeri reali 1,02128384… Teorema di Cantor: dimostrazione per assurdo d ` ` 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 1 2 numeri reali 1,02128384… 1,12528284… Teorema di Cantor: dimostrazione per assurdo d ` ` 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 1 2 3 numeri reali 1,02128384… 1,12528284… 2 12528383 2,12528383… Teorema di Cantor: dimostrazione per assurdo d ` ` 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 1 2 3 4 numeri reali 1,02128384… 1,12528284… 2 12528383 2,12528383… 2,39374532… Teorema di Cantor: dimostrazione per assurdo d ` ` 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 1 2 3 4 5 numeri reali 1,02128384… 1,12528284… 2 12528383 2,12528383… 2,39374532… 2,56746383… Teorema di Cantor: dimostrazione per assurdo d ` ` Supponiamo che i numeri naturali siano tanti quanti i numeri reali Allora, è possibile mettere in corrispondenza ogni numero naturale con un numero reale… reale e così c sì via ia all’infinit all’infinito numeri naturali 1 2 3 4 5 6 … numeri reali 1,02128384… 1,12528284… 2 12528383 2,12528383… 2,39374532… 2,56746383… 3 27546453 3,27546453… … Teorema di Cantor: dimostrazione per assurdo d ` Per ognii numero naturale P l n, cambiamo bi a piacere i l’l’nesimo decimale del numero reale numeri naturali 1 2 3 4 5 6 … numeri reali 1,02128384… 1,12528284… 2 12528383 2,12528383… 2,39374532… 2,56746383… 3 27546453 3,27546453… … Teorema di Cantor: dimostrazione per assurdo d ` Per ognii numero naturale P l n, cambiamo bi a piacere i l’l’nesimo decimale del numero reale numeri naturali 1 2 3 4 5 6 … numeri reali 1,12128384… 1,12528284… 2 12528383 2,12528383… 2,39374532… 2,56746383… 3 27546453 3,27546453… … Teorema di Cantor: dimostrazione per assurdo d ` Per ognii numero naturale P l n, cambiamo bi a piacere i l’l’nesimo decimale del numero reale numeri naturali 1 2 3 4 5 6 … numeri reali 1,12128384… 1,17528284… 2 12528383 2,12528383… 2,39374532… 2,56746383… 3 27546453 3,27546453… … Teorema di Cantor: dimostrazione per assurdo d ` Per ognii numero naturale P l n, cambiamo bi a piacere i l’l’nesimo decimale del numero reale numeri naturali 1 2 3 4 5 6 … numeri reali 1,12128384… 1,17528284… 2 12328383 2,12328383… 2,39374532… 2,56746383… 3 27546453 3,27546453… … Teorema di Cantor: dimostrazione per assurdo d ` Per ognii numero naturale P l n, cambiamo bi a piacere i l’l’nesimo decimale del numero reale numeri naturali 1 2 3 4 5 6 … numeri reali 1,12128384… 1,17528284… 2 12328383 2,12328383… 2,39394532… 2,56746383… 3 27546453 3,27546453… … Teorema di Cantor: dimostrazione per assurdo d ` Per ognii numero naturale P l n, cambiamo bi a piacere i l’l’nesimo decimale del numero reale numeri naturali 1 2 3 4 5 6 … numeri reali 1,12128384… 1,17528284… 2 12328383 2,12328383… 2,39394532… 2,56741383… 3 27546453 3,27546453… … Teorema di Cantor: dimostrazione per assurdo d ` Per ognii numero naturale P l n, cambiamo bi a piacere i l’l’nesimo decimale del numero reale numeri naturali 1 2 3 4 5 6 … numeri reali 1,12128384… 1,17528284… 2 12328383 2,12328383… 2,39394532… 2,56741383… 3 27546353 3,27546353… … Teorema di Cantor: dimostrazione per assurdo d ` F Formiamo i un numero reale l mettendo tt d insieme i i i decimali d i li “rossi”: “ i” 1,173913… , numeri naturali 1 2 3 4 5 6 … numeri reali 1,12128384… 1,17528284… 2 12328383 2,12328383… 2,39394532… 2,56741383… 3 27546353 3,27546353… … Teorema di Cantor: dimostrazione per assurdo d 1,173913… ` ` ` Questo è un numero reale; quindi, in base all’assunzione all 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 QUINDI, numeri reali” reali , e QUINDI non sta in corrispondenza con nessun numero naturale numeri naturali 1 2 numeri reali 1,02128384… 1,12528284… Il tteorema di Cantor: C t riepilogo i il Abbiamo svolto i seguenti g passi: p 1. Assumiamo che i numeri reali siano tanti quanti i numeri naturali 2 Q 2. Quindi, i di possiamo i ffar corrispondere i d un numero reale l a ognii numero naturale 3. Identifichiamo un numero reale che non figura in quella corrispondenza 4. Quindi, l’assunzione l assunzione di partenza è da gettare: L L’insieme insieme dei numeri reali è più grande dell’insieme dei numeri naturali! E i t Esistono ffunzioni i i non Turing-calcolabili T i l l bili Ora è possibile dimostrare che Ora, ` L insieme delle MdT è grande quanto ll’insieme L’insieme insieme dei numeri naturali ` l’insieme delle funzioni è grande quanto l’insieme dei numeri reali QUINDI ((in base al teorema di Cantor)) Q Esistono funzioni che non sono Turing-calcolabili! ( di il di (vedi diagramma ill illustrativo i alla ll di diapositiva i i successiva) i ) F Funzioni i i non Turing-calcolabili T i l l bili programmi per MdT funzioni (funzioni (f i iT Turingi calcolabili) insieme dei numeri naturali funzioni NON u g ca co ab Turing-calcolabili F Funzioni i i non Turing-calcolabili T i l l bili ` Vedremo V d ora una funzione f non TuringT i g, 1936)) calcolabile ((Turing, problema della fermata programmi per MdT (funzioni Turing Turingcalcolabili) funzioni Il problema bl della d ll fermata f t ` Esiste un algoritmo (o una MdT, MdT in base alla tesi CT) per decidere se una qualsiasi MdT m si fermerà su un qualsiasi l i i iingresso w?? ingresso qualsiasi 2 # $ a % 3 ^ MdT m ingresso MdT U uscita La MdT m si ferma/non si ferma con l’ingresso w Il problema bl della d ll fermata f t ` ` NOTA: esistono MdT per decidere se particolari MdT si fermano su particolari ingressi P i Possiamo studiare t di il comportamento t t della d ll macchina hi “somma” e capire che si fermerà su qualsiasi ingresso ingresso qualsiasi 2 # $ a % 3 ^ MdT m ingresso MdT U uscita La MdT m si ferma/non si ferma con l’ingresso w Il problema bl della d ll fermata f t ` 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 ^ MdT m ingresso MdT U uscita La MdT m si ferma/non si ferma con l’ingresso w P Parentesi t i ` Il problema della fermata è analogo a molti problemi dell’informatica odierna ` Verifica di correttezza: valutare algoritmicamente se g effettivamente il compito p per p un certo software svolge cui è stato progettato ` Il problema in questo caso è quello di scrivere un software che controlli il funzionamento di un altro software ` Pensate all all’importanza importanza della verifica di correttezza in relazione ai software di controllo aerei o di diagnosi medica! di ! A Ancor prima i di d dare una risposta… i t ` ` Questo problema Q bl sii bbasa sulla ll capacità i à di fornire f i una qualche descrizione della MdT m alla MdT u! Come fare? ingresso qualsiasi 2 # $ a % 3 ^ MdT m ingresso MdT U uscita La MdT m si ferma/non si ferma con l’ingresso w Rappresentazione di una MdT sul nastro t di un’altra ’ lt MdT ` È possibile rappresentare un automa finito o un automa t a pila il ((e il loro l iingresso)) sull nastro t 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? ingresso, Rappresentazione di una MdT sul nastro t di un’altra ’ lt MdT ` ` Possiamo P i rappresentare le l quintuple i l di una MdT sull nastro di una MdT scegliendo un opportuno alfabeto e sistema i di codifica! difi ! Ad esempio, p la qquintupla p q1 0 Æ 1 D q2, interpretata p come “se sei nello stato q1 e leggi il simbolo 0, allora scrivi 1, vai pp a destra,, e assumi lo stato q2”,, ppuò 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 t di un’altra ’ lt MdT Quindi, Q i di per costruire i una MdT U che h contenga una codifica della MdT M: 1. codifichiamo sul nastro di U l’insieme delle istruzioni di p da un simbolo speciale p M, separate 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 L macchina La hi universale i l ` È possibile costruire una MdT U che simuli il p di una qqualsiasi MdT M ((sulla base di una comportamento codifica di M) ` Questa macchina si chiama macchina universale L macchina La hi universale i l 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 L macchina La hi universale i l ` L MdT universale La i l U, U con ingresso i w e lla codifica difi di M 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. 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 g w”,, dove M e w sono rappresentati pp sul suo nastro. ` Per questo motivo, U può calcolare qualsiasi funzione Turing-calcolabile! La MdT universale è una macchina di T i Turing opportunamente t t programmata! t ! 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 T Torniamo i all problema bl della d ll fermata f t ` L MdT universale La i l U, U con ingresso i w e la l codifica difi di M, M ` Restituisce l’uscita che avrebbe prodotto M con ingresso w, se M si ferma ` non si ferma ferma, se M non si ferma sull’ingresso sull ingresso w ` PROBLEMA DELLA FERMATA. FERMATA È possibile ibil costruire t i una macchina universale che decida (fermandosi in qualche l h stato) t t ) se una qualsiasi l i i M sii fferma o no su un qualsiasi ingresso w? ` Si può dimostrare che NON ESISTE una MdT che risolva questo problema Macchine universali e problema della f fermata t ` Possiamo P ssiam ccostruire str ire una na MdT U che restituisca restit isca in uscita scita ciò che un’altra MdT m produce (fermandosi) sull’ingresso ll’i w MA ` NON possiamo costruire una MdT che decida se una qualsiasi m si fermerà o no su un qualsiasi ingresso w C Conseguenze del d l teorema t della d ll fermata f t ` Le MdT (quindi i sistemi algoritmici, se accettiamo la tesi di Church-Turing) Church Turing) sono intrinsecamente limitate: non possiamo costruire una MdT che decida se una qualsiasi altra lt MdT sii ferma f o no su un qualsiasi l i i ingresso i w Att Attenzione! i ! Evitare l’errore 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 se, ad esempio 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 w” Appendice: L MdT universale La i l e lla programmazione i ` PROGRAMMARE una MdT consiste nello scrivere la g sul nastro descrizione di una MdT e i dati di ingresso della MdT universale insieme di istruzioni di M ingresso di M A l Analogamente… t ` Programmare un calcolatore P l l significa i ifi scrivere i un programma e i suoi dati di ingresso nella memoria d l calcolatore del l l hard disk memoria RAM P Programmare un calcolatore l l t programma scritto in un linguaggio di programmazione 1. 2. 3. 4. 5. 6. 7. $cateto1 = 3; $cateto2 = 4; $quadratocateto1 = pow($cateto1,2); $quadratocateto2 = pow($cateto2,2); $sommaquadrati = $quadratocateto1 + $quadratocateto2; $ipotenusa = sqrt($sommaquadrati); echo "L'ipotenusa è ".$ipotenusa; E Esecuzione i del d l programma 1. 2. 3. 4. 5. 6. 7. $cateto1 = 3; $cateto2 = 4; $quadratocateto1 = pow($cateto1,2); $quadratocateto2 = pow($cateto2,2); $sommaquadrati = $quadratocateto1 + $quadratocateto2; $ipotenusa = sqrt($sommaquadrati); echo "L'ipotenusa L ipotenusa è ".$ipotenusa; .$ipotenusa; Il processore centrale del PC esegue quel programma su quei dati di ingresso e restituisce il risultato M Macchine hi universali i li e calcolatori l l t i odierni di i ` Un PC che U h conserva nella ll propria i memoria i un programma che calcola la somma si comporta, in un certo senso, da d macchina hi universale! i l ! ` Quel PC, PC infatti, 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 un altra macchina e il suo ingresso) ingresso). I li linguaggii di programmazione i ` 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 l da d 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 Turingcalcolabile