Espressioni regolari (1)

Slides:



Advertisements
Presentazioni simili
Automi finiti deterministici (DFA) (1)
Advertisements

Automi temporizzati.
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
Alfabeti, Stringhe e Linguaggi
Il linguaggio della Matematica: Insiemi e operazioni
Linguaggio C++ Selezione.
Sintassi (prima parte)
LR Parser Giuseppe Morelli. La maggior parte dei parser Bottom-Up è costituita dai cosiddetti parser LR(k) dove: L indica il verso dellanalisi della stringa.
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
Linguaggi Regolari e Linguaggi Liberi
Costruzione delle tabelle di parsing LR canoniche
Costruzione di tabelle di Parsing SLR
Dipartimento di Matematica
Algoritmi e Programmazione
Sistemi di Lindenmayer
Definizione e caratteristiche
Analisi e Sintesi di circuiti sequenziali
Algebra di Boole ed elementi di logica
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
Trovare il percorso minimo da b ad ogni altro vertice
Introduzione alla programmazione lll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Modelli simulativi per le Scienze Cognitive
Analisi e Sintesi di circuiti sequenziali. Definizione Una macchina sequenziale é un sistema nel quale, detto I(t) l'insieme degli ingressi in t, O(t)
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
Alfabeti, Stringhe e Linguaggi Def: un insieme è una collezione non ordinata di oggetti o elementi Gli insiemi sono scritti tra { }. Gli elementi sono.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
mosaic manipola oggetti primitivi (ruota e unisci) regole:
Esercitazione del Corso di Interazione Uomo-Macchina
Istruzioni Decisionali
Fondamenti di Informatica Algoritmi
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
Logica Matematica Seconda lezione.
CAP. 2 ANALISI LESSICALE 2.1 Il ruolo dell'analizzatore lessicale
Automi LAVORO SVOLTO DA MARIO GERMAN O
Antonio Cisternino La Macchina di Turing.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Lo sviluppo del software e i linguaggi di programmazione
Esempio teorema equivalenza Mealy-Moore
Facoltà di Ingegneria Corso di Laurea: Insegnamento: Lezione n°: Titolo: Docenti: INGEGNERIA AUTOMAZIONE II 2 LINGUAGGI FORMALI ED AUTOMI PROF. ALESSANDRO.
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
Università degli studi di Lecce
è … lo studio delle caratteristiche di regolarità dei fenomeni casuali
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Automi temporizzati cooperanti (TCA) . Automi cooperanti (CA)  Un CA consiste di n automi finiti, ciascuno con insieme di stati, stato iniziale e tabella.
Algebra di Boole.
Informatica 3 V anno.
Circuiti di memorizzazione elementari: i Flip Flop
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 3 - Modelli di fase d’analisi Ernesto Damiani Università degli Studi.
Automi a pila (1) Un automa a pila (PDA) è M = (Q, S, G, d, q0, Z0, F) dove: Q insieme finito di stati S alfabeto finito di input 3. G alfabeto di pila.
Grammatiche Grammatiche libere da contesto Grammatiche regolari
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 3 - Modelli di fase d’analisi Ernesto Damiani Università degli Studi.
Grammatiche non contestuali (1)
Reti Sequenziali Corso di Architetture degli Elaboratori Reti Sequenziali.
Macchine di Turing (1) Il modello di base ha un controllo finito, un nastro di input diviso in celle e una testa di lettura che esamina una cella alla.
Algoritmi e Programmazione Giorgio Delzanno. Algoritmi e Programmi Algoritmo=Successione di operazioni elementari che possono essere eseguite da un calcolatore.
Automi temporizzati.
Problemi, algoritmi e programmazione
Modello di Automa (Q, I, U, t, w)
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Quinta giornata Risolvere efficientemente un problema in P: ancora sulla sequenza di Fibonacci.
TEORIA DEGLI AUTOMI Una macchina sequenziale a stati finiti o AUTOMA a stati finiti è un sistema sequenziale che ha un insieme finito di stati interni,
Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli
Linguaggi, stringhe e alfabeti. Linguaggi e grammatiche Un linguaggio è un sistema di comunicazione tra persone che permette di trasmettere informazioni.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Automi e stringhe Lezione n°24 Prof.ssa Rossella Petreschi
Analisi e Sintesi di circuiti sequenziali
Transcript della presentazione:

Espressioni regolari (1) I linguaggi accettati da automi finiti (linguaggi regolari) sono descritti da espressioni regolari. Dato un alfabeto S, le espressioni regolari su S e gli insiemi che denotano sono definiti ricorsivamente: - Ø è un’espressione regolare e denota l’insieme vuoto - e è un’espressione regolare e denota l’insieme {e} per ciascun a  S a è un’espressione regolare e denota l’insieme {a} - se r, s sono espressioni regolari che denotano i linguaggi R, S allora (r+s), (rs), r* sono espressioni regolari che denotano i linguaggi RS, RS, R*. Chiamiamo L(r) il linguaggio denotato da r.

Espressioni regolari (2) Assumiamo che l’operatore * abbia precedenza sualla concatenazione e che la concatenazione abbia precedenza su + e omettiamo le parentesi non necessarie. Assumiamo gli assiomi seguenti r + s = s + r + è commutativo r + (s + t) = (r + s) + t + è associativo r (s t) = (r s) t . è associativo r (s + t) = r s + r t . distribuisce rispetto a + (s + t) r = s r + t r e r = r e = r e è l’identità per .

Espressioni regolari (3) Esempi. L’insieme delle parole chiave begin, end, if, then, else è descritto dall’espressione regolare begin + end + if + then + else. L’insieme degli identificatori è descritto dall’espressione regolare (a + b + … + z) (a + b + … + z + 0 + … + 9)* L’insieme delle costanti intere è descritto dall’espressione regolare 0 + (1 +2 + … + 9) (0 +1 + … + 9 * Due espressioni regolari sono equivalenti se descrivono lo stesso linguaggio. Esempio. (a + b)* ~ (a* b*)*

Espressioni regolari (4) Teorema . Sia r un’espressione regolare. Allora esiste un NFA con e transizioni che accetta L( r ). Prova. Per induzione sul numero di operatori di r mostriamo che esiste un NFA M con e transizioni, uno stato finale e nessuna transizione dallo stato finale tale che L(M) = L( r ). Base. è il NFA per r = e è il NFA per r = Ø è il NFA per r = a Passo. Assumiamo che la tesi valga per r con meno di i operatori, con i >=1. Abbia r i operatori. a

Espressioni regolari (5) Assumiamo per ipotesi di induzione che per r1, r2 con meno di i operatori esistano automi M1, M2 che accettano L (r1), L(r2). L’automa M che accetta L (r1 + r2) ha il diagramma L’automa M che accetta L (r1 r2) ha il diagramma L’automa M che accetta L (r1*) ha il diagramma e e e e e e e e e

Espressioni regolari (6) Teorema. Se L è accettato da un DFA, allora L è denotato da un’espressione regolare. Prova. Sia L accettato da un DFA M = ({q1, …, qn}, S, d, q1, F). Sia Rkij l’insieme di tutte le stringhe che portano il DFA da qi a qj senza passare da uno stato di numero più alto di k. Allora Rnij denota tutte le stringhe che portano da qi a qj. Si ha Rkij = Rk-1ik(Rk-1kk)* Rk-1kj  Rk-1ij {a | d (qi,a) = qj} se non i=j R0ij = {a | d (qi,a) = qj}  {e} se i=j Dobbiamo mostrare che per ciascun i,j,k esiste un’espressione regolare rkij che denota il linguaggio regolare Rkij.

Espressioni regolari (7) Base. R0ij è un insieme finito di stringhe ciascuna delle quali o è un simbolo di S oppure e. Quindi r0ij = a1 + … + ap oppure a1 + … + ap + e se i = j, dove {a1, …, ap } è l’insieme di tutti i simboli a tali che d(qi,a)= qj. Se non ce ne sono r0ij = Ø oppure r0ij = e se i = j. Passo. La formula ricorsiva per Rkij usa solo unione, concatenazione, chiusura (operatori delle espressioni regolari). Per ipotesi di induzione per ciascun l, m esiste un’espressione regolare rk-1lm tale che L(rk-1lm) = Rk-1lm . Quindi per rkij possiamo prendere l’espressione rk-1ik (rk-1kk )* rk-1kj + rk-1ij . Osserviamo che L(M) =  qj  F Rn1j . Perciò L(M) è denotato da rn1j1 + rn1j2 + … + rn1jp dove F = {qj1 , …, qjp }.

Espressioni regolari (8) Esempio. Prendiamo l’automa Abbiamo r011 = e r111 = e r211 = (00)* r012 = 0 r112 = 0 r212 = 0(00)* r013 = 1 r113 = 1 r213 = 0*1 r021 = 0 r121 = 0 r221 = 0(00)* r022 = e r122 = e + 00 r222 = (00)* r023 = 1 r123 = 1 + 01 r223 = 0*1 r031 = Ø r131 = Ø r231 = (0 +1)(00)*0 r032 = 0+1 r132 = 0+1 r232 = (0 +1)(00)* r033 = e r133 = e r233 = e + (0+1) 0*1 1 1 q1 q2 q3 0, 1

Espressioni regolari (9) Quindi r312 = r213 (r233)* r232 + r212 = 0*1 (e + (0+1) 0*1 )* (e + (0+1) 0*1 ) + 0*1 r313 = r213 (r233)* r233 + r213 L’espressione regolare per M è r312 + r313 .

Macchine di Moore e di Mealy (1) Gli automi finiti danno un output che è un segnale di accettazione o di non accettazione. Le macchine di Moore e di Mealy danno un output su un alfabeto diverso da quello di input e associato con lo stato (macchina di Moore) o con la transizione (macchina di Mealy). Una macchina di Moore è M = (Q, S, D, d, l, q0), dove D è l’alfabeto di output e l : Q: S  D associa a ogni stato un simbolo di output. In risposta all’input a1, …, an , n ≥ 0, la macchina dà l’output l(q0) … l(qn) dove d(qi-1, ai) = qi , 1£ i £ n. Esempio. Si voglia determinare il residuo modulo 3 per ogni stringa binaria trattata come un intero binario. La macchina entra in qj se l’input visto fino a tal punto ha residuo j. Sia l(qj) =j per j = 0,1,2. 1 1 q0 q1 q2 1 1 2

Macchine di Moore e di Mealy (2) Osservazione. Un DFA è un caso speciale di macchina di Moore dove l’alfabeto di output è {0,1} e uno stato q è di accettazione se e solo se l(q) = 1. Una macchina di Mealy è M = (Q, S, D, d, l, q0) dove : Q  S  D associa a ogni stato un simbolo di output. L’output in risposta all’input a1, …, an , n ≥ 0, è l(q0 , a1) … l(qn,an) dove d(qi-1, ai) = qi , 1£ i £ n. Osservazione. La sequenza di output della macchina di Mealy è lunga n (e non n+1 come per la macchina di Moore) perché sull’input e dà output e.

Macchine di Moore e di Mealy (3) Esempio. Il linguaggio (0+1)*(00+11) che è accettato da un DFA con almeno cinque stati è accettato dall’automa di Mealy che ricorda nello stato l’ultimo simbolo letto p0 0/y 0/n q0 1/n 0/n 1/n 1/y p1

Macchine di Moore e di Mealy (4) Sia M una macchina di Mealy o una macchina di Moore. Definiamo TM(w) l’output prodotto da M sull’input w. Una macchina di Mealy M e una macchina di Moore M’ sono equivalenti se, per tutti gli input w, bTM(w) = TM’(w) dove b è l’output di M’ per il suo stato iniziale. Teorema. Se M1 = (Q, S, D, d, l, q0) è una macchina di Moore, allora c’è una macchina di Mealy M2 equivalente a M1. Prova. Sia M2 = (Q, S, D, d, l’, q0), con l’(q,a) = l(d(q,a)) per tutti gli stati q e simboli di input a. Allora M1 ed M2 entrano nella stessa sequenza di stati sul medesimo input e con ciascuna transizione M2 emette l’output che M1 associa allo stato in cui è entrato.

Macchine di Moore e di Mealy (5) Esempio. La macchina di Mealy equivalente alla macchina di Moore dell’esempio è la seguente: Teorema. Se M1 = (Q, S, D, d, l, q0) è una macchina di Mealy, allora c’è una macchina di Moore M1 equivalente. Prova. Sia M2 = (Q  D, S, D, d’, l’, [q0,b0]), dove b0  D scelto arbitrariamente. Gli stati di M2 sono coppie [q,b], consistenti di uno stato di M1 e di un simbolo di output. Definiamo d’([q,b], a)= [d(q,a), l(q,a)] e l’([q,b])=b. Con un’induzione su n si mostra che se M1 entra negli stati q1, …, qn sull’input a1, …, an ed emette b1, …, bn allora M2 entra negli stati [q0,b0], …, [qn,bn], ed emette b0, …, bn. 1/1 0/2 0/0 1/2 1/0 0/1

Macchine di Moore e di Mealy (6) Esempio. La macchina di Moore equivalente alla macchina di Mealy dell’esempio è la seguente: 1 n n n 1 [q0,n] [p0,n] [p1,n] 1 1 y y y [q0,y] [p0,y] [p1,y] 1