Top Banner
Espressioni regolari Espressioni regolari
21

Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Feb 18, 2019

Download

Documents

trankhanh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Espressioni regolari

Espressioni regolari

Page 2: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Espressioni regolari

Un FA (NFA o DFA) e’ un metodo per costruire una macchinache riconosce linguaggi regolari.

Una espressione regolare e’ un modo dichiarativo perdescrivere un linguaggio regolare.

Esempio: 01∗ + 10∗

Le espressioni regolari sono usate, ad esempio, in

comandi UNIX (grep)strumenti per l’analisi lessicale di UNIX (Lex (Lexical analyzergenerator) e Flex (Fast Lex)).

Espressioni regolari

Page 3: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Operazioni sui linguaggi

Unione:

L ∪ M = {w : w ∈ L o w ∈ M}

Concatenazione:

L.M = {w : w = xy , x ∈ L, y ∈ M}

Potenze:

L0 = {ǫ}, L1 = L, Lk+1 = L.Lk

Chiusura di Kleene:

L∗ =

∞⋃

i=0

Li

Espressioni regolari

Page 4: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Definizione induttiva di espressioni regolari

Base:

ǫ e ∅ sono espressioni regolari.L(ǫ) = {ǫ} e L(∅) = ∅.Se a ∈ Σ, allora a e’ un’espressione regolare.L(a) = {a}.

Induzione:

Se E e’ un’espressione regolare, allora (E ) e’ un’espressioneregolare. 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’espressioneregolare. L(E .F ) = L(E ).L(F ).Se E e’ un’espressione regolare, allora E ⋆ e’ un’espressioneregolare. L(E ⋆) = (L(E ))∗.

Espressioni regolari

Page 5: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Esempio

Espressione regolare perL = {w ∈ {0, 1}∗ : 0 e 1 alternati in w}

(01)∗ + (10)∗ + 0(10)∗ + 1(01)∗

o, equivalentemente,

(ǫ + 1)(01)∗(ǫ + 0)

Espressioni regolari

Page 6: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Ordine di precedenza per gli operatori

1 Chiusura

2 Concatenazione (punto)

3 Piu’ (+)

Esempio: 01∗ + 1 e’ raggruppato in (0(1)∗) + 1

Espressioni regolari

Page 7: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Equivalenza di FA e espr. regolari

Abbiamo gia’ mostrato che DFA, NFA, e ǫ-NFA sono tuttiequivalenti.

ε-NFA NFA

DFARE

Per mostrare che gli FA sono equivalenti alle espressioni regolari,mostreremo che

1 Per ogni DFA A possiamo trovare (costruire, in questo caso)un’espressione regolare R , tale che L(R) = L(A).

2 Per ogni espressione regolare R esiste un ǫ-NFA A, tale cheL(A) = L(R).

Espressioni regolari

Page 8: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

La tecnica di eliminazione di stati

Etichettiamo gli archi con espressioni regolari di simboli

q

q

p

p

1 1

k m

s

Q

Q

P1

Pm

k

1

11R

R 1m

R km

R k1

S

Espressioni regolari

Page 9: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Ora eliminiamo lo stato s.

11R Q1 P1

R 1m

R k1

R km

Q1 Pm

Q k

Q k

P1

Pm

q

q

p

p

1 1

k m

+ S*

+

+

+

S*

S*

S*

Per lo stato accettante q eliminiamo dall’automa originale tutti glistati eccetto q0 e q.

Espressioni regolari

Page 10: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Per ogni q ∈ F saremo rimasti con Aq della forma

Start

RS

T

U

e che corrisponde all’espressione regolare Eq = (R + SU∗T )∗SU∗

o con Aq della forma

R

Start

che corrisponde all’espressione regolare Eq = R∗

• L’espressione finale e’⊕

q∈F

Eq

Espressioni regolari

Page 11: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Esempio

A, dove L(A) = {W : w = x1b, o w = x1bc , x ∈{0, 1}∗, {b, c} ⊆ {0, 1}}

Start

0,1

1 0,1 0,1A B C D

La trasformiamo in un automa con espressioni regolari comeetichette

0 1+

0 1+ 0 1+StartA B C D

1

Espressioni regolari

Page 12: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Esempio

0 1+

0 1+ 0 1+StartA B C D

1

Eliminiamo lo stato B

0 1+

DC0 1+( ) 0 1+Start

A1

Poi eliminiamo lo stato C e otteniamo AD

0 1+

D0 1+( ) 0 1+( )Start

A1

con espressione regolare (0 + 1)∗1(0 + 1)(0 + 1)Espressioni regolari

Page 13: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Esempio

Da

0 1+

DC0 1+( ) 0 1+Start

A1

possiamo eliminare D e ottenere AC

0 1+

C0 1+( )Start

A1

con espressione regolare (0 + 1)∗1(0 + 1)• L’espressione finale e’ la somma delle due espressioni regolariprecedenti:

(0 + 1)∗1(0 + 1)(0 + 1) + (0 + 1)∗1(0 + 1)

Espressioni regolari

Page 14: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Da espressioni regolari a ǫ-NFA

Teorema 3.7: Per ogni espressione regolare R possiamo costruireun ǫ-NFA A, tale che L(A) = L(R).Prova: Per induzione strutturale:Base: Automa per ǫ, ∅, e a.

ε

a

(a)

(b)

(c)

Espressioni regolari

Page 15: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Induzione: Automa per R + S , RS , e R∗

(a)

(b)

(c)

R

S

R S

R

ε ε

εε

ε

ε

ε

ε ε

Espressioni regolari

Page 16: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Esempio

Trasformiamo (0 + 1)∗1(0 + 1)

ε

ε

ε

ε

0

1

(a)

(b)

0

1

ε ε

ε

ε

ε ε

εε

Espressioni regolari

Page 17: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Esempio

ε

ε

ε

ε

0

1

ε

ε1

Start

(b)

(c)

ε

0

1

ε ε

ε

ε

ε ε

ε

Espressioni regolari

Page 18: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

Leggi 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 eM tali che LM 6= ML.

Espressioni regolari

Page 19: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

∅ ∪ 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.

Espressioni regolari

Page 20: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

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+ ∪ {ǫ}

Espressioni regolari

Page 21: Espressioni regolari - UniPDfrossi/2010.1-er.pdf · Espressioni regolari Un FA (NFA o DFA) e’ un metodo per costruire una macchina ... Per mostrare che gli FA sono equivalenti alle

• (L∗)∗ = L∗. La chiusura e’ idempotente.Prova:

w ∈ (L∗)∗ ⇐⇒ w ∈∞⋃

i=0

( ∞⋃

j=0

Lj

)i

⇐⇒ ∃k,m ∈ N : w ∈ (Lm)k

⇐⇒ ∃p ∈ N : w ∈ Lp

⇐⇒ w ∈∞⋃

i=0

Li

⇐⇒ w ∈ L∗

Espressioni regolari