Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [1]



Documenti analoghi
Esercizio su MT. Svolgimento

Varianti Macchine di Turing

Appunti sulla Macchina di Turing. Macchina di Turing

La macchina universale

Tipologie di macchine di Turing

Le Macchine di Turing

x u v(p(x, fx) q(u, v)), e poi

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

4. Operazioni elementari per righe e colonne

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6

Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

Elementi di Informatica e Programmazione

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

L interesse nella macchina di Turing

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

I sistemi di numerazione

Capitolo 7: Teoria generale della calcolabilitá

La Macchina RAM Shepherdson e Sturgis (1963)

Lezione 8. La macchina universale

Dimensione di uno Spazio vettoriale

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

1 Applicazioni Lineari tra Spazi Vettoriali

Macchine di Turing. a n B B. Controllo Finito

CONCETTO DI LIMITE DI UNA FUNZIONE REALE

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

un nastro di carta prolungabile a piacere e suddiviso in celle vuote o contenenti al più un unico carattere;

Corrispondenze e funzioni

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

1. PRIME PROPRIETÀ 2

Algoritmi e strutture dati. Codici di Huffman

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Matematica generale CTF

Applicazioni lineari

Luigi Piroddi

Prodotto libero di gruppi

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Lezioni di Matematica 1 - I modulo

Parte 3. Rango e teorema di Rouché-Capelli

4 3 4 = 4 x x x 10 0 aaa

CAPITOLO 16 SUCCESSIONI E SERIE DI FUNZIONI

LE FUNZIONI A DUE VARIABILI

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

Indice. 1 Introduzione alle Equazioni Differenziali Esempio introduttivo Nomenclatura e Teoremi di Esistenza ed Unicità...

Le macchine di Turing

3 GRAFICI DI FUNZIONI

Sommario. 1 Realizzazione del STG. Introduzione. 1 traduzione delle specifiche informali in specifiche formali (STG o

10. Insiemi non misurabili secondo Lebesgue.

L espressione torna invece sempre vera (quindi la soluzione originale) se cambiamo contemporaneamente il verso: 1 < 0.

A i è un aperto in E. i=1

Lezione 9: Cambio di base

ESERCIZI DI ALGEBRA LINEARE E GEOMETRIA

Teoria in sintesi 10. Attività di sportello 1, 24 - Attività di sportello 2, 24 - Verifica conclusiva, 25. Teoria in sintesi 26

Esercizi su lineare indipendenza e generatori

Vincere a testa o croce

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

LEZIONE 23. Esempio Si consideri la matrice (si veda l Esempio ) A =

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

Reti sequenziali sincrone

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

Complessità Computazionale

regola(1,[e,f],b) regola(2,[m,f],e) regola(3,[m],f) regola(4,[b,f],g) regola(5,[b,g],c) regola(6,[g,q],a)

Cos è un Calcolatore?

Intelligenza Artificiale

Esercizio 1. Esercizi 5. Esercizio 3. Esercizio 2 CICLI

STRUTTURE ALGEBRICHE

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

Nozione di algoritmo. Gabriella Trucco

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI

2.1 Definizione di applicazione lineare. Siano V e W due spazi vettoriali su R. Un applicazione

Informazione analogica e digitale

Algoritmi e diagrammi di flusso

Soluzioni del giornalino n. 16

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Strutturazione logica dei dati: i file

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Sommario. Linguaggi formali: motivazioni, definizione ed esempi operazioni su parole e linguaggi

ALGEBRA DELLE PROPOSIZIONI

risulta (x) = 1 se x < 0.

USO DI EXCEL CLASSE PRIMAI

LEZIONE 16. Proposizione Siano V e W spazi vettoriali su k = R, C. Se f: V W

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Progettazione di un Database

= 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Parte 2. Determinante e matrice inversa

EasyPrint v4.15. Gadget e calendari. Manuale Utente

EQUAZIONI DIFFERENZIALI. 1. Trovare tutte le soluzioni delle equazioni differenziali: (a) x = x 2 log t (d) x = e t x log x (e) y = y2 5y+6

Programmazione dinamica

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Corso di Informatica

Esame di INFORMATICA

CRITERI DI CONVERGENZA PER LE SERIE. lim a n = 0. (1) s n+1 = s n + a n+1. (2) CRITERI PER LE SERIE A TERMINI NON NEGATIVI

Introduzione alla programmazione in C

Transcript:

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [1] Macchine di Turing modello di calcolo introdotto dall ingegner Alan Turing nel 1936, per simulare il processo di calcolo umano rappresenta il primo tentativo di definizione di procedura effettiva e di programma eseguito in automatico da una macchina Una macchina di Turing è composta da: una unità di controllo a stati finiti, cioè controllata da una macchina a stati un nastro di lunghezza arbitraria suddiviso in celle: inizialmente contiene la sequenza di dati di input, sequenza di caratteri non vuoti, successivamente i dati prodotti dalla elaborazione. su e da ogni cella del nastro è possibile leggere e scrivere un solo dato alla volta da una testina di lettura e scrittura che si muove lungo il nastro in entrambe le direzioni possibili. Inizialmente, per convenzione, la testina si assume posizionata sul carattere più a sinistra del nastro.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [2] Macchine di Turing Il comportamento di una macchina di turing è molto semplice: inizialmente la macchina si trova in uno stato detto iniziale la stringa di input è scritta sul nastro la testina è posizionata su una cella, per convenzione il carattere più a sinistra della stringa di input in base allo stato corrente della macchina di controllo ed al carattere letto o puntato dalla testina si determina lo stato successivo e si compiono le seguenti azioni: 1. legge, scrive o cancella il carattere dalla cella su cui è posizionata la testina 2. sposta la testina di una cella a destra o sinistra o lascia la testina ferma la macchina continua ad elaborare la stringa sul nastro ed a transire di stato finchè si ferma in uno stato per cui non è definita alcuna azione o raggiunge uno stato particolare denominato finale

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [3] Macchine di Turing Le macchine di Turing possono essere utilizzate: per calcolare funzioni, in questo caso vengono dette trasduttori per riconoscere o accettare stringhe su un alfabeto, in questo caso vengono dette riconoscitrici. Si noti che, le macchine di Turing riconoscitrici calcolano la funzione caratteristica dell insieme delle stringhe che appartengono al linguaggio che si vuole riconoscere. Esistono vari tipi di Macchine di Turing: singolo nastro mono traccia deterministiche singolo nastro multi traccia deterministiche multi nastro mono/multi traccia deterministtiche singolo/multi nastro mono/multi traccia NON deterministiche

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [4] Definizione Formale di una Macchine di Turing Definizione Una macchina di Turing (deterministica, singolo nastro) si definisce come una 6-upla M = (Σ, b/, K, δ, q 0, q f ) ove: Σ è l alfabeto, ovvero l insieme di caratteri che possono essere scritti e letti dal nastro b/ / Σ è una carattere speciale detto blank che rappresenta la situazione di cella non contenente alcun carattere K è l insieme finito e non vuoto di stati q 0 è lo stato iniziale q f è lo stato finale (possono essere definiti anche più di uno stato finale) δ è la funzione di transizione così definita: essendo Σ b/ = Σ b/. δ : (K q f ) (Σ b/ ) K (Σ b/ ) {d, s, i}

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [5] La funzione di transizione δ(q i, x) = (q j, y, v) si interpreta nel seguente modo: lo stato attuale della macchina è q i il carattere letto dalla cella puntata dalla testina è x la testina scrive il carattere y la macchina a stati transisce nello stato q j la testina si sposta nella direzione v, ove v può essere d = destra s = sinistra i = immobile

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [6] Configurazione di una Macchine di Turing Definizione Si definisce configurazione di una macchina di Turing una stringa s Σ b/ K Σ b/ del tipo s = a i1... a i n q r a j1... a j m, n 0, m 0 ove: Σ è l insieme di tutte le stringhe appartenenti all alfabeto Σ, il simbolo è l operatore di concatenazione sulle stringhe a i1... a i na j1... a j m rappresenta la porzione di nastro contenente caratteri diversi da b/, mentre il resto del nastro contiene solo il carattere b/ a j1 è il contenuto della cella puntata dalla testina q r è lo stato in cui si trova la macchina Configurazioni particolari sono quella iniziale e quella finale

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [7] Configurazione Iniziale e Finale di una MT Definizione Una configurazione s = xqy è detta iniziale se x = ɛ, q = q 0, y Σ + b/ Cioè una configurazione iniziale è una situazione in cui lo stato della macchina è q 0 e la testina si trovi posizionata sul primo carattere a sinistra della stringa di input (non vuota). Definizione Una configurazione s = xqy è detta finale se x Σ b/, q = q f, y Σ b/ Cioè una configurazione finale è una situazione in cui lo stato della macchina è q f contenuto del nastro e dalla posizione della testina. indipendentemente dal

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [8] Funzione di Transizione di una MT Data una configurazione c i una singola applicazione della funzione δ a c i permette di ottenere una nuova configurazione c j secondo le seguenti regole: δ(q r, a j1 ) = (q k, a h, d) significa compiere la seguente transizione di configurazione: a i1... a i n q r a j1... a j m 1 a i1... a i na h q k a j2... a j m δ(q r, a j1 ) = (q k, a h, s) significa compiere la seguente transizione di configurazione: a i1... a i n q r a j1... a j m 1 a i1... a i n 1 q k a i na h a j2... a j m δ(q r, a j1 ) = (q k, a h, i) significa compiere la seguente transizione di configurazione: a i1... a i n q r a j1... a j m 1 a i1... a i n q k a h a j2... a j m

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [9] Funzione di Transizione di una MT La funzione di transizione δ può essere rappresentata in due modi: tramite una matrice avente gli stati della MT sulle righe e i simboli dell alfabeto Σ sulle colonne tramite un grafo orientato i cui nodi sono gli stati della macchina di controllo e gli archi rappresentano le transizioni possibili. Ogni arco è etichettato con una tripla (a, b, v) ove a è il simbolo puntato dalla testina, b è il simbolo scritto e v la direzione di movimento. La funzione δ definisce il comportamento della macchina di Turing, cioè definisce le regole di transizione che permettono di passare da una configurazione ad un altra. Si noti che tali regole possono essere interpretate come regole di riscrittura del contenuto del nastro.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [10] Computazione di una MT Definizione Una successione di configurazioni c 1,..., c n,..., eventualmente infinita, tale che c 1 è uno 1 stato iniziale e i, c i ci+1, definisce una computazione per la macchina di Turing. Usiamo la scrittura c i cj per denotare l esistenza di una computazione che da c i porta a c j tramite un numero finito, eventualmente 0, di transizioni. Ogni computazione può avere al più una configurazione finale, e una computazione infinita non ha configurazioni finali. Definizione Una computazione finita c 1,..., c n è detta massimale se non esiste una configurazione c tale che c n c. Ovvero, una computazione massimale si conclude o con una configurazione finale o con una configurazione in cui non è definita la funzione di transizione δ. Definizione Una computazione massimale c 1,..., c n è detta accentante se c n è uno stato finale Definizione Una computazione massimale c 1,..., c n è detta rifiutante se c n è uno stato NON finale

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [11] Linguaggio Riconosciuto da una MT Una MT può essere utilizzata per riconoscere o accettare un linguaggio L Σ. Definizione Data una macchina di Turing M = (Σ, b/, K, δ, q 0, q f ) diciamo che M riconosce o decide un linguaggio L Σ se e solo se per ogni stringa x Σ, stringa dell alfabeto, esiste una computazione massimale accettante o rifiutante per la macchina M: x Σ, q 0 x wqz, q = q f x L Cioè una MT riconosce un linguaggio L se per ogni stringa definita sull alfabeto Σ è in grado di stabilire se la stringa x appartiene o no al linguaggio L. Definizione Un linguaggio riconosciuto da una MT è detto T-decidibile Data una MT M NON è detto che esista un linguaggio L deciso da M, infatti per definizione ciò è possibile se e solo se M termina per ogni stringa x Σ

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [12] Linguaggio Accettato da una MT Definizione Data una macchina di Turing M = (Σ, b/, K, δ, q 0, q f ) diciamo che M accetta un linguaggio L Σ se e solo se per ogni stringa x L esiste una computazione massimale accettante per la macchina M, cioè L = {x Σ q 0 x wq f z} Una MT accetta un linguaggio L se per tutte le stringhe del linguaggio è in grado di stabilire tale appartenenza, cioè esiste una computazione massimale accettante. Non è in grado di dire nulla per tutte le stringhe non appartenenti al linguaggio. Definizione Un linguaggio accettato da una MT è detto T-semidecidibile Un linguaggio è T-decidibile è anche T-semidecidibile, ma il viceversa non è vero.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [13] Macchine di Turing Trasduttori Definizione Data una macchina di Turing M = (Σ, b/, K, δ, q 0, q f ) ed una funzione f : Σ Σ, diremo che M calcola la funzione f se e solo se x Σ, f(x), f(x) = y q 0 x x b/ q f y Se x / Σ, oppure f(x), allora o la macchina termina in uno stato non finale o non termina. In generale: per funzioni arbitrarie f : D C ci si può ricondurre a MT operanti su stringhe. Ad esempio per funzioni f : N N si può pensare di usare la codifica unaria per rappresentare i numeri sul nastro per funzioni a più argomenti per esempio f : D 1 D 2 C si può pensare di codificare opportunamente le coppie d 1, d 2 con simboli da usare sul nastro, ad esempio codificare le coppie tramite la funzione di cantor e rappresentarle sul nastro in forma unaria

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [14] Macchine di Turing Multitraccia Definizione Una macchina di Turing multitraccia M ad m tracce è definita come una 6-upla ove la fuzione δ è definita come Σ, b/, K, δ, q 0, q f δ m : (K {q f }) Σ m b/ K Σm b/ {d, s, i} Quindi, una macchina di Turing multitraccia è in grado di scrivere e leggere caratteri vettoriali ma la testina si sposta contemporaneamente su tutte le tracce. Da un punto di vista fisico si può immaginare di avere una macchina composta da un nastro suddiviso in m tracce ed una singola testina. L uso di MT-multitraccia permette di avere maggior potere computazionale?

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [15] Macchine di Turing Multinastro Definizione Una macchina di Turing ad m nastri è definita da una 6-upla Σ, b/, K, δ m, q 0, q f ove Σ, b/, K, q 0, q f sono definiti come nel caso di una machina di Turing a singolo nastro e δ m è la funzione di transizione definita come: δ m : (K {q f }) Σ m b/ K Σm b/ {d, s, i}m cioè la funzione δ m definisce le transizione della MT su ogni nastro. Da un punto di vista fisico si può immaginare di avere una macchina composta da m nastri ed m testine, una per ogni nastro. L uso di MTM permette di avere un maggior potere computazionale?

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [16] Macchine di Turing NON Deterministiche Tutti i modelli di calcolo sinora esaminati sono tutti deterministici, cioè la transizione da un passo della computazione al successivo è sempre univocamente determinata. Ad esempio in una macchina a registri o in un linguaggio di programmazzione tipo mp le azioni da compiere sono univocamente determinate dalla semantica delle istruzioni. Il determinismo è un concetto molto vicino al modo di funzionamento dei calcolatori i quali ad ogni istante determinano lo stato successivo della computazione in base alla semantica della istruzione da eseguire. Si possono definire modelli di calcolo in cui si rilascia l univocità della funzione di transizione della computazione da un stato al successivo. Tali modelli prendono il nome di modelli non deterministici.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [17] Macchine di Turing NON Deterministiche Una macchina di Turing non deterministica è definita da 6-upla: M = (Σ, b/, K, δ, q 0, q f ) ove la funzione di transizione δ è definita nel seguente modo: δ : (K {q f }) Σ b/ P(K Σ b/ {d, s, i}) Proprietà: da ogni configurazione si può transire in una o più configurazione simultaneamente ogni applicazione della funzione di transizione definisce più stati anzicchè uno solo. la configurazione successiva non è univocamente determinata, la computazione non è più rappresentabile da una successione lineare di configurazioni, ma mediante un albero di configurazioni. il grado di non determinismo corrisponde, dato una generica configurazione, al massimo numero di confgurazioni generate dalla funzione δ. Una MT non deterministica si comporta come se ad ogni passo instanziasse nuove MT, ognuna delle quali elabora una delle configurazione ottenute dalla funzione di transizione.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [18] Esempio Sia L = {s {0, 1} s contenga un numero pari di 1}. La MT che riconosce il linguaggio L è la seguente: M = ({0, 1}, b/, {q 0, q 1, q 2 }, δ, q 0, q 2 ) ove la funzione di transizione δ è descritta dalla seguente matrice: δ b/ 0 1 q 0 q 2 b/i q 0 0d q 1 1d q 1 q 1 0d q 0 1d Algoritmo: la macchina scandisce la stringa da sinistra verso destra e transisce dallo stato q 0 allo stato q 1 e viceversa ogni volta che legge un 1, se quando si legge il carattere b/ (primo carattere b/ a destra della stringa) la macchina si trova nello stato q 0 allora si transisce nello stato finale q 2

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [19] Esempio Descrivere una MT che riconosca l insieme di parantesi bilanciate, ovvero stringhe del tipo: { (()), (), ((())) } Sia M = ({(, )}, b/, {q 0, q 1, q 2, q 3 }, δ, q 0, q f ) una MT ove la funzione di transizione δ è descritta dalla matrice: δ ( ) b/ q 0 q 1 b/d q f b/i q 1 q 1 (d q 1 )d q 2 b/s q 2 q 3 b/s q 3 q 3 (s q 3 )s q 0 b/d Algoritmo: La macchina di Turing sopra descritta scandisce la stringa di input da sinistra verso destra Lo stato q 0 cerca la prima parentesi (, appena la trova la cancella e transisce nello stato q 1 lo stato q 1 scandisce tutta la stringa fino a posizionarsi sull ultimo carattere più a destra e quindi transisce nello stato q 2 lo stato q 2 cerca la prima parentesi ), trovatala la cancella e transisce nello stato q 3 lo stato q 3 posizione la testina sul primo carattere più a sinistra e transisce nello stato q 0 a questo punto o la stringa è vuota e si transisce nello stato finale o si ricomincia.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [20] Esempio Descrivere una MT per il riconoscimento delle stringhe palindrome definite sull alfabeto {a, b}. Si consideri la seguente MT M = ({a, b}, b/, {q 0, q a1, q a2, q a3, q b1, q b2, q b3 }, δ, q 0, q f ) La funzione di transizione δ è definita dalla seguente matrice: δ b/ a b q 0 q f b/i q a0 b/d q b0 b/b q a0 q a1 b/s q a0 ad q a0 bd q a1 q a2 b/s q a2 q 0 b/d q a2 as q a2 b/s q b0 q b1 b/s q b0 ad q b0 bd q b1 q b2 b/s q b2 q 0 b/d q b2 as q b2 b/s La MT appena descritta si comporta nel seguente modo: 1. stato q 0 : cancella il primo carattere della stringa 2. stato q x0 : posiziona la testina sull ultimo carattere della stringa di input 3. stato q x1 : cancella il carattere puntato dalla testina La MT nello stato q x1 si aspetta di leggere il carattere x altrimenti si ferma in uno stato non finale e non riconosce la stringa di input come appartenenete al linguaggio.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [21] MT Trasduttori Vediamo adesso alcuni esempi di MT trasduttori, cioè che calcolano funzioni. Supponiamo di rappresentare i numeri in forma unaria, giustapposizione di n volte il carattere o il carattere 1. cioè ogni numero n è rappresentato dalla Esempio: rappresenta il numero naturale 1 rappresenta il numero naturale 4 n =... rappresenta il numero n

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [22] Esempio di MT Trasduttori Descrivere una MT che calcola la funzione n + m. Supponiamo che la testina sia posizionata sul primo carattere a sinistra della stringa di input. M = ({, +}, b/, {q 0, q 1, q 2 }, δ, q 0, q f ) La funzione di transizione δ è descritta dalla seguente matrice: δ + b/ q 0 q 0 d q 1 d q 1 q 1 d q 2 b/s q 2 q f b/i 1. scandisce la stringa da sinistra verso destra 2. sostituisce l occorrenza del carattere + con il carattere 3. cancella l ultimo carattere della stringa

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [23] Esempio di MT Trasduttori Descrivere una MT per il calcolo del predecessore. M = ({1}, b/, {q 0 }, δ, q 0, q f ) La funzione di transizione δ è rappresentata dalla seguente matrice: δ b/ 1 q 0 q f b/i possiamo descrivere una seconda MT che scandisce la stringa e cancella l ultimo carattere a destra δ b/ 1 q 0 q 1 b/d q 1 q 2 b/s q 1 1d q 2 q f b/i

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [24] Esempio di MT Trasduttori Descrivere una MT per il calcolo della funzione f(x) = 2x. Supponiamo che la testina sia posizionata sul primo carattere a sinistra della stringa di input diverso da b/. M = ({1}, b/, {q 0, q 1, q 2, q 3, q 4, q 5, q 6 }, δ, q 0, q f ) La funzione di transizione δ è definita dalla seguente matrice: δ b/ 1 q 0 q 0 b/d q 2 b/d q 1 q 0 b/d q 1 1s q 2 q 3 b/d q 2 1d q 3 q 4 1d q 3 1d q 4 q 5 1s q 5 q 6 b/s q 5 1s q 6 q f b/i q 1 1s

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [25] Un esempio di computazione è il seguente: 11 b/1b/ b/1b/1 b/1b/11 b/b/b/111 b/b/b/1111

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [26] Macchine di Turing Multi-traccia Una macchina di Turing multi-traccia consiste di un nastro suddiviso in tracce disposte in modo tale che la testina, con una singola operazione può accedere a tutte le celle di tutte le tracce in corrispondenza della testina. Possiamo considerare la macchina multi-traccia come una macchina che anzichè operare su simboli scalari opera su simboli vettoriali. Data una macchine di turing M m = (Σ, b/, K, δ m, q 0, q f ) multitraccia con m tracce si ha che: l alfabeto Σ = Σ 1... Σ m, ove ogni Σ i rappresenta l alfabeto di simboli della traccia i. Quindi un generico elemento (carattere) σ Σ sarà del tipo: σ = (σ 1,..., σ m ), 1 i m σ i Σ i. In particolare il simbolo (b/,..., b/) {z } m rappresenta il simbolo di blank dell alfabeto Σ b/. Poichè ogni elemento di Σ i può essere combinato con gli altri elementi di Σ j, per ogni j i, il numero di caratteri σ = (σ 1,..., σ m ) diversi che potranno comparire sul nastro saranno: Σ = Q m i=1 Σ i. la funzione di transizione δ m sarà una funzione del tipo: δ m : (K {q f }) Σ b/ K Σ b/ {d, s, i}, δ m (q i, σ) = (q j, σ ), σ, σ Σ b/

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [27] Equivalenza MT-multi-traccia e MT-singola-traccia La testina della macchina di Turing multi-traccia punta al carattere σ = 2 6 4 b 1. ( 3 7 5

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [28] Equivalenza MT-multi-traccia e MT-singola-traccia Teorema Una Macchine di Turing singolo nastro multi-traccia M m con m tracce può essere simulata da una macchina di Turing singolo nastro mono-traccia M. Dimostrazione Sia M m = (Σ, b/, K, δ m, q 0, q f ) la macchina di Turing multitraccia, ove Σ = Σ 1... Σ m. Si definisca una MT singola traccia M = (Λ, b/, K, δ, q 0, q f ) tale che: Λ = Σ 1... Σ m cioè, la cardinalità dell alfabeto Λ è pari al prodotto delle cardinalità degli alfabeti delle singole tracce. Si definisca inoltre, una funzione iniettiva ϕ : Σ Λ che associ ad ogni simbolo di Σ un simbolo di Λ (poichè Λ Σ è possibile definire una tale funzione). La funzione di transizione δ sarà definita in modo tale che in corrispondenza di una transizione δ m (q i, σ) = (q j, σ, v) della macchina M m, la macchina M esegua la transizione: δ(q i, λ) = (q j, λ, v), λ = ϕ(σ), λ = ϕ(σ ) L alfabeto su cui opera la macchina singola traccia M è un alfabeto in cui ogni simbolo rappresenta la codifica di un vettore di simboli dell alfabeto della macchina multi-traccia M m.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [29] Macchine di Turing Multi-nastro Definizione Una macchina di Turing M (m) ad m nastri è definita da una 6-upla M (m) = (Σ, b/, K, δ (m), q 0, q f ) ove Σ, b/, K, q 0, q f sono definiti come nel caso di una machina di Turing a singolo nastro e δ (m) è la funzione di transizione definita come: δ m : (K {q f }) Σ m b/ K Σm b/ {d, s, i}m cioè la funzione δ (m) definisce le transizione della MT su ogni nastro. Da un punto di vista fisico si può immaginare di avere una macchina composta da m nastri ed m testine, una per ogni nastro. La MT in base allo stato interno ed ai caratteri letti dalle testine decide in quale stato interno transire, quali caratteri scrivere sul nastro e come spostare le testine. Una machina di Turing multi-nastro può essere simulata da una macchina di Turing singolo-nastro multitraccia.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [30] Equivalenza MT-Multinastro e MT-singolo-nastro Figure 1: Macchina di Turing singolo nastro multitraccia che simula una Macchina di Turing multinastro

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [31] Equivalenza MT-Multinastro e MT-singolo-nastro Figure 2: Struttura del nastro di una MT-multitraccia che simula MT-multinastro (Z 0 = b/)

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [32] Equivalenza MT-Multinastro e MT-singolo-nastro Figure 3: Nastro iniziale di una MT-multitraccia che simula MT-multinastro (Z 0 = b/)

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [33] Equivalenza MT-Multinastro e MT-singolo-nastro Teorema Sia data una macchina di Turing M (k) con k nastri, allora esiste una macchina di Turing M a singolo nastro che la simula. Dimostrazione Sia M (k) la MT multi nastro così definita M (k) = (Σ, b/, K, q 0, F, δ) ove supponiamo per ogni nastro i, 1 i k che l alfabeto usato sia Σ i. Costruiamo una MT singolo nastro, avente 2k tracce, definita nel seguente modo: M = (Σ, b/, K, q 0, F, δ ) ove l alfabeto Σ è definito come: Σ = {b/, } Σ 1... {b/, } Σ k cioè, è composto di k coppie di simboli (λ i, σ i ) di cui λ i {b/, } e σ i Σ i per ogni 1 i k. Il nastro di M risulta allora composto nel seguente modo: i, 1 i k, la traccia pari di indice 2i contiene la stringa presente sul nastro di indice i i, 1 i k, la traccia dispari di indice 2i 1 contiene una stringa composta del solo simbolo rappresentante la posizione della testina del nastro di indice i

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [34] All inizio della computazione supponiamo che il nastro di M sia configurato nel seguente modo: la traccia 1 contiene una stringa con il solo simbolo in corrispondenza del primo carattere a sinistra della traccia 2 la traccia 2 contiene la stringa di input della macchina M (k) i, 2 i k le tracce pari di indice 2i contengono solamente il simbolo b/ i, 2 i k le tracce dispari di indice 2i 1 contengono solamente il simbolo in corrispondenza del simbolo più a sinistra della traccia 2, cioè quella contenente la stringa di input della macchina multi-traccia M (k) Per simulare la funzione di transizione di δ (k) della MT multi-nastro M, la funzione di transizione δ deve riscrivere 2k simboli, uno per traccia. Quindi, in particolare, per simulare una transizione del tipo: deve eseguire i seguenti passi: δ (k) (q i, a i1,..., a ik ) = (q j, a j1,..., a jk, d 1,..., d k ) 1. rintracciare le posizione dei k simboli rappresentanti le posizione delle k testine della macchina M (k) nello stato q i 2. riscrivere i k simboli puntati dalle testine dei k nastri 3. posizionare i k simboli nella posizione delle testine della macchine M (k) nello stato q j 4. transire di stato

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [35] Quindi ad ogni passo di M (k), la macchina M deve eseguire un numero di passi proporzionale alla distanza, in termini di numero di celle, tra i due simboli più lontani. Ad ogni passo i simboli possono al più allontanarsi di 2 celle, quindi dopo t passi, nel caso pessimo, si saranno allontanati di 2t celle. Quindi se la macchina multi-nastro M (k) singolo-nastro M per simularla sarà: compie t passi, il numero di passi eseguiti dalla macchina Σ t i=1 2i = 2Σt i=1 i = 2t(t+1) 2 = t 2 + t = O(t 2 ) Per quanto riguarda la dimensione dell alfabeto Σ, osserviamo che quella dell alfabeto dei nastri dispari è 2, mentre quella dei nastri pari, per ogni nastro i è Σ i. Quindi, la dimensione dell alfabeto Σ usato da M sarà pari al prodotto di tutte le cardinalità degli alfabeti dei singoli nastri: Q k i=1 2 Σ i = O((max Σ i ) k ) Quindi una MT multinastro può essere simulata da una MT singolo-nastro multi-traccia in un tempo quadratico usando un alfabeto di cardinalità esponenziale nel numero dei nastri.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [36] Macchine di Turing NON Deterministiche Una macchina di Turing non deterministica è definita da 6-upla: M = (Σ, b/, K, δ, q 0, q f ) ove la funzione di transizione δ è definita nel seguente modo: δ : (K {q f }) Σ b/ P(K Σ b/ {d, s, i}) cioè da ogni configurazione si può transire in una o più configurazione simultaneamente. La configurazione successiva non è univocamente determinata e la computazione non è più una successione di configurazioni ma secondo un albero di configurazioni. Il grado di non determinismo corrisponde, dato una generica configurazione, al massimo numero di confgurazioni generate dalla funzione δ. Una MT non deterministica si comporta come se ad ogni passo instanziasse nuove MT, ognuna delle quali elabora una delle configurazione diverse prodotte dalla funzione di transizione δ.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [37] Macchine di Turing NON Deterministiche Esempio: Definire una macchina di Turing non deterministica che riconosca le stringhe del tipo xaa con x {a,b}. Sia M la macchina di Turing non-deterministica definita nel seguente modo: M = ({a, b}, b/, {q 0, q 1 }, δ, q 0, q f ) ove la funzione δ è definita dalla seguente matrice: δ a b b/ q 0 (q 0, a, d), (q 1, a, d) (q 0, b, d) q 1 (q 2, a, d) q 2 (q f, b/, i) Esercizio: scrivere la computazione sulla stringa abbabaa.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [38] Macchine di Turing NON Deterministiche Definizione Dato un alfabeto Σ, una stringa x Σ computazione accettante di M. è accettata dalla macchina M se esiste una Definizione Dato un alfabeto Σ, una stringa x Σ è rifiutata dalla macchina M se tutte le computazione di M sono rifiutanti. Osservazioni: Si osservi che i due concetti sono molto asimettrici tra di loro: il primo, richiede che esista almeno una computazione accettante, quindi, se abbiamo a disposizione una soluzione è facile certificarla come tale. viceversa, una stringa è rifiutata se tutte le possibili computazioni sono rifiutanti e questo può essere molto più difficile da verificare.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [39] Equivalenza MTND e MT deterministiche Teorema Per ogni MTND M esiste una MT deterministica M (3) deterministica a 3 nastri equivalente. Dimostrazione La simulazione della macchine di Turing non deterministica M tramite una deterministica M (3) si ottiene visitando l albero delle computazione di M utilizzando l algoritmo di visita breadth first. NB: la visita non può essere fatta in modo depth first poichè visitando un ramo corrispondente ad una computazione infinita, l algoritmo di visita non terminerebbe. Ad ogni passo di computazione di M si possono generare al massimo d scelte, ove d è il grado di non determinismo della macchina M. Supponiamo di numerare con numeri compresi tra 1 e d le scelte derivanti dalla funzione di transizione di M. In tal modo ogni computazione potrà essere identificata come una sequenza di numeri compresi tra 1 e d, ognuno dei quali identifica una delle possibili d scelte generate dalla funzione di transizione di M. Non tutte le combinazioni saranno valide poichè non è detto che ad ogni passo la funzione di transizione generi esattamente d scelte. Dopo i passi di computazione della macchina M, quindi esistono al più d i stringhe di lunghezza i che rappresentano particolari computazioni di M.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [40] Si supponga quindi di organizzare la macchina M (3) nel seguente modo: il primo nastro contiene la stringa di input il secondo nastro contiene, per ogni passo di computazione i di M, stringhe di lunghezza i, corrispondenti a sequenze di numeri compresi tra 1 e d. Fissato i il numero di stringhe sarà al più d i. il terzo nastro eseguirà la simulazione vera e propria La simulazione avviene secondo il seguente algoritmo: 1. i 1 passo di computazione di M, si generano sul nastro 2 tutte le stringhe di lunghezza i, corrispondenti a possibili sequenze di scelte per computazioni di lunghezza i. La generazione delle stringhe avviene una alla volta. 2. per ogni sequenza di lunghezza i: (a) si copia il contenuto del nastro 1 sul nastro 3 (b) si scandisce il nastro 2, e per ogni j, indice di una possibile scelta, si applica la j-esima scelta di δ al nastro 3 Se esiste un cammino di lunghezza l che porta la macchina M in uno stato finale, allora esiste sicuramente una fase di calcolo di M (3) che percorre tale cammino. Se viceversa tale cammino non esiste allora anche M (3) non raggiungerà mai lo stato finale.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [41] Ad ogni passo j della computazione di M, la MT M (3) compie un numero di passi pari alla lunghezza del cammino (j) per il numero dei cammini (d j ), ovvero: j d j Se la macchina M termina in k 0 passi, allora la macchina M (3) esegue al più un numero di passi pari a: Σ k j=1 j dj O(kd k ) Quindi una MTND può essere simulata da una MT deterministica multi-nastro in un tempo esponenziale nel numero dei passi della macchine non deterministica.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [42] Riduzione delle Macchine di Turing Le macchine di Turing possono essere ulteriolmente semplificate senza perdere potere computazionale. Infatti, valgono i seguenti teoremi. Teorema Data una MT M = (Σ, b/, K, q 0, q f, δ) esiste una MT M con nastro semi-infinito equivalente ad M. Dimostrazione Costruiamo una macchina M macchina M sulla prima e terza traccia. a 3 tracce piegando, idealmente, in due il nastro della Sulla seconda traccia invece i simboli e indicheranno la posizione della testina della macchina M, e in particolare se si trova nella parte semi-infinita destra o sulla parte semi-infinita sinistra. Teorema Data una MT M = (Σ, b/, K, q 0, q f, δ) esiste una una MT M = (Σ, b/, K, q 0, q f, δ ) equivalente ad M tale che Σ = 1. Dimostrazione Intuitivamente, possiamo codificare qualunque carattere, e rappresentare la codifica in forma unaria. Quindi possiamo costruire una macchina di Turing M che simula la macchina M ed avente Σ = 1.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [43] Macchina di Turing Universale È possibile descrivere una MT con una stringa di caratteri e fornire tale descrizione come input ad un altra macchina di Turing. Ad esempio è possibile descrivere la funzione di transizione di una MT mediante sequenza di quintuple del tipo: q i σ i q j σ j d j corrispondenti alla transizione δ(q i, σ i ) = (q j, σ j, d j ). Quindi una MT può essere descritta mediante sequenze di quintuple del tipo: #q i?σ i?q j?σ j?d j # ove, i caratteri # e? fanno da separatori. La descrizione di una MT può quindi essere passata come input sul nastro di un altra macchina di Turing, la Macchina di Turing Universale, che ne simula il comportamento.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [44] Macchina di Turing Elementari Un altro modo classico di descrivere le MT mediante una stringa è quello di usare la proprietà che ogni MT può essere realizzata tramite composizione di MT-elementari. Ovvero, date due macchine di Turing M e M, la composizione di MM é una macchina di Turing in cui lo stato iniziale è quello della macchina M, lo stato finale è quello della macchina M, e lo stato finale della macchine M coincide con quello iniziale della macchina M. Definizione Si definiscono MT-elementari le seguenti macchine definite sull alfabeto Σ = {1}: NB: la macchine M 0 è stata introdotta solo per associarla agli stati finali di una MT

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [45] Esempio Esempio: Definire tramite composizione di macchine elementari una MT W che copia una stringa s {1}, ovvero che realizza la computazione q 0 b/xb/ b/xq F b/x, x {1} La descrizione di una MT tramite macchine elementari e salti condizionati è detta sequenza linearizzata delle MT. NB: la condizione dell arco deve essere valutata dopo aver eseguito la macchina elementare sorgente dell arco. Esercizio: definire tramite composizione di macchine elementari una MT per il calcolo della somma di due numeri in forma unaria.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [46] Macchina di Turing Elementari Le macchine di Turing elementari permettono di ottenere il seguente risultato: Teorema Ogni MT è rappresentabile come sequenza linearizzata di MT-elementari. (senza dimostrazione) Sia, inoltre, δ la MT definita in modo tale che qualunque sia il carattere letto, 1 o b/, lo inverte e sposta a destra la testina. Allora è possibile dimostrare il seguente teorema: Teorema Le MT-elementari possono essere descritte tramite composizione delle macchine δ, s, M 0, cioè usando solo 3 tipi di MT e salti condizionati sul carattere 1. Figure 4: Macchine elementare δ e linearizzazione delle macchine destra e blank Esercizio: definire in modo analogo la macchina.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [47] Descrizione linearizzata di Macchine di Turing Se ogni macchina di Turing è descrivibile mediante composizione di 3 macchine elementari, possiamo codificare le 3 macchine elementari, e rappresentare una sequenza linearizzata con una parola c M sull alfabeto {1, b/}. Innanzitutto, possiamo osservare che la macchina elementare M 0 descrizione di una MT facendo le seguenti ipotesi: può essere sempre eliminata dalla se compare nel mezzzo di una descrizione, poichè non esegue alcuna operazione per definizione, può essere eliminata si assume per convenzione che sia sempre presente alla fine di una descrizione Possiamo quindi rappresentare una sequenza linearizzata di macchine δ, s con salti condizionati a 1 tramite un codice c M nel seguente modo: la MT elementare s è codificata tramite il carattere 1 la MT elementare δ è codificata tramite il carattere 11 un salto condizionato sul simbolo 1, all istruzione n è codificata con la sequenza di 1 n+3 i codici delle istruzioni sono separati dal carattere b/ la sequenza 111 definisce la fine della sequenza di istruzioni (HALT)

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [48] Macchina di Turing Universale Sapendo descrivere le MT tramite stringhe di caratteri rappresentanti MT-elementari possiamo enunciare il seguente teorema: Teorema Una MT U = (Σ, b/, K, δ, q 0, q f ) si dice Macchina di Turing Universale se essa calcola una funzione u : Σ n+1 Σ tale che, data una qualunque codifica c M di una MT M = (Σ, b/, K, δ, q 0, q f ) che calcola la funzione m : (Σ n Σ ), u(c M, x 1,..., x m ) = m(x 1,..., x n ) Una MT-universale è quindi in grado di simulare il calcolo di ogni altra MT. La dimostrazione del teorema può essere fatta osservando che: possiamo restringerci, senza perdere di generalità, a MT M aventi alfabeto Σ = {1} (Σ b/ = {1, b/}) ogni M T può essere descritta tramite composizione di 2 sole MT-elementari normalizzate con salti a 1 che possono essere opportunamente codificate usando l alfabeto Σ = {1, b/} i valori di input possono essere rappresentati in forma unaria La macchina U può quindi leggere la codifica della macchina M e simularne il comportamento sull input x 1,..., x n.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [49] Halting Problem Teorema Data una MT M = (Σ, b/, K, q 0, q f, δ), sia c M {1, b/} la sua codifica. La funzione h(c M, x) = j 1 se M termina su input x 0 se M NON termina su input x non è T-calcolabile. Dimostrazione Supponiamo per assurdo che la MT H che calcola la funzione h sia T-calcolabile. Possiamo allora costruire una MT H che calcola la funzione h definita nel seguente modo: h (c M ) = j 1 se M termina su input x = cm 0 se M NON termina su input x = c M H è quindi la macchina che verifica se una MT termina quando le viene fornito in input il suo codice. Se H esiste, possiamo quindi costruire una ulteriore macchina H che prende in input c M e calcola la funzione j h 0 se h (c (c M ) = M ) = 0 undef altrimenti H termina con con 0 se H si ferma con 0, e cicla indefinitivamente se H si ferma con 1.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [50] Calcoliamo allora h (c H ), cioè il valore di H quando le viene fornito come input il suo stesso codice: h (c H ) = j 0 se h (c H ) = 0 undef se h (c H ) = 1 quindi, ricordando che: h (c M ) = j 1 se M termina su input cm 0 se M NON termina su input c M si deduce che: h (c H ) = 0 h (c H ) = 0 H h (c H ) = undef h (c H ) = undef h (c H ) = 1 H h (c H ) = 0 Poichè, in ogni caso abbiamo una contraddizione concludiamo che l ipotesi per cui la funzione h sia T-calcolabile è falsa. Quindi, la MT H non è calcolabile.

Laurea Specialistica in Informatica - Università di Ferrara 2008-2009 [51] Halting Problem Il problema della terminazione ha come implicazione il fatto che NON è possibile costruire un perfetto sistema di debugging che sia in grado di determinare se un programma termini o meno sull input dato Si osserva che il problema della fermata pur non essendo decidibile è semi-decidibile, cioè il predicato h(c M, x) = j 1 undef se M termina su input x se M NON termina su input x è T-calcolabile. Infatti basta eseguire la computazione.