Macchine di Turing e ricorsività generale

Slides:



Advertisements
Presentazioni simili
…da von Neumann al computer quantistico
Advertisements

Teoria e Tecniche del Riconoscimento
Sistemi dinamici discreti e computabilità intrinseca
Modulo 4 – Seconda Parte Foglio Elettronico
Scomposizione funzionale
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Procedure e funzioni ricorsive
Linguaggi Regolari e Linguaggi Liberi
Costruzione delle tabelle di parsing LR canoniche
Costruzione di tabelle di Parsing SLR
Algoritmi e Programmazione
Precorsi di Informatica Dott. Antonio Cisternino Settembre 2003
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
SPIM Esercizi. Esercizio 1 – il comando li Il codice deve eseguire una singola operazione: mettere il valore immediato 1023 nel registro s3.
1 Il punto di vista Un sistema è una parte del mondo che una persona o un gruppo di persone, durante un certo intervallo di tempo, sceglie di considerare.
Deduzione naturale + Logica & Calcolabilità
Alberi binari di ricerca
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
MACCHINE DI TURING Le macchine di Turing sono dispositivi astratti per la manipolazione di simboli, ideati nel 1936 dal matematico e logico britannico.
Macchine non completamente specificate
Analisi e Sintesi di circuiti sequenziali
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Informatica 3 Codifica binaria.
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
Funzioni, Rappresentazioni e Coscienza
Modelli simulativi per le Scienze Cognitive Paolo Bouquet (Università di Trento) Marco Casarotti (Università di Padova)
Modelli simulativi per le Scienze Cognitive
Modelli simulativi per le Scienze Cognitive
Analisi e Sintesi di circuiti sequenziali. Definizione Una macchina sequenziale é un sistema nel quale, detto I(t) l'insieme degli ingressi in t, O(t)
Esercizi su pile Scrivere una funzione che restituisca una nuova pila che contiene i valori di una pila in ingresso in ordine inverso. La pila originale.
ancora alcune macchine di Turing per risolvere semplici problemi :
MACCHINE DI TURING e ALGORITMI
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
PROBLEMI RISOLUBILI E COMPUTABILITÀ
LAPPROCCIO FUNZIONALE Obiettivo: esprimere la soluzione di un problema sotto forma di funzione. Quali funzioni primitive? Quali meccanismi di combinazione?
L’AUTOMA ESECUTORE Un automa capace di ricevere dall’esterno una descrizione dello algoritmo richiesto cioè capace di interpretare un linguaggio (linguaggio.
Algoritmi e Programmazione strutturata
L’inventore del calcolatore odierno
Antonio Cisternino La Macchina di Turing.
CHI ERA ALAN TURING? Turing fece parte del team di matematici che, a partire dalla base di Bletchley Park, decodificarono i messaggi scritti dalle macchine.
Lezione 6 Strutture di controllo Il condizionale
I NUMERI INTERI Il secondo insieme che prenderemo in esame è quello dei numeri interi. Esso si indica con la lettera Z (dal tedesco Zahl = numero) e i.
relazioni tra radici e simmetrie Lezione 3
LA MACCHINA DI TURING Nel 1936 il matematico inglese A. M. Turing propose una definizione del concetto di algoritmo tramite un modello matematico di macchina.
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
Programma di Informatica Classi Prime
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 2 La ricorsione Corso di Informatica 2 a.a. 2003/04 Lezione 2.
Modelli computazionali e macchine astratte
PROPAGAZIONE DEGLI ERRORI:
Rappresentazione dell’informazione nel calcolatore.
La ricorsione.
Raggruppamento in SQL Esempio di raggruppamento
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Compitino del 2004 Alberi Generici. Idea Si vuole un tipo di dato astratto che definisca una struttura ad albero in cui nodi e foglie hanno associato.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
La codifica dei numeri.
Automi temporizzati.
Informatica 4 La ricorsione. Definizione di ricorsione Ricorsione è la proprietà di quei programmi che, all’interno delle istruzioni che li compongono,
Informatica Lezione 3 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Le quattro operazioni.
Problemi, algoritmi e programmazione
Indecidibilità Limiti della calcolabilità Pigreco-day 14 marzo 2014 Matematica e Incertezza Prof. Antonio Iarlori Mathesis Lanciano-Ortona.
Forma normale delle equazioni di 2° grado Definizione. Un'equazione di secondo grado è in forma normale se si presenta nella forma Dove sono numeri.
Suggerimenti [1d5] SE la prima lettera della matrice (in alto a sinistra, matrice[0,0]) è diversa dalla prima lettera della parola (parola[0]) ALLORA siamo.
LA RETTA NEL PIANO CARTESIANO
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
La numerazione ottale. Il sistema di numerazione ottale ha ampio utilizzo in informatica E’ un sistema di numerazione posizionale La base è 8 Il sistema.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Criteri di divisibilità
Transcript della presentazione:

Macchine di Turing e ricorsività generale

Esempio di MT MT1= (Q, S, d, q1, q0) Q = {q1; q0} S = { | } con una specifica codifica: ogni numero n è rappresentato con n+1 “|” (q1,|) = (|,d,q1) (q1,s0) = (|,c,q0) Ta daan!

Altro esempio di MT MT2 = (Q, S, d, q1, q0) Q = {q1; q0} S = { | } con la solita codifica: ogni numero n è rappresentato con n+1 “|” (q1,|) = (s0,d,q1) (q1,s0) = (|,c,q0) Ta daan!

Altro esempio ancora (q1,|) = (|,d,q1) (q1,s0) = (s0,d,q2) (q2,|) = (s0,d,q2) (q2,s0) = (s0,d,q3) (q3,|) = (s0,d,q3) (q3,s0) = (s0,c,q0) MT3 Ta daan!

Esempi di MT speciali MT1 implementa la funzione successore MT2 implementa la funzione zero MT3 implementa P31... ...ed è facile vedere come qualunque Pnk possa essere implementata con una MT Si dice che le funzioni base sono Turing-computabili, o T-computabili

...e le altre funzioni? Le altre funzioni si ottengono da quelle base per mezzo di composizione, ricorsione, e minimalizzazione Se dimostriamo che queste operazioni conservano la T-computabilità, allora dimostriamo che tutte le funzioni ottenute sono T-computabili

La composizione h(x) = fg(x) = f(g(x)) Se f e g sono T-computabili, lo è anche h? Ossia: se esistono MTf e MTg, si riesce a costruire MTh? Sì: basta mettere insieme le istruzioni di MTf e di MTg, con l’unico accorgimento di porre q1h = q1g, q0g = q1f, q0f = q0h

La ricorsione h(0) = k h(s(x)) = g(x,h(x)) Se g è T-computabile, lo è anche h? Ossia: avendo a disposizione MTg, si riesce a costruire MTh? Sì: è un po’ più complicato che nel caso della composizione S include i simboli $1, $2, $3 che sono usati come separatori

Ricorsione con MT Per calcolare h(x), MTh inizia scrivendo sul nasto (k* rappresenta k+1 barre): MTh cancella una barra da x* Se zero barre tra $2 e $3, l’output è tra $1 e $2 (perché h(0) = k) Altrimenti configura il nastro così: $1 k* $2 x* $3 $1 | k* $2 (x-1)* $3 | k* Codifica di (0,k)

Ricorsione con MT MTh esegue il programma di MTg sulla parte a destra di $3: ottenendo: dove j* è la codifica di j = g(0,k) = h(1) h(0) = k h(s(x)) = g(x,h(x)) $1 | k* $2 (x-1)* $3 | k* $1 | k* $2 (x-1)* $3 j*

Ricorsione con MT MTh cancella una barra tra $2 e $3, se non ci sono più barre vuol dire che x=1 e quindi l’output è j = g(0,k) = h(1), che si trova a destra di $3: Altrimenti nuova configurazione e si ripete: Eseguendo MTg a destra di $3 si calcola g(1,h(1)) = h(2)...e così via fino a h(x) $1 | k* $2 $3 j* $1 | | j* $2 (x-2)* $3 | | j* codifica di (1,j) = (1,h(1))

La minimalizzazione f(x) = il più piccolo y: g(x,y)=0 Dobbiamo costruire MTf usando MTg MTf procede eseguendo iterativamente il codice di MTg per calcolare g(x,0), g(x,1), g(x,2),...g(x,y) e restituisce in output il primo y per cui g(x,y)=0 Se tale y non esiste MTf non si ferma mai (e infatti f non è definita per quella x)

Minimalizzazione con MT MTf configura inizialmente il nastro così: Poi copia i dati tra $1 e $2 nello spazio tra $2 e $3 e lì usa il codice di MTg per calcolare g(x,0) Se il risultato è zero cancella tutto il resto e lo lascia come output $1 x* | $2 $3 codifica di (x,0)

Minimalizzazione con MT Altrimenti MTf riconfigura il nastro così: e ripete tutto per calcolare g(x,1) ...e così via fino a trovare (eventualmente) il primo y per cui g(x,y)=0 $1 x* | | $2 $3 codifica di (x,1)

Riassumendo: RG  T-computabile daan! Riesco a implementare qualsiasi funzione ricorsiva generale, ossia ottenuta dalle funzioni base con composizione, ricorsione, e minimalizzazione.

Ok: se f è RG, allora esiste una MT che la implementa. Dubbio... Ok: se f è RG, allora esiste una MT che la implementa. Ma se scrivo una MT arbitrariamente complicata, che tipo di funzione viene computata? Uhm...

Risposta: RG  T-computabile Non esistono funzioni calcolate da una MT che non siano ricorsive generali Si può dimostrare che il programma di una qualsiasi MT può essere espresso come una funzione ottenuta dalle funzioni base con i soliti tre metodi In altre parole: sono uno strumento molto potente ma non fuoriesco da RG

RG  T-computabile Dobbiamo dimostrare che ogni funzione computata da una MT è una funzione RG Visto che le funzioni RG sono aritmetiche, ossia lavorano con i numeri naturali, dobbiamo innanzitutto codificare gli stati di una MT

Gödelizzazione degli stati di MT MT con alfabeto Σ = {s1,...,sn} nella seguente situazione u (sinistra) = 22 · 30 · 53 (se nastro vuoto: 1) v (destra) = 21 · 34 · 57 · 72 · 117 w (globale) = 2u · 32 · 56 · 7v q6 s3 s0 s2 s2 s1 s4 s7 s2 s7

Istruzione di MT come funzione w è la codifica di uno stato particolare di una MT Eseguendo un’istruzione, MT passa da uno stato codificato da w a un altro stato, a cui corrisponde una codifica w’ Possiamo definire una funzione aritmentica totale: ρMT(w)= w’ se w codifica uno stato non finale w altrimenti

La funzione ρMT Il determinismo di MT garantisce che a un certo w corrisponda uno e un solo w’, ossia che ρMT sia una funzione Si dimostra (ma non lo vedremo) che ρMT è una funzione ricorsiva primitiva

La funzione θMT θMT(w,0) = w θMT(w,s(z)) = ρMT(θMT(w,z)) Se w è la codifica di uno stato di MT, θMT(w,z) è la codifica dello stato che si raggiunge eseguendo z istruzioni di MT La funzione θMT è in RP perché è definita per ricorsione a partire da P11 e ρMT

Da MT a funzione aritmetica Data una MT, come facciamo a ricavare una funzione aritmetica corrispondente? Come definire tale funzione sulla base della MT?

Da MT a funzione aritmetica Dato l’input numerico per la funzione, codifichiamo la situazione in cui tale input si trova sul nastro, la testina è nella posizione standard, e la MT è nello stato iniziale q1: otteniamo una codifica w Tramite l’operazione di minimalizzazione, ricaviamo il più piccolo z tale che θMT(w,z) codifica una situazione finale w’ Da w’ ricaviamo lo stato del nastro, su cui è presente l’output computato dalla MT, che corrisponderà all’output della funzione aritmetica

Da MT a funzione aritmetica Si dimostra che la procedura nel passi 1, 2, e 3 permette di esprimere la funzione computata da una MT tramite tutte e sole le operazioni che generano funzioni ricorsive generali Quindi: a ogni MT corrisponde una funzione RG Ossia: T-computabile  RG

Parlando di me, ci siamo concentrati sulla Altro dubbio... Parlando di me, ci siamo concentrati sulla T-computabilità... ...ma come si rapporta la T-computabilità, che è la caratteristica di tutte le funzioni da me computate col concetto più generale di computabilità?