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