Forma Normale di Chomsky

Documenti analoghi
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

Esempio stringhe palindrome 1

7. Automi a Pila e Grammatiche Libere

Pumping lemma per i linguaggi Context-free

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

Parte n.4 Linguaggi: Gerarchia ed Operazioni

LINGUAGGI CONTEXT FREE. Lezione Lezione

Quiz sui linguaggi CF

Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm

Linguaggi Regolari e Linguaggi Liberi

Espressioni Regolari

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

Nozioni Preliminari e Terminologia. Alfabeti Stringhe Linguaggi

Automi e Linguaggi Formali Automi a stack (Pushdown automata)

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

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

Concetti di base sugli automi e sui linguaggi formali

Proprietà dei linguaggi non contestuali

Linguaggi Regolari e Linguaggi Liberi

AUTOMA A STATI FINITI

Quiz sui linguaggi regolari

Espressività e limitazioni delle grammatiche regolari

Aniello Murano Automi e Pushdown

a cura di Luca Cabibbo e Walter Didimo

Definizione di Grammatica

Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari

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

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

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

Corso di Linguaggi e Traduttori 1 AA GRAMMATICHE

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

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

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

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

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

Costruzione di espressioni regolari 4

Parser Bottom UP. Giuseppe Morelli

Le Macchine di Turing

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

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

Sipser, Capitolo 0. Alfabeti, Stringhe, Linguaggi

Le grammatiche formali

Costruzione dell insieme dei Follow

AUTOMI A PILA. M.P. Schutzenberger

Linguaggi e Ambienti di Programmazione

Proprietà dei linguaggi regolari

Definire tramite una grammatica ad attributi il

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

Macchine di TURING. Alan Mathison Turing ( )

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

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

I metodi formali dell Analisi Lessicale: Le Espressioni Regolar

LINGUAGGI E GRAMMATICHE FORMALI

Minimizzazione degli stati di reti sequenziali asincrone (RSA) / sincrone (RSS)

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

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

Automi a pila. Automi a pila

Il diritto penitenziario in canton Berna

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Principio di composizione delle MT

Linguaggio universale, riduzioni, e teorema di Rice. Linguaggio universale, riduzioni, e teorema di Rice

certificazione antimafia : Tribunale Amministrativo Regionale per la Calabria (Sezione Prima) sentenza n. 480 del 2010

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

Verificare se una grammatica e LL(1) e costruirne la tabella di parsing. Verificare se una grammatica e LR(0) e costruirne la tabele ACTION e GOTO

Precorso di Analisi Matematica Facoltà d'ingegneria Università del Salento

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

RELAZIONI BINARIE. Proprietà delle relazioni Data una relazione R, definita in un insieme non vuoto U, si hanno le seguenti proprietà :

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

Automi per il riconoscimento di linguaggi.

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Espressioni regolari

Metodo di Quine-McCluskey. Algoritmo. Sommario. Sommario. M. Favalli

Corso di Crittografia Prof. Dario Catalano. Advanced Encryption Standard

LA SINTASSI DEI LINGUAGGI DI PROGRAMMAZIONE. Ivan Lanese

ELEMENTI DI PROGRAMMAZIONE a.a. 2012/13 MACCHINE, ALGORITMI, PROGRAMMI

Richiami di Matematica. 1. Insiemi, relazioni, funzioni. 2. Cardinalitá degli insiemi infiniti e numerabilitá. 3. Notazione asintotica.

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

Turing, i nastri e le macchine

Sistemi Web per il turismo - lezione 3 -

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

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

GRAMMATICHE DEI LINGUAGGI DI PROGRAMMAZIONE. Cosimo Laneve

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

RICHIAMI E COMPLEMENTI SU LINGUAGGI FORMALI E AUTOMI

DISPENSE SU TEORIA DEGLI INSIEMI E NUMERI

In molte applicazioni sorge il problema di sapere in quanti modi possibili si può presentare un certo fenomeno.

albero sintattico parser scanner Errori sintattici

Introduzione ai grafi. Introduzione ai grafi p. 1/2

Direito do Turismo: Legislação específica aplicada

Sommario Codifica dei dati Macchina Astratta Definizioni Esempi

Esercizio su MT. Svolgimento

Logica proposizionale

Macchine di Turing. a n B B. Controllo Finito

ITLCC 2006/10/6 19:09 page 7 #3

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

Presentazione di gruppi

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

MODULO 04 ELEMENTI DI TEORIA DEI LINGUAGGI FORMALI

Algoritmi e Principi dell Informatica

Fondamenti di informatica Esercizi Svolti Macchine di Turing. Realizzati da: Roberto Quaranta Matr

Transcript:

2. Eliminazione delle produzioni unitarie Forma Normale di Chomsky Una produzione si dice unitaria se è della forma A! B. Le produzioni unitarie in pratica consistono in una ridenominazione di variabili, talvolta necessaria, al momento della creazione della grammatica. La rimozione di queste regole implica la definizione di altre regole che producano le stesse stringhe. Es1 A! aa a B B! bb b C è evidente la catena di regole che da A porta al simbolo C via il simbolo B Algoritmo Sia P1 l insieme delle produzioni della grammatica di partenza G1 (senza #-produzioni). 1. Per ogni simbolo X " V N della grammatica G1 si individuano tutti i simboli non terminali ad esso collegati raggiungibili da produzioni unitarie, chiamo questa lista CHAIN(X). 2. Le produzioni P2 della grammatica trasformata G2 sono costruite a partire dalle produzioni P1 considerato che la regola X! w è collocata in P2 se esiste un simbolo Y e una stringa w tale che: a) Y " CHAIN(X) b) Y! w " P1 c) w $ V N X Y w

Eliminazione delle produzioni unitarie cont. Es2 S! ACA AC CA AA A C " A! aaa aa B C B! bb b C! cc c Determinazione dei simboli unitari CHAIN(S) = {S,A,C,B} CHAIN(A) = {A,B,C} CHAIN(B) = {B} CHAIN(C) = {C} Forma Normale di Chomsky S! ACA AC CA AA A C " S! ACA AC CA AA aaa aa bb b cc c " A! aaa aa B C A! aaa aa bb b cc c B! bb b B! bb b C! cc c C! cc c Esercizio- Scrivere la grammatica equivalente della grammatica G13 E! E+T E- T T T! T *F T/F F F! (E) id id! a b c

3. Eliminazione dei simboli inutili Forma Normale di Chomsky Def. In una Grammatica contex-free, un simbolo x! (V N " V T ) è detto simbolo utile se esiste una derivazione Un simbolo che non è utile è detto inutile. S #* u x v #* w con u, v! (V N " V T )* e w! V T * Affinché una variabile sia considerata utile occorre che si verifichino le seguenti due condizioni: Generabilità - cioé tramite il simbolo si deve poter pervenire ad una stringa di caratteri terminali (compresa eventualmente la stringa vuota $) Raggiungibilità - che il simbolo deve far parte di una forma sentenziale, ovvero è raggiungibile a partire dal simbolo distinto S S % AC BS B A % aa af B % CF b C % cc D D % ad BD C E % aa BSA F % bb b Qual è il linguaggio generato da questa grammatica?

3. Eliminazione dei simboli inutili (cont.) Forma Normale di Chomsky Algoritmo (individuazione dei simboli generatori) - Si collocano nella lista GEN tutti simboli A tali che esiste una regola A! w in P con w " V T * repeat PREV := GEN Per ogni variabile A " V N se c é una regola A! w con w " (PREV # V T )* allora GEN = GEN # { A} until GEN= PREV P S! AC BS B S! BS B GEN PREV A! aa af A! aa af { B,F} B! CF b B! b { B,F, A, S} { B,F} C! cc D D! ad BD C { B,F, A, S,E} { B,F, A, S} E! aa BSA E! aa BSA { B,F, A, S,E} { B,F, A, S,E} F! bb b F! bb b La grammatica risultante G avrà come V N i simboli in GEN, come produzioni P le produzioni A!w di P tali che A " GEN e w " (GEN # V T )*, come V T i simboli terminali che occorrono nelle parti destre di P, ovvero V N = { B,F, A, S,E}, V T = { a,b} e P come sopra indicato.

3. Eliminazione dei simboli inutili (cont.) Forma Normale di Chomsky Algoritmo (individuazione dei simboli raggiungibili) RAGG = simbolo distinto di G PREV :=! repeat NEW := RAGG-PREV PREV:= RAGG per ogni variabile A # NEW per ogni regola A " w addiziona tutte le variabili in w a RAGG until RAGG=PREV RAGG PREV { S} {!} NEW { S, B} { S} { S} { S, B} { S, B} { B} S " BS B A " aa af B " b E " aa BSA F " bb b La grammatica risultante G avrà come V N i simboli in RAGG, come produzioni P le produzioni A "w di P tali che A # RAGG e w # (RAGG $ V T )*, come V T i simboli terminali che occorrono nelle parti destre di P, ovvero V N = { S,B}, V T = {b} e P come sopra indicato. P S " BS B B " b

Forma Normale di Chomsky Una grammatica G si dice in forma normale (di Chomsky) se ciascuna regola è della forma: 1. A! BC con B, C! V N - { S} 2. A! a 3. S! " Data una grammatica di tipo 2, G = < VN,VT,P, S > è possibile costruire per via algoritmica una grammatica G = < V N,VT,P, S > in forma normale (di Chomsky). Si assume che la grammatica abbia la seguente struttura: Il simbolo distinto S non è ricorsivo G è privo di!-produzioni ad esclusione di S!! G non contiene produzioni unitarie G non contiene simboli inutili Una produzione di una tale grammatica può avere solo una delle seguenti forme: S!! A! a a! VT A! w w!( ( VN # VT ) - { S})* e w > 1 Si osservi come avendo eliminato le produzioni unitarie la parte destra di una regola non potrà essere formata dal un solo simbolo non terminale, pertanto le regole A! w avranno come parte destra più simboli terminali e non terminali.

Forma Normale di Chomsky Si tratta in definitiva di vedere come si trattano le produzioni A! w in cui w > 1. S! aabc a A! aa a B! bcb bc C! cc c produzioni già in forma normale Il primo passo sarà quello di sostituire i terminali presenti in w con opportuni simboli non terminali. S! A ABC a A! A A a B! B C B B C C! C C c A! a B!b C!c produzioni ancora non in forma normale A questo punto dobbiamo gestire le regole con parti destre costituite da più di due simboli non terminali, in quanto tutte le altre soddisfano già le condizioni della forma normale. Ciò viene fatto introducendo delle ulteriori variabili.

Forma Normale di Chomsky S! A ABC a A! A A a B! B C B B C C! C C c A! a B!b C!c Si introducono altre opportune variabili S! A ABC B! B C B S! A T1 T1! ABC B! B T4 T4! C B non in forma normale non in forma normale S! A T1 T1! A T2 T2! BC Si ha pertanto che la grammatica di partenza S! aabc a A! aa a B! bcb bc C! cc c viene trasformata in S! A T1 a A! a T1! A T2 T 2! BC A! A A a B! B T4 B C T4! C B C! C C c B!b C!c

Forma Normale di Chomsky Esercizio Trasformare in forma normale di Chomsky la grammatica: E $ E+T E- T T T $ T *F T/F F F $ (E) id id $ a b c

Automi Pushdown Rappresentano una modificazione degli automi a stati finiti in quanto introducono il concetto di memoria, tale memoria è rappresentata sotto forma di stack La grammatica G 14 con regole S $ a S a b S b " riconosce stringhe palindrome input S%aSa % aa S%aSa % absba %abba S%aSa % absba %abbasabba%abbaabba... a b b a a b b a testina di lettura Controllo b b a stack

Automi Pushdown Un automa pushdown è definito dalla sestupla < K, ", &, ', s, Z > K - Insieme degli stati " - Alfabeto di Ingresso (Alfabeto terminale) & - Alfabeto dello stack s - Stato iniziale s! K Z - insieme degli stati finali Z ( K ' - relazione di transizione è un sottoinsieme finito di # ( K x (" # {"} ) x &*) x (K x&*) #

Transizioni negli automi pushdown Una quintupla (p, a, )), (q, *) rappresenta una transizione e viene interpretata nel seguente modo : # se l automa si trova in uno stato p, sta leggendo il simbolo a dal nastro, mentre ) si trova sul top dello stack, l automa passa allo stato q e rimpiazza ) con * sul top dello stack Ex: la transizione (p, ", )), (q, *) non legge alcun simbolo dal nastro di input passa dallo stato p allo stato q mette * al posto di ) nello stack la transizione (p, u, "), (q, a) legge il carattere u ## # passa dallo stato p allo stato q ## # effettua il push di a nello stack" " la transizione (p, u, a), (q, ") legge il carattere u ## # passa dallo stato p allo stato q "" " effettua il pop di a dallo stack

Configurazioni negli automi pushdown Si definisce una configurazione dell automa un elemento di ## # # ## # # K x "* x &* in cui la prima componente è lo stato corrente della macchina, la seconda componente è la porzione di input che deve essere ancora letta, la terza componente è il contenuto dello stack Ex: ( q, bba, bba) è una configurazione in cui il contenuto corrente dello stack è bba (b è al top) e la parte di stringa ancora da leggere è bba Date le due configurazioni c 1 = (p, x, +) e c 2 = (q, y,,) si dirà che c 1 si trasforma in c 2 in un singolo passo e si scrive (p, x, +) - (q, y,,) se esiste una transizione (p, s, )), (q, *)! ' tale che: x = sy, + = ). e, = *. Ex: (q, bba, bba) - (q, ba, ba) in virtù di una transizione in ' avente la struttura (q, b, b), (q, ") per cui x= bba y=ba + = bba, = ba.=ba )=b *= " input a b b a a b b a Controllo testina di lettura b b a stack

Computazioni di un automa pushdown Una sequenza di configurazioni C 0, C 1,..., C n con n > 0 tale che C 0 = ( s, w,!) " C 1 " C 2 "... " C n = (p,!,!) per qualche p # Z, viene chiamata una computazione accettante di! lunghezza n. Dato un automa pushdown A, il linguaggio accettato da A e denotato da L(A) è l insieme delle stringhe accettate da A

Esempio stringhe palindrome 1 Automa per il riconoscimento del linguaggio L = {w c w R } A = < {s,f}, {a,b,c}, {a,b},!, s, { f } > con! che contiene le transizioni: 1. (( s, a, " ), (s, a)! [ push a] 2. (( s b, " ), (s, b) [ push b] 3. (( s, c, " ), (f, ")!! 4. (( f a, a ), (f, ")! [ pop a ] 5. (( f, b, b ), (f, ")! [ pob b ] Si osservi come nell alfabeto di stack non è compreso il simbolo c che denota la demarcazione tra le due parti della stringa esecuzione per abbcbba Stato Stringa di input stack transizione s abbcbba " s bbcbba a 1 s bcbba ba 2 s cbba bba 2 f bba bba 3 f ba ba 5 f a a 5 f " " 4

Esempio stringhe palindrome 2 Automa per il riconoscimento del linguaggio L = {w w R } A = < {{s,f}, {a,b}, {a,b},!, s, { f } > con! che contiene le transizioni: 1. (( s, a, " ), (s, a)! [ push a] 2. (( s b, " ), (s, b) [ push b] 3. (( s, ", " ), (f, ")!! 4. (( f a, a ), (f, ")! [ pop a ] 5. (( f, b, b ), (f, ")! [ pob b ] Nell applicazione della regola 3 la macchina puo scegliere non deterministicamente di andare nello stato f senza consumare input o fare un push del prossimo simbolo nello stack. Si osservi come questa sia l unica regola variata rispetto all automa precedente. Esecuzione per abbbba Stato Stringa di input stack transizione s abbbba " " s bbbba a 1 s bbba ba 2 s bba bba 2 f bba bba 3 f ba ba 5 f a a 5 f " " 4