Estratto del documento

Descrizione informale di una MdT

Una macchina di Turing utilizza un nastro semi-infinito. Inizialmente il nastro contiene solo la stringa di

input. La macchina di Turing ha una testina di lettura e scrittura, che può muoversi lungo il nastro. In

funzione dello stato in cui si trova e del simbolo input letto, la macchina cambia stato, scrive un simbolo

nella cella su cui era posizionata, sposta la testina di una posizione a destra o a sinistra. La macchina

continua a computare finché non accetta o rifiuta. Se non raggiunge uno stato corrispondente a uno delle

due situazioni precedenti, la computazione andrà avanti per sempre.

Differenze tra una MdT e un automa a stati finiti

La definizione di Macchina di Turing (in seguito abbreviata con MdT o con TM) che daremo, metterà in

evidenza le seguenti differenze con il modello automa finito:

• Una MdT ha un nastro semi-infinito (infinito a destra), diviso in celle, ciascuna contenente un

carattere.

• Una MdT ha una testina che può muoversi a sinistra o a destra (ma non può oltrepassare il limite a

sinistra del nastro).

• la testina può leggere o scrivere caratteri (testina di lettura-scrittura).

Una MdT ha due stati speciali , rispettivamente corrispondenti all’accettazione e al

rifiuto della stringa input. Se la MdT si trova in uno di tali stati non può effettuare ulteriori passi di

computazione. (La frase sul testo di Sipser è: Gli stati speciali di accettazione e rifiuto hanno effetto

immediato. Ossia la macchina si ferma immediatamente quando raggiunge uno dei due stati)

• Non c’è limite ai passi di computazione (in particolare il numero di tali passi non è limitato dalla

lunghezza dell’input).

Esempio di Macchina di Turing

|

{0

= 1 > 0}

Una macchina di Turing che accetta

(Descrizione ad alto livello)

(passo 1) Se legge 0 lo sostituisce con X, se legge 1 rifiuta, se legge Y va al passo 4.

(passo 2) Scorre il nastro verso destra, se trova 1 lo sostituisce con Y , altrimenti rifiuta.

(passo 3) Scorre il nastro a sinistra fino a incontrare X, si sposta a destra e ripete dal passo 1.

(passo 4) Scorre il nastro a destra. Se legge solo delle Y e poi il simbolo di cella vuota, accetta. Altrimenti

rifiuta. 000111→X00111…→X00Y11…→XX0Y11…→XXXYYY

Definizione formale di una MdT

Definizione

Una Macchina di Turing deterministica è una settupla

(, )

= Σ, Γ, , , ,

0

dove:

• Q: Insieme finito degli stati (⊔∉ )

• Σ: Alfabeto dei simboli input ∈ , ⊂ , , ∉ )

• Γ: Alfabeto (finito) dei simboli di nastro (⊔

(

∶ \{; } ) × → × × {, }

• funzione di transizione

• : stato iniziale

0

∈ :

• stato di accettazione

∈ : ≠

• stato di rifiuto,

NOTA: Spesso (nel libro, sui lucidi) l’aggettivo deterministica è sottinteso.

NOTA: Q, Σ e Γ sono insiemi finiti.

• Σ è un sottoinsieme di Γ.

• ⊔ ∈ ⊔∉

Σ è un sottoinsieme proprio di Γ perché .

• Q non è mai vuoto.

• ⊔.

Γ può contenere altri simboli oltre a quelli di Σ e a

NOTA: Esistono molte varianti di questa definizione che hanno lo stesso potere computazionale (o

espressivo), cioè riconoscono la stessa classe di linguaggi.

Vedremo due varianti: la macchina di Turing multi-nastro e la macchina di Turing non deterministica.

Funzione di transizione di una MdT

(, )una

= Σ, Γ, , , ,

Sia MdT deterministica.

0

Il suo comportamento è descritto dalla funzione di transizione

( })

{, {,

∶ \ × → × × }

′ ′ ′ ′

(, ) ( ) {,

= , , , ∈ , , ∈ , ∈ }

Se , sappiamo che

′ ′

(, ) ( )

= , ,

Se e se M si trova nello stato q con la testina posizionata su una cella contenente γ,

alla fine della transizione:

• M si troverà nello stato q’,

′ ∈

• sarà il simbolo scritto sulla cella del nastro su cui la testina si trovava ALL’INIZIO della

transizione (contenente γ),

• la testina si sarà spostata sulla cella di sinistra se (tale cella esiste e se) d = L, sulla cella di destra se

d = R. ′ ′

(, ) ( )

= , ,

NOTA: Data , se M si trova nello stato q con la testina posizionata su una cella

contenente γ e se tale cella è quella più a sinistra del nastro, la testina non si sposta e resta sulla cella del

nastro su cui si trovava all’inizio della transizione.

Spesso nel progetto di una Macchina di Turing si definisce una transizione che scrive un carattere speciale

nella cella più a sinistra del nastro e che serve a individuarla.

Diagramma di stato di una MdT

Come nel caso degli automi, spesso preferiamo utilizzare il diagramma di stato di una specifica Macchina di

Turing piuttosto che la descrizione formale della settupla.

Il diagramma di stato di una Macchina di Turing è un grafo i cui nodi hanno come nomi gli stati della

macchina.

Le etichette degli archi hanno la forma: “ → , "

{,

∈ }.

dove “simbolo” è un simbolo di Γ e d Il simbolo a sinistra della freccia rappresenta il simbolo letto,

quello dopo la freccia il simbolo (eventualmente lo stesso) che sostituisce il simbolo letto per effetto della

transizione, d lo spostamento per effetto della transizione.

Ad esempio, se sull’arco dal nodo al nodo compare l’etichetta:

1 2 0 → ⊔,

questo corrisponde a: ( 0) ( )

, = ,⊔,

1 2

Alle volte si usa l’abbreviazione di non indicare il carattere dopo la freccia se esso non è modificato dalla

transizione.

Ad esempio, se sull’arco dal nodo al nodo troviamo l’etichetta:

3 4 0→

( 0) ( )

, = , 0,

questo vuol dire che .

3 4

Computazione di una MdT - descrizione informale

Una MdT M inizia la computazione:

• partendo dallo stato iniziale ,

0

∈ Σ

• con l’input posizionato sulla parte più a sinistra del nastro: le prime n celle a sinistra,

⊔),

se n =|w| è la lunghezza dell’input (il resto delle celle conterrà il carattere con la testina

posizionata sulla cella contenente il primo simbolo di input (quello più a sinistra)

⊔,

• Poiché Σ non contiene il carattere all’inizio della computazione il primo simbolo blank sul nastro

individua la fine dell’input.

• La computazione di M procede secondo le regole descritte dalla funzione di transizione.

• La computazione di M procede fino a quando non viene raggiunto uno stato di accettazione o

rifiuto. Se nessuno dei due stati viene raggiunto, M va avanti per sempre.

La computazione termina se M raggiunge

• lo stato di accettazione : Accetta input

• lo stato di rifiuto : Rifiuta input

NOTA: La computazione può non terminare. (Analogia: while C do Something dove C è una condizione

sempre vera).

Esempio

:

(, ),

= Σ, Γ, , , , { , , },

con Q = Σ = {a, b}, Γ = {a, b,⊔},

0 0

δ(q0, a) = (q0, a, R),

δ(q0, b) = (q0, b, L),

⊔)

δ(q0, = (qaccept,⊔, L).

NOTA: ”M non accetta l’input w” non è equivalente a “M rifiuta l’input w”. M può accettare un input w o

non accettare w. Se non accetta w, questo vuol dire che:

1. M rifiuta w

2. La computazione di M su w non termina.

È possibile simulare un automa finito deterministico attraverso una MdT.

La computazione di un automa finito deterministico su un input w può essere rappresentata da una

sequenza di stati (gli stati che rappresentano i nodi del cammino di etichetta w nel diagramma di stato che

rappresenta l’automa).

La posizione della testina è implicitamente rappresentata nella computazione poiché a ogni transizione si

sposta di una cella a destra.

Il nastro è di sola lettura, il contenuto del nastro non viene modificato durante la computazione e quindi

non è necessario considerarlo.

Computazione di una MdT – descrizione formale.

Configurazioni

Nella computazione di una macchina di Turing su un input w abbiamo bisogno di considerare tutti questi

elementi:

• stato

• posizione della testina ⊔ ⊔).

• la parte iniziale del nastro contenente tutti i caratteri diversi da (eventualmente separati da

Nota: è sempre costituita da un numero finito di celle.

Un’impostazione di questi tre elementi è chiamata una configurazione della macchina di Turing.

Intuitivamente una configurazione di una MdT è l’insieme delle informazioni costituito da una porzione

“abbastanza lunga” del nastro, dalla posizione della testina e dallo stato della MdT a un dato istante.

Definizione

Una configurazione C di una MdT ∗ ∗

(, )

= Σ, Γ, , , , = ∈

è una stringa: , dove:

0

• è lo stato corrente di M,

∈ Γ ⊔

• è il contenuto del nastro (con la convenzione di aver eliminato tutti i simboli dopo v, cioè

dopo l’ultimo carattere di v il nastro contiene solo simboli blank),

• la testina è posizionata sul primo simbolo di v.

Ad esempio: 1011 01111

7

rappresenta la configurazione in cui il nastro contiene

101101111⊔…⊔…

dove lo stato corrente è e la testina è posizionata sul secondo 0.

7

Nota: se C = uqv è una configurazione di una macchina di Turing, allora :

• u è la stringa di caratteri a sinistra del simbolo su cui è posizionata la testina.

• Sia u che v possono essere uguali a

Configurazioni: casi particolari

Se C = qv è una configurazione di una MdT allora la testina è posizionata sulla prima cella del nastro

(posizione della testina a inizio nastro).

Se C = uq è una configurazione di una MdT allora la testina è posizionata sulla prima cella della porzione del

⊔ ⊔).

nastro contenente solo (posizione della testina sulla porzione del nastro contenente solo

Passo di computazione

Intuitivamente un passo di computazione è la trasformazione della configurazione C1 nella configurazione

C2 per effetto di una applicazione della funzione di transizione. È una relazione tra coppie di configurazioni

definita dalla funzione di transizione.

Sia (, )

= Σ, Γ, , , , una MdT deterministica.

0 ∗

, ∈ , , , ∈ Γ , ∈ Γ .

Siano

Diremo che: ( ) (

, = , , ).

se

Diremo che ( ) (

, = , , ).

se

Nota: ua bv, u acv, uac v sono configurazioni di M.

La definizione generale è più complessa perché bisogna considerare anche i casi particolari (C = qv, C = uq

).

con u, v eventualmente uguali a

Ad esempio: ( ) (

, = , , ).

se

( ) (

, = , , ).

se

≠ .

Occorre distinguere u = da u

Siano due configurazioni di una MdT M.

Se C1 produce C2, scriveremo: 1 → 2

Il simbolo ,rappresenta la trasformazione di C1 in C2 e prende il nome di passo di computazione.

→ corrisponde a un’applicazione della funzione di transizione di M.

Definizione

Una configurazione C si dice: ∗

= , ∈ Σ

• iniziale (con input w) se con ,

0 ∗ ′

, ∈ Γ ∈ { , }

• di arresto se C = uqv, con e (non esiste nessuna configurazione

tale che ), ∗

, ∈ Γ =

• di accettazione se C = uqv, con e ,

, ∈ Γ =

• di rifiuto se C = uqv, con e .

Nota: Le configurazioni di arresto sono configurazioni di accettazione o di rifiuto.

Definizione

Siano C, C’ configurazioni.

∗ ′

→ , … , > 1

se esistono configurazioni tali che:

1

=

• 1 {1,

→ ∈ … , − 1}

• (ogni produce )

+1, +1

=

• .

∗ ′

Diremo che è una computazione (di lunghezza k − 1).

Sia M una MdT e sia C una configurazione di M. Ci sono tre possibili casi:

∗ ′

1. con C’= u v configurazione di accettazione (M si ferma in ).

∗ ′

2. con C’= u v configurazione di rifiuto (M si ferma in ).).

∗ ′ ∗ ′ ′′

→ → →

3. Per ogni configurazione C’ tale che esiste una configurazione C’’ tale che

(M non si arresta).

Parola accettata da una MdT

Definizione ∗ ∗ ′

∈ Σ →

Una MdT M accetta una parola se esiste una computazione , dove C = è la

0

=

configurazione iniziale di M con input w e è una configurazione di accettazione.

∈ Σ , , … , , > 1

Quindi M accetta se e solo se esistono configurazioni tali che:

1 2

=

• è la configurazione iniziale di M con input w

1 0 {1,

→ ∈ … , − 1}

• +1,

• è una configurazione di accettazione.

∗ ∗ ′

∈ Σ →

Allo stesso modo, M rifiuta una parola se esiste una computazione , dove C = è la

0

=

configurazione iniziale di M con input w e è una configurazione di rifiuto.

∈ Σ

Quindi M si ferma su se M accetta w oppure rifiuta w, cioè se e solo se esistono configurazioni

, , … , , > 1 tali che:

1 2

=

• è la configurazione iniziale di M con input w

1 0 {1,

→ ∈ … , − 1}

• +1,

• è una configurazione di arresto.

∈ Σ

Dunque, data una MdT M e una stringa , ci sono solo due possibili casi:

• M accetta w

• M non accetta w in quanto :

o M rifiuta w

o La computazione di M non si arresta mai sull’input w

Domanda: … ∈ Σ.

Sia M una MdT. Sia w = Supponiamo che w è accettata da M.

1

, ∈ Γ

Quindi esistono tali che: ∗

0

Possiamo concludere che in questa computazione M deve aver letto tutti i caratteri di w?

E quindi che la computazione deve avere lunghezza almeno n = |w|?

Risposta

: ciò non è necessario, in quanto la condizione da verificare può essere vera prima di aver letto

tutti i caratteri della stringa w. Ad esempio, se la MdT accetta stringhe che iniziano per a, mi basta leggere

solo il primo carattere presente sul nastro , ignorando tutti i restanti.

Linguaggio riconosciuto da una MdT

Definizione

(, )

= Σ, Γ, , , ,

Sia una MdT. Il linguaggio L(M) riconosciuto da M, è l’insieme delle

0

stringhe che M accetta: ∗ ∗ ∗

() |

{

= ∈ Σ ∃, ∈ Γ → }

0

Quind

Anteprima
Vedrai una selezione di 17 pagine su 76
Appunti esame elementi di teoria della computazione Pag. 1 Appunti esame elementi di teoria della computazione Pag. 2
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 6
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 11
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 16
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 21
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 26
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 31
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 36
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 41
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 46
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 51
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 56
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 61
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 66
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 71
Anteprima di 17 pagg. su 76.
Scarica il documento per vederlo tutto.
Appunti esame elementi di teoria della computazione Pag. 76
1 su 76
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher rosario.gagliardi di informazioni apprese con la frequenza delle lezioni di Elementi di teoria della computazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Salerno o del prof De felice Clelia.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community