Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Macchine di Turing e Calcolabilità
Moreno Marzolla Dipartimento di Informatica—Scienza e Ingegneria (DISI) Università di Bologna
2
Moreno Marzolla, Università di Bologna
Copyright © 2013, 2016, 2017 Moreno Marzolla, Università di Bologna This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License. To view a copy of this license, visit or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. Macchine di Turing
3
Ringraziamenti Parte del materiale presente in queste slide è tratto dalla presentazione Calcolo e Simboli: la scienza digitale del prof. Simone Martini, Università di Bologna Macchine di Turing
4
Alan Mathison Turing (1912—1954)
Nato il 23 giugno 1912 OBE (Order of the British Empire) FRS (Fellow of the Royal Society) Morto il 7 giugno 1954 per avvelenamento da cianuro, probabilmente suicidio dovuto alle persecuzioni per la sua omosessualità Macchine di Turing
5
Alan Mathison Turing (1912—1954)
Criptanalisi Macchine per il calcolo Gioco dell'imitazione Morfogenesi Macchine di Turing
6
Possono le macchine pensare?
Macchine di Turing
7
Macchine di Turing
8
Il gioco dell'imitazione
Cos'è l'intelligenza? Un interrogante è collegato mediante un terminale con due stanze: in una di esse si trova una persona, nell'altra un computer Ponendo domande tramite il terminale, l'interrogante deve decidere chi è l'essere umano e chi la macchina Macchine di Turing
9
Il gioco dell'imitazione
La macchina deve farsi passare per un essere umano Se l'interrogante non è in grado di identificare in modo affidabile chi è l'umano e chi è il computer, la macchina ha superato il Test di Turing Macchine di Turing
10
Un ipotetico dialogo, descritto da Turing
Mi scriva un sonetto sul tema del ponte sul Forth ? Non faccia affidamento a me su questo. Non ho mai saputo scrivere poesie Sommi a 70764 Pausa di circa 30 secondi... 105621 Gioca a scacchi? Sì Ho il re in e1 e nessun altro pezzo. Lei ha solo il re in c3 e una torre in h8. Tocca a lei. Che mossa fa? Pausa di 15 secondi... Torre in h1. Scacco matto. Macchine di Turing
11
Di Andrew Bell, CC BY-SA 3. 0, https://commons. wikimedia. org/w/index
Macchine di Turing
12
Macchine di Turing e calcolabilità
13
Cosa significa calcolare?
Alan M. Turing, On Computable Numbers, with an Application to the Entscheidungsproblem, Proc. Lond. Math. Soc. (2) 42 pp (1936) Entscheidungsproblem (secondo Problema di Hilbert): Esiste un metodo definito di calcolo che, data una proposizione matematica, permetta di decidere se è o non è dimostrabile? Turing ha iniziato a porsi domande sulla natura e i limiti dei computer molto prima che questi esistessero! Primo calcolatore “universale” elettromeccanico: Z3, 1941; Konrad Zuse, Germania. Primo calcolatore “universale” elettronico: ENIAC, 1946; University of Pennsylvania’s Moore School of Electrical Engineering Macchine di Turing
14
Cosa significa calcolare?
1 7 5 + 9 2 = 2 6 7 Cerchiamo di formalizzare la nostra nozione “intuitiva” di “calcolare”, nel senso di “fare di conto”. Per “calcolare” possiamo immaginare di avere bisogno dei seguenti elementi: 1. un foglio su cui scrivere, per semplicità diviso in quadretti 2. un insieme di simboli che possono venire scritti o cancellati dai quadretti 3. un insieme di regole da seguire 4. un qualche modo per “ricordarci” cosa stiamo facendo, e.g., a che punto del procedimento di calcolo ci troviamo, in modo da sapere cosa dobbiamo fare dopo Macchine di Turing
15
Macchina di Turing Dispositivo astratto che contiene tutti gli elementi essenziali per “calcolare” una qualsiasi funzione Un supporto su cui scrivere: un nastro infinito, diviso in caselle Un insieme finito di simboli che possono comparire sul nastro Un dispositivo di lettura/scrittura Un insieme finito di “stati” in cui la macchina si può trovare in ogni istante Una “tavola di istruzioni” finita, che dice alla macchina cosa fare in base al simbolo che si trova in quel momento sotto la testina di lettura/scrittura Macchine di Turing
16
Macchina di Turing Un insieme finito di stati in cui la macchina può trovarsi q0 è lo stato iniziale, in cui la macchina si trova quando viene fatta partire halt è lo stato finale: se la macchina raggiunge tale stato, si ferma. Nota: gli stati possono avere nomi arbitrari; “q0” e “halt” sono solo una nostra convenzione che useremo qui Un nastro infinito diviso in celle Un alfabeto finito (insieme di simboli che possono comparire sulle celle del nastro) L'alfabeto include un simbolo “spazio” (blank) che compare su tutte le (infinite) celle non inizializzate del nastro. Un insieme finito di celle puo' contenere inizialmente simboli diversi da blank, e rappresentano l'input della macchina di Turing Una funzione di transizione che determina il comportamento della macchina Macchine di Turing
17
Funzione di transizione
Una lista di regole che indicano, per ogni possibile simbolo X che si trovi al momento sotto la testina e per ogni possibile stato P della macchina: quale simbolo Y scrivere al posto di X (è possibile riscrivere nuovamente X); quale è il nuovo stato Q della macchina (è possibile che lo stato rimanga sempre P); se la testina deve essere spostata a destra oppure a sinistra di una casella; Inizialmente la macchina si trova nello stato iniziale, e la testina è posizionata su una data cella del nastro (che di solito dipende dal problema da risolvere) Macchine di Turing
18
Esempio Alfabeto: {1, blank} Stati: {q0, halt}
Testina di lettura/scrittura con indicato lo stato corrente 1 1 1 1 Contenuto iniziale del nastro Alfabeto: {1, blank} Stati: {q0, halt} Stato corrente Simbolo corrente Nuovo Simbolo Nuovo Stato Spostamento q0 1 right blank halt Questa MdT scorre una lista di 1, e si ferma non appena trova una casella vuota. Sulla casella vuota scrive un 1 e poi si ferma Se a questa MdT viene fornito in input un numero in notazione “unaria”, calcola il successore di quel numero; cioé dato in input n, calcola n+1 Macchine di Turing
19
Esempio q0 1 1 1 Calcolare il “complemento a uno” di un numero espresso in base 2 In pratica, cambiare gli '1' con '0' e viceversa Es → Inizialmente il dispositivo di lettura/scrittura si trova sulla prima cifra a sinistra Al termine il numero originale deve essere sovrascritto con il suo complemento a due Esercizio: come definiamo la funzione di transizione? E' sufficiente un unico stato q0 (oltre allo stato finale HALT); nello stato finale la macchina si sposta continuamente a destra, scrivendo 1 al posto di 0 e viceversa. Al primo blank si ferma Stato corrente Simbolo corrente Nuovo Simbolo Nuovo Stato Spostamento q0 1 right blank halt Macchine di Turing
20
Esempio Calcolare la somma di due numeri in base 1
q0 1 1 1 1 1 1 1 Calcolare la somma di due numeri in base 1 Es = Inizialmente sul nastro vengono scritti i due numeri da sommare, separati da un blank Al termine il nastro deve contenere il risultato al posto degli input Esercizio: come definiamo la funzione di transizione? Soluzione: usiamo due stati, q0 e q1 (oltre allo stato finale HALT). Nello stato q0 la macchina cancella la prima cifra '1'; nello stato q1 la macchina scrive 1 al posto del primo blank che incontra, e si ferma Macchine di Turing Stato corrente Simbolo corrente Nuovo Simbolo Nuovo Stato Spostamento q0 1 blank q1 right halt
21
Entscheidungsproblem
Esiste un metodo definito di calcolo che, data una proposizione matematica permette di decidere se è o non è dimostrabile? Turing definisce metodo definito di calcolo come procedura di calcolo realizzabile mediante una macchina di Turing Tesi di Church-Turing: le macchine di Turing definiscono con precisione la nozione intuitiva di “procedimento definito di calcolo” Turing dimostra che non esiste alcun metodo definito di calcolo che permette di decidere se una proposizione matematica è o non è dimostrabile. Macchine di Turing
22
Funzioni calcolabili e Turing-Completezza
Tesi di Church-Turing: le funzioni calcolabili sono tutte e sole le funzioni calcolabili da una qualche macchina di Turing Qualsiasi formalismo mediante il quale sia possibile simulare una macchina di Turing si dice Turing-Completo Macchine di Turing
23
Funzioni non calcolabili: Halting Problem
Esistono funzioni che NON sono calcolabili Esempio (Halting Problem) “Scrivere una funzione che accetta in input (1) la descrizione di un programma P scritto in una opportuna notazione, e (2) l'input I da passare a P. La funzione deve restituire TRUE se e solo se il programma P applicato all'input I termina” Macchine di Turing
24
Halting problem Dimostrazione semi-formale
Supponiamo per assurdo che sia possibile scrivere un algoritmo che accetta in input due stringhe P rappresenta il sorgente di un programma in C I rappresenta l'input su cui il programma P deve operare int Termina(char* P, char* I) { if (P applicato a I termina) { return 1; } else { return 0; } Qui dovrebbe esserci del codice “opportuno” per decidere se P(I) termina o no Macchine di Turing
25
Halting problem Dimostrazione semi-formale
Poiché l'input I puo' essere una qualsiasi stringa di caratteri, nulla ci impedisce di passare al programma P il suo stesso codice sorgente come input! Quindi se è possibile scrivere un metodo Termina(), è possibile scrivere anche il metodo Termina_su_P() seguente int Termina_su_P(char* P) { if (Termina(P, P)) { return 1; } else { return 0; } Macchine di Turing
26
Halting problem Dimostrazione semi-formale
Se è possibile scrivere un metodo Termina() e Termina_su_P(), allora è possibile anche scrivere un metodo Bomba() seguente Se P(P) termina, Bomba(P) NON termina Se P(P) non termina, Bomba(P) ritorna true int Bomba(char* P) { if (Termina_su_P(P)) { while (1) ; /* ciclo infinito */ return 1; } else { return 0; } Macchine di Turing
27
Halting problem Dimostrazione semi-formale
Che cosa possiamo dire dell'invocazione Bomba(Bomba)? Cioé passiamo al metodo Bomba() il suo stesso codice Bomba(Bomba) puo' terminare, o andare in loop Se Bomba(Bomba) termina, significa che Termina_su_P(Bomba) restituisce false Cioé Termina(Bomba, Bomba) restituisce false Cioé Bomba(Bomba) NON termina Assurdo! int Bomba(char* P) { if (Termina_su_P(P)) { while (1) ; return 0; } else { return 1; } int Termina_su_P(char* P) { if (Termina(P, P)) { return 1; } else { return 0; } Macchine di Turing
28
Halting problem Dimostrazione semi-formale
Che cosa possiamo dire dell'invocazione Bomba(Bomba)? Cioé passiamo al metodo Bomba() il suo stesso codice Bomba(Bomba) puo' terminare, o andare in loop Se Bomba(Bomba) NON termina, significa che Termina_su_P(Bomba) restituisce true Cioé Termina(Bomba, Bomba) restituisce true Cioé Bomba(Bomba) termina Assurdo! int Bomba(char* P) { if (Termina_su_P(P)) { while (1) ; return 0; } else { return 1; } int Termina_su_P(char* P) { if (Termina(P, P)) { return 1; } else { return 0; } Macchine di Turing
29
Halting problem Dimostrazione semi-formale
Quindi supponendo che fosse possibile scrivere una funzione Termina(), abbiamo ottenuto un assurdo Di conseguenza NON possiamo definire una funzione Termina() che operi come indicato Nemmeno se usiamo un linguaggio di programmazione diverso: tutti i linguaggi di programmazione sono equivalenti ad una macchina di Turing, quindi possono calcolare solo le funzioni che una macchina di Turing può calcolare Macchine di Turing
30
Funzioni non calcolabili: Tassellatura di Wang
Dato un insieme di tipi di piastrelle di Wang, decidere se esse possono ricoprire il piano È possibile usare un numero illimitato di piastrelle di ciascun tipo Esempio: le piastrelle seguenti possono ricoprire il piano (in modo non periodico) È stato dimostrato che è impossibile definire un algoritmo per decidere se un insieme dato di tipi di piastrelle può ricoprire il piano Sono forniti un insieme finito di tipi di piastrelle, come quelle mostrate. Ciascun tipo di piastrella ha ogni lato di un dato colore (c'e' un insieme finito di possibili colori) E' possibile usare un numero illimitato di piastrelle di ciascun tipo Le piastrelle possono essere affiancate se e solo se hanno lo stesso colore sui lati adiacenti. Le piastrelle non possono essere ruotate By Anomie - Own work, Public Domain, Macchine di Turing
31
Nel nostro caso, i 13 tasselli mostrati nel lucido precedente sono effettivamente in grado di ricoprire il piano infinito Macchine di Turing By Claudio Rocchini - Own work, CC BY-SA 3.0,
32
...e poi dicono che l'informatica teorica non serve!
La tassellatura di Wang è stata applicata alla costruzione “algoritmica” di paesaggi non periodici, come ad esempio questo campo di margherite che ha un aspetto realistico nonostante sia costruito a partire da un insieme finito di tasselli (mostrati a sinistra) Michael F. Cohen, Jonathan Shade, Stefan Hiller, and Oliver Deussen Wang Tiles for image and texture generation. In ACM SIGGRAPH 2003 Papers (SIGGRAPH '03). ACM, New York, NY, USA, DOI Macchine di Turing
33
Un paio di libri che parlano di Alan Turing
Un paio di libri che parlano di Alan Turing. Il volume a sinistra è la corposa biografia di Andrew Hodges; una lettura a tratti un po' noiosa ma decisamente completa. A destra la biografia di Turing scritta dalla madre. Fornisce un'immagine un po' (tanto) “edulcorata”, ma si tratta di una testimonianza importante. Macchine di Turing
Presentazioni simili
© 2025 SlidePlayer.it Inc.
All rights reserved.