Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Macchine di Turing e ricorsività generale
2
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!
3
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!
4
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!
5
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
6
...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
7
La composizione h(x) = fg(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
8
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
9
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)
10
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*
11
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))
12
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)
13
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)
14
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)
15
Riassumendo: RG T-computabile
daan! Riesco a implementare qualsiasi funzione ricorsiva generale, ossia ottenuta dalle funzioni base con composizione, ricorsione, e minimalizzazione.
16
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...
17
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
18
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
19
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
20
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
21
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
22
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
23
Da MT a funzione aritmetica
Data una MT, come facciamo a ricavare una funzione aritmetica corrispondente? Come definire tale funzione sulla base della MT?
24
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
25
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
26
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à?
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.