Espressioni regolari

Documenti analoghi
Espressioni regolari. Espressioni regolari

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

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi

Linguaggi regolari e automi a stati finiti

Proprieta dei Linguaggi regolari

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

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari

Precorsi di matematica

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

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

Anno 4 Matrice inversa

= < < < < < Matematica 1

Le grammatiche formali

Espressività e limitazioni delle grammatiche regolari

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

Grammatiche Parse trees Lezione del 17/10/2012

LA METAFORA DELL UFFICIO

Il codice di Sarngadeva

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

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

Algebra di Boole X Y Z V. Algebra di Boole

Esercizi di Matematica per la prova di ammissione alla Scuola Galileiana /16

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

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

Varianti Macchine di Turing

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.

Sviluppo di programmi

Logica proposizionale

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

PORTE LOGICHE. Si effettua su due o più variabili, l uscita assume lo stato logico 1 se almeno una variabile di ingresso è allo stato logico 1.

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Sviluppi e derivate delle funzioni elementari

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

L insieme dei numeri Relativi

Il concetto di calcolatore e di algoritmo

Operatori di relazione

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

DAI NUMERI NATURALI AI NUMERI RAZIONALI

Algebra di Boole Algebra di Boole

Le variabili logiche possono essere combinate per mezzo di operatori detti connettivi logici. I principali sono:

Macchine di Turing, problemi ricorsivi e ricorsivamente enumerabili

Forma Normale di Chomsky

La codifica digitale

Algebra di Boole. Andrea Passerini Informatica. Algebra di Boole

Le Macchine di Turing

Linguaggi formali e compilatori

Esercitazioni di Reti Logiche. Algebra Booleana e Porte Logiche

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

Rappresentazione dell Informazione

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

Moltiplicazione. Divisione. Multipli e divisori

Sistemi Web per il turismo - lezione 3 -

Cammini minimi fra tutte le coppie

I Circuiti combinatori: LOGISIM

Richiami di Algebra di Commutazione

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

LA METAFORA DELL UFFICIO

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

un insieme finito di segnali d uscita U (nell ascensore U={stare fermo, salire, scendere})

Università degli Studi di Palermo Facoltà di Economia. Dipartimento di Scienze Economiche, Aziendali e Statistiche. Appunti del corso di Matematica

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

Massimo e minimo limite di successioni

Informatica Generale Homework di Recupero 2016

IL CALCOLO LETTERALE. La «traduzione» del linguaggio comune in linguaggio matematico

La codifica dei caratteri di un testo

Informatica Teorica. Sezione Cremona + Como. Appello del 20 Luglio 2004

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

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

LINGUAGGI DI PROGRAMMAZIONE!

ALGEBRA LINEARE PARTE II

Presentazione di gruppi

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

Transcript:

spressioni Regolari Un FA (NFA o DFA) e una macchina a stati finiti che riconosce linguaggi regolari. Una espressione regolare e un modo dichiarativo (o algebrico) per descrivere un linguaggio regolare. Esempio: 01 + 10 denota il linguaggio delle stringhe composte da uno 0 seguito da qualsiasi numero di 1 o delle stringhe composte da un 1 seguito da qualsiasi numero di 0.

Cosa Servono? La descrizione dichiarativa delle stringhe che compongono un linguaggio regolare fornisce qualcosa di diverso rispetto agli automi Le espressioni regolari per esempio vengono utilizzate come linguaggio di input per vari sistemi che trattano stringhe: comandi UNIX (grep) per la ricerca di stringhe generatori di analizzatori lessicali), tipo (Lex (Lexical analyzer generator) e Flex (Fast Lex)). In queste applicazioni viene preso un input, nella forma di una espressione regolare, e viene convertita l espressione regolare in un DFA ( o NFA)

osa vedremo? La definizione formale delle espressioni regolari Vedremo la relazione con i linguaggi regolari definiti da FA (DFA o NFA), dando delle traduzioni sistematiche da un formalismo nell altro Tali traduzioni sono importanti per capire il potere espressivo del formalismo, ma sono anche utili a livello pratico

perazioni sui linguaggi Unione: L M = {w : w L o w M} Concatenazione: L.M = {w : w = xy, x L, y M} Potenze: L 0 = {ɛ}, L 1 = L, L k+1 = L.L k Chiusura di Kleene: L = L i i=0

sempio: operazioni sui linguaggi L = {0, 1} allora L sono tutte le stringhe di 0, 1 L = {0, 11} allora L sono tutte le stringhe di 0, 1 in cui gli 1 compaiono a coppie. Inoltre e cosi via L 0 = {ɛ}, L 1 = L, L 2 = {00, 011, 110, 1111} Inoltre, 0 = {ɛ}, i = {ɛ}, e = {ɛ}.

Definizione induttiva di espressioni regolari Diamo la definizione delle espressioni regolari rispetto ad un dato alfabeto Σ. Indicheremo con L(E) il linguaggio definito dall espressione regolare E. Base: ɛ e sono espressioni regolari. L(ɛ) = {ɛ} e L( ) =. Se a Σ, allora a e un espressione regolare. L(a) = {a}.

Definizione induttiva di espressioni regolari Induzione: Se E e un espressione regolare, allora (E) e un espressione regolare. L((E)) = L(E). Se E e F sono espressioni regolari, allora E + F e un espressione regolare. L(E + F ) = L(E) L(F ). Se E e F sono espressioni regolari, allora E.F e un espressione regolare. L(E.F ) = L(E).L(F ). Se E e un espressione regolare, allora E e un espressione regolare. L(E ) = (L(E)).

sempio Espressione regolare per L = {w {0, 1} : 0 e 1 alternati in w} o, equivalentemente, (01) + (10) + 0(10) + 1(01) (ɛ + 1)(01) (ɛ + 0)

arentesi Le parentesi hanno significato semantico. Per esempio, le espressioni regolari (01) e 0(1) denotano linguaggi diversi Per semplificare la notazione e possibile eliminare le parentesi in base ad un ordine di precedenza degli operatori (in modo standard)

rdine di precedenza per gli operatori 1 Chiusura 2 Concatenazione (punto) 3 Piu (+) Esempio: 01 + 1 e raggruppato in (0(1) ) + 1

quivalenza di FA e espr. regolari Per mostrare che gli FA sono equivalenti alle espressioni regolari, faremo vedere che (tramite costruzioni effettive) 1 Per ogni espressione regolare R esiste un ɛ-nfa A, tale che L(A) = L(R). Abbiamo gia mostrato che DFA, NFA, e ɛ-nfa sono formalismi equivalenti. -NFA NFA RE DFA

a espressioni regolari a ɛ-nfa Teorema 3.7: Per ogni espressione regolare R possiamo costruire un ɛ-nfa A, tale che L(A) = L(R). Prova: Per induzione strutturale su R. Faremo vedere come si costruisce l automa A per espressioni piu semplici, carattere, stringa vuota, linguaggio vuoto come si possono combinare automi per realizzare l unione, la concatenazione, e la chiusura Nota: tutti gli automi che costruiamo sono ɛ-nfa con un unico stato finale (altrimenti la costruzione non funziona)

a espressioni regolari a ɛ-nfa (c) Base: Automa per ɛ,, e a. (a) (b) a

Induzione: Automa per R + S, RS, e R R S (a) R S (b) R

sempio Trasformiamo (0 + 1) 1(0 + 1) 0 1 (a) 0

Automi che hanno come etichette epressioni regolari sempio 1 (b) Start 0 1 1 0 1

Da automi ad espressioni regolari la derivazione di una espressione regolare R da un automa e parecchio complicata esistono vari algoritmi per derivare una espressione regolare che descrive le stringhe che etichettano i cammini del diagramma di transizione faremo vedere una delle tecniche che si applica a DFA (altre tecniche piu generali si possono trovare in Hopcroft, Motwani, Ullman, capitolo 3)

per applicare l algoritmo si usa una generalizzazione degli automi a stati finiti, in cui gli archi sono etichettati da espressioni regolari, invece che da simboli dell alfabeto Intuitivamente, il linguaggio definito da un automa di questo tipo e l unione, su tutti i cammini dallo stato iniziale ad uno stato finale, dei linguaggi ottenuti concatenando i linguaggi delle espressioni regolari lungo il cammino Notiamo che la definizione e una generalizzazione della definizione standard: ogni DFA e un caso particolare di questi automi

sempio A, dove L(A) = {W : w = x1b, o w = x1bc, x {0, 1}, {b, c} {0, 1}} 0,1 Start 1 0,1 0,1 A B C D Lo possiamo vedere come un automa con espressioni regolari come etichette 0 + 1 Start 1 0 + 1 0 + 1 A B C D

ome si usano questi automi? La costruzione che mostreremo parte dal DFA (ovvero dall automa corrispondente con espressioni reagolari come etichette) E basata su una tecnica di riduzione, che dato un automa con etichette costruisce un altro automa con etichette Idea: ad ogni passo viene eliminato uno stato s, le espressioni regolari degli archi rimanenti vengono modificate in modo da tenere traccia dei cammini che passavano per s e che sono stati cancellati

a tecnica di eliminazione di stati La seguente figura mostra uno stato s che sta per essere eliminato R 1m q 1 p 1 Q 1 R 11 S P 1 s q k Q k R km P m p m

otare che q 1,..., q k sono predecessori di s, mentre p 1,..., p m sono successori di s; c e un ciclo su s con etichetta S per tutti i valori di i, j esiste un arco tra q i e p j con etichetta R i,j Nota: la situazione e generale nel senso che tutti questi archi potrebbero non esistere nell automa (in tal caso l espressione regolare corrispondente sara )

L automa ottenuto dopo avere eliminato lo stato s. R 11 + Q 1 S* P 1 q p 1 1 R 1m + Q 1 S* P m q k R k1 + Q k S* P 1 R km + Q k S* P m p m

otare che Quando viene eliminato lo stato s vengono modificate le espressioni regolari di tutte le coppie predecessore q i e successore p j. In particolare, viene considerata l unione di R i,j con una espressione regolare che denota le stringhe che potrebbero etichettare cammini tra q i e p j, che sono stati cancellati questi cammini partivano da q i, facevano una mossa in s, un tot di cicli in S, e poi una mossa in p j Nell automa ottenuto il linguaggio definito, considerando i cammini tra q i e p j, e equivalente a quello definito dai cammini tra q i e p j nell automa di partenza

ome si applica l algoritmo di eliminazione degli stati? si parte con l automa DFA, opportunamente trasformato con espressioni regolari, chiamiamolo A per ogni stato finale q, si applica la tecnica di riduzione, fino ad eliminare tutti gli stati eccetto q 0 e q chiamiamo A q l automa ottenuto per lo stato finale q

erivare l espressione regolare per ogni A q ridotto facciamo vedere come derivare una corrispondente espressione regolare E q intuitivamente, E q denota le stringhe di L(A) che etichettano i cammini tra lo stato iniziale q 0 e lo stato accettante q

Per ogni q F saremo rimasti con A q della forma R U S Start e che corrisponde all espressione regolare E q = (R + SU T ) SU o con A q della forma Start T R che corrisponde all espressione regolare E q = R

n conclusione E chiaro che per ogni stato finale q, E q denota le stringhe di L(A) che etichettano i cammini tra lo stato iniziale q 0 e lo stato accettante q Quindi l espressione finale che denota L(A) e q F E q

sempio A, dove L(A) = {W : w = x1b, o w = x1bc, x {0, 1}, {b, c} {0, 1}} 0,1 Start 1 0,1 0,1 A B C D La trasformiamo in un automa con espressioni regolari come etichette 0 + 1 Start 1 0 + 1 0 + 1 A B C D

sempio 0 + 1 Start 1 0 + 1 0 + 1 A B C D Eliminiamo lo stato B 0 + 1 Start A 1( 0 + 1) 0 + 1 C D Poi eliminiamo lo stato C e otteniamo A D 0 + 1 Start A 1( 0 + 1) ( 0 + 1) D

sempio con espressione regolare (0 + 1) 1(0 + 1) L espressione finale e la somma delle due espressioni regolari precedenti: Da 0 + 1 Start A 1( 0 + 1) 0 + 1 C D possiamo eliminare D e ottenere A C 0 + 1 Start A 1( 0 + 1) C

eggi algebriche per i linguaggi L M = M L. L unione e commutativa. (L M) N = L (M N). L unione e associativa. (LM)N = L(MN). La concatenazione e associativa. Nota: La concatenazione non e commutativa, cioe, esistono L e M tali che LM ML.

L = L = L. e l identita per l unione. {ɛ}l = L{ɛ} = L. {ɛ} e l identita sinistra e destra per la concatenazione. L = L =. e l annichilatore sinistro e destro per la concatenazione.

L(M N) = LM LN. La concatenazione e distributiva a sinistra sull unione. (M N)L = ML NL. La concatenazione e distributiva a destra sull unione. L L = L. L unione e idempotente. = {ɛ}, {ɛ} = {ɛ}. L + = LL = L L, L = L + {ɛ}

(L ) = L. La chiusura e idempotente. Prova: ( ) i w (L ) w L j i=0 j=0 k, m N : w (L m ) k p N : w L p w L i i=0