macchina di turing - unicam di turing.pdf4/4/2008 unicam - p. 3/69 che cosa è una mdt macchina di...

69
4/4/2008 UNICAM - p. 1/69 Fondamenti dell’informatica Macchina di Turing Rosario Culmone [email protected]

Upload: others

Post on 09-Jan-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 1/69

Fondamenti dell’informatica

Macchina di Turing

Rosario [email protected]

Page 2: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 2/69

Macchine di Turing

▲ Alan Turin, matematico e logico è uno dei padri dell’informatica, nasce aLondra il 23 giugno 1912.

▲ Nel 1936 scrisse "On computable Number, with an application to theEntscheidungsproblem" (problema della decisione) in cui definiva lacosiddetta Machina di Turing

▲ partecipò alla decriptazione dei messaggi tedeschi scritti con la macchinaenigma.

▲ Morì suicida nel 1954 ingerendo una dose letale di cianuro di potassio in unamela (Apple inc)

Page 3: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 3/69

Che cosa è una MdT

Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastrobidirezionale illimitato.

Dato lo stato della macchina e il carattere letto sul nastro, la macchina passa inun nuovo stato, scrive un carattere sul nastro e sposta la testina a destra, asinistra o resta ferma.

Il nastro infinitamente lungo è diviso in celle. Le celle sono riempite di defaultda un carattere speciale (black).

Page 4: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 4/69

Caratteristiche delle MdT

▲ forniscono una definizione formale del concetto di algoritmo▲ accettano i linguaggi di tipo 0, i linguaggi più complessi▲ sono in grado di simulare ogni altro modello di calcolo

Modello non realistico di calcolo ma▲ adatto a formalizzare il riconoscimento dei linguaggi formali▲ utile a definire i concetti di complessità computazionale▲ il modello di calcolo più semplice e potente

Page 5: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 5/69

Definizione formale di MdT

Una Macchiana di Turing M = 〈Σ, b, K, q0, F, δ〉

Σ è l’alfabeto del nastrob carattere speciale, spazio bianco (blank)K insieme finito di statiq0 stato inizialeF insieme degli stati finaliδ funzione di transizione (parziale)

Page 6: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 6/69

Funzione di transizione

La funzione di transizione è così definita:δ : K × Σb → K × Σb × {destra, sinistra, immobile}

Dove Σb = Σ ∪ {b}Può essere rappresentata con una matrice o con un grafo di transizioni. Adesempio se δ(qi, σj) = (qk, σh, d) si ha:

σj

qi qk, σh, d qi qk

σj/σh/d

Page 7: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 7/69

Funzionamento

Se si è sullo stato q1 e la testina è posizionata sul nastro nel modo sottoindicato, se si ha nella funzione di transizione δ(q1, b) = (q2, a, d) allora:

q1

. . . b a b b a b . . .

Dopo l’applicazione della funzione di transizione di ha:

q2

. . . b a a b a b . . .

Page 8: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 8/69

Varianti della MdT

Sono MdT equivalenti ovvero hanno la stessa potenza espressiva e possonoessere tra di loro simulate▲ macchine a più nastri▲ macchine non deterministiche▲ macchine con alfabeto molto limitato▲ macchine con nastro semifinito

Page 9: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 9/69

Configurazione di una MdT

Una configurazione per una MdT è una stringa appartenente al linguaggioΣ∗

bKΣ+b che rappresenta:

▲ porzione finita del nastro diversa da b▲ posizione della testina▲ stato corrente

Ad esempio la configurazione della MdT quando si è nella seguente situazione

qi

. . . b a b b b b . . .

E’ la seguente aqibbb, il simbolo dello stato è posizionato prima della letterasulla testina

Page 10: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 10/69

Configurazioni iniziale e finale

La conoscenza di una configurazione e della funzione di transizione consentedi determinare la configurazione succesiva

Per convenzione all’inizio della computazione il nastro contiene l’input, il restodel nastro contiene b, la testina è posizionata sul primo carattere dell’input, lamacchina è nello stato iniziale. Quindi la configurazione iniziale sarà del tipo:q0aabb

Il calcolo termina quando la macchina entra in uno stato finale. La testina puòessere in un punto qualsiasi del nastro. Quindi la configurazione finale sarà deltipo: aabqF b

Il calcolo termina anche se nessuna regola di transizione è applicabile (block)

Page 11: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 11/69

Computazione

Se la funzione di transizione fa passare dalle configurazione ci allaconfigurazione cj scriviamo

ci → cj

Una computazione è una sequenza eventualmente infinita di configurazioni(c1, c2, . . . , ci, ci+1, . . . ) tali che: c1 → c2 → · · · → ci → ci+1 → . . .

Una computazione finita c1 → . . . cn è massimale se non esiste unaconfigurazione c tale che cn → c

In tale caso cn è una configurazione finale o una configurazione in cui lafunzione di transizione non è definita

Page 12: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 12/69

Linguaggi e MdT

Mentre per i linguaggi di tipo 3 esiste una corrispondenza biunivoca con gliNFA [DFA] (ovvero gli NFA riconoscono tutti e soli i linguaggi di tipo 3), per ilinguaggi di tipo 2 vale lo stesso ma con gli automi a pila non deterministici. Nelcaso dei linguaggi di tipo 0, le MdT riconoscono linguaggi di tipo 0 ma esistonolinguaggi prodotto con grammatica di tipo 0 che non sono riconosciuti da MdT.

Quindi a differenza degli NFA e degli automi a pila che rispettivamentericonoscono i linguaggi di tipo 3 e di tipo 2, le macchine di Turing non sonosempre in grado di riconoscere il linguaggio di tipo 0 ma in alcuni casi possonosolo "accettarlo".

Page 13: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 13/69

MdT che riconoscono L0

Una MdT M riconosce un linguaggio L se per ogni x ∈ Σ∗ è in grado distabilire se x ∈ L o no

Una MdT M accetta un linguaggio L se per tutte e sole le x ∈ L è in grado distabilire tale appartenenza, ma se x /∈ L , M non garantisce uncomportamento prestabilito

In sostanza una MdT che riconosce un linguaggio è più precisa perchédistingue le stringhe appartenenti al linguaggio da quelle che non lo sono. UnaMdT che accetta un linguaggio risponde positivamente alle stringhe dellinguaggio ma non rifiuta tutte le stringhe che non appartengono al linguaggio.

Page 14: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 14/69

Computazione massimale

Una computazione massimale (c1 → . . . cn) è accettante (responso positivo) sec0 è inizial e cn è finale.

Una computazione massimale (c1 → . . . cn) è rifiutante (responso negativo) sec0 è inizial e cn non è finale.

Una computazione infinita non corrisponde ad alcun responso.

Page 15: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 15/69

Formalmente

Una M = 〈Σ, b, K, q0, F, δ〉 riconosce (decide) un linguaggio L se per ognix ∈ Σ∗ esiste q ∈ K tale che q0x

∗→ αqβ con α ∈ Σ∗

b e β ∈ Σ+b e q ∈ F se e

soltanto se x ∈ L.

Un linguaggio accettato da una MdT è detto decidibile (secondo Turing).

Una M = 〈Σ, b, K, q0, F, δ〉 accetta un linguaggio L se per tutte e sole le x ∈ L

esiste q ∈ F tale che q0x∗→ αqβ con α ∈ Σ∗

b e β ∈ Σ+b .

Un linguaggio accettato da una MdT è detto semidecidibile (secondo Turing).

Ovvero tutti i linguaggi di tipo 0 sono semidecidibili secondo Turing ma unaparte di essi è anche decidibile. Non può esiste una grammatica o unamacchina che caratterizza i linguaggi decidibili quindi sono mescolati a tuttiquelli di tipo 0.

Page 16: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 16/69

Decidibili e semidecidibili

▲ I linguaggi semidecidibili sono tutti e soli i linguaggi di tipo 0▲ La classe dei linguaggi decidibili è strettamente contenuta in quella dei

linguaggi semidecidibili

La classe dei linguaggi semindecidibili è anche indicata con "Linguaggiricorsivammente enumerabili" mentre la classe dei linguaggi decidibili èindicata con "Linguaggi ricorsivi"

Questa classificazione dei linguaggi (ricorsivi e ricorsivamente numerabili)non ha un corrispondente diretto nella classificazioene di Chomsky

Page 17: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 17/69

Esempio di riconoscimento

Realizziamo una MdT che riconosce il linguaggio L = {0n1n | n ≥ 1} quindiM = 〈{0, 1}, b, K, q0, {q4}, δ〉. Una possibile configurazione iniziale potrebbeessere: q00011

La MdT marca via via con un X gli 0 e con un Y i corrispondenti 1 e accetta segli 0 e gli 1 sono in numero uguale, rifiuta se sono in numero diverso

Page 18: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 18/69

Esempio di MdT

La rappresentazione sotto forma di grafo delle transizioni:

q0

q1 q2

q3

q4

rifiuta con 1

rifiuta con b0/0/d, y/y/d 0/0/s, y/y/s

y/y/d

0/x/d

1/y/s

x/x/d

y/y/d

b/b/i

q0 0 0 1 1

x q1 0 1 1

x 0 q1 1 1

x q2 0 y 1

q2 x 0 y 1

x q0 0 y 1

x x q1 y 1

x x y q1 1

x x q2 y y

x q2 x y y

x x q0 y y

x x y q3 y

x x y y q3 b

x x y y q4 b

Page 19: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 19/69

MdT a più nastri

Esempio di MdT a tre nastri

a. . . . . .b b

b. . . . . .b b

c. . . . . .b b

Page 20: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 20/69

Definizione di una MdT a k nastri

Una Macchiana di Turing M = 〈Σ, b, Z0, K, q0, F, δ(k)〉

Σ è l’alfabeto del nastrob carattere speciale, spazio bianco (blank)Z0 carattere speciale inizialeK insieme finito di statiq0 stato inizialeF insieme degli stati finaliδ funzione di transizione (parziale)

δ : K × (Σb)k → K × (Σb)

k × {d, s, i}k

Ovvero dato uno stato e un vettore di caratteri (un carattere per ogni nastro) lafunzione di transizione associa un nuovo stato, un vettore di caratteri (un nuovocarattere per ogni nastro) e un vettore di spostamenti (uno per ogni nastro).

Page 21: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 21/69

Configurazione di una MdT multinastro

La configurazione dovrà contenere tutte le informazioni necessarie per stato,stringa su ogni nastro e posizione della testina. Quindi si avrà:

q#α1 ↓ β1#α2 ↓ β2# . . .#αk ↓ βk

Dove:▲ q è lo stato corrente,▲ il crattere ↓ indica la posizione della testina nel k − esimo nastro e▲ il carattere # separa i vari nastri

La configurazione iniziale:

q0# ↓ β1# ↓ Z0β2# . . .# ↓ Z0βk

La configurazione finale: q ∈ FLe transizioni e computazioni: analoghe alle normali MdT

Page 22: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 22/69

Perché avere MdT multinastro

Possiamo pensare di avere MdT con due nastri, su un nastro poniamo lastringa da elaborare (input), sul secondo nastro dati temporanei di lavoro.

Possiamo pensare di avere MdT con tre nastri, su un nastro poniamo la stringadi input, sul secondo nastro la stringa di output e sul terzo nastro i datitemporanei.

E’ più semplice programmare una MdT multinastro perché è possibile utilizzarediverse "memorie"

Page 23: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 23/69

Potere espressivo delle MdT

MdT classica e MdT multinastro hanno lo stesso potere computazionale. E’possibile simulare una MdT multinastro con una MdT classica. La simulazioneha un costo polinomiale (si vedrà più avanti).

Data una MdT a k nastri M = 〈Σ, b, Z0, K, q0, F, δ(k)〉 esiste una MdT chesimula t passi di Mk in O(t2) passi usando un alfabeto di cardinalità (2|Σ|)k

Page 24: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 24/69

Simulazione di una MdT multinastro

La simulazione avviene nel seguente modo:Costruiamo una MdT M′ = 〈Σ′, b, K′, q0′ , F ′, δ′〉 con nastro suddiviso in 2ktracce che simulano M.▲ le k tracce di posto pari di M′ rappresentano i k nastri di M▲ le k tracce di posto dispari di M′ con il marcatore ↓ indichiamo la posizione

della testina sul corrispondente nastro di M

q

. . . ↓ . . .

. . . a b b a . . .

. . . ↓ . . .

. . . c d c d . . .

. . . ↓ . . .

. . . a a a b . . .

s

. . . a b b a . . .

. . . c d c d . . .

. . . a a a b . . .

Page 25: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 25/69

Simulazione

L’alfabeto della MdT M′ è molto più ampio perché deve condificare in un solosimbolo l’informazione di tre nastri più la posizione.

Per ogni passo di M, M′ deve eseguire un numero di passi proporzionale alladistanza (numero di celle) tra i due marcatori più lontani quindi se M esegue tpassi, M′ ne può eseguire t2 (poiché t è la massima distanza che vi puòessere tra due testine dopo t passi).

In pratica per ogni operazione di M bisogna replicare la stessa operazione suM′ andando a modificare il nastro in tre posizioni corrispondenti alle tre casellein cui si trovano le testine di M. Tre spostamenti sui tre nastri di M corrispondealla ricerca nel nastro di M′ delle tre testine per modificarne il contenuto.

Page 26: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 26/69

Perché O(t2)

Supponiamo di avere una MdT con due nastri e supponiamo che ad undeterminato momento le due testine sono sovrapposte sui rispettivi nastri. Seda tale momento si effettuano k mosse, la distanza massima tra le testine sarà2k poiché possiamo pensare che la testina del primo nastro si sposti di kposizioni a destra e la testina del secondo nastro di k posizioni a sinistra.Quindi la simulazione su un unico nastro comporterà lo spostamento a destra ea sinistra per raggiungere le testine dei due nastri ovvero∑n

i=1 i = n(n+1)2 = n2

2 + n2 nel nostro caso 2k2 + k ovvero O(k2). Se i nastri

sono maggiori di due, le mosse per la simulazione saranno comunque di ordinek2 poiché tali sono gli estremi massimi di spostamento della testina dellamacchina che simula.

Page 27: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 27/69

Alfabeto delle MdT multinastro

Per ciò che riguarda la cardinalità dell’alfabeto di M′ dobbiamo codificare conun simbolo un vettore di 2k simboli corrispondenti al contenuto delle 2k tracce,quindi:

|Σ′| = 2k(|Σ| + 1)(|Σ| + 2)k−1

Page 28: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 28/69

Esempio di MdT a due nastri

MdT che riconosce xcxR con x ∈ {a, b}

. . . b a c a b . . .

δ

. . . Z0 b b b b . . .

A partire dal primo simbolo sul primo nastro la MdT ricopia tali simboli sulsecondo nastro a partire al marcatore di inizio Z0 quindi quando sul primonastro incontra c la testina sul primo nastro continua a leggere il caratteresuccessivo ma si controlla che corrisponda al carattere letto sul secondo nastroandando a ritroso.

Page 29: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 29/69

MdT non deterministiche

Una Macchiana di Turing non deterministica M = 〈Σ, b, K, q0, F, δN〉

Σ è l’alfabeto del nastrob carattere speciale, spazio bianco (blank)K insieme finito di statiq0 stato inizialeF insieme degli stati finaliδ funzione di transizione (parziale)

La funzione di transizione produce un insieme di terne in corrispondenza diuna coppia stato, simbolo.

δN : K × Σb → P (K × Σb × {d, s, i})

Ad esempio si può avere δN (q1, a) = {(q2, b, d), (q3, a, s), . . .}

Page 30: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 30/69

Non determinismo delle MdT

Una MdT non deterministica in presenza dello stesso stato e stesso simbololetto sul nastro può effettuare più transizioni.

Il grado di non determinismo di una macchina M è γ(M) = maxi,j |δN(qi, σj)|ovvero il massimo numero di terne espresse dalla funzione di transizione.

La computazione eseguita da una macchina non deterministica può essererappresentata con un albero dove i nodi sono configurazioni e gli architransizioni.

ci

ck

cz

cj cl

cm cn

Page 31: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 31/69

MdT non deterministiche e linguaggi

Possiamo utilizzare MdT non deterministiche per accettare linguaggi

Una MdT ND accetta una stringa se almeno un ramo dell’albero corrispondead una computazione accettata.

Le MdT ND sono più "efficienti" ma non hanno maggiore poterecomputazionale delle MdT.

Data una MdT ND M con grado di non determinismo d esiste una MdT M′

equivalente che simula k passi di M in kdk passi

Page 32: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 32/69

Simulazione di una MdT nondeterministica

La MdT M′ (deterministica) ha tre nastri:▲ nastro 1: contiene l’input▲ nastro 2: viene usato per generare, in ordine lessicografico, tutte le parole

composte da cifre comprese tra 1 e d dove d è il grado di non determinismodi M

▲ nastro 3: è il nastro su cui avviene la simulazione

s

. . . a b b a i caratteri sul nastro della M

. . . 1 2 2 1 una sequenza di caratteri su alfabeto di cardinalità d

. . . a a a b nastro di lavoro

Page 33: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 33/69

Simulazione

Ogni sequenza di lunghezza s sul nastro 2 corrisponde ad una computazionedi M la s passi. Ad esempio se d = 2 e s = 4 una possibile situazione sulnastro 2 potrebbe essere 1112

Per ogni sequenza generata sul nastro 2, di M′ copia l’input sul nastro 3 edeffettua la simulazione scegliendo le applicazioni della funzione di transizionesecondo l’ordine definito nel nastro 2

1

11

111

1111 1112

12

2

21 22

221 222

Page 34: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 34/69

Caratteristiche

▲ ogni nodo è identificato da una sequenza di cifre prese da un alfabeto diampiezza d

▲ la simulazione avviene copiando sul nastro 2 gli identificatori dei nodidell’albero per ampiezza (non in profondità perché un cammino della MdTND potrebbe non terminare)

▲ se la MdT ND riconosce la stringa in un nodo anche la MdT deterministica lafarà

▲ gli s numeri della sequenza indica ad ogni passo quale transizione tra le dpossibili deve essere effettuata, ovvero su una scelta tra quelle definite dallafunzione di transizione non deterministica sceglieremo quella indicata dallacifra del nastro 2

▲ Se su qualche foglia dell’albero di computazione di M c’è uno stato finale,allora M′ lo raggiunge in tempo finito altrimenti M′ non raggiunge mai unostato finale

▲ Se M termina in k passi M′ ha bisogno di∑k

j=0 jdj = O(kdk)

Page 35: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 35/69

Differenze tra MdT e MdT ND

Una MdT ND può risolvere un problema in tempo polinomiale rispetto allalunghezza della stringa mentre la MdT equivalente richiede un tempoesponenziale

Un problema aperto, ci si chiede se esista una simulazione più efficiente.Trovare una tale simulazione non è una domanda puramente teorica ma harisvolti pratici concreti (1.000.000$)

Page 36: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 36/69

Linguaggi e MdT

Un linguaggio è di tipo 0 se e solo se è accettato da una MdT.

Un linguaggio L è semidecidibile se e solo se è un linguaggio di tipo 0.

Dato un linguaggio L generato da una grammatica di tipo 0 si può definire unMdT che lo accetta. Per semplificare la dimostrazione utilizziamo una MdT NDcon 2 nastri ma sappiamo che è possibile realizzare una MdT classica che lapuò simulare.

Page 37: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 37/69

Accettazione su tipo 0

La MdT ND ha sul primo nastro la stringa da riconoscere e sul secondo nastrole applicazioni delle produzioni. A partire dal simbolo non terminale iniziale(Assioma) vengono applicate tutte le possibili produzioni della grammatica inmodo non deterministico. Se sul secondo nastro si ha una configurazione disoli terminali la si confronta con il contenuto del primo nastro. Se sono uguali laMdT accetta la stringa sul primo nastro.

La MdT accetta la stringa se è esiste una catena di produzioni dellagrammatica che la genera ma potrebbe non terminare e quindi non sapere sela stringa appartiene al linguaggio o no.

Page 38: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 38/69

Da una MdT alla grammatica

Il contrario ovvero data una MdT determinare la grammatica del linguaggioaccetato dalla MdT.

Se una MdT accetta L vuol dire che per tutte e sole le x ∈ L, realizza lacomputazione q0x

∗→ uqF w con qF ∈ F

La grammatica G "simula" le computazione di M e genera una stringa x se esolo se essa viene accetata.

L’alfabeto dei non terminali di G è costituito da simbolo ausiliari e da simboli cherappresentano il contenuto di due piste entrambi dotate di caratteri di Σ ∪ {b}

[

σi

σj

]

Page 39: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 39/69

Grammatica

▲ genera una qualunque stringa x ∈ Σ∗ sulle due piste▲ simula M sulla pista inferiore▲ se la pista inferiore corrisponde alla configurazione finale trasforma la forma

di frase ottenuta nella stringa xLo configurazione del nastro potrebbe essere:

X

[

b

b

][

b

b

]

q0

[

a

a

][

b

b

][

a

a

][

a

a

][

b

b

][

b

b

]

H

Sella seconda pista viene simulata la riscrittura della grammatica. Da notareche la singola operazione della MdT corrisponde sostanzialmente ad unaoperazione di riscrittura q0abb → aq0bb

Page 40: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 40/69

Come funziona

Se la MdT che riconosce un linguaggio, effettua operazioni di riscitturaesattamente assimilabile alle produzioni di una grammatica. Quindi sulsecondo nastro possiamo osservare tutte le regole di riscrittura applicate sino aquando compaiono solo simbolo terminali che coincidono con quelli del nastrosuperiore. Allora tutte le regole di riscrittura che si sono applicate sonol’applicazione delle produzioni e la stringa prodotta è l’elemento del linguaggio.

Page 41: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 41/69

MdT che calcolano funzioni

Le MdT viste possono essere utilizzate per riconoscere (o accettare) linguaggi.

Le MdT possono essere definite per calcolare funzioni. Una MdT calcola lafunzione f se per tutte e sole le x nel dominio di definizione di f esiste q ∈ F

tale che q0x∗→ xbqf(x). Una macchina di questo tipo si chiama trasduttore.

La funzione f può essere uan funzione di stringhe di Σ o una funzione di interio altri tipi di dati a loro volta rappresentati mediante opportune stringhe di Σ

Page 42: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 42/69

Turing calcolabilità

Una funzione (parziale) f per la quale esiste una MdT he la calcola è dettacalcolabile secondo Turing (Turing calcolabile)

Per un valore x in cui la f non è definita la MdT può anche non terminare

Page 43: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 43/69

Funzione identità

Definiamo la MdT che calcola f(x) = x per x ∈ {0, 1}∗.

Configurazione iniziale: q0x. Configurazione finale: xbqF x

q0

q1

q2

q3

q4

q5

q6

0/X/db/b/d

1/Y/db/b/d

b/0/s

b/1/s

X/0/d, Y/1/d

b/b/d

0/0/d, 1/1/d

0/0/d, 1/1/d

0/0/d, 1/1/d

0/0/s, 1/1/d

0/0/s, 1/1/s, b/b/s

Page 44: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 44/69

Come funziona

▲ Da q0 a q1 o q2 marca con X o Y e si sposta a destra▲ Salta tutti le cifre successive sino ad incontrare b (separatore tra parametro e

valore della funzione)▲ Supera il separatore e tutte le cifre già scritte sino ad incontrare il primo b

quindi scrive 0 0 1 a secondo di quanto letto in q0

▲ Quindi la testina torna indietro sino ad incontrare il marcatore scritto inprecedenza e viene sostituito con il valore iniziale, 0 per X o 1 per Y quinditornato nello stato q0 si ripete sino a quando non si sostituisce l’ultimomarcatore e il successivo carattere è il separatore b. Se si è in questasituazione si transita nello stato finale q6

Page 45: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 45/69

Tesi di Church-Turing

Esistono modelli di calcolo più "potenti" delle MdT? Ovvero esistono funzionicalcolabili o insiemi decidibili che non siano T-calcolabili o T-decidibili?

Contemporaneamente a Turing anche Church ha introdotto un concetto dicalcolabilità (λ-definibilità) basato su un sistema formale detto λ-calcolo

Turing ha dimostrato che il λ-calcolo è equivalente alle MdT

La tesi di Church-Turing è una congettura ovvero non ha una dimostrazioneformale. "Ogni funzione computabile con qualunque metodo algoritmo formaleè T-calcolabile". Ovvero qualsiasi modello di calcolo è al più T-equivalente.

Page 46: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 46/69

Prove sulla tesi di Church

La tesi di Church non è dimostrabile ma abbiamo forti indizi della sua validità.Ad esempio si è vista l’equivalenza tra linguaggi di tipo 0 e linguaggisemidecidibili secondo Turing. Anche i seguenti formalismi sono risultatiequivalenti alle MdT:▲ Funzioni ricorsive (Kleene, 1936)▲ Sistemi di Post (Post, 1944)▲ Algoritmi di Markov (Markov, 1949)▲ Macchine a registri (Shepherdson e Sturgis, 1963)

Page 47: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 47/69

MdT limitate, nel nastro

E’ possibile definire MdT ancora più semplici della MdT classica. Ad esempio èpossibile dimostrare che per ogni MdT M esiste una M′ equivalente con unnastro semi-finito.

M′ utilizza un unico nastro semi-finito diviso in 3 tracceIl nastro infinito viene diviso in due la prima parte sul primo nastro e la secondaparte sul terzo nastro

Il nastro in mezzo viene utilizzato per per indicare se la testina si trova sullaparte semifinita destra e sulla parte semifinita sinistra mediante i simboli ↑ e ↓

a b b a b . . .

↑ . . .

b a a a a . . .

. . . b a b b a b a a a a . . .

Page 48: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 48/69

Alfabeto delle MdT con nastro limitato

Naturalmente il nastro con tre tracce può essere codificato con un nuovoalfabeto che è ΣL = {|Σb| ∗ 2 ∗ 3} ovvero il numero dei simboli dell’alfabeto diM compreso il blanck in due posizioni ovvero per due e moltiplicato per il tresimboli del nastro centrale.

Page 49: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 49/69

MdT con alfabeto limitato

Per ogni MdT M con alfabeto Σb esiste una MdT M′ equivalente con |Σ′| = 1ovvero con un solo simbolo

I |Σ| + 1 caratteri di Σb vengono codificati con i 2 caratteri di Σ′b

Ad esempio se Σb = {b, a, b, c} la codifica può essere la seguente:

b bba b1b 1bc 11

Ogni due caratteri del nuovo alfabeto si codifica un carattere del vecchio.

Page 50: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 50/69

MdT universale

E’ possibile descrivere una MdT come una stringa di caratteri e fornire taledescrizione come input ad un’altra MdT. Ovvero costruire una MdT che possasimulare una MdT data.

La descrizione di una MdT può essere realizzata in vari modi. Ad esempiofornire le quintuple che costituiscono la funzione di transizione:

##d1##d2## . . .##dn

La quintupla di = qi#sj#qh#sk#tl corrispondente alla regola di trascrizioneδ(qi, sj) = (qh, sk, tl)

Il carattere # funge da separatore e appartiene all’alfabeto della macchina chesimula

Un altro modo è codificare la funzione di transizione come una sequenza diistruzioni elementari standard e creare una MdT che legge ed esegue taliistruzioni (esattamente come un comune computer).

Page 51: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 51/69

MdT universale

Sia DM la descrizione di una macchina M a nastro seminfinito. Esiste unaMdT U (Macchina di Turing universale) a nastro semifinito, con stato iniziale qU

0 ,che data una qualunque descrizione DM realizza la computazioneqU0 DM#x

∗→ αqfβ con qf stato finale, se e solo se la macchina M, con stato

iniziale q0, realizza la computazione q0x∗→ αqfβ con qf stato finale.

Page 52: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 52/69

Comportamento della MdT universale

La MdT universale U ha sul nastro seminfinito la descrizione della MdT M e idati x su cui tale macchina deve operare. La MdT universale U si comportacome la MdT M eseguendo le quintuple relative alla MdT M presenti sullaprima parte del nastro sui dati x presenti sulla seconda parte del nastro.

U M

DM x x

Page 53: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 53/69

Problema della terminazione

Il problema delle terminazione non è dimostrabile con gli strumenti chepossediamo, ovvero è inpossibile costruire una MdT che possa decidere seuna MdT che risolve un problema termina la suo computazione o procedesenza fine.

Prima dimostriamo che esistono funzioni che non possono essere calcolatecon una MdT (ovvero funzioni non T-calcolabili). In particolare dimostreremo lanon esistenza per un predicato ovvero una funzione con valore vero o falso.

Sia DM la descrizione di una MdT M. Per x ∈ Σ∗ la funzione:

h(DM, x) =

{

1 se M con input x termina

0 se M con input x non termina

Tale funzione è chiamata predicato della terminazione. Il predicato dellaterminazione non è T-calcolabile.

Page 54: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 54/69

Funzione calcolabile

Se altrimenti consideriamo la funzione parziale:

h(DM, x) =

{

1 se M con input x termina

indefinito altrimenti

Tale funzione è è T-calcolabile. E’ facile dimostrare che tale funzione esistebasta considerare una MdT universale che prende in input la descrizione di unaqualsiasi MdT e un parametro x. Tale MdT si comporta come la MdT univesaleche termina con il valore calcolato e quindi produce 1 altrimenti non termina.

Page 55: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 55/69

Dimostrazione

Supponiamo che il predicato della terminazione sia T-calcolabile, supponiamocioè che esista una MdT H che calcola la funzione h.

Mostriamo che tale ipotesi conduce ad un assurdo e pertanto l’ipotesi stessa èfalsa.

Se la macchina H esistesse potremmo realizzare una semplice variante H′ checonsentirebbe di calcolare il predicato:

h′(DM) =

{

1 se M con input DM termina

0 se M con input DM non termina

H′ non è altro che la composizione di due macchine: la prima con input DM,fornisce in output DMbDM, la seconda è una macchina H che prende in inputla stringa DMbDM e calcola il predicato della terminazione. La seconda MdT èquella che abbiamo supposto esistere

Page 56: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 56/69

Dimostrazione

In altre parole H′ è la MdT che verifica se una MdT M termina quando le vienefornita in input la propria descrizione DM

Utilizzando la macchina H′ possiamo ora costruire una nuova macchina

h′′(DM) =

{

0 se h′(DM) = 0

indefinito se h′(DM) = 1

H′′ che prende in input DM e dà in output 0 se h′(DM) = 0 (cioè se H′ coninput DM da output 0), e se invece h′(DM) = 1 (cioè se H′ con input DM daoutput 1), allora H′′ si mette a ciclare

In pratica la nuova MdT H′′ funziona al contrario di H′ ovvero termina quandoH′ non termina e non termina quando H′ termina

Page 57: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 57/69

Contraddizione

Cosa accade se diamo in input ad H′′ la sua descrizione DH′′? Ovvero

h′′(DH′′) =

{

0 se h′(DH′′) = 0

indefinito se h′(DH′′) = 1

h′′(DH′′) = indefinita ⇐ h′(DH′′) = 1 ⇒ H′′ ↓⇒ h′′(H′′) = 0H′′ cicla se H′ con input DH′′ da in output 1, ma cià accade se H′′ con inputDH′′ termina: abbiamo quindi una contraddizione.

h′′(DH′′) = 0 ⇐ h′(DH′′) = 0 ⇒ H′′ ↑⇒ h′′(H′′) = indefinitaH′′ termina se H′ con input DH′′ da in output 0, ma cià accade se H′′ con inputDH′′ non termina: anche in questo caso abbiamo una contraddizione.

In ogni caso abbiamo una contraddizione quindi la MdT H non può esistere edil predicato della terminazione non è T-calcolabile.

Page 58: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 58/69

MdT e linguaggi

Data l’equivalenza tra MdT e linguaggi di programmazione, è chiaro che ilproblema della terminazione è indecidibile non solo per le MdT ma anche per iprogramma di qualunque linguaggio di programmazione.

Ovvero non esiste alcun programma che dato un programma e i suoi datidecide se quel programma sui quei dati terminerà o no.

Ad esempio non può esistere un programma in linguaggio C che prenda ininput un altro programma in linguaggio C, π, e i suoi dati x1, x2, . . . , xn e decidase π con input x1, x2, . . . , xn termina o meno

Page 59: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 59/69

Terminazione e decidibilità

Inoltre si può mostrare che molte altre funzioni non sono calcolabili e molti altriproblemi non sono decidibili come conseguenza dell’indecidibilità del problemadella terminazione

Esempi di problemi di programmazione che sono indecidibili▲ è indecidibile se un programma π con input x1, x2, . . . , xn chiama una data

procedura P

▲ è indecidibile se due MdT sono equivalenti▲ è indecidibile se un programma π è corretto

Page 60: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 60/69

Indecidibilità della chiamata di procedura

Ad esempio è indecidibile se un programma π con input x1, x2, . . . , xn chiamauna data procedura P .π π′′

Dec P. . .

. . .

. . .

Call P

Dec P

π′

Call P

Se supponiamo siamo in grado di decidere dato un programma π di sapere severrà chiamata la procedura P dopo essere stata dichiarata allora potremmodefinire un programma π′′ che contiene all’interno il programma π′ precedutodalla dichiarazione di P e seguito dalla sua chiamata. Quindi se siamo in gradodi decidere se verrà chiamato P possiamo anche sapere se il programma π′

termina.

Page 61: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 61/69

Indecidibilità di equivalenza di MdT

Un altro importante problema è che date due MdT non è decidibile se sonoequivalenti. Ovvero dati due programmi se calcolano la stessa funzione.

Intuitivamente possiamo realizzare un numero non limitato di programmi checalcolano la stessa funzione semplicemente aggiungendo istruzioni inutili. Unaipotetica MdT data la descrizione di due MdT deve decidere se sonoequivalenti per qualsiasi input e per qualsiasi MdT da analizzare

Page 62: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 62/69

Indecidibilità della correttezza deiprogrammi

Non è possibile stabilire se data una MdT questa si comporti come noivorremmo per tutti i possibili input per cui è progettata. Ovvero è indecidibile seun determinato programma calcola esattamente una funzione determinata

Page 63: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 63/69

Indecidibilità sui linguaggi

Anche sui linguaggi vi sono importanti problemi indecidibili▲ è indecidibile se una grammatica di tipo 2 è ambigua▲ è indecidibile se due grammatiche di tipo 2 sono equivalenti

Sono problemi importanti perché i linguaggi di tipo 2 sono i linguaggi liberi dacontesto utilizzati per i linguaggi di programmazione. Sarebbe utile conoscerese data una grammatica, questa è ambigua perché in questo modo nonpotremmo utilizzarla per un linguaggio di programmazione (due alberi diderivazione diversi per la stessa stringa di terminali) perché non potremmoassociare univocamente semantica.

Oppure sapere se due grammatiche generano lo stesso linguaggio.

Non esiste programma che risolva questi due problemi

Page 64: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 64/69

Indecidibilità matematica

Un’equazione diofantea è un’equazione in più variabili a coefficienti interi. Adesempio

axnym + bxrys − czt = 0

E’ indecidibile se un’equazione diofantea ammette soluzioni intere

Page 65: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 65/69

Piccoli problemi

Il fatto che non si possa trovare un algoritmo che:▲ dato un programma e i relativi dati ci dica se termina o no▲ che dati due programma ci dica se calcolano lo stesso risultato▲ che dato un programma ci dica che è esente da errori▲ che date due grammatiche ci dica se sono equivalenti▲ che data una grammatica di dica se è ambiguanon significa che in casi particolari non si possa trovare. Possiamo sotto certecondizioni produrre programmi che rispondono alle suddette domande ma soloin particolari condizioni, non in generale.

Page 66: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 66/69

Esempi di problema limitato

Come esempio consideriamo l’equazione xn + yn = zn si vuole sapere seammette soluzioni intere (decimo problema di Fermat). Si è da poco dimostratoche ammettono soluzione intera per n = 2 e non ammettono soluzione interaper n 6= 2.

Questo è un caso particolare di equazione diofantea. Non siamo in grado didimostrare nulla per equazioni diofantee generiche.

Page 67: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 67/69

Indecidibilità dell’aritmetica

Usando questi metodi, Turing ha dimostrato l’indecidibilità dell’aritmetica,ovvero non è possibile realizzare un programma che prende una formulamatematica e decide se questa è un teorema o no.

La dimostrazione si basa sulla non decidibilità della terminazione delle MdT. Insostanza Turing ha associato ad ogni formula una MdT e la non terminazionedella MdT implica la non dimostrabilità della correttezza della formula.

Page 68: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 68/69

Sintesi sui linguaggi

Metodo Metodo Metodo Esempio Complessitàalgebrico generativo riconoscitivo

L0 generali MdT ricorsivamenteenumerabile

L1 monotone MdT limitata anbncn esponenziale

L2 serie di libere Automa a pila anbn quadratopotenze D e ND

L3 espressioni regolari NFA o DFA anbm lineareregolari

finiti espressioni banali DFA senza ab costanteregolari cilcicon + e .

Page 69: Macchina di Turing - Unicam di Turing.pdf4/4/2008 UNICAM - p. 3/69 Che cosa è una MdT Macchina di Turing (MdT) è un automa che può leggere e scrivere su un nastro bidirezionale

4/4/2008 UNICAM - p. 69/69

Decidibilità e non decidibilità

L(G) è vuoto ? L(G1) = L(G2) ? L(G) èfinito ?, infinito ? ambiguo ?

L0 non decidibile non decidibile non decidibile

L1 non decidibile non decidibile non decidibile

L2 decidibile non decidibile non decidibile

L3 decidibile decidibile decidibile

finito decidibile decidibile decidibile