Lez.3 - Ca` Foscari
Transcript
Lez.3 - Ca` Foscari
Note del corso di Calcolabilità e Linguaggi Formali - Lezione 3 Alberto Carraro 26 ottobre 2011 DAIS, Università Ca’ Foscari Venezia http://www.dsi.unive.it/~acarraro 1 Automi a a pila deterministici e non Tra gli automi a pila si distinguono due categorie: quelli deterministici (DPDA, abbreviazione di Deterministic Push-Down Automata) e quelli non-deterministici (NPDA, abbreviazione di Non-deterministic Push-Down Automata). I primi sono un caso particolare dei secondi. Definition 1 (NPDA). Un automa a pila non-deterministico (NPDA, in breve) è una settupla A = (Q, Σ, Γ, δ, q0 , Z0 , F ) dove – – – – – – – Q è l’insieme finito degli stati, Σ è l’alfabeto di input, Γ è l’alfabeto di pila, δ : Q × (Σ ∪ {}) × Γ → Pf (Q × Γ ∗ ) è la funzione di transizione, q0 ∈ Q è lo stato iniziale, Z0 ∈ Γ è il simbolo iniziale nella pila, F ⊆ Q è l’insieme degli stati finali. Nella Definizione 1 vediamo chiamato in causa un altro alfabeto Γ , che rappresenta i simboli che possono essere messi nella pila: si noti che Γ , in quanto alfabeto, è un insieme finito. Per evitare confusione si assume che Γ ∩ Σ = ∅; si utilizzano le ultime lettere maiuscole dell’alfabeto inglese X, Y, Z, . . . per indicare generici elementi di Γ mentre si utilizzano le prime lettere minuscole dell’alfabeto greco α, β, γ, . . . per indicare generici elementi di Γ ∗ . La prossima tappa è definire il linguaggio accettato da un automa a pila nondeterministico. A tal fine dobbiamo precisare cosa significa dire che una stringa è accettata da un automa. Al contrario di quanto fatto per gli automi finiti, nel caso dei PDA non si può definire una funzione di transizione estesa δ̂ : Q × Σ ∗ × Γ → Pf (Q × Γ ∗ ). Il motivo è che a causa transizioni con etichetta di input , ci potrebbero essere delle triple (q, w, X) tali per cui δ̂(q, w, X) è un sottoinsieme infinito di Q × Γ ∗ , dato che il contenuto della pila può crescere arbitrariamente. Per tale motivo in luogo della funzione di transizione estesa si definisce una relazione binaria ` su Q × Σ ∗ × Γ ∗ che svolge un compito analogo a quello della funzione di transizione estesa nel caso degli automi finiti. 2 A. Carraro Definition 2 (Relazione di transizione estesa). Dato un NPDA A = (Q, Σ, Γ, δ, q0 , Z0 , F ) definiamo la sua relazione di transizione estesa ` su Q × Σ ∗ × Γ ∗ come la più piccola che soddisfa le seguenti proprietà: – se (p, α) ∈ δ(q, , X), allora (q, x, Xβ) ` (p, x, αβ) – se (p, α) ∈ δ(q, a, X), allora (q, ax, Xβ) ` (p, x, αβ) dove x e a sono, rispettivamente, elementi qualunque di Σ ∗ e Σ. Una tripla (q, x, β) è detta una descrizione istantanea (o configurazione) dell’automa: q indica lo stato attuale, x una stringa di input da analizzare e β è il contenuto attuale della pila, dove il simbolo più a sinistra sta in testa alla pila e quello più a destra sta in fondo. La relazione ` spiega completamente il funzionamento di un NPDA. Infatti (q, ax, Xβ) ` (p, x, αβ) dice che se l’automa si trova nello stato q, in testa alla pila c’è il simbolo X, ed in input arriva una stringa che inizia con il simbolo a, allora l’automa – passa nello stato p, – sostituisce il simbolo X in testa alla pila con la stringa α, il cui simbolo più a sinistra diviene la nuova testa della pila, – scarta il simbolo a appena analizzato dall’input, cosicchè il prossimo simbolo in input sarà il primo della stringa x. Chiaramente la sequenza di azioni descritta qui sopra si può verificare solo se (p, α) ∈ δ(q, a, X); inoltre a partire dalla medesima configurazione (q, ax, Xβ) l’automa potrebbe compiere una transizione diversa ed ha tante scelte quanti sono gli elementi dell’insieme δ(q, a, X). Questo fenomeno spiega l’aggettivo “non-deterministico” inserito nel nome degli NPDA. Similmente una transizione (q, x, Xβ) ` (p, x, αβ) dice che se l’automa si trova nello stato q, in testa alla pila c’è il simbolo X, ed in input arriva una stringa che inizia con il simbolo a, allora l’automa – passa nello stato p, – sostituisce il simbolo X in testa alla pila con la stringa α, il cui simbolo più a sinistra diviene la nuova testa della pila, – il prossimo simbolo in input sarà il primo della stringa x. Chiaramente la sequenza di azioni descritta qui sopra si può verificare solo se (p, α) ∈ δ(q, , X). Indichiamo con `∗ la chiusura riflessiva e transitiva della relazione `, cioè la più piccola relazione riflessiva e transitiva contenente `. Definition 3 (Accettazione per stati finali). Diciamo che una stringa w ∈ Σ ∗ è accettata ( per stati finali) da un NPDA A sse esiste una configurazione della forma (p, , α) tale che (q0 , w, Z0 ) `∗ (p, , α) e p ∈ F . Definition 4 (Linguaggio di un NPDA). Sia A = (Q, Σ, Γ, δ, q0 , Z0 , F ) un NPDA. Il linguaggio accettato ( per stati finali) da A, indicato con L(A), è l’insieme delle stringhe accettate da A, ovvero L(A) = {w ∈ Σ ∗ : ∃p ∈ F.∃α ∈ Γ ∗ . (q0 , w, Z0 ) `∗ (p, , α)}. Note del corso di Calcolabilità e Linguaggi Formali - Lezione 3 3 Definition 5 (DPDA). Un automa a pila deterministico (DPDA, in breve) è una settupla A = (Q, Σ, Γ, δ, q0 , Z0 , F ) dove – – – – Q è l’insieme finito degli stati, Σ è l’alfabeto di input, Γ è l’alfabeto di pila, δ : Q×(Σ∪{})×Γ ,→ Q×Γ ∗ è la funzione (parziale) di transizione, soggetta alla condizione che se δ(q, a, X) è definita, allora δ(q, , X) è indefinita – q0 ∈ Q è lo stato iniziale, – Z0 ∈ Γ è il simbolo iniziale nella pila, – F ⊆ Q è l’insieme degli stati finali. Chiaramente vi sono degli NPDA che non sono dei DPDA. Viceversa, si può constatare direttamente che ogni DPDA è un NPDA in cui (1) ogni valore δ(q, a, X) della funzione di transizione è un insieme di cardinalità uno, (2) se δ(q, a, X) 6= ∅, allora δ(q, , X) = ∅. Grazie a quest’osservazione le Definizioni 2, 3, e 4 si estendono immediatamente anche ai DPDA. 1.1 Una rappresentazione grafica dei PDA Come nel caso degli FA, la descrizione formale di un automa può essere complicata da cogliere immediatamente. Vediamo ora brevemente come si possono disegnare dei PDA con una notazione che dia le stesse informazioni di quella formale, ma che sia più semplice da capire. Introdurremo questa notazione con due esempi, che speriamo diano l’idea di come applicare la notazione grafica ad ogni caso possibile. Example 1. Sia A = ({q0 , q1 , q2 }, {0, 1}, {Z0 , X0 , X1 }, δ, q0 , Z0 , {q2 }) con la funzione di transizione definita come segue: δ(q0 , 0, Z0 ) = {(q0 , X0 Z0 )}; δ(q0 , 0, X0 ) = {(q0 , X0 X0 )}; δ(q0 , 0, X1 ) = {(q0 , X0 X1 )}; δ(q0 , , Z0 ) = {(q1 , Z0 )}; δ(q1 , 0, X0 ) = {(q1 , )}; δ(q0 , 1, Z0 ) = {(q0 , X1 Z0 )}; δ(q0 , 1, X0 ) = {(q0 , X1 X0 )}; δ(q0 , 1, X1 ) = {(q0 , X1 X1 )}; δ(q0 , , X0 ) = {(q1 , X0 )}; δ(q0 , , X1 ) = {(q1 , X1 )}; δ(q1 , 1, X1 ) = {(q1 , )}; δ(q1 , , Z0 ) = {(q2 , Z0 )}. Graficamente l’automa si può rappresentare come segue: 1, X1 /X1 X1 1, X0 /X1 X0 1, Z0 /X1 Z0 89:; / ?>=< q0 E 0, X0 /X0 X0 0, X1 /X0 X1 0, Z0 /X0 Z0 , Z0 /Z0 , X0 /X0 , X1 /X1 0, X0 / , Z /Z 0 0 89:; 89:; 0123 7654 / ?>=< / ?>=< q1 q2 Y 1, X1 / 4 A. Carraro Example 2. Sia A = ({q0 , q1 , q2 }, {0, 1, c}, {Z0 , X0 , X1 }, δ, q0 , Z0 , {q2 }) con la funzione di transizione definita come segue: δ(q0 , 0, Z0 ) = {(q0 , X0 Z0 )}; δ(q0 , 0, X0 ) = {(q0 , X0 X0 )}; δ(q0 , 0, X1 ) = {(q0 , X0 X1 )}; δ(q0 , c, Z0 ) = {(q1 , Z0 )}; δ(q1 , 0, X0 ) = {(q1 , )}; δ(q0 , 1, Z0 ) = {(q0 , X1 Z0 )}; δ(q0 , 1, X0 ) = {(q0 , X1 X0 )}; δ(q0 , 1, X1 ) = {(q0 , X1 X1 )}; δ(q0 , c, X0 ) = {(q0 , X0 )}; δ(q0 , c, X1 ) = {(q1 , X1 )}; δ(q1 , 1, X1 ) = {(q1 , )}; δ(q1 , , Z0 ) = {(q2 , Z0 )}. Graficamente l’automa si può rappresentare come segue: 1, X1 /X1 X1 1, X0 /X1 X0 1, Z0 /X1 Z0 89:; / ?>=< q0 E c, Z0 /Z0 c, X0 /X0 c, X1 /X1 0, X0 / , Z /Z 0 0 89:; 89:; 0123 7654 / ?>=< / ?>=< q1 q2 Y 0, X0 /X0 X0 0, X1 /X0 X1 0, Z0 /X0 Z0 2 1, X1 / Accettazione per pila vuota Esiste un modo alternativo di definire il linguaggio accettato da un NPDA. Lo vediamo nella prossima definizione. Definition 6. Sia A = (Q, Σ, Γ, δ, q0 , Z0 , F ) un NPDA. Il linguaggio accettato ( per pila vuota) da A è l’insieme N (A) = {w ∈ Σ ∗ : ∃p ∈ Q. (q0 , w, Z0 ) `∗ (p, , )}. Si noti la differenza rispetto alla Definizione 4. Non si richiede più di arrivare in uno stato finale, ma piuttosto di vuotare la pila. È naturale a questo punto domandarsi quale sia il rapporto tra N (A) ed L(A) ed in generale come siano correlati i due criteri di accettazione. Le risposte sono le seguenti: – i due linguaggi N (A) ed L(A) non sono necessariamente uguali, ma – i due criteri di accettazione sono equivalenti, nel senso dei seguenti Teoremi 1 e 2. Theorem 1. Sia A = (QA , Σ, Γ, δA , q0 , Z0 , FA ) un PDA e sia L = N (A). Allora esiste un PDA B tale che L(B) = L. Proof. L’idea è di costruire un nuovo automa a partire da A nel modo seguente. Prendiamo due nuovi stati q00 , qf 6∈ QA e un nuovo simbolo di pila Z00 6∈ Γ . Gli stati q00 e qf saranno, rispettivamente, il nuovo stato iniziale e finale, ed il simbolo Z00 sarà il nuovo simbolo iniziale di pila. Creiamo un nuovo automa B come segue: Note del corso di Calcolabilità e Linguaggi Formali - Lezione 3 5 , Z00 / GFED / @ABC q0 0 , Z00 /Z0 Z00 89:; / ?>=< A & , Z00 / G?>=< 89:; FED / @ABC qf Nel disegno qui sopra il cerchio contenente A rappresenta l’intero disegno dell’automa A. L’arco uscente da q00 che punta a A rappresenta un arco che entra in q0 , il vecchio stato iniziale. Definiamo G = {p ∈ QA : ∃r ∈ Q.∃w ∈ Σ ∗ . (q0 , w, Z0 ) `∗ (p, , )}. L’arco entrante in qf ed uscente da A indica un insieme di archi uscenti da ogni stato nell’insieme G. Più precisamente se chiamiamo δB la funzione di transizione di B, allora δB estende δA ed inoltre – δB (q00 , , Z00 ) = {(q0 , Z0 Z00 )}, – δB (q0 , , Z00 ) = {(qf , )}, – per ogni p ∈ G si ha la transizione δB (p, , Z00 ) = {(qf , )}. A questo punto non è difficile verificare che ∃p ∈ QA . (q0 , w, Z0 ) `∗A (p, , ) sse (q00 , w, Z00 ) `∗B (qf , , ) e pertanto N (A) = L(B). t u Theorem 2. Sia A = (Q, Σ, Γ, δ, q0 , Z0 , F ) un PDA e sia L = L(A). Allora esiste un PDA B tale che N (B) = L. Proof. L’idea è di costruire un nuovo automa a partire da A nel modo seguente. Prendiamo due nuovi stati q00 , q 0 6∈ Q e un nuovo simbolo di pila Z00 6∈ Γ . Lo stato q00 sarà il nuovo stato iniziale, ed il simbolo Z00 sarà il nuovo simbolo iniziale di pila. Creiamo un nuovo automa B come segue: GFED / @ABC q00 , Z00 /Z0 Z00 89:; / ?>=< A , ?/ G@ABC / FED q0 j , ?/ Ancora una volta il cerchio contenente A rappresenta l’intero disegno dell’automa A. L’arco uscente da q00 entra in q0 , il vecchio stato iniziale mentre l’arco entrante in q 0 che non è un cappio indica un insieme di archi uscenti da ogni stato finale di A: l’etichetta “, ?/” sta ad indicare che su ogni arco uscente da un o stato finale di A apponiamo l’etichetta , X/, per ogni possibile simbolo X di pila. Più precisamente se chiamiamo δB la funzione di transizione di B, allora δB estende δA e – δB (q00 , , Z00 ) = {(q0 , Z0 Z00 )} e – per ogni stato finale p ∈ FA ed ogni simbolo X ∈ Γ ∪{Z00 } si ha la transizione δB (p, , X) = {(q 0 , )}. A questo punto non è difficile verificare che ∃p ∈ FA . (q0 , w, Z0 ) `∗A (p, , ) e pertanto L(A) = N (B). sse (q00 , w, Z00 ) `∗B (q 0 , , ) t u 6 3 A. Carraro Linguaggi liberi dal contesto Definition 7 (Linguaggio libero dal contesto). Un linguaggio L è libero dal contesto sse esiste un NPDA A tale che L = L(A). Indichiamo con CFL la classe dei linguaggi liberi dal contesto. Ci si può legittimamente porre la questione se, come nel caso degli automi finiti, nella Definizione 7 non si possa equivalentemente richiedere l’esistenza di un DPDA A tale che L = L(A). Abbiamo osservato che la classe degli NPDA contiene propriamente quella dei DPDA. Fino a qui la situazione è analoga al contesto degli automi finiti. Tuttavia in questa sezione dimostreremo che le due classi non hanno la stessa potenza, ovvero che la classe dei linguaggi accettati dagli NPDA include propriamente quella dei linguaggi accettati dai DPDA, in contrasto con ciò che accade nel contesto degli automi finiti. Dimostrare l’inclusione è banale: se L è un linguaggio tale che esiste un DPDA A per cui L = L(A), allora esiste anche un NPDA B tale che L = L(B). 3.1 Linguaggi di NPDA, DPDA e DFA a confronto Rimane da esibire un linguaggio accettato da un NPDA che non sia il linguaggio accettato da alcun DPDA. Questo viene fatto nella Proposizione 1 che segue. Proposition 1. Sia L = {wwR : w ∈ {0, 1}∗ }. Allora (i) esiste un NPDA A tale che L = L(A); (ii) non esiste alcun DPDA B tale che L = L(B). Proof. (i) Basta prendere per A l’automa dell’Esempio 1. (ii) Non daremo una dimostrazione formale e precisa, ma diamo l’intuizione che porta ad essa. Essensialmente un automa che riconosce tutte e sole le stringe di L deve implementare un meccanismo che memorizzi stringhe arbitrariamente lunghe e sia poi in grado di ripercorrerle all’indietro. Per fare ciò vi sarà uno stato dell’automa in cui avviene il “cambio di direzione”. Il punto è che siccome il processo di riconoscimento “in avanti” può protrarsi abitrariamente a lungo, si dovranno lo stato dell’automa da cui può partire il cambio di direzione deve anche permettere, a parità di condizioni, di continuare il riconoscimento in avanti. t u In seguito alla Proposizione 1, è evidente che la classe degli automi a pila deterministici è strettamente meno potente di quella degli automi a pila nondeterministici. Definition 8 (Linguaggio deterministicamente libero dal contesto). Un linguaggio L è deterministicamente libero dal contesto sse esiste un DPDA A tale che L = L(A). Note del corso di Calcolabilità e Linguaggi Formali - Lezione 3 7 Indichiamo con dCFL la classe dei linguaggi deterministicamente liberi dal contesto. Per quanto detto sopra quindi dCFL è strettamente contenuta in CFL. Ora poniamo a confronto le classi dCFL e REG. Proposition 2. Sia L = {wcwR : w ∈ {0, 1}∗ }. Allora (i) esiste un DPDA A tale che L = L(A); (ii) non esiste alcun DFA B tale che L = L(B). Proof. (i) Basta prendere per A l’automa dell’Esempio 2. (ii) Applichiamo il Pumping Lemma tipo 3. Sia n un numero naturale ≥ 1 e consideriamo la stringa w = 0n c0n . Siano u, v, z tre stringhe tali che w = uvz. Allora abbiamo le seguenti possibilità: (1) v = 0h , con 1 ≤ h ≤ n; (2) v = 0m c0h , con 0 ≤ m, h ≤ n. A questo punto si vede immediatamente che uv k z 6∈ L, per ogni k ≥ 0. Il fatto che il Pumping Lemma tipo 3 non è soddisfatto implica che L non può essere regolare. t u Proposition 3. Sia A un DFA. Allora esiste un DPDA B tale che L(A) = L(B). Proof. Sia A = (QA , Σ, δA , q0 , FA ) un DFA. Definiamo un PDA B = (QB , Σ, Γ, δB , q0 , Z0 , FB ) come segue: – – – – QB = QA , Γ = {Z0 }, FB = FA , δB (q, a, Z0 ) = {(δA (q, a), Z0 )}. t u Le Proposizioni 2 e 3 insieme dimostrano che REG è strettamente contenuta in dCFL, come recita il seguente teorema. Theorem 3. Ogni linguaggio regolare è deterministicamente libero dal contesto. Proof. Sia L un linguaggio regolare. Allora esiste un DFA A tale che L = L(A) e quindi per la Proposizione 3 esiste un DPDA B tale che L = L(B). t u