Sunteți pe pagina 1din 4

2.6.

Echivalena dintre expresiile regulate i automatele finite


nedeterministe
Expresiile regulate sunt importante pentru construirea unui generator de analizor
lexical, care folosete ca intrare expresii regulate.
Vom prezenta n cele ce urmeaz metode de generare a unui acceptor cu numr
finit de stri dintr-o expresie regulat sau generarea unei expresii regulate dintr-un
automat finit nedeterminist. Vom arta deci c expresiile regulate i mulimile acceptate
de automate finite nedeterministe sunt echivalente, deci c mulimile regulate i expresiile
regulate reprezint aceleai mulimi. Pentru construciile ce vor urma, este necesar
urmtoarea definiie.
Definiia 2.6.1 Un automat finit nedeterminist cu -tranziii este un ansamblu M=(Q, ,
, q0, F) ale crui componente au aceleai semnificaii ca la un automat finit oarecare, doar
c funcia de tranziie este definit astfel:
: Q P(Q) .
Avem o - tranziie ntre dou configuraii (p, w) (q, w) dac i numai dac
q (p, ) , p Q, w . n reprezentarea grafic, o astfel de tranziie, practic fr
citirea benzii de intrare la acel pas, arat astfel:

q
Figura 2.9.1

Teorema 2.6.1. Mulimea cuvintelor recunoscute de automatele finite cu -tranziii este


aceiai cu mulimea cuvintelor recunoscute de automatele finite nedeterministe.
Demonstratie
Se arat c automatele finite nedeterministe cu -tranziii sunt echivalente cu cele fr tranziii.
Vom da aici un exemplu de utilizare a homomorfismului pentru a da o alt demonstraie a
acestei afirmaii. Fie automatul finit cu -tranziii M = (Q, , , q0, F), unde considerm
un simbol care nu este n . Considerm acum automatul finit nedeterminist M, peste
alfabetul {}:
M = (Q, {}, , q0, F) ,
Definim acum acceptarea pentru automatul cu cu -tranziii dup cum urmeaz:
pentru orice x din *, automatul M accept x dac exist y n ({})* astfel nct:
M accept y relativ la definiia acceptrii unui automat finit nedeterminist;
- x este obinut din y prin tergerea tuturor apariiilor simbolului ; atunci x
= h(y), unde:
h: ({})* *,
este homomorfismul definit de :
h(a) = a pentru a

h() = .
n acest fel L(M) = h(L(M)). Dar mulimea L(M) este regulat i conform
teoremei 2.9.11 va rezulta c i L(M) este o muime regulat.
Algoritmul de conversie a unei expresii regulate ntr-un AFN este urmtorul:
Algoritmul 2.6.1. Construcia unui automat finit nedeterminist cu -tranziii
pentru o expresie regulat.
Intrare:
o expresie regulat r peste un alfabet , sub forma unui arbore sintactic.
Ieire:
un AFN, N pentru limbajul L(r)
Metod:
Construim N, parcurgnd arborele sintactic de jos n sus, aplicnd regulile
(1) i (2) i combinnd automatele obinute la fiecare nod, cu ajutorul regulei (3) unde:
1.
pentru , construim automatul
start

cu i noua stare iniial i f noua stare final. Automatul va recunoate limbajul {}.
2.
pentru a, construim automatul
start

cu i noua stare iniial i f noua stare final. Automatul va recunoate limbajul {a}.
3.
dac N(s) i N(t) sunt AFN pentru expresiile regulate s i t atunci:
a) Pentru expresia regulat s|t construim urmtorul automat N(s|t)
N(s)

start

N(t)

cu i noua stare iniial a lui N(s|t) i f noua stare final. Avem _tranziii de la i la fostele
stri iniiale ale lui N(s) i N(t) i _tranziii de la fostele stri finale ale lui N(s) i N(t) la
f. Astfel, automatul N(s|t) recunoate L(s) U L(t).
b) Pentru expresia regulat st construim urmtorul automat N(st)
start

N(t)

N(s)

unde i, starea iniial pentru N(s) a devenit starea iniial pentru N(st) i f starea final
pentru N(t) a devenit starea final pentru N(st). Starea final pentru N(s) este identificat
cu starea iniial pentru N(t) i noua stare creat n N(st) i pierde statutul de stare iniial
sau final. Astfel, automatul N(st) recunoate limbajul L(s)L(t).
c) Pentru expresia regulat s* construim automatul N(s*)

start

N(s)

cu i noua stare iniial i f noua stare final pentru N(s*). Strile iniial i final pentru
N(s) i pierd acest statut. Astfel automatul N(s*) recunoate limbajul L(s)*.
Exemplul 2.6.1. S folosim algoritmul 2.3. pentru a construi AFN N(r) din expresia
regulat r=(a|b)*abb. Arborele sintactic al expresiei regulate date este:
.
.

..
b

b
bb

Parcurgnd acum arborele vom avea:


Pentru simbolul a avem:
start
Pentru simbolul b avem:

start

Pentru a|b avem:


2

start

Pentru (a|b)* avem:

start

Continnd acest proces, n final vom obine automatul urmtor:

start

10

Toate automatele construite astfel sunt nedeterministe cu -tranziii.


Teorema 2.6.1 Fiind dat o expresie regulat R, exist un automat F cu numr finit de
stri, nedeterminist i cu -tranziii, care accept limbajul generat de R.
Demonstraie:
- se face prin inducie n raport cu fiecare din cele trei operaii ale expresiilor regulate.
Construcia formal se deduce din diagramele de stare definite mai sus.
Teorema 2.6.2. Fiind dat un automat cu numr finit de stri, determinist, care accept
limbajul L, exist o expresie regulat care reprezint limbajul L.
Demonstraie:
- se aplic algoritmul de transformare a automatului finit determinist ntr-o gramatic de
tip 3, dup care se aplic acesteia algoritmul de determinare a expresiei regulate
echivalente.

S-ar putea să vă placă și