Analisi Lessicale: Linguaggi Regolari

Documenti analoghi
Linguaggi di Programmazione Corso C. Parte n.6 Linguaggi Regolari ed Espressioni Regolari. Nicola Fanizzi

Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm

Linguaggi di Programmazione Corso C. Parte n.2 Introduzione ai Linguaggi Formali. Nicola Fanizzi

Automi e Linguaggi Formali

Linguaggi e Traduttori: Analisi lessicale

Parte n.4 Linguaggi: Gerarchia ed Operazioni

Automi e Linguaggi Formali

Introduzione al corso

Sommario. Espressioni regolari. Equivalenza tra espressioni regolari e DFA. Esercizi problemi di decisione

I metodi formali dell Analisi Lessicale: Le Espressioni Regolar

Fondamenti dell Informatica

Nozioni Preliminari e Terminologia. Alfabeti Stringhe Linguaggi

Automi a pila. Dipartimento di Elettronica e Informazione Politecnico di Milano. 17 marzo 2017

Espressioni regolari

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

Concetti di base sugli automi e sui linguaggi formali

NFA per riconoscere numeri decimali

Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari

Quiz sui linguaggi regolari

Automi a stati finiti

Linguaggi. Che cos è un linguaggio di programmazione? Aspetti da studiare e comprendere per poter scrivere programmi:

Proprieta dei Linguaggi Regolari. Proprieta dei Linguaggi Regolari

Esempio stringhe palindrome 1

Fondamenti dell Informatica a.a. 2013/14 Prova scritta 30 luglio 2014

Parte n.7 Automi a Pila e Grammatiche Libere

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

Prefazione all edizione italiana

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

Progamma sintetico. Nozioni preliminari Automi Finiti Macchine di Turing Limiti delle macchine di Turing La tesi di Church-Turing Le classi P e NP

Automi e Linguaggi Formali Automi a stack (Pushdown automata)

Informatica e Laboratorio di Programmazione Automi Alberto Ferrari. Alberto Ferrari Informatica e Laboratorio di Programmazione

Linguaggi regolari e automi a stati finiti. Linguaggi regolari e automi a stati finiti

Costruzione di espressioni regolari 4

Linguaggi e Grammatiche Liberi da Contesto

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

Linguaggi regolari e automi a stati finiti

Trasformazione di un NDFA in un DFA con ε-regole

non è lineare destro. (PUNTI 15)

Automi a stati finiti

Espressioni regolari. Espressioni regolari

a cura di Luca Cabibbo e Walter Didimo

LINGUAGGI FORMALI. Introduzione

Sipser, Capitolo 0. Alfabeti, Stringhe, Linguaggi

Analisi e Sintesi di circuiti sequenziali

Pumping lemma per i linguaggi Context-free

Fondamenti di Programmazione: AUTOMI E LINGUAGGI FORMALI Corso di Laurea in MATEMATICA a.a. 2018/2019

Teoria della complessità

7. Automi a Pila e Grammatiche Libere

Linguaggi formali e compilazione

Quiz sui linguaggi CF

Introduzione ai Linguaggi Formali

Esercizi di Informatica Teorica - DFA

Capitolo 1: Concetti matematici di base

Forma Normale di Chomsky

Espressioni Regolari

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

Proprietà dei linguaggi regolari

Progamma sintetico. Nozioni preliminari Automi Finiti Macchine di Turing Limiti delle macchine di Turing La tesi di Church-Turing Le classi P e NP

Espressioni regolari in UNIX p.1/19

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

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

Grammatiche libere da contesto. Grammatiche libere da contesto

Quiz sui linguaggi CF

Linguaggi di Programmazione e Compilatori

Linguaggi Regolari e Linguaggi Liberi

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

Proprietà di CFL. C. Bodei Fondamenti di Programmazione a.a. 17/18

Aniello Murano Automi e Pushdown

Proprieta dei Linguaggi regolari

Linguaggi e grammatiche

MATRICI E SISTEMI LINEARI

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

Fondamenti dell Informatica a.a. 2017/18 Prova scritta 11 gennaio 2018

Linguaggi Regolari e Linguaggi Liberi

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

Linguaggi Regolari e Linguaggi Liberi. Linguaggi Regolari. Determinismo vs Non determinismo. Potere espressivo

Sintassi. Linguaggi. 4: Sintassi. Claudio Sacerdoti Coen. Universitá di Bologna 24/02/2011. Claudio Sacerdoti Coen

Backus Naur Form. Paolo Bison. Fondamenti di Informatica 1 A.A. 2004/05 Università di Padova. BNF, Paolo Bison, A.A ,

Aumentare il potere degli FSA

Proprietà dei linguaggi non contestuali

Automi e Linguaggi Formali

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

Implementazione di DFA in C

Fondamenti di informatica per la sicurezza

Precorsi di matematica

Automi Automi finiti: macchine a stati su sistemi di transizioni finiti Modellare con TS e specificare con automi: si usa lo stesso tipo di

Pumping lemma per i linguaggi Context-free

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

LINGUAGGI CONTEXT FREE. Lezione Lezione

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

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

Espressività e limitazioni delle grammatiche regolari

Un prefisso, un suffisso o una sottostringa di una stringa, quando non sono la stringa stessa, sono detti propri.

Transcript:

Analisi Lessicale: Linguaggi Regolari Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 18 mar, 2016

Sommario 1 Espressioni Regolari Linguaggi Formali e Operazioni 2 Automi a Stati Finiti Automi Non-Deterministici Automi Deterministici ɛ-chiusura 3 Grammatiche Regolari 4 Corrispondenze Espressioni Regolari Automi DFA Grammatiche Regolari Grammatiche Espressioni Regolari 5 Minimizzazione Automi Indistinguibilità Tabella a Scala 6 Pumping Lemma linguaggi regolari Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 2 / 84

Introduzione Trasformazione stringa di caratteri in lista di token Teoria del linguaggi formali Come si implementa? Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 3 / 84

Introduzione [... cont.] Scopo: riconoscere nella stringa in ingresso gruppi di caratteri che corrispondono a categorie sintattiche trasformare la stringa di caratteri in sequenze di simboli astratti token da passare all analisi sintattica Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 4 / 84

Introduzione [... cont.] separazione tra analisi lessicale e sintattica motivi teorici? motivi pratici? tecnologie più efficienti maggiore semplificazione della specifica e struttura del compilatore semplicità nella descrizione del linguaggio (progettazione macchina astratta / programmazione) Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 5 / 84

Token Token rappresentazione astratta di una sottostringa in ingresso nome, valore nome simbolo astratto che rappresenta una categoria sintattica es.: identificatore, operatore, parola chiave,... valore la stringa letta in ingresso Osservazione il valore può essere sottinteso quando la relazione nome-valore è 1-a-1 (es. parole chiave) Esempio token IDE, x1 Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 6 / 84

Token [... cont.] Specifica lessicale di un linguaggio: descrizione dei suoi token attraverso pattern che identificano la forma dei suoi lessemi pattern descrizione generale della forma dei valori del token (cfr. espressioni regolari) lessema la stringa istanza del pattern Esempio pattern: (x y)(x y 0 1) lessema: x1 Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 7 / 84

Token [... cont.] Esempio Nella stringa in C: if (x > 0) printf("positivo"); potrebbero essere riconosciuti i token: IF, IDE, printf, (, (, IDE, x, CONSTSTR, positivo, OPREL, >, ), CONSTNUM, 0, ;. ), Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 8 / 84

Agenda 1 Espressioni Regolari Linguaggi Formali e Operazioni 2 Automi a Stati Finiti 3 Grammatiche Regolari 4 Corrispondenze 5 Minimizzazione Automi 6 Pumping Lemma linguaggi regolari Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 9 / 84

Stringhe e Operazioni Alfabeto: insieme di simboli finito e non vuoto di simboli Esempi Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} alfabeto delle cifre decimali Σ = {a, b, c,..., z} alfabeto delle lettere (minuscole) Stringa (o parola) w su un alfabeto Σ: sequenza finita di simboli s 1 s 2 s n tale che i {1,..., n} : s i Σ La lunghezza di w è pari ad n e si denota con w Esempi Alcune stringhe su Σ sono aaba, aca, cbaa, b,... Dato Σ = {0, 1} sia w = 0010110 con w = 7 La stringa vuota, denotata con ɛ, è la parola priva di simboli ( ɛ = 0) Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 10 / 84

Stringhe e Operazioni [... cont.] Si denota con Σ l insieme di tutte le stringhe su Σ Osservazione Σ : ɛ Σ Esempio Dato Σ = {0, 1} risulta Σ = {ɛ, 0, 1, 00, 01, 10, 11, 000, 001,...} Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 11 / 84

Stringhe e Operazioni [... cont.] Date w, z Σ, si definisce l operazione di concatenazione: w z Osservazioni non commutativa ɛ elemento neutro: w ɛ = ɛ w = w Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 12 / 84

Stringhe e Operazioni [... cont.] Iterando, si ottiene una forma esponenziale Data w Σ, potenza k-esima di w: w k = { ɛ k = 0 ww k 1 k > 0 Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 13 / 84

Linguaggi Formali Definizione Un linguaggio L su un alfabeto Σ è un sottoinsieme di Σ : L Σ Osservazioni, {ɛ} e Σ sono linguaggi su Σ = 0 1 = {ɛ} Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 14 / 84

Linguaggi Formali [... cont.] Esempi Linguaggio finito L = {ɛ, aab, aaaabb}. Linguaggio infinito L = {a i b 2i i 0}. Linguaggio delle parentesi bilanciate L {(, )} : (())() L e ()(()()) L mentre (()() L e ())(() L Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 15 / 84

Linguaggi Formali [... cont.] Dati due linguaggi L e L definiti sullo stesso alfabeto Σ: prodotto L L = {w = w 1 w 2 Σ w 1 L w 2 L } unione L L = {w Σ w L w L } iterazione L k = { {ɛ} se k = 0 L k 1 L se k > 0 potenza L + = k>0 k L chiusura positiva (o transitiva) L = L 0 L + = {ɛ} L + chiusura di Kleene (transitiva e riflessiva) L = {w 1... w n Σ n N i = 1,..., n : w i L} Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 16 / 84

Linguaggi Formali [... cont.] Altre operazioni complemento L = {w Σ w L} intersezione L L = {w Σ w L w L } riflessione L R = {w R w L} dove la stringa riflessa w R di una stringa w inverte l ordine dei simboli Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 17 / 84

Espressioni Regolari Espressioni e linguaggi regolari: 1 ɛ è una espressione regolare (ER) L(ɛ) = {ɛ} 2 a è una ER per ogni a Σ L(a) = {a} 3 (r) è una ER, per ogni ER r L((r)) = L(r) 4 (r) (s) è una ER, per ogni coppia di ER r, s L((r) (s)) = L(r) L(s) 5 (r) (s) è una ER, per ogni coppia di ER r, s L((r) (s)) = L(r) L(s) 6 (r) è una ER, per ogni r L((r) ) = L(r) 7 nient altro è una ER Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 18 / 84

Espressioni Regolari [... cont.] Osservazioni il simbolo di concatenazione può essere omesso le parentesi possono essere omesse essendo le op. associative a sinistra e imponendo la precedenza: > > Esempio (((a) (b)) ((a) (b))) (a) si può scrivere in modo compatto come: (a b) (a b) a (((1) )(0)) (2) si può scrivere 1 0 2 Per ogni linguaggio possono esistere diverse ER che lo denotano Esempio L[(ab) a] = L[a(ba) ] Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 19 / 84

Espressioni Regolari [... cont.] Esempi i) ab b definisce il linguaggio {ab, b} ii) a(a b)b definisce {aab, abb} iii) a sta per {a n n 0} = {ɛ, a, aa, aaa, aaaa,...} iv) b a c denota per {b n a n 0} {c} Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 20 / 84

Espressioni Regolari [... cont.] Identità: si definisce una relazione d equivalenza tra ER in base ai linguaggi definiti: r = s se e solo se L[r] = L[s] Proprietà commutatività di r r = r r associatività di r (r r ) = (r r ) r associatività di r(r r ) = (rr )r ɛ elem. neutro per ɛr = rɛ = r idempotenza di r = r distributività a sinistra di su r(r r ) = rr rr distributività a destra di su (r r )r = rr r r Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 21 / 84

Espressioni Regolari [... cont.] Estensioni rip. positiva r + = rr = r r possibilità r? = r ɛ elenco [a 1,..., a n ] = a 1 a n dove a i Σ se sussiste una rel. d ordine tra i simboli: [a 1 -a n ] = a 1 a n Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 22 / 84

Linguaggi Regolari Definizione (Linguaggio Regolare) Un linguaggio L è regolare se L = oppure L = L(r) per qualche espressione regolare r Esempio Dato Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,.} l ER: [0-9] + (ɛ.[0-9] + ) denota il linguaggio dei numeri decimali (senza segno) Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 23 / 84

Linguaggi Regolari [... cont.] Definizioni Regolari dato Σ d 1 := r 1 d 2 := r 2... d n := r n dove d i sono nuovi simboli e ogni r i è una ER sull alfabeto Σ {r j 1 j i 1} Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 24 / 84

Esercizi { } 1 Dato L = 0 n 1 2n 0 n 2, determinare L 2 e L 3 { } 2 Dato L = a k b k k > 0, determinare L 2 e L 3 3 Dato L = {00, 01, 100}, stabilire se appartengono a L w 1 000010000 w 2 100000100001 w 3 00000100 Quali di queste appartengono a L 4? 4 Dato L = { 0 n 1 n n > 0 }, determinare L [scomporre nelle varie sotto-stringhe] [scomporre in sotto-insiemi (disgiunti) definiti anche ricorsivamente] 5 Determinare una ER per identificatori C 6 Determinare una ER per numeri in notazione scientifica es. 123.456E-7 Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 25 / 84

Agenda 1 Espressioni Regolari 2 Automi a Stati Finiti Automi Non-Deterministici Automi Deterministici 3 Grammatiche Regolari 4 Corrispondenze 5 Minimizzazione Automi 6 Pumping Lemma linguaggi regolari Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 26 / 84

Automi a Stati Finiti Problema: riconoscere i lessemi ed associarli ai token Automi Modelli astratti di macchine in input su un nastro, fatto da celle contenenti un simbolo ciascuna, stringhe su un dato alfabeto d ingresso Σ lettura L-to-R (con/senza terminatore) un simbolo alla volta una unità di controllo a stati finiti determina il funzionamento della macchina Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 27 / 84

Automi a Stati Finiti [... cont.] b b a a a a q 3... q 2 δ q n q 1 q 0 Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 28 / 84

Automi a Stati Finiti [... cont.] Diagrammi di transizione per descrivere automi Esempio [0-9] [0-9] [0-9]. [0-9] A B C D riconosce [0-9] + (ɛ.[0-9] + ) accetta 23 Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 29 / 84

Automi a Stati Finiti [... cont.] Esempio [0-9] E. F [0-9] riconosce [0-9] + (ɛ.[0-9] + ) ma anche altre stringhe Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 30 / 84

Automi a Stati Finiti [... cont.] Esempio riconoscere (a b) ba a b a 0 1 2 b non determinismo: nello stato 0 si legge b per accettare deve esistere almeno un percorso che porti ad uno stato finale accetta bba e abba, rifiuta aabb Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 31 / 84

Automi Non-Deterministici Un automa finito non deterministico (NFA) è una quintupla Σ, Q, δ, q 0, F dove Σ è un alfabeto finito di simboli di input; Q è un insieme finito di stati; δ è la funzione di transizione δ : Q (Σ {ɛ}) P(Q) q 0 Q stato iniziale; F Q stati finali Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 32 / 84

Automi Non-Deterministici [... cont.] matrice di transizione: δ a 1 a 2 a n ɛ q 0 q 1........ q m Esempio automa precedente δ a b ɛ 0 {0} {0, 1} 1 {2} 2 Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 33 / 84

Automi Non-Deterministici [... cont.] Un NFA N = Σ, Q, δ, q 0, F accetta w = a 1 a n sse nel diagramma di transizione esiste un cammino da q 0 a uno stato di F nel quale w è esattamente la stringa che si ottiene concatenando le etichette degli archi percorsi Il linguaggio accettato da un NFA N è l insieme L[N] = {w Σ N accetta w} Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 34 / 84

Automi Non-Deterministici [... cont.] formalmente: δ : P(Q) Σ P(Q) δ (Q i, za) = δ(q, a) δ (Q i, ɛ) = a Σ δ(q i, a) q δ (Q i,z) w accettata sse: q F : q δ ({q 0 }, w) L[N] = {w Σ δ ({q 0 }, w) F } Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 35 / 84

Automi Non-Deterministici [... cont.] ɛ ɛ 2 a 4 ɛ ɛ 0 1 ɛ ɛ ɛ b a 6 7 8 9 3 b ɛ 5 Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 36 / 84

Automi Deterministici Un automa finito deterministico (DFA) è una quintupla Σ, Q, δ, q 0, F dove Σ è un alfabeto finito di simboli di input; Q è un insieme finito di stati; δ è la funzione di transizione δ : Q Σ Q q 0 Q (lo stato iniziale); F Q (gli stati finali). Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 37 / 84

Automi Deterministici [... cont.] B a a a A b D b b b C a DFA per (a b) ba Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 38 / 84

Equivalenza DFA NFA Dato un linguaggio accettato da un NFA è sempre possibile costruire un DFA per lo stesso linguaggio? Definizione (ɛ-chiusura) Dato un NFA, sia q Q: la ɛ-chiusura di q (ɛ-clos(q)) è il più piccolo insieme di stati raggiungibili da q via ɛ-transizioni: q ɛ-clos(q) e se p ɛ-clos(q) allora δ(p, ɛ) ɛ-clos(q) Per estensione, sia P Q ɛ-clos(p) = p P ɛ-clos(p) Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 39 / 84

Equivalenza DFA NFA [... cont.] Calcolo ɛ-clos(p) 1 T P; // iniz. 2 ɛ-clos(p) P; // iniz. 3 4 while T { 5 scegli r T; 6 T T \ {r}; 7 foreach s δ(r, ɛ) 8 if (s / ɛ-clos(p)) { 9 ɛ-clos(p) ɛ-clos(p) {s}; 10 T T {s}; 11 } 12 } Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 40 / 84

Equivalenza DFA NFA [... cont.] Mossa (non deterministica) mossa : P(Q) Σ P(Q) mossa(p, a) = p P δ(p, a) Dallo stato q, consumando a, un NFA potrà transitare in uno degli stati in ɛ-clos(mossa(ɛ-clos({q}), a)) Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 41 / 84

Equivalenza DFA NFA [... cont.] Costruzione Sottoinsiemi (stati del DFA) sia N = Σ, Q, δ, q 0, F 1 S ɛ-clos(q 0 ); // insieme di stati 2 T {S}; // insieme di sottoinsiemi 3 4 while P T non marcato { 5 marca P; 6 for each a Σ { // calcolo arco uscente 7 R ɛ-clos(mossa(p, a)); // raggiunto con mossa+chiusura 8 definisci (P, a) = R; 9 if R / T 10 T T {R}; // nuovo, aggiunto non marcato 11 } 12 } Si definisce il DFA M N = Σ, T,, ɛ-clos(q 0 ), F dove F = {R T R F } Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 42 / 84

Equivalenza DFA NFA [... cont.] Esempio 2 a 4 0 1 b a 6 7 8 9 3 b 5 Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 43 / 84

Equivalenza DFA NFA [... cont.] init: ɛ-clos(0) = {0, 1, 2, 3, 7} = A e T = {A} T = {A}: (A, a) = ɛ-clos(mossa(a, a)) = = ɛ-clos(4) = {1, 2, 3, 4, 6, 7} = B, e T = T {B} (A, b) = ɛ-clos(mossa(a, b)) = = ɛ-clos({5, 8}) = {1, 2, 3, 5, 6, 7, 8} = C, e T = T {C} T = {A, B, C}, si marca B e si calcolano gli archi uscenti: (B, a) = ɛ-clos(mossa(b, a)) = ɛ-clos({4}) = B T (B, b) = ɛ-clos(mossa(b, b)) = ɛ-clos({5, 8}) = C T T = {A, B, C}; si marca C con archi uscenti calcolati: (C, a) = ɛ-clos(mossa(c, a)) = = ɛ-clos({4, 9}) = {1, 2, 3, 4, 6, 7, 9} = D, e T = T {D} (C, b) = ɛ-clos(mossa(c, b)) = ɛ-clos({5, 8}) = C T T = {A, B, C, D}; si marca D e si assegnano gli archi uscenti: (D, a) = B (D, b) = C A stato iniziale, chiusura dello stato iniziale del NFA D unico stato finale perché contiene lo stato 9 del NFA Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 44 / 84

Equivalenza DFA NFA [... cont.] stati NFA stato DFA {0, 1, 2, 3, 7} A {1, 2, 3, 4, 6, 7} B {1, 2, 3, 5, 6, 7, 8} C {1, 2, 3, 4, 6, 7, 9} D A a B b a a D b b a b C Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 45 / 84

Equivalenza DFA NFA [... cont.] Teorema Sia N = Σ, Q, δ, q 0, F un NFA e sia M N il DFA ottenuto con la costruzione per sottinsiemi. Risulta che L[N] = L[M N ] Teorema La classe dei linguaggi riconosciuti dagli NFA coincide con la classe dei linguaggi riconosciuti dai DFA. Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 46 / 84

Esercizi [Approfondimento 3.2] Esercizio Ricavare un DFA dal NFA per (a a(a b)b) a 0 a a,b 1 2 b Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 47 / 84

Agenda 1 Espressioni Regolari 2 Automi a Stati Finiti 3 Grammatiche Regolari 4 Corrispondenze 5 Minimizzazione Automi 6 Pumping Lemma linguaggi regolari Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 48 / 84

Grammatiche Regolari Una grammatica libera è regolare sse ogni produzione ha la forma V aw oppure V a con V, W NT e A T. Per S è ammessa anche S ɛ Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 49 / 84

Grammatiche Regolari [... cont.] Esempio Sia G = {A, B, C}, {a, b}, A, R con R dato da A aa bb, B bb ac a, C aa bb Grammatica regolare tale che L[G] = (a b) ba Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 50 / 84

Agenda 1 Espressioni Regolari 2 Automi a Stati Finiti 3 Grammatiche Regolari 4 Corrispondenze Espressioni Regolari Automi DFA Grammatiche Regolari Grammatiche Espressioni Regolari 5 Minimizzazione Automi 6 Pumping Lemma linguaggi regolari Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 51 / 84

Espressioni Regolari Automi Teorema Data un espressione regolare r, si può costruire un NFA N r tale che L[r] = L[N r ] Dim. per induzione r ɛ i f r a i a f Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 52 / 84

Espressioni Regolari Automi [... cont.] i s N[s] f s r s t i f i t N[t] f t r st i N[s] s f s /i N[t] t f t Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 53 / 84

Espressioni Regolari Automi [... cont.] r s i i N[s] s f s f Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 54 / 84

DFA Grammatiche Regolari Teorema Da un DFA M si può definire una grammatica regolare G M tale che L[M] = L[G M ] Dim. Sia M = Σ, Q, δ, q 0, F il DFA. La grammatica G M = Q, Σ, R, q 0 ha: non terminali NT = Q, stati di M; terminali T = Σ, alfabeto d ingresso di M; simbolo iniziale S = q 0 ; produzioni R: per ogni δ(q i, a) = q j : q i aq j R e q i a R se q j F Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 55 / 84

DFA Grammatiche Regolari [... cont.] Esempio dato B a a a A b D b b C b a la grammatica corrispondente G = {A, B, C, D}, {a, b}, A, R con R dato da A ab bc, B ab bc, C ad a bc, D ab bc Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 56 / 84

Grammatiche Espresioni Regolari Teorema Il linguaggio definito da una grammatica regolare G è un linguaggio regolare: è vuoto, oppure è possibile costruire un espressione regolare r G tale che L[G] = L[r G ] Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 57 / 84

Grammatiche Espresioni Regolari [... cont.] [Approfondimento 3.6] Grammatica definizione ricorsiva di un linguaggio (sistema di produzioni/equazioni) NT: variabili T: costanti Soluzione: (L Σ ) per la variabile S NT Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 58 / 84

Grammatiche Espresioni Regolari [... cont.] Esempio data A aa b c ɛ può essere considerata come un equazione tra linguaggi: L A = {a}l A {b} {c} {ɛ} soluzione (più piccola): A = a (b c ɛ) si sostituisce la ricorsione su A con la chiusura di Kleene e la si concatena con le alternative non ricorsive Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 59 / 84

Grammatiche Espresioni Regolari [... cont.] Esempio G con A simbolo distintivo e produzioni/equazioni A = aa bb c (1) B = ca ab d (2) risolviamo prima la (2): B = a (ca d) sostituendo B nella (1): A = aa b(a (ca d)) c = aa ba ca ba d c = (a ba c)a ba d c quindi: A = (a ba c) (ba d c) Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 60 / 84

Grammatiche Espresioni Regolari [... cont.] Caso generale G regolare con NT = {A 1,..., A n } e T = Σ come sistema lineare di n equazioni in n incognite: A 1 = a 11 A 1 a 1n A n b 11 b 1p A 2 = a 21 A 1 a 2n A n b 21 b 2p. A n = a n1 A 1 a nn A n b n1 b np dove a ij e b hk sono elementi (non necessariamente distinti) di Σ Si parte da un A i S, si risolve e si sostituisce nelle altre eq. fino a risolvere per il simbolo distintivo (soluzione generale) Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 61 / 84

Corrispondenza per i Linguaggi Regolari ESPRESSIONI REGOLARI NFA GRAMMATICHE REGOLARI DFA Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 62 / 84

Esercizi Esercizio Ricavare una grammatica dal DFA a,b F b A b C a b a a b E b B a D a [Approfondimento 3.5] Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 63 / 84

Esercizi [... cont.] Esercizio Sia G grammatica regolare con R dato da ricavare l ER corrispondente A ab bc, B ab bc, C ad a bc, D ab bc Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 64 / 84

Agenda 1 Espressioni Regolari 2 Automi a Stati Finiti 3 Grammatiche Regolari 4 Corrispondenze 5 Minimizzazione Automi Indistinguibilità Tabella a Scala 6 Pumping Lemma linguaggi regolari Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 65 / 84

Indistinguibilità Siano q 1 e q 2 due stati di un DFA e x Σ x distingue q 1 e q 2 sse i. il cammino che parte da q 1 e consuma x arriva in q F, ma il cammino che parte da q 2 e consuma x arriva in q / F ii. oppure, viceversa, il cammino che parte da q 1 e consuma x arriva in q / F, e il cammino che parte da q 2 e consuma x arriva in q F q 1 e q 2 sono indistinguibili se nessuna x Σ li distingue La relazione di indistinguibilità è una relazione d equivalenza Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 66 / 84

Indistinguibilità [... cont.] Esempio A b a b Osservazione B C b a b a a D ɛ distingue ogni stato in F da ogni stato in Q \ F, quindi sono distinguibili: {A, D}, {B, D} e {C, D} a distingue B da C essendo δ(b, a) = B mentre δ(c, a) = D, e {B, D} già distinguibili e anche {A, C} e {C, D} b non distingue alcuna coppia A e B indistinguibili: da entrambi gli stati le stringhe che iniziano con a portano a B le stringhe che iniziano con b portano a C Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 67 / 84

Tabella a Scala Sia M = Σ, Q, δ, q 0, F un DFA. Un elemento (p, q) della tabella può contenere: nulla: p e q non sono ancora distinti; X : p e q sono distinguibili; alcune coppie (p, q ): se p e q sono distinguibili, allora tutte le (p, q ) saranno distinguibili Esempio q 1 q 2 q 3 q 0 q 1 q 2 Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 68 / 84

Tabella a Scala [... cont.] Algoritmo di riempimento della tabella 1 marca (X) ogni (p, q) tale che p F e q Q \ F o viceversa; 2 per ogni altra (p, q): se esiste un a Σ con (δ(p, a), δ(q, a)) già marcata con X: i. marca (p, q) con X; ii. marca con X tutte le coppie elencate in (p, q), e procedi ricorsivamente alla marcatura di tutte le coppie marcate in questo modo; altrimenti, per ogni a Σ tale che δ(p, a) δ(q, a), metti (p, q) nella lista di (δ(p, a), δ(q, a)) 3 sia J l insieme delle coppie che non contengono X 4 la relazione di indistinguibilità I Q Q sarà: I = J {(q, q) q Q} {(q, p) (p, q) J} chiusura riflessiva e simmetrica di J Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 69 / 84

Tabella a Scala [... cont.] a B a a (a) inizio (b) marca coppie distinte da ɛ (c) marca coppie distinte da a A b D b b b C a B C D A B C (a) B C D X X X A B C (b) B C X X D X X X A B C (c) Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 70 / 84

Tabella a Scala [... cont.] Teorema Dato un DFA M = Σ, Q, δ, q 0, F, l algoritmo di riempimento della tabella a scala termina. Due stati p e q sono distinguibili se e solo se la casella (p, q) (ovvero (q, p)) è marcata con X. Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 71 / 84

Automa Minimo Dato il DFA M = Σ, Q, δ, q 0, F, l automa minimo equivalente è M min = Σ, Q min, δ min, [q 0 ], F min con: Q min = Q/I insieme delle classi di equivalenza [q] Q di I δ min ([q], a) = [δ(q, a)] F min = {[q] q F} Teorema Dato un DFA M = Σ, Q, δ, q 0, F, l automa M min riconosce lo stesso linguaggio di M, ed ha il minimo numero di stati tra tutti gli automi per questo linguaggio Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 72 / 84

Automa Minimo [... cont.] Esempio dato il DFA 0 1 A B A B A C C D B D D A E D F F G E G F G H G D da cui si ricava: la tabella a scala risultante è: B X C X X D X X X E X X X F X X X X G X X X X X H X X X X X X X A B C D E F G 0 1 A, G B, F A, G B, F A, G C, E C, E D B, F D D A, G Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 73 / 84

Automa Minimo [... cont.] Esempio DFA: [Ausiello et al.] a b 0 1 2 1 0 5 2 4 3 3 0 5 4 2 6 5 2 6 6 1 5 tabelle a scala risultanti (iniziale/finale) 1 2 X X 3 X X 4 X X 5 X X 6 X X 0 1 2 3 4 5 1 (3,6) 2 X X 3 X X X 4 X X (2,5) X 5 X X (0,1) X (2,4) 6 X X X (2,5) X X 0 1 2 3 4 5 Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 74 / 84

Automa Minimo [... cont.] Indistinguibili I = {(0, 1), (2, 4), (2, 5), (4, 5), (3, 6)} quindi Q/I = {{0, 1}, {2, 4, 5}, {3, 6}} da cui si ricava: a b [0] [0] [2] [2] [2] [3] [3] [0] [2] Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 75 / 84

Agenda 1 Espressioni Regolari 2 Automi a Stati Finiti 3 Grammatiche Regolari 4 Corrispondenze 5 Minimizzazione Automi 6 Pumping Lemma linguaggi regolari Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 76 / 84

Pumping Lemma per Linguaggi Regolari Teorema (Pumping Lemma linguaggi regolari) Sia L un linguaggio regolare. Esiste una costante N > 0 tale che, ogni z L con z N può essere suddivisa in tre sottostringhe z = uvw tali che (i) uv N; (ii) v ɛ; (iii) per ogni k 0, uv k w L Inoltre N è minore o uguale del numero di stati del DFA minimo che accetta L Osservazioni condizione necessaria ma non sufficiente da usare per dimostrare che un linguaggio non è regolare Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 77 / 84

Pumping Lemma per Linguaggi Regolari [... cont.] Dim. (cenni) Si considera un DFA tale che L(M) = L con N = Q e z L, z = a 1 a 2 a l con l N Percorso d accettazione di z (sequenza di stati q (0), q (1),..., q (l) ): a q (0) 1 a q (1) 2 a i a i+1 a q (i) l q (l) con q 0 = q (0) e q (l) F Sono l + 1 stati ma z = l N = Q quindi c è (almeno) uno stato ripetuto nella sequenza: i, j {0,..., l} : q (i) = q (j) con i < j e (i + j) N Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 78 / 84

Pumping Lemma per Linguaggi Regolari [... cont.] q (0) u a 1 a i q (i) q (j) w a j+1 a l q (l) v a i+1 a j z = uvw e q (l) F costituisce uno stato di accettazione per uvvw, uvvvw, ecc.,... dunque k 0 uv k w L(M) Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 79 / 84

Pumping Lemma per Linguaggi Regolari [... cont.] Esempio L = {a n b n n 0} Supponiamo che sia regolare Deve valere il P.L. quindi si considera N 0 non noto, ma fissato Scegliamo uno specifico z tale che z N : z = a N b N Per ogni scomposizione z = uvw si ha che (i) uv N (ii) v 1 Quindi v = a h con 1 h N Scegliendo uno numero di ripetizioni di v pari a k = 2, risulta: z 2 = uvvw = a N+h b N / L che contraddice la tesi (iii) del P.L. Quindi L non può essere regolare Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 80 / 84

Pumping Lemma per Linguaggi Regolari [... cont.] Esempio [Linz] Dimostrare che L = {w {a, b} n a (w) n b (w)} non è regolare. Si assuma, per assurdo, che L sia regolare. Allora, per un certo N, si consideri in modo che z > N. z = a N! b (N+1)! L In base al P.Lemma, u, v, w tali che z = uvw e uv N, v 1 i 0 : uv i w L Poiché dev essere k = v uv N, sarà v = a k. Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 81 / 84

Pumping Lemma per Linguaggi Regolari [... cont.] Quindi le stringhe gonfiate avranno la forma: a N! k (a k ) i b (N+1)! i = 0, 1,... Esse rientrano nel tipo a m b m L se N! k + ki = (N + 1)!, ossia se i = (N + 1)! N! + k k = ((N + 1) 1)N! k + k k = N N! k + 1 N ma ciò è sempre valido, essendo k N. Quindi L non può essere regolare. Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 82 / 84

Esercizi 1 Es.3, Cap.3: NFA da ab (a b) 2 DFA (minimo) dal NFA dell esercizio precedente 3 Grammatica dal DFA dell esercizio precedente 4 Dato L = {aaa} {a 2k k 0}, scrivere un NFA N tale che L(N) = L, ricavare un DFA M equivalente minimale e fornire la grammatica G tale che L[M] = L[G] = L 5 Es.1, Cap.3: Dimostrare che non sono regolari i linguaggi: i. {ww w {0, 1} } ii. {w {0, 1} n 0 (w) = n 1 (w)} iii. {ww R w {0, 1} } iv. {0 n 1 m n m 0} v. {1 m m primo} 6 Dimostrare che non sono regolari i linguaggi: i. {a n b k n > k > 0} ii. {a n b m c k n > k, n, m, k > 0} iii. {a n b m c k m > k, n, m, k > 0} Si vedano anche i testi consigliati sui ling. formali Analisi Lessicale: Linguaggi Regolari 18 mar, 2016 83 / 84

Riferimenti M. Gabbrielli, S. Martini: Linguaggi di programmazione. Principi e paradigmi, 2/e. McGraw-Hill. Cap. 3 [con gli Approfondimenti] Hopcroft, Motwani, Ullman: Automi, Linguaggi e Calcolabilità, Pearson Italia, 3/a Ed. [Capp. 1-7] Ausiello, d Amore, Gambosi: Linguaggi, Modelli, Complessità, FrancoAngeli Linz: An Introduction to Formal Languages and Automata, 5th Ed. Jones & Bartlett