Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
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 RS, RS, R*. Chiamiamo L(r) il linguaggio denotato da r.
2
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 .
3
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 … + 9)* L’insieme delle costanti intere è descritto dall’espressione regolare 0 + ( … + 9) ( … + 9 * Due espressioni regolari sono equivalenti se descrivono lo stesso linguaggio. Esempio. (a + b)* ~ (a* b*)*
4
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
5
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
6
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.
7
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 }.
8
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 = 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
9
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 è r r313 .
10
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
11
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.
12
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
13
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.
14
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
15
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.