Varianti Macchine di Turing



Documenti analoghi
Esercizio su MT. Svolgimento

Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili

Le Macchine di Turing

Appunti sulla Macchina di Turing. Macchina di Turing

Tipologie di macchine di Turing

Capitolo 7: Teoria generale della calcolabilitá

Le macchine di Turing

La macchina universale

Le parole dell informatica: modello di calcolo, complessità e trattabilità

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

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

L interesse nella macchina di Turing

4 3 4 = 4 x x x 10 0 aaa

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

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

Algoritmi e strutture dati. Codici di Huffman

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

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

I sistemi di numerazione

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

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

La Macchina RAM Shepherdson e Sturgis (1963)

Fasi di creazione di un programma

Utilizzo delle formule in Excel

Equilibrio bayesiano perfetto. Giochi di segnalazione

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Elementi di Informatica e Programmazione

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Entropia. Motivazione. ? Quant è l informazione portata dalla sequenza? Abbiamo una sequenza S di N simboli (campioni audio, pixel, caratteri,...

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

1 Carattere 1 2 Carattere 2 4 Carattere 4 X Carattere diverso da 1, 2, 4. Porta chiusa Porta aperta

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

RISOLUTORE AUTOMATICO PER SUDOKU

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Informazione analogica e digitale

Dispense di Informatica per l ITG Valadier

Esercizi su. Funzioni

Testi di Esercizi e Quesiti 1

Corso di Sistemi di Gestione di Basi di Dati. Esercitazione sul controllo di concorrenza 12/02/2004

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

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

Calcolare il massimo di una lista

Uso di base delle funzioni in Microsoft Excel

Il principio di induzione e i numeri naturali.

E naturale chiedersi alcune cose sulla media campionaria x n

Convertitori numerici in Excel

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

B+Trees. Introduzione

1 Giochi a due, con informazione perfetta e somma zero

Funzioni in C. Violetta Lonati

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

Cos è un Calcolatore?

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

Algoritmi e Complessità

1. PRIME PROPRIETÀ 2

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Algoritmi e diagrammi di flusso

LA MOLTIPLICAZIONE IN CLASSE SECONDA

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Linguaggi formali e compilazione

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Strutturazione logica dei dati: i file

LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL

- Sistemi di numerazione 1 - Sistemi di Numerazione

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma

Cosa dobbiamo già conoscere?

2. Simulazione discreta: approcci alla simulazione

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

Gestione della memoria centrale

Rappresentazione delle informazioni

Plate Locator Riconoscimento Automatico di Targhe

Corso di Informatica

Corso di Laurea in Scienze e Tecnologie Biomolecolari. NOME COGNOME N. Matr.

Computational Game Theory

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

L influenza della corrente sulla barca si manifesta in due effetti principali: uno sul vento e uno sulla rotta percorsa.

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

MANUALE EDICOLA 04.05

1. Le macro in Access 2000/2003

I SISTEMI DI NUMERAZIONE

Esempi di algoritmi. Lezione III

Intelligenza Artificiale

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

CONCETTO DI LIMITE DI UNA FUNZIONE REALE

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

FISICA. Le forze. Le forze. il testo: 2011/2012 La Semplificazione dei Testi Scolastici per gli Alunni Stranieri IPSIA A.

Codifica: dal diagramma a blocchi al linguaggio C++

Transcript:

Varianti Macchine di Turing Esistono definizioni alternative di macchina di Turing. Chiamate Varianti. Tra queste vedremo: MdT a più nastri e MdT non deterministiche. Mostriamo: tutte le varianti ragionevoli hanno la stessa capacità computazionale

IIntroduzione e Motivazioni Quando proviamo che un MdT ha una certa proprietà non ci poniamo domande del tipo: Quanto è grande la MdT? Quanto è complesso programmarla? Per il momento ci interessano solo proprietà esistenziali.

Un esempio Stayer: MdT in cui la testina può rimanere sulla stessa cella del nastro durante una transizione Funzione di transizione: δ : Q Γ Q Γ {L,S,R} dove S serve ad indicare che la testina rimane ferma

Potere computazionale Diciamo che il potere computazionale di due modelli è lo stesso se riconoscono la stessa classe di linguaggi MdT può essere facilmente simulata da stayer (basta non usare la possibilità di stare) Il potere computazionale di stayer è almeno pari al potere computazionale di MdT convenzionale

Potere computazionale Rimane da provare: il potere computazionale di MdT è almeno pari al potere computazionale di Stayer per ogni stayer esiste MdT che riconosce stesso linguaggio Assumiamo M è stayer e mostriamo MdT M che simula M

Simulazione M definita come M tranne che ogni transizione S è sostituita da due transizioni in M : 1. la prima porta M in uno stato speciale (addizionale) e muove testina a destra (R) 2. la seconda ritorna allo stato originale muovendo la testina a sinistra (L). Quindi M e M riconoscono lo stesso linguaggio

Simulazione in generale In generale: Quando vogliamo provare che due varianti hanno lo stesso potere computazionale mostriamo che possiamo simulare una con l altra

Implementazione della Memoria In alcune occasioni avremo bisogno di memorizzare l informazione letta sul nastro Possiamo usare gli stati per memorizzare informazione Es. Supponiamo MdT M deve leggere i primi 2 bit del nastro e scriverli alla fine dell input (al posto dei 2 piú a sinistra)

Implementazione della Memoria Idea: Costruiamo una MdT M 00 che legge i primi 2 bit, cerca la fine dell input e scrive 00 alla fine dell input Replichiamo per tutte le possibili coppie: M 01, M 10, M 11 M: dopo aver letto i primi 2 bit input, si sposta sulla replica corrispondente ai 2 bit letti (e quindi li scrive alla fine dell input).

Implementazione della Memoria Nota: questa è una tecnica utilizzabile in generale Se vogliamo che M memorizzi una sequenza di k simboli possiamo avere una replica per ogni possibile sequenza di k simboli M si sposta sulla replica che corrisponde alla sequenza mentre la legge Necessari circa Σ k stati aggiuntivi

Macchina di Turing multi nastro Una MdT a k nastri è una normale macchina di Turing avente k nastri Inizialmente l input compare sul primo nastro e gli altri sono vuoti La funzione di transizione δ : Q Γ k Q Γ k {L,S,R} k muove (in modo indipendente) le testine dei vari nastri

Macchina di Turing multi nastro Simile a MdT: usa k nastri con k 1 Ciascun nastro con propria testina Istruzione specifica (oltre nuovo stato) k simboli letti k simboli da scrivere k movimenti delle k testine Configurazione iniziale: input su primo nastro, rimanenti nastri vuoti

Es.: MdT multi-nastro

Macchina di Turing multi-nastro Espressione δ(q i,a 1,...,a k ) = (q j,b 1,...,b k,d 1,...,D k ) indica che se la MdT a k nastri M si trova nello stato q i la testina i legge a i, per i = 1...,k allora M va nello stato q j la testina i scrive b i e si muove nella direzione D i {L,S,R}, per i = 1...,k

Esempio: MdT a 2 nastri per 0 n 1 n 1. Scorre primo nastro verso destra fino a primo 1: per ogni 0, scrive un 1 sul secondo nastro 2. Scorre primo nastro verso destra e secondo nastro verso sinistra: se simboli letti non uguali, termina in stato non finale 3. Se legge su entrambi i nastri, termina in stato finale stato simboli stato simboli movimenti q0 (0, ) q0 (, 1) (R, R) q0 (1, ) q1 (1, ) (S, L) q1 (1, 1) q1 (, ) (R, L) q1 (, ) q2 (, ) (S, S)

MdT e MdT multi-nastro MdT multinastro sembrerebbero più potenti delle MdT ordinarie In realtà possiamo mostrare che le due varianti sono equivalenti Teorema MdT e MdT multi-nastro sono modelli equivalenti In un verso: ovvio (MdT è anche MdT multi-nastro)

Da MdT multi nastro a MdT Immaginiamo i k nastri affiancati, ognuno con indicata la posizione della testina Dobbiamo codificare questa informazione su un solo nastro

Da MdT multi-nastro a MdT Concatenare contenuto dei k nastri, su k blocchi consecutivi separati da # ogni blocco ha lunghezza variabile che dipende dal contenuto del nastro corrispondente un elemento marcato nel blocco i-mo indica la posizione della testina i-ma es. testina S punta ad elemento del primo blocco e legge γ: la testina del primo nastro è in questa posizione e legge γ; Alfabeto esteso Γ2, t.c. ȧ Γ 2 per ogni a Γ

Da MdT multi-nastro a MdT Configurazione iniziale di M : #ȧ 1...a n # #... #,

Da MdT multi-nastro a MdT Per ogni istruzione di MdT multi-nastro M, la MdT S Scorre i k nastri e raccoglie informazioni sui k simboli letti Applica transizione, scorrendo i k nastri e applicando su ciascuno scrittura e spostamento

Es.

Es.

Es.

Da MdT multi-nastro a MdT Per ogni mossa del tipo δ(q,a 1,...,a k ) = (s,b 1,...,b k,d 1,...,D k ) S scorre il nastro verso destra, fino al primo memorizzando nello stato i simboli marcati sui singoli nastri; Memorizzazione: stato aggiuntivo per ogni possibile sequenza di k simboli di Γ la testina si riposiziona all inizio del nastro, poi il nastro viene scorso di nuovo eseguendo su ogni sezione (cioé un nastro di M) le azioni che simulano quelle delle testine di M: scrittura e spostamento.

Da MdT multi-nastro a MdT Durante il secondo passaggio S scrive su tutti i simboli marcati e sposta il marcatore alla nuova posizione della testina corrispondente di M

Da MdT multi-nastro a MdT Nota. Se una testina di M muove su più a sinistra del suo nastro allora la testina virtuale (puntino) sul segmento corrispondente del nastro di S si sposta sul delimitatore # In questo caso, S deve spostare di una posizione tutto il suffisso del nastro a partire da # fino all ultimo # a destra. Dopo, S scrive nella prima posizione soggetta a shift (dove c era #).

Da MdT multi-nastro a MdT Per ogni istruzione di MdT multi-nastro M, la MdT S 1. Scorre i k nastri e raccoglie informazioni sui k simboli letti 2. Applica transizione, scorrendo i k nastri e applicando su ciascuno scrittura e spostamento 3. Infine la MdT entra nello stato che ricorda il nuovo stato di S e riposiziona la testina all inizio del nastro. Molti più stati e mosse, ma S simula M!

Macchina di Turing non deterministica Una MdT non deterministica (NMdT ) è una macchina di Turing avente funzione di transizione δ : Q Γ P(Q Γ {L,R}) invece di δ : Q Γ Q Γ {L,R} Analogamente alla differenza tra DFA e NFA

Macchina di Turing non deterministica Computazione di una NMdT: ben descritta da albero contenente ogni configurazione raggiungibile dalla iniziale (c 0 ) su dato input: Se un cammino (da c 0 ) raggiunge lo stato accetta allora la NMdT accetta unput, anche se altri cammini raggiungono uno stato reject

MdT e NMdT NMdT sembrerebbero più potenti delle MdT ordinarie In realtà possiamo mostrare che le due varianti sono equivalenti Teorema MdT e NMdT sono modelli equivalenti In un verso: ovvio MdT è anche NMdT

da NMdT a MdT Guardiamo alla computazione di una NMdT N come ad delle configurazioni raggiungibili da quella iniziale c 0 su input w Mostriamo che esiste MdT M che simula N

da NMdT a MdT Idea: per ogni input w, M deve eseguire tutte le possibili computazioni di N su w e accettare sse almeno una raggiunge stato accetta

da NMdT a MdT Alcune delle computazioni di N possono essere infinite alcuni cammini sono infiniti Se M esegue la simulazione e segue un cammino infinito, va in loop (anche se su altro cammino raggiungerebbe lo stato accetta)

da NMdT a MdT Alcune delle computazioni di N possono essere infinite alcuni cammini sono infiniti Se M esegue la simulazione e segue un cammino infinito, va in loop (anche se su altro cammino raggiungerebbe lo stato accetta) Idea: eseguiamo tutte le simulazioni contemporaneamente! Usando una BFS dell albero delle computazioni

da NMdT a MdT 1. Esegui il primo passo di ogni computazione. Se almeno una accetta allora accetta. 2. Esegui il secondo passo di ogni computazione. Se almeno una accetta allora accetta.... i. Esegui il passo i-mo di ogni computazione. Se almeno una accetta allora accetta....

da NMdT a MdT Simulazione fatta mediante MdT D a 3 nastri. Inizialmente: Nastro 1 contiene input di N, Nastri 2 e 3 vuoti

da NMdT a MdT La simulazione di N procede come segue: 1. Copia input sul nastro 2 2. Esegui un prefisso di questa computazione, usando il contenuto del nastro 3 Se si raggiunge configurazione accetta, allora accetta input 3. Aggiorna il contenuto del nastro 3 per ottenere la successiva computazione 4. Vai al passo 1.

da NMdT a MdT : Come è mantenuta la linea di computazione? N non deterministica più possibili transizioni da stessa config. Per ogni configurazione di N, MdT D codifica tutte le possibili transizioni e le enumera Sia COMP i = prefisso lungo i di una computazione di N Codifichiamo COMP i con stringa b 1...b i di i digit b-ari: b = max numero transizioni possibili da qualsiasi config. D parte con la configurazione iniziale b 1 = numero della transizione al primo passo di COMP i. Per 2 j i, bj è il numero della transazione attuale al passo j mo di COMP i

da NMdT a MdT Es. La stringa 421 codifica un prefisso di lunghezza 3 in cui al primo passo N esegue la quarta transizione nella lista delle transizioni possibili (da configurazione iniziale) al secondo passo N esegue la seconda transizione nella lista delle transizioni possibili (da config. raggiunta a passo 1) al terzo passo N esegue la prima transizione nella lista delle transizioni possibili (da conf. passo 2) Nota: alcune configurazioni possono ammettere meno di b scelte, quindi non tutte le sequenze b-arie rappresentano un prefisso di computazione.

da NMdT a MdT 321?, 312?, 222?

da NMdT a MdT Riassumendo, la simulazione di N con D risulta: 1. Scrivi 1 sul nastro 3 2. Copia input sul nastro 2

da NMdT a MdT Riassumendo, la simulazione di N con D risulta: 1. Scrivi 1 sul nastro 3 2. Copia input sul nastro 2 3. Se il prefisso del numero b-rio é la codifica di un prefisso di una computazione di N, allora eseguilo; se la computazione accetta, allora accetta, altrimenti

da NMdT a MdT Riassumendo, la simulazione di N con D risulta: 1. Scrivi 1 sul nastro 3 2. Copia input sul nastro 2 3. Se il prefisso del numero b-rio é la codifica di un prefisso di una computazione di N, allora eseguilo; se la computazione accetta, allora accetta, altrimenti 4. incrementa di 1 il numero b-rio sul nastro 3 5. Vai al passo 2.

da NMdT a MdT

da NMdT a MdT

Dettagli costruttivi? Le costruzioni sono state delineate, non abbiamo dato dettagli per conversione da MdT a k nastri a MdT (a 1 nastro) conversione da NMdT a MdT Perché non dare maggiori dettagli?

Dettagli costruttivi? Capire cosa fa una MdT data risulta difficile, specialmete se grande Convincersi che una data MdT riconosce un linguaggio é difficile solo guardando la macchina Se sappiamo che una MdT puó essere costruita, non è necessario costruirla in dettaglio Diamo meno dettagli, ma diciamo come dovrebbe funzionare!

Dettagli costruttivi? Capire cosa fa una MdT data risulta difficile, specialmete se grande Convincersi che una data MdT riconosce un linguaggio é difficile solo guardando la macchina Se sappiamo che una MdT puó essere costruita, non è necessario costruirla in dettaglio Diamo meno dettagli, ma diciamo come dovrebbe funzionare! Tranne che per divertimento!

Esempi

Nozione di Computabilità Abbiamo visto alcune variazioni di M e mostrato equivalentenza Esistono varie altre variazioni tutte equivalenti Anche altri modelli computazionali sono stati mostrati equivalenti a MdT

Tesi di Church Turing Formalizzazioni di nozione di computabilità: Alonzo Church (matematico americano) creò un metodo per definire le funzioni computabili, λ calcolo Alan Turing creò la Macchina di Turing Church, Kleene e Rosser diedero la definizione formale di una classe di funzioni il cui valore può essere ottenuto mediante ricorsione. Si è dimostrtato che sono equivalenti

Tesi di Church Turing Formalizzazioni di nozione di computabilità: Alonzo Church (matematico americano) creò un metodo per definire le funzioni computabili, λ calcolo Alan Turing creò la Macchina di Turing Church, Kleene e Rosser diedero la definizione formale di una classe di funzioni il cui valore può essere ottenuto mediante ricorsione. Si è dimostrtato che sono equivalenti Tesi di Church Turing: Se esiste un algoritmo per eseguire un calcolo allora questo calcolo può essere eseguito da una MdT (o equivalenti)