7. Automi a Pila e Grammatiche Libere

Documenti analoghi
a cura di Luca Cabibbo e Walter Didimo

Forme Normali. Forma normale di Chomsky. E caratterizzata da regole di due tipi. A! BC dove A, B, C $ V N A! a con a $ V T. Forma normale di Greibach

Parte n.4 Linguaggi: Gerarchia ed Operazioni

LINGUAGGI CONTEXT FREE. Lezione Lezione

Forma Normale di Chomsky

Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm

Automi e Linguaggi Formali Automi a stack (Pushdown automata)

Proprietà dei linguaggi non contestuali

Quiz sui linguaggi CF

Esempio stringhe palindrome 1

Le grammatiche formali

Espressività e limitazioni delle grammatiche regolari

Quiz sui linguaggi regolari

Automi a Pila e Grammatiche Libere dal Contesto. Automi a Pila e Grammatiche Libere dal Contesto

Informatica teorica Lez. n 7 Macchine di Turing. Macchine di Turing. Prof. Giorgio Ausiello Università di Roma La Sapienza

Automa deterministico con prospezione 1. < {q}, Σ, Σ V, δ, q, S, Φ > δ(a, X) = α R. se a Gui(X α) senza spostamento della testina.

Esercizi di Informatica Teorica

Equivalenza di PDA e CFG. Equivalenza di PDA e CFG

Informatica Teorica. linguaggi non contestuali

Pumping lemma per i linguaggi Context-free

controllo stringa a a b a b b c c b a b x y z pila di memoria

Linguaggi Regolari e Linguaggi Liberi

Dispense del corso di Linguaggi di programmazione e laboratorio Linguaggi formali(versione non definitiva con diversi refusi) Francesco Sisini

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1

PROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica G=(V n,v t

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 3

Sommario Codifica dei dati Macchina Astratta Definizioni Esempi

Espressioni Regolari

Fondamenti di Informatica per la Sicurezza a.a. 2008/09. Automi. Stefano Ferrari. Unautomaastatifinitièunmodellomatematico caratterizzato da:

Proprieta dei linguaggi liberi da contesto. Proprieta dei linguaggi liberi da contesto

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Automi a pila. Automi a pila

Corso di Linguaggi di Programmazione + Laboratorio Docente: Marco de Gemmis

RICHIAMI E COMPLEMENTI SU LINGUAGGI FORMALI E AUTOMI

AUTOMI A PILA. M.P. Schutzenberger

Macchine di TURING. Alan Mathison Turing ( )

Proprietà dei linguaggi regolari

Linguaggi Regolari e Linguaggi Liberi

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Fondamenti d Informatica: lavoriamo con le grammatiche. Barbara Re, Phd

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione

Aniello Murano Automi e Pushdown

Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari

Fondamenti di informatica per la sicurezza anno accademico docente: Stefano Ferrari

Linguaggi e Grammatiche Liberi da Contesto

Costruzione di espressioni regolari 4

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29

Ma il programma in Fig. 8.2 del libro? Stampa hello, world, dato un input n se e solo se l equazione

Linguaggi e Traduttori: Analisi lessicale

Corso di Linguaggi e Traduttori 1 AA GRAMMATICHE

Definizione di Grammatica

Corso di Laurea Magistrale in Ingegneria Informatica A.A Linguaggi Formali e Compilatori. Automi. Giacomo PISCITELLI

Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 2

Definire tramite una grammatica ad attributi il

GRAMMATICHE LIBERE DAL CONTESTO

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto

L algoritmo per la classificazione delle superfici topologiche connesse e compatte

Grammatiche. Rosario Culmone, Luca Tesei. 20/11/2006 UNICAM - p. 1/49

Corso di Laurea Magistrale in Ingegneria Informatica A.A Linguaggi Formali e Compilatori. I linguaggi formali. Giacomo PISCITELLI

I metodi formali dell Analisi Lessicale: Le Espressioni Regolar

Nozioni Preliminari e Terminologia. Alfabeti Stringhe Linguaggi

Le Macchine di Turing

Linguaggi formali e compilazione

Concetti di base sugli automi e sui linguaggi formali

Fondamenti di Informatica 2

Metodo LALR. Tabelle LALR. Metodo LALR. Idea. Idea. Idea. Costruzione delle tabelle LALR

MODULO 04 ELEMENTI DI TEORIA DEI LINGUAGGI FORMALI

Parser Bottom UP. Giuseppe Morelli

Teoria della Calcolabilità!

PROLOG E ANALISI SINTATTICA DEI LINGUAGGI

Parole note, nuovi significati: linguaggio, determinismo e infinito

Espressioni regolari

Grammatiche context-free

Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd

La tesi di Church-Turing

Proprieta dei Linguaggi Regolari. Proprieta dei Linguaggi Regolari

Presentazioni di gruppi: generatori e relazioni

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

Turing cercò di fornire una risposta matematica al problema CHE COSA SIGNIFICA CALCOLARE?

Turing e la nascita dell'algoritmica Fabrizio luccio. Fibonacci Liber Abaci 1202

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

Linguaggi formali e compilazione

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1

Spazi Vettoriali ed Applicazioni Lineari

AUTOMA A STATI FINITI

ELEMENTI DI PROGRAMMAZIONE a.a. 2013/14 UNA GERARCHIA DI MACCHINE

Macchina di Turing ... !!... !!! a b b! b a! Nastro di Input. testina. s t q i. s r. Unità di Controllo q j S / D / F

Responsabilidade Civil do Médico no Tocante à Culpa Médica e à Liquidação dos Danos

Turing, i nastri e le macchine

Dispensa 2. Data una grammatica context free esistono tre metodi diversi per costruirne la parsing table per un parser LR:

Automi. Rosario Culmone, Luca Tesei. 20/10/2009 UNICAM - p. 1/55

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n

Sistemi compatibili (Il metodo di Fourier-Motzkin) Claudio Arbib Università degli Studi di L Aquila

Espressioni regolari descrivono i linguaggi regolari. Un FA (NFA o DFA) è un metodo per costruire una macchina che riconosce linguaggi regolari.

Linguaggi formali e compilatori

Transcript:

(fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari 20 aprile 2016

1 Automi a Pila Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi 2 Teorema delle

Automi con Memoria Automi a Pila Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi Per riconoscere linguaggi superiori rispetto a quelli di L FSL occorrono altri strumenti più potenti: Dato un alfabeto finito X di ingresso: nastro di ingresso: contiene i simboli dell alfabeto di ingresso X ; su un simbolo insiste una testina di lettura memoria ausiliaria: ha capacità virtualmente illimitata ed un proprio alfabeto di memoria (o di lavoro) Se l organizzazione della memoria è uno stack, l automa risultante si definirà automa a pila (o automa push-down, PDA) unità di controllo: controlla le transizioni dell automa, in base al contenuto della memoria e del simbolo letto dalla testina sul nastro.

Modello di PDA Automi a Pila Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi nastro di ingresso a a a a a a b b b b b b testina di lettura unità di controllo a stati finiti q 0 q 1... q n A S memoria ausiliaria

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi Un automa a pila non deterministico è una n-pla: M = (Q, X, Γ, δ, q 0, Z 0, F ) Q insieme finito e non vuoto degli stati X insieme finito e non vuoto detto alfabeto di ingresso Γ insieme finito e non vuoto detto alfabeto della pila δ funzione di transizione: δ : Q (X λ) Γ (Q Γ ) scritta anche come (q, σ) δ(q, x, Z) ovvero (q, x, Z, q, σ) q 0 Q è lo stato iniziale Z 0 Γ è il simbolo iniziale della pila F Q è l insieme degli stati finali

Descrizioni Istantanee Automi a Pila Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi Una descrizione istantanea (ID) per un PDA è una terna (q, w, σ) Q X Γ q Q è lo stato corrente dell unità di controllo w = x 1 x 2 x n X è la sottostringa della stringa sul nastro ancora da esaminare (testina posizionata su x 1 ) σ = Z 1 Z 2 Z m è il contenuto della pila con Z 1 in cima e Z m al fondo Servono a descrivere lo stato globale di un PDA in ogni istante. descrizione iniziale (q 0, w, Z 0 ) descrizione finale (q, λ, σ) con q F, σ Γ

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi Sia M nello stato q, sia x letto dalla testina e A in cima alla pila: 1 se δ contiene (q, x, A, q, A 1 A k ) ossia se (q, A 1 A k ) δ(q, x, A) M può operare la transizione: (q, xw, Aσ) = (q, w, A 1 A k σ) 2 se δ è descritta dalla n-pla (q, λ, A, q, A 1 A k ) ossia se (q, A 1 A k ) δ(q, λ, A) allora la sua esecuzione può provocare la transizione: (q, w, Aσ) = (q, w, A 1 A k σ) = è la chiusura riflessiva e transitiva dell operatore = Con ID 1 = ID 2 si indica la pssibilità di transitare dalla descrizione ID 1 alla ID 2 in un numero finito (anche nullo) di passi

Condizioni di Accettazione Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi w X è accettata dal PDA M in condizione di stato finale sse: (q 0, w, Z 0 ) = (q, λ, σ) q F e σ Γ linguaggio accettato da M in condizione di stato finale: T (M) = {w X (q 0, w, Z 0 ) = (q, λ, σ) con q F e σ Γ } w X è accettata dal PDA M in condizione di pila vuota sse: (q 0, w, Z 0 ) = (q, λ, λ) q Q linguaggio accettato da M in condizione di pila vuota: T (M) = {w X (q 0, w, Z 0 ) = (q, λ, λ) con q Q}

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi Teorema. La classe dei linguaggi accettati da PDA in condizione di pila vuota è equivalente alla classe dei linguaggi accettati in condizione di stato finale Cenni sulla Dimostrazione. Se si raggiunge uno stato finale e la pila non è vuota occorre ripulire la pila dai simboli restanti senza cambiare stato Se la pila è vuota bisogna obbligare l automa a transitare in uno stato finale senza modificare la situazione della pila

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi Esempio 1. L = {w {a, b} w ha lo stesso numero di a e di b} G = (X, V, S, P) X = {a, b} V = {S} P = {S ab ba SS asb bsa} M = (Q, X, Γ, δ, q 0, Z 0, F ) Q = {q 0 } Γ = {Z 0, A, B} F = simbolo pila stato a b A q 0 AA λ B q 0 λ BB Z 0 q 0 AZ 0 BZ 0

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi Programma per PDA (è omesso lo stato q 0 ): 1 (a, Z 0, AZ 0 ) 2 (b, Z 0, BZ 0 ) 3 (a, A, AA) 4 (b, B, BB) 5 (a, B, λ) 6 (b, A, λ) 7 (λ, Z 0, λ) λ-regola per cancellare il fondo della pila

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi esempio di elaborazione stringa abba ID iniziale: (q 0, abba, Z 0 ) = (q 0, bba, AZ 0 ) = (q 0, ba, Z 0 ) = (q 0, a, BZ 0 ) = (q 0, λ, Z 0 ) = (q 0, λ, λ) la stringa è accettata. stringa aababa ID iniziale: (q 0, aababa, Z 0 ) = (q 0, ababa, AZ 0 ) = (q 0, baba, AAZ 0 ) = (q 0, aba, AZ 0 ) = (q 0, ba, AAZ 0 ) = (q 0, a, AZ 0 ) = (q 0, λ, AAZ 0 ) la stringa non è accettata.

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi Esempio 2. L = {wcw R w {a, b} } G = (X, V, S, P) X = {a, b, c} V = {S} P = {S c asa bsb} M = (Q, X, Γ, δ, q 0, Z 0, F ) Q = {q 0, q 1 } q 0 = lettura q 1 = match Γ = {Z 0, A, B} F =

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi simbolo pila stato a b c A q 0 (q 0, AA) (q 0, BA) (q 1, A) A q 1 (q 1, λ) - - B q 0 (q 0, AB) (q 0, BB) (q 1, B) B q 1 - (q 1, λ) - Z 0 q 0 (q 0, AZ 0 ) (q 0, BZ 0 ) (q 1, Z 0 ) Z 0 q 1 - - - Si osservi che c segnala il cambiamento di stato interno (centro della stringa palindroma) q 1 nel quale si comincia a svuotare la pila riempita nello stato q 0

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi 1 (q 0, a, Z 0, q 0, AZ 0 ) 2 (q 0, a, A, q 0, AA) 3 (q 0, a, B, q 0, AB) 4 (q 0, b, Z 0, q 0, BZ 0 ) 5 (q 0, b, A, q 0, BA) 6 (q 0, b, B, q 0, BB) 7 (q 0, c, Z 0, q 1, Z 0 ) 8 (q 0, c, A, q 1, A) 9 (q 0, c, B, q 1, B) 10 (q 1, a, A, q 1, λ) 11 (q 1, b, B, q 1, λ) 12 (q 1, λ, Z 0, q 1, λ) λ-regola Programma per PDA: la 1. la 2. e la 3. si possono riassumere con: (q 0, a, Z, q 0, AZ) Z Γ la 4. la 5. e la 6. si possono riassumere con: (q 0, b, Z, q 0, BZ) Z Γ la 7. la 8. e la 9. si possono riassumere con: (q 0, c, Z, q 1, Z) Z Γ

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi Esempio 3. L = {ww R w {a, b} } G = (X, V, S, P) X = {a, b} V = {S} P = {S λ asa bsb} M = (Q, X, Γ, δ, q 0, Z 0, F ) Q = {q 0, q 1 } q 0 = lettura q 1 = match Γ = {Z 0, A, B} F =

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi simbolo pila stato a b A q 0 {(q 0, AA), (q 1, λ)} (q 0, BA) A q 1 (q 1, λ) - B q 0 (q 0, AB) {(q 0, BB), (q 1, λ)} B q 1 - (q 1, λ) Z 0 q 0 (q 0, AZ 0 ) (q 0, BZ 0 ) Z 0 q 1 - -

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi Programma per PDA: 1 (q 0, a, Z, q 0, AZ) Z Γ 2 (q 0, b, Z, q 0, BZ) 3 (q 0, λ, Z, q 1, Z) (invece della λ-regola precedente) 4 (q 1, a, A, q 1, λ) 5 (q 1, b, B, q 1, λ) 6 (q 1, λ, Z 0, q 1, λ) automa non deterministico con due possibilità, trovandosi in q 0 leggere il prossimo simbolo dal nastro passare in q 1

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi esempio di elaborazione stringa abba (q 0, abba, Z 0 ) = (q 0, bba, AZ 0 ) = (q 0, ba, BAZ 0 ) 1 = (q 0, a, BBAZ 0 ) = (q 0, λ, ABBAZ 0 ). 5 = (q 1, a, AZ 0 ) = (q 1, λ, Z 0 ) = (q 1, λ, λ) la stringa è accettata.

Definizione Descrizioni Istantanee Condizioni di Accettazione per PDA Esempi Osservazioni. L 1 = {wcw R w {a, b} } accettato da un PDA deterministico L 2 = {ww R w {a, b} } accettato da un PDA non deterministico si può dimostrare che M PDA deterministico tale che T (M) = L 2 pertanto la classe dei linguaggi riconosciuta dai PDA deterministici è inclusa strettamente in quella dei linguaggi riconosciuti da PDA non determinisitici

Automi a Pila Teorema delle Esempio. G = (X, V, S, P) X = {0, 1, 2} V = {S, A, B} P = {S 0SAB 1, A 1A 1, B 2B 2} Data la forma delle produzioni, la lettura del primo simbolo (terminale) può essere usata in modo predittivo per decidere il resto della stringa che si dovrà derivare

Teorema delle Costruiamo l automa a pila equivalente: M = (Q, X, Γ, δ, q 0, Z 0, F ) Q = {q 0 } Γ = {S, A, B} con Z 0 = S F = top pila stato 0 1 2 S q 0 (q 0, SAB) (q 0, λ) A q 0 {(q 0, A), (q 0, λ)} B q 0 {(q 0, B), (q 0, λ)}

Teorema delle Teorema. Sia G = (X, V, S, P) una grammatica libera con produzioni del tipo A xα con x X, α V. Allora esiste un PDA M, tale che L(G) = T (M) con: Q = {q 0 } Γ = V Z 0 = S F = M = (Q, X, Γ, δ, q 0, Z 0, F ) A xα P : (q 0, α) δ(q 0, x, A) Occorre riportare le produzioni di una grammatica libera in una forma particolare per poter effettuare il passaggio ad un automa riconoscitore mediante questo teorema

Teorema delle Una grammatica libera G = (X, V, S, P) è in forma normale di Chomsky se ogni produzione è di uno dei tipi seguenti: 1 S λ 2 A BC con A V e 3 A a con A V, a X { B, C V \ {S} se S λ P B, C V altrimenti

Automi a Pila Teorema delle Una grammatica libera G = (X, V, S, P) è in forma normale priva di ricorsioni sinistre (NLR, No Left Recursion) se non ha produzioni del tipo: dove A V, v (V X ) A Av

Teorema delle Una grammatica libera G = (X, V, S, P) è in forma normale di Greibach (GNF, Greibach Normal Form) se ogni produzione è del tipo: 1 S λ 2 A xα dove A V, x X, α V

Passaggio alle Teorema delle Teorema. Sia G una grammatica libera. Allora esistono G i, i = 1, 2, 3 equivalenti a G (cioè L(G) = L(G i )) tali che G 1 è in forma normale di Chomsky G 2 è in forma normale di Greibach G 3 è in forma normale NLR priva di ricorsioni sinistre Dim. (costruttivamente) da G a G 1 CNF con l Algoritmo 1 da G 1 a G 2 GNF con l Algoritmo 2 da G 2 a G 3 NLR come passo dell Algoritmo 2

Teorema delle Esempio Conduttore Algoritmo 1. Grammatica libera G = (X, V, S, P) con X = {0, 1, 2} V = {S, A, B} P = {S 00A B 1, A 1AA 2, B 0}

Algoritmo 1 Automi a Pila Teorema delle input: G = (X, V, S, P) grammatica libera output: G 1 = (X, V, S, P) in CNF Passo 1. Conversione dei terminali che compaiono nelle parti destre di produzioni in non terminali Aggiunta delle produzioni appropriate per tali non terminali: S BBA B 1 A CAA 2 C 1 B 0

Teorema delle Passo 2. Suddivisione delle produzioni in cui le parti destre hanno più di due simboli non terminali S BD B 1 D BA A CE 2 E AA C 1 B 0

Teorema delle Passo 3. Sostituzione dei non terminali che costituiscono, da soli, parti destre di qualche produzione S BD 0 1 D BA A CE 2 E AA C 1 B 0

Teorema delle Esempio Conduttore Algoritmo 2. Si consideri la grammatica G = (X, V, S, P) con: X = {a, b, c, d} V = {S, A, B, C, D} P = { S AaB, A λ, B CD c, C BC d, D ab a }

Algoritmo 2 Automi a Pila Teorema delle input: G = (X, V, S, P) in CNF output: G 1 = (X, V, S, P) in GNF Passo 1. Eliminazione delle λ-regole Dividiamo V in due parti V 1 = {A V A = λ} e V 2 = V \ V 1 Algoritmo di calcolo di e(a) = vero sse A = λ: 1 A V : e(a) false 2 A λ P : e(a) true e si marcano (con ) le occorrenze di A che appaiono nelle parti destre delle produzioni di G 3 A α P si cancellano da α i non terminali marcati; se la parte destra diventa vuota allora e(a) true e si marcano tutte le A occorrenti in parti destre 4 se nel passo (3) qualche e(a) è mutato allora torna al passo (3) altrimenti termina

Teorema delle Nell esempio precedente costruiamo le nuove produzioni P 2 : quindi V 1 = {A} e() (1) (2) (3) (4) S 0 0 0 0 A 0 1 1 1 B 0 0 0 0 C 0 0 0 0 D 0 0 0 0

Teorema delle Per il lemma della stringa vuota: 1 S λ P 2 sse S = λ (quando λ L(G)) 2 Se A X 1 X 2... X r, r 1 allora apparterranno alla nuovo insieme P 2 le produzioni con: Y i = A Y 1 Y 2... Y r { Xi se X i X V 2 ; X i λ se X i V 1 (2 prod. per ogni scelta di X i ) P 2 = { S ab AaB, A λ, (si può eliminare) B CD c, C BC d, D ab a }

Teorema delle Passo 2. Eliminazione dei non terminali A inutili A non genera alcuna stringa terminale da S non deriva alcuna forma di frase contenente A Algoritmo per il calcolo di t(a) e s(a) t(a) = true sse A = w, w X A V s(a) = true sse S = αaβ, α, β (X V )

Teorema delle 1 A V : t(a) falso 2 se A x P, x X allora t(a) vero e si marcano con un apice t tutte le occorrenze di A in parti destre di produzioni di P 3 s(s) vero e si marcano con un apice s tutte le occorrenze di S in parti sinistre di produzioni di P 4 A α P se i non terminali di α sono marcati t allora si marcano con t tutte le A in parti destre di P se A è marcato s allora s(b) vero A αbβ e si marcano con s tutte le occorrenze di B in parti sinistre di P 5 se nel passo 4. qualcosa è mutato allora torna al passo 4. 6 A tale che t(a) = falso oppure s(a) = falso: Cancella da P tutte le produzioni in cui compare A.

Teorema delle t s t s t s t s t s S 0 0 0 1 1 1 1 1 1 1 A 0 0 0 0 0 1 0 1 0 1 B 0 0 1 0 1 1 1 1 1 1 C 0 0 1 0 1 0 1 1 1 1 D 0 0 1 0 1 0 1 1 1 1 S s ab t AaB t B s C t D t c C s B t C t d D s ab a essendo A il non terminale inutile, quindi S AaB può essere eliminata

Teorema delle Passo 3. Eliminazione dei non terminali ciclici A = + A Algoritmo per il calcolo di c(a) = {B A = + B} 1 A V : c(a) 2 A α P con α = βbγ e β = λ e γ = λ si pone c(a) c(a) {B} 3 A V se B c(a) allora c(a) c(a) c(b) 4 se al passo 3. è mutata la composizione di un insieme c( ) allora torna a 2. altrimenti STOP

Teorema delle Nel nostro caso: c( ) 1 2 3 S B C D quindi non vi sono non terminali ciclici

Teorema delle Passo 4. Eliminazione delle produzioni A B Algoritmo 1 Partizionare P in P 1 e P 2 ove P 2 = {A B P A, B V } 2 P 1 P 1 {A α B c(a) B α P 1 } NB: Si possono produrre NT ciclici. Nell esempio non vi sono tali produzioni

Teorema delle Passo 5. Eliminazione delle produzioni A Bβ Algoritmo Per ognuna di queste produzioni: 1 Se B α 1 α 2 α n P allora sostituisco A Bβ con A α 1 β α 2 β α n β 2 Se i [1, n]: α i inizia con un terminale allora termina per A Bβ altrimenti se α k = Cγ ripetere per A Cγβ NB: Si possono generare NT inutili

Teorema delle L algoritmo termina sse (ipotesi): non terminali inutili eliminati in precedenza grammatica priva di ricorsioni sinistre tali che A = Aα Sotto queste ipotesi le produzioni della grammatica risultante sono del tipo A xα con x X e α (X V ) Applico i passi fino al prossimo 6. (ed eventualmente anche i precedenti). A questo punto (passo 7.) si trasforma ogni terminale in α in un non terminale aggiungendo un opportuna produzione La grammatica ottenuta sarà in GNF

Teorema delle S ab B CD c C BC d D ab a Ordine scelto S B C D S ab tipo (b) : A i xv, x X, v (X V ) B CD tipo (a) : A i A j v, i < j B c tipo (b) C BC nè (a) nè (b) essendo B C C d tipo (b) D ab a tipo (b)

Teorema delle Trasformazione di C BC usando B CD c B B {}}{{}}{ C CD C c C ottenendo la grammatica equivalente: S ab B CD c C CDC cc d D ab a

Teorema delle Passo 6. Eliminazione delle ricorsioni sinistre A Av Per ogni NT tale che A Av w con v, w (X V ), w Aγ e γ (X V ) si sostituiscono le produzioni A Av w con: 1. A w wb 2. B vb v λ

Teorema delle S ab B CD c C CDC cc d D ab a Unica ricorsione sinistra: C CDC trasformata in: C cc d cce de con E DCE DC La grammatica diventa quindi: S ab B CD c C cc d cce de E DCE DC D ab a

Teorema delle L introduzione di E cambia l ordinamento in: S B C E D e tutte le produzioni sono del tipo (a) o (b) E DCE DC diventa E abce ace abc ac B CD diventa B ccd dd cced ded quindi: S ab B ccd dd cced ded c C cc d cce de E abce ace abc ac D ab a

Teorema delle Passo 7. Introduzione di nuovi non terminali le produzioni della grammatica sono del tipo A xα con x X e α (X V ) Per ogni a X in α si introduca un nuovo non terminale A e si aggiunga una produzione A a

Teorema delle Nell esempio: S ab B ccd dd cced ded c C cc d cce de E abce ace abc ac D ab a diventa: S ab B ccd dd cced ded c C cc d cce de D af a E afce ace afc ac F b che è in GNF

Teoremi di Equivalenza Automi a Pila Teorema delle Teorema. Un linguaggio libero è generabile da una grammatica in GNF ottenuta tramite l algoritmo. Teorema. Ogni linguaggio libero è riconosciuto da un automa a pila Teorema. Ogni linguaggio accettato da un automa a pila è libero