MACCHINE DI TURING La macchina di Turing è un automa con testina di scrittura/lettura su un nastro "potenzialmente" illimitato. In ogni istante la macchina si trova in uno stato appartenente ad un insieme fnito di stati e legge un carattere sul nastro. La funzione di transizione in modo deterministico, sovrascrive il carattere, fa spostare la testina in una direzione o nell'altra, fa cambiare lo stato. Le macchine di Turing: • forniscono una defnizione formale del concetto astratto di algoritmo (altre defnizioni sono state proposte e tutte quelle ragionevoli sono state dimostrate equivalenti tra di loro.) Anche i linguaggi di programmazione sono formulazioni ragionevoli ma hanno istruzioni troppo complesse e poco adatte a dimostrare la non esistenza di algoritmi per certi problemi. • consentono di accettare (o di fare un riconoscimento parziale di) tutti i linguaggi di tipo 0; • sono in grado di esprimere ogni procedimento di calcolo ("tesi di ChurchTuring"). Hilbert (1900) formula 23 problemi matematici per il XX secolo. Tra di essi: • l'aritmetica è consistente? (siamo certi che non sia possibile dimostrare un'asserzione e la sua negazione?) • l'aritmetica è completa? (possiamo dimostrare ogni asserzione oppure la sua negazione?) • l'aritmetica è decidibile? (esiste un algoritmo che consente di decidere se un'asserzione è un teorema?) Decimo problema di Hilbert: esiste un algoritmo che sa decidere se una equazione polinomiale a coeffcienti interi in più variabili ha una soluzione intera oppure no? Nel 1970 Matiyasevich ha risolto in negativo questo problema. Kurt Gödel (1931) I seguenti 4 risultati sono di Gödel (da M. Machtey, P. Young, “An Introduction to the General Theory of Algorithms”): • • • • • Non dimostrabilità della consistenza: per ogni teoria consistente, almeno forte quanto l’aritmetica, la sua consistenza non può essere dimostrata all’interno della teoria. Incompletezza: ogni teoria consistente, almeno forte quanto l’aritmetica, ammette una sentenza S tale che nè S nè ~S può essere dimostrata nella teoria. Indecidibilità dei teoremi: per ogni teoria consistente, almeno forte quanto l’aritmetica, non esiste algoritmo per decidere se una sentenza è un teorema oppure no. Indecidibilità della verità: non esiste algoritmo per decidere se una sentenza dell’aritmetica è vera oppure no. Indecidibilità della validità logica (Teorema di Church): non esiste algoritmo per decidere se una sentenza matematica è vera in tutte le interpretazioni (cioè logicamente valida). Alan M. Turing (logico, matematico, 1912-1954) ha riformulato (1935-36) i risultati di Gödel sostituendo il linguaggio formale dell’aritmetica con il modello delle Macchine di Turing. Dimostra l'indecidibilità dell'aritmetica procedendo così: • defnisce il concetto di algoritmo introducendo la macchina che da lui prende il nome • mostra che il problema della terminazione di una macchina di Turing è formulabile come un’asserzione dell’aritmetica (mediante una Gödelizzazione). • mostra che la sua macchina non è in grado di risolvere il problema della terminazione di una generica macchina di Turing su un generico input che quindi è indecidibile. Ne segue che l'aritmetica stessa non è decidibile. Da allora, dopo l'introduzione dei calcolatori e di modelli di calcolo più "realistici" basati sul modello di Von Neumann, le macchine di Turing sono utilizzate: • per studiare algoritmi di riconoscimento di linguaggi formali • come modello elementare per defnire le funzioni calcolabili • per defnire concetti di complessità computazionale. Def. Macchina di Turing: M = < Γ, b, Q, q0, F, δ > Γ b Q q0 F δ alfabeto di simboli carattere speciale, spazio bianco (blank) insieme fnito di stati stato iniziale insieme di stati fnali funzione di transizione (parziale) δ: (Q-F) × (Γ∪{b}) → Q × (Γ∪{b}) × {d, s, i} d, s, i indicano spostamento a destra, a sinistra e immobilità della testina Γb = Γ∪{b} N.B. Il nastro, pur essendo infnito, ha un numero fnito di caratteri diversi da b. Es. (pag. 196-17): macchina che copia una parola di 0/1 a destra del primo blank (esempio di macchina che calcola f(x)=x). Es. macchina che entra in stati diversi su parole in L = { wwR | w∈{a,b}+} o fuori di L. Es. macchina che scrive 0/1 su parole in Lequal = {w#w | w∈{a,b}*} o fuori di Lequal. Modelli alternativi (su H. o B.) M = < ∑, Γ, Q, q0, qaccept, qreject, δ > (H). Il nastro è semi_infnito con alfabeto di input Σ e alfabeto di lavoro Γ che contiene, oltre a Σ, almeno altri due caratteri, b (blank) e ç (primo carattere del nastro). M non può modifcare ç, nè andare a sinistra di esso. Ha due soli stati fnali. (B). In questo modello ç non c'è ed M non si può mai scrivere b. Molte varianti di macchine di Turing (tutte computazionalmente equivalenti): • macchine a uno o più nastri • macchine deterministiche e non deterministiche Possono essere usate come riconoscitori per riconoscere linguaggi L⊆ Σ*, con Σ ⊆ Γ, oppure come trasduttori per calcolare funzioni f: Σ* → Σ* , con Σ ⊆ Γ. Confgurazioni, transizioni e computazioni Confgurazione di una macchina: stringa c = xqy appartenente al linguaggio: LΓ . Q . RΓ dove LΓ = Γ Γb*∪{ε}, mentre RΓ =Γb* Γ ∪ {ε} iniziale: quando x = ε, q = q0, y∈Γ*. fnale: quando q ∈ F Step (o passo o mossa o transizione): applicazione della funzione di transizione ad una confgurazione (|—): è relazione binaria tra due confgurazioni: ci |— ci+1 Computazione: sequenza, eventualmente infnita, di confgurazioni c0, c1,..., ci,... tali che: c0 |— c1 |— .... |— ci|—.... La chiusura rifessiva e transitiva di |— (indicata con |—*) è una relazione tra due confgurazioni c e c' , che esprime l'esistenza di una computazione che da c porta a c' tramite un numero fnito (eventualmente nullo) di passi. Una computazione infnita non ha confgurazioni fnali. Una computazione fnita c0, c1,..., cn e' massimale se non esiste una confgurazione c tale che cn |— c . Una computazione massimale si conclude o con una confgurazione fnale o con una confgurazione in cui non e' defnita la funzione di transizione. Computazione di accettazione è computazione massimale c0, c1,...., cn con c0 iniziale e cn fnale. Computazione di rifuto è computazione massimale c0, c1,...., c n con c0 iniziale e cn non fnale. Una stringa y ∈ Σ* ( Σ ⊆ Γ) è accettata (rifutata) se la computazione avente c0 = q0y è di accettazione (di rifuto). Convenzioni. Computazione di accettazione: responso affermativo Computazione di rifuto: responso negativo Computazione infnita: nessun responso Tesi di Church-Turing Ogni procedimento algoritmico espresso nell’ambito di un qualunque modello di calcolo è realizzabile mediante una macchina di Turing. RICONOSCIMENTO / ACCETTAZIONE DI LINGUAGGI Informalmente: • Una macchina di T. M riconosce (decide) un linguaggio L⊆Σ* se per ogni x∈Σ* M è in grado di stabilire se x∈L oppure no. • Una macchina di T. M accetta un linguaggio L⊆Σ* se per tutte e sole le x∈L M è in grado di stabilire l'appartenenza, ma se x∉L M non garantisce di stabilire la sua non appartenenza. Def. M = < Γ, b, Q, q0, F, δ > riconosce (decide) un linguaggio L⊆Σ* (con Σ⊆Γ) se per ogni x ∈ Σ* esiste una computazione massimale: • q0x |—* αqβ con α∈ LΓ , β∈ RΓ • x∈L ⇔ q∈F Non e' detto che una macchina di Turing possa sempre riconoscere un linguaggio. Def. M = < Σ, b, K, q0, F, δ > accetta un linguaggio L⊆Σ* (con Σ⊆Γ) se per tutte e sole le x∈L esiste una computazione massimale: • q0x |—* αqβ con α∈ LΓ , β∈ RΓ ,, q∈F Def. Un linguaggio è detto T-decidibile (decidibile secondo Turing) se esiste una macchina di Turing che lo riconosce. Def. Un linguaggio è detto T-semidecidibile (semidecidibile secondo Turing) se esiste una macchina di Turing che lo accetta. Per la tesi di Turing-Church possiamo parlare di linguaggio decidibile invece di Tdecidibile e di linguaggio semidecidibile invece di T-semidecidibile. Es. 1) MT che riconosce MT che accetta indefnitamente 2) MT che riconosce 3) MT che riconosce L = {wwR | w∈{a,b}+} L = {wwR | w∈{a,b}+} e per le stringhe non in L cicla Lequal = {w#w | w∈{a,b}*} Lmiddle = {x1y | x,y∈{a,b}* con |x|=|y|} Esercizio. 5.5 sul libro: modello con due soli stati fnali q y e qN per caratterizzare l’accettazione o il rifuto di una stringa. Esercizio. 5.6 sul libro: modello con un solo stato fnale qF ma con contenuti diversi del nastro (Y, N) al termine di una computazione di accettazione o di rifuto. (Basta marcare gli estremi) CALCOLO DI FUNZIONI Sia f : ∑*→∑* una funzione parziale (defnita su un sottoinsieme D di ∑* ) e sia Σ⊆Γ. Def. Una macchina di Turing calcola la funzione parziale f se per tutte e sole le x nel dominio D di defnizione di f esiste q∈F tale che: q0x|—* xbqf(x) N.B. Altra defnizione possibile: q0x|—* qf(x) Se f è una funzione a più argomenti la computazione richiesta è: q0x1b....bxn |—* x1b ....bxn bqf(x) Def. Una funzione (parziale) f per la quale esiste una macchina di Turing che la calcola è detta T-calcolabile (calcolabile secondo Turing). Per la tesi di Turing-Church possiamo parlare di funzione calcolabile invece di Tcalcolabile. I concetti di calcolabilità (di funzioni) e di decidibilità o semidecidibilità (di linguaggi, di predicati, di problemi decisionali) basati sulle macchine di Turing hanno, per la tesi di Turing-Church, una validità che travalica il modello stesso. La classe delle funzioni “intuitivamente” calcolabili coincide con la classe delle funzioni T-calcolabili. La classe dei linguaggi “intuitivamente” decidibili (semidecidibili) coincide con la classe dei linguaggi T-decidibili (T-semidecidibili). Esempi 1) MT che calcola f(x) = x per x ∈ {0,1}*. M = < {0,1}, b, Q, q0, {q6}, δ > 2) TM che calcola la funzione f(n) = n+1, con n rappresentato in base 1, 2, 10. 3) TM che calcola la funzione f(n, m) = n+m, con n ed m rappresentati in base 2 e separati dal simbolo b. MT multitraccia Il nastro è suddiviso in tracce. Su un nastro di h tracce la testina può leggere/scrivere h caratteri contemporaneamente. La corrispondenza tra una macchina con nastro suddiviso in tracce ed una normale MT è immediata; basta osservare che se sulle tracce sono usati gli alfabeti Γ1, Γ2,...., Γh, una MT corrispondente ha un alfabeto Γ con Γ = Γ1 x Γ2x....x Γh. MT MULTINASTRO (MTM) Def. Macchina di Turing a k nastri: Z0 δk M = < Γ, b, Z0, Q, q0, F, δk> carattere speciale, iniziale funzione di transizione (parziale) δk : (Q-F) × (Γb)k → Q × (Γb)k × {d, s, i}k Confgurazione: q#α1↑β1#α2↑β2#....#αk↑βk Confgurazione iniziale: q0#↑x #↑Z0#....#↑Z0 cioè l'input x sta sul primo nastro; gli altri contengono il solo carattere Z0 Su MT multinastro con nastro di input monodirezionale a sola lettura il simbolo Z0 si usa solo sui nastri di lavoro. Es. 1. MTM per riconoscere xcxR con x∈{a, b}*. 2 nastri: uno di input monodirezionale a sola lettura e uno di lavoro; durante la scansione di x, fno a c, x viene copiata sul nastro di lavoro (sostituendo a con A e b con B); durante la scansione di xR si confrontano i caratteri con quelli sul nastro di lavoro (la testina si muove a destra sul primo nastro, a sinistra sul secondo). q0 #↑xcxR #↑Z0 q0 per scandire x, q1 per scandire xR , q2 fnale copiatura: δ(q0 , a, Z0) = < q0 , a , A, d, d> δ(q0 , b, Z0) = < q0 , b, B, d, d> δq0 , a, b) = < q0 , a, A, d, d> δ(q0 , b, b) = < q0 , b, B, d, d> passaggio dalla copiatura alla verifca: δ(q0, c, b) = < q1, c, b, d, s > verifca positiva: δ(q1, a, A) = < q1, a, A, d, s> δ(q1, b, B) = < q1, b, B, d, s> confgurazione iniziale della MTM: 3 stati: accettazione: δ(q1, b, b) = < q2 , b, b, i, i> N.B. Scrivere anche il digramma di transizione. Esempio di computazione con input bacab: |— q0 #b↑acab#B↑b |— q0 #ba↑cab#BA↑b q0 #↑bacab#↑Z0 |— q1 #baca↑b#↑BA |— q1 #bacab↑b#↑bBA q1 #bac↑ab#B↑A q2 #bacab↑b#↑bBA |— |— Es. 2. MTM per riconoscere xxR con x∈{a,b}. 3 nastri: uno di input monodirezionale e due di lavoro: si copia tutta la stringa sui due nastri di lavoro (sostituendo a con A e b con B); poi si posiziona la testina del secondo (terzo) nastro sul primo (ultimo) carattere e si scandiscono i due nastri in senso contrario effettuando i confronti. confgurazione iniziale della MTM: q0 #↑w#↑Z0#↑Z0 copiatura : δ(q0 , a, Z0, Z0) = < q0 , a, A, A, d, d, d > δ(q0 , b, Z0, Z0) = < q0 , b, B, B, d, d, d > δ(q0 , a, b, b) = < q0 , a, A, A, d, d, d > δ(q0 , b, b, b) = < q0 , b, B, B, d, d, d > termine della copiatura: δ(q0, b, b, b) = < q0, b, b, b, i, s, s> riposizionamento della seconda testina: δ(q0 , b, A, A) = < q0 , b, A, A, i, s, i > δ(q0 , b, B, A) = < q0 , b, B, A, i, s, i > δ(q0 , b, A, B) = < q0 , b, A, B, i, s, i > δ(q0 , b, B, B) = < q0 , b, B, B, i, s, I > fne del riposizionamento della testina: δ(q0 , b, b, A) = < q1 , b, b, A, i, d, i > δ(q0 , b, b, B) = < q1 , b, b, B, i, d, i > verifca: δ(q1 , b, A, A) = < q1 , b, A, A, i, d, s > δ(q1 , b, B, B) = < q1 , b, B, B, i, d, s > δ(q1 , b, b, b) = < q2 , b, b, b, i , i, i > Lemma. - Se un linguaggio è decidibile è anche semidecidibile. - Se un linguaggio è decidibile anche il suo complemento è decidibile. - Se un linguaggio L è semidecidibile ed anche Lc è semidecidibile allora L ed Lc sono decidibili. (Per ogni stato qi di M e qj di Mc la macchina M' che decide L ha 2 nastri e stati qij1 e qij2 nei quali rispettivamente simula M sul primo nastro nello stato qi ed Mc sul secondo nastro nello stato qj). Equivalenza tra MTM e MT Teorema. Data una MTM M = < Γ, b, Q, q0, F, δk > a k nastri esiste una MT M' che simula t passi di M in O(t2) passi, usando un alfabeto di cardinalità O( (2 |Γ|)k ). Dim. Costruiamo una MT M' = < Γ' , b, Q', q0', F', δ' > con nastro suddiviso in 2k tracce che simula M. Le k tracce di posto pari di M' rappresentano i k nastri di M; sulle k tracce di posto dispari di M' con il carattere marcatore ↑ indichiamo la posizione delle testine di M sui suoi k nastri. Per simulare la funzione di transizione di M che è del tipo: δk(qi, σi1,..,σik) = < qj, σj1,.., σjk, zj1,..,zjk > l a δ' deve rintracciare le posizioni dei marcatori, scrivere e spostare i marcatori poi cambiare stato. Per rintracciare le posizioni dei marcatori, M' ricorda nei suoi stati le posizioni relative (s, d, i) delle k testine di M rispetto alla sua. Quindi per ogni passo di M, M' scorre la porzione del suo nastro dal marcatore più a sinistra fno a quello più a destra e poi ritorna. Durante questa doppia passata M' aggiorna i contenuti del suo nastro e simula un passo di M: nell'andata rileva i simboli dei nastri, nel ritorno simula i cambiamenti. Il numero di passi che esegue per ogni passo di M è proporzionale alla distanza (numero di caselle) tra i due marcatori più lontani. Dopo t passi due marcatori possono essersi allontanati di al più di 2t caselle; se M esegue t passi, M' ne esegue O(t2). Per ciò che riguarda la cardinalità di Γb' abbiamo da codifcare stringhe di 2k simboli così composte: 1 simbolo appartiene a Γ∪{b}; k-1 simboli appartengono a Γ∪{b, Z0}; k simboli appartengono a {b,↑}; quindi: |Γ b '| = (|Γ|+1)(| Γ|+2)k-1 2k = O(2k (| Γ|+2)k) MT NONDETERMINISTICHE (MTND) Def. Macchina di Turing non deterministica: M = < Γ, b, Q, q0, F, δN > δN funzione parziale di transizione: (Q-F)× Γb → P(Q × Γb × {d, s, i}) Def. Grado di non determinismo di una macchina M ν(M) = max |δN(qi, σj)| Una computazione di una macchina non deterministica può essere rappresentata con un albero di computazioni deterministiche dove i nodi rappresentano le confgurazioni, gli archi le transizioni. Il grado di non determinismo coincide con il massimo numero di fgli di un nodo di tale albero. Def. Una MTND accetta una stringa x se esiste una computazione di accettazione a partire dalla confg. c0 = q0x. Def. Una MTND rifuta una stringa x se tutte le computazioni, a partire dalla confg. c0 = q0x sono di rifuto. Oss. Una MTND può non dare un responso a partire dalla confg. c0 = q0x. Esempio. (Pag 216) MTDN che accetta stringhe su Γ={a, b} del tipo xyyz, con |y|≥2. Equivalenza tra MTND e MT Th. Data una MTND M con h nastri e grado di nondeterminismo d esiste una MT M' con h+2 nastri equivalente. Se M accetta una stringa x in t passi, M' la accetta in O(t dt) passi. Dim. Sia h = 1. M' visita l'albero di computazione di M in ampiezza (perchè non in profondità?). Per far questo si numerano da 1 a d gli elementi dell'insieme δN(q, σ), per ogni coppia q, σ. Così ogni computazione di M di s passi è in corrispondenza biunivoca con una sequenza di s cifre comprese tra 1 e d. M' ha 3 nastri: nastro 1: per contenere l'input nastro 2: per generare, in ordine lessicografco, sequenze di interi tra 1 e d nastro 3: per simulare la computazione di M indicata dalla sequenza di interi presente sul nastro 2 Comportamento di M' : M' genera sul nastro 2, in ordine lessicografco, sequenze di interi tra 1 e d, di lunghezza via via crescente, a partire dalla lunghezza s = 0, poi lunghezza s=1, ecc.; per ogni sequenza generata: - M' copia l'input dal nastro 1 sul nastro 3; - usa gli s numeri della sequenza per scegliere, ad ogni passo, la transizione di M da simulare tra le d possibili; per ogni numero della sequenza: - se corrisponde ad una transizione possibile la simula (e se M raggiunge una confgurazione fnale anche M' accetta), altrimenti l’esame della sequenza termina con esito negativo; Se su qualche foglia dell'albero di computazione di M c'e' uno stato fnale, allora M' lo raggiunge in tempo fnito altrimenti M' non raggiunge mai uno stato fnale. Dimostriamo che se M termina in t passi M' necessita di un numero di passi: t O(Σ s ds) = O(t dt) s=0 L’uguaglianza si dimostra come segue. Dal fatto che: t Σ ds = (dt+1-1)/(d-1) s=0 derivando entrambi i membri dell’uguaglianza rispetto a d si ottiene: t Σ s d s-1 = (tdt+1-(t+1)dt+1)/(d-1) 2 ≤ (tdt+1+1)/(d-1) 2 ≤ 4 (tdt+1+1)/d 2 = O(t dt-1)) s=1 poichè 4(d-1)2 ≥ d2 per d ≥ 2. Infne dal fatto che : t t Σ s ds = d Σ s ds-1 s=0 s=1 segue che t Σ s ds = O (t dt). s=0 NOTA BENE. Le MTND non sono più potenti delle MT. Una macchina non det. può "risolvere" un problema in tempo polinomiale rispetto alla lunghezza dell'input, mentre la simulazione effettuata da una macchina det. può richiedere tempo esponenziale. Problema aperto. Esiste una simulazione più effciente? E' possibile simulare una macchina di Turing non deterministica con una deterministica in tempo polinomiale? MT IN FORMA RIDOTTA Teorema. Per ogni MT M esiste una MT M' con nastro semi-infnito equivalente. Dim. M' utilizza un nastro a 3 tracce. Il nastro infnito viene piegato in due sulla 1° e 3° traccia. Sulla 2° traccia un simbolo ↑ o ↓ indica se la testina della macchina M si trova sulla parte semi-infnita sinistra o sulla parte semi-infnita destra. Un simbolo speciale segnala l’inizio del nastro. (sul libro c’è la simulazione dettagliata) Teorema. Per ogni MT M = < Γ, b, Q, q0, F, δ > esiste una MT equivalente M '= < Γ', b, Q', q0', F', δ' > con | Γ'b | = 2. Dim. I caratteri di Γb vengono codifcati con i 2 caratteri di Γ'b . (vedere es. sul libro) LINGUAGGIO DI TIPO 0 <=> ACCETTATO DA MT Teorema. Un linguaggio L è di Tipo 0 se e solo se è accettato da una MT. Dim. i) Tipo 0 -> accettato da MT (già vista una dimostrazione basata su tesi di Church) Mostriamo come, dato un linguaggio L, generato da una grammatica G di tipo 0, possiamo defnire una MT che lo accetta. Per semplifcare utilizziamo una MTND M con 3 nastri ma sappiamo che esiste una MT M' ad un solo nastro che può simulare M. I 3 nastri vengono utilizzati nel seguente modo: - N1 contiene la stringa x che deve essere esaminata, - N2 contiene le forme di frase che via via vengono derivate da S e che devono essere confrontate con la stringa x. - N3 è di lavoro Inizialmente su N2 c’è la forma di frase S. Poi, ad ogni passo, in modo non deterministico, M applica alla forma di frase φ presente su N2 una possibile produzione e rimpiazza, aiutandosi con il terzo nastro, la forma di frase φ con una nuova forma di frase φ'. Poi verifca, naturalmente solo dopo aver applicato una produzione che ha nel lato destro solo simboli terminali, se φ' coincide con x ed in caso positivo M accetta x. ii) accettato da MT -> Tipo 0 Sia M una MT con alfabeto di nastro Γb , che accetta un linguaggio L ⊆ ∑*⊆ Γ*. Mostriamo come si può costruire una grammatica G di Tipo 0 che genera L. Se M accetta L vuol dire che, per tutte e sole le x ∈ L, essa realizza una computazione q0x |—* aqb, con q∈F (per semplicità supponiamo che esista un solo qF ∈F). In corrispondenza della macchina M defniamo la grammatica G così. Il suo alfabeto non terminale è costituito dai simboli ausiliari A 1, A2, A3, A4, A5, da simboli corrispondenti agli stati di M e da simboli che rappresentano il contenuto di due piste [.] : una superiore che contiene caratteri di Σ ∪ {b}, una inferiore che contiene caratteri di Γ ∪ {b}. La grammatica opera nel seguente modo: 1. introduce lo stato iniziale 2. genera una parola di Σ* sulle due piste 3. genera un numero arbitrario di b a destra e a sinistra di x sulle piste 4. simula M sulla pista inferiore 5. verifca che la pista inferiore sia una confgurazione fnale e, solo in tal caso, 6. trasforma la forma di frase ottenuta in una stringa di Σ*. Il resto a pag 242-43 del libro.
© Copyright 2024 Paperzz